C++ Tutorial - part 61

آموزش جامع زبان برنامه‌نویسی C++ مقدماتی تا پیشرفته [0 تا 100 سی پلاس پلاس بهمراه حل تمرین و پروژه ✅] - ساخت ساعت متحرک (پروژه نهایی بخش مقدمات) - قسمت 61

در این قسمت از دوره‌ی آموزشی C++، قصد داریم یک پروژه ساده و جذاب به نام “کلاک دیجیتال” را به زبان C++ پیاده‌سازی کنیم. این پروژه به‌ظاهر ساده است اما درون خود مفاهیم بسیاری از برنامه‌نویسی C++ را گنجانده است و می‌تواند به شما در درک عمیق‌تر زبان C++ کمک کند.

اهداف پروژه

  1. دریافت و نمایش زمان سیستم: پروژه ما قادر خواهد بود که زمان جاری سیستم را دریافت کرده و آن را به‌طور پیوسته و با بروز رسانی مناسب نمایش دهد.
  2. پردازش زمان و نمایش آن: با استفاده از حلقه‌ها و توابع مختلف، زمان را به ثانیه‌ها، دقیقه‌ها و ساعت‌ها تبدیل کرده و نمایش خواهیم داد.

توضیحات کد

سورس کد

				
					#include <iostream>
#include <windows.h>
#include <ctime>

using namespace std;

void display_time(string h, string m, string s){
    int hour = stoi(h);
    int minute = stoi(m);
    int second = stoi(s);

    while(true){
        system("cls");
        cout << hour << ":" << minute << ":" << second << endl;
        Sleep(1000);
        second++;
        if(second > 59){
            second = 0;
            minute++;
        }
        if(minute > 59){
            minute = 0;
            hour++;
        }
        if(hour > 23){
            hour = 0;
        }
    }
}

void get_time(){
    string info;
    long long now = time(0);
    char *dt = ctime(&now);
    info = dt;

    int index = info.find(":");

    string hour;
    hour = info[index-2];
    hour += info[index-1];

    string minute;
    minute = info[index+1];
    minute += info[index+2];

    string second;
    second = info[index+4];
    second += info[index+5];

    display_time(hour, minute, second);
}

int main(){
    get_time();
    return 0;
}

				
			

شرح عملکرد کد

1. وارد کردن کتابخانه‌ها

در ابتدا، کد شامل وارد کردن کتابخانه‌های زیر است:

				
					#include <iostream>
#include <windows.h>
#include <ctime>

				
			
    • <iostream>: برای عملیات ورودی و خروجی به کار می‌رود.
    • <windows.h>: برای استفاده از تابع Sleep() جهت تأخیر در اجرای برنامه.
    • <ctime>: برای دریافت زمان فعلی سیستم استفاده می‌شود.

2. تعریف تابع display_time

				
					void display_time(string h, string m, string s) {
    int hour = stoi(h);
    int minute = stoi(m);
    int second = stoi(s);

    while(true) {
        system("cls");
        cout << hour << ":" << minute << ":" << second << endl;
        Sleep(1000);
        second++;
        if (second > 59) {
            second = 0;
            minute++;
        }
        if (minute > 59) {
            minute = 0;
            hour++;
        }
        if (hour > 23) {
            hour = 0;
        }
    }
}

				
			
    • ورودی‌ها: سه رشته برای ساعت (h)، دقیقه (m) و ثانیه (s).
    • عملکرد:
      • ابتدا رشته‌های ورودی به نوع int تبدیل می‌شوند.
      • سپس در یک حلقه بی‌پایان (while(true)) زمان به صورت مداوم به‌روزرسانی می‌شود:
        • صفحه کنسول با استفاده از system(“cls”) پاک می‌شود.
        • زمان فعلی نمایش داده می‌شود.
        • با استفاده از Sleep(1000)، برنامه به مدت یک ثانیه متوقف می‌شود.
        • ثانیه‌ها افزایش می‌یابند و در صورت رسیدن به 60، ثانیه به صفر بازنشانی می‌شود و دقیقه یک واحد افزایش می‌یابد.
        • همین روند برای دقیقه و ساعت نیز تکرار می‌شود.
        • اگر ساعت به 24 برسد، به صفر بازنشانی می‌شود.

3. تعریف تابع get_time

				
					void get_time() {
    string info;
    long long now = time(0);
    char *dt = ctime(&now);
    info = dt;

    int index = info.find(":");

    string hour = info.substr(index-2, 2);
    string minute = info.substr(index+1, 2);
    string second = info.substr(index+4, 2);

    display_time(hour, minute, second);
}

				
			
  • عملکرد:
    • زمان جاری سیستم با استفاده از time(0) دریافت می‌شود و به فرمت char* تبدیل می‌شود.
    • با استفاده از find(“:”)، موقعیت دو نقطه در رشته زمان پیدا می‌شود.
    • سپس ساعت، دقیقه و ثانیه با استفاده از تابع substr از رشته اصلی استخراج می‌شود.
    • مقادیر استخراج شده به تابع display_time ارسال می‌شود.

4. تابع main

				
					int main() {
    get_time();
    return 0;
}

				
			
    • عملکرد:
      • تابع get_time فراخوانی می‌شود که خود شامل فراخوانی تابع display_time است.
      • برنامه با مقداردهی اولیه به تایمر شروع می‌شود و سپس به طور مداوم زمان را به روزرسانی و نمایش می‌دهد.

تحلیل و نتیجه‌گیری

1. مدیریت زمان

کد به خوبی مفهوم مدیریت زمان را با استفاده از توابع استاندارد C++ مانند ctime و Sleep پیاده‌سازی می‌کند. توانایی به‌روزرسانی زمان و نمایش آن در هر ثانیه، نشان‌دهنده‌ی تسلط بر نحوه کار با زمان در C++ است.

2. کارایی و بهینه‌سازی

در این کد، استفاده از system(“cls”) برای پاکسازی صفحه کنسول به صورت مداوم ممکن است در برخی سیستم‌ها با مشکلاتی همراه باشد. بهینه‌تر است که از روش‌های دیگر برای پاکسازی صفحه استفاده شود که وابسته به سیستم‌عامل نباشد.

3. قابلیت‌های اضافی

برای پروژه‌های پیشرفته‌تر، می‌توان به کد امکاناتی همچون تنظیمات تایمر برای ساعت‌های مختلف، نمایش تاریخ، و یا حتی ذخیره‌سازی زمان‌های مختلف را افزود.

نتیجه‌گیری

این پروژه ساده و آموزنده به خوبی مفاهیم پایه‌ای مدیریت زمان در C++ را پوشش می‌دهد و توانایی کار با توابع و رشته‌ها را به نمایش می‌گذارد. با استفاده از این کد، برنامه‌نویسان تازه‌کار می‌توانند تجربه‌ای عملی در زمینه پیاده‌سازی تایمر دیجیتال کسب کنند.

ادامه دوره (قسمت 62)

در قسمت بعدی به تعریف و کاربر اشاره‌گر (پوینتر) خواهیم پرداخت. اگر سوالی دارید، در بخش دیدگاه مطرح کنید. همچنین ممنون میشم با حمایت دلنشینتون از من و دوره‌ها حمایت کنید.

در این قسمت از دوره آموزشی C++، به مبحث ارسال آرایه به تابع خواهیم پرداخت...

در این بخش از دوره پیشرفته C++، به بررسی مفهوم پوینترها (اشاره‌گرها) و کاربردهای آن‌ها خواهیم پرداخت. پوینترها یکی از...

ساخت ساعت متحرک [پروژه نهایی بخش مقدمات ✅]

حق کپی ویدئو مجاز نمی‌باشد

قسمت:

جلسه شصت و یک

نام دوره:

آموزش جامع ++C

زمان ویدئو:

23 دقیقه

مدرس:

مهدی کاظمی

در این قسمت یادخواهید گرفت:

در این قسمت از دوره‌ی آموزشی C++، قصد داریم یک پروژه ساده و جذاب به نام "کلاک دیجیتال" را به زبان C++ پیاده‌سازی کنیم. این پروژه به‌ظاهر ساده است اما درون خود مفاهیم بسیاری از برنامه‌نویسی C++ را گنجانده است و می‌تواند به شما در درک عمیق‌تر زبان C++ کمک کند.

مهدی کاظمی

سلام مهدی کاظمی هستم و باعث افتخارم هست که در یک دوره جذاب دیگه با شما هستم و قراره در کنار هم از یادگیریمون لذت ببریم.

با بانک سوالات طبقه بندی شده ++C مقدماتی تا پیشرفته، جامع ترین منبع برای تسلط بر زبان سی پلاس پلاس و آمادگی کامل برای دروس مبانی و پیشرفته کامپیوتر در رشته مهندسی کامپیوتر را در اختیار خواهید داشت.

0 دیدگاه
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها