Learning ©
4.65K subscribers
81 photos
2 videos
38 files
182 links
ک
Download Telegram
#ctime #time.h #ctime
🔵زمان (time)

🔹تابع ctime

char *ctime(const time_t *timer);

این تابع شبیه تابع asctime است.
تنها تفاوتش این است که ورودی تابع asctime یک struct tm است،
ولی ورودی تابع ctime یک time_t است حتی مقادیر بازگشتی هر دو تابع مثل هم هستند.
زمانی که از این تابع استفاده می کنید مثل این است که از دستور زیر استفاده می کنید :
asctime(localtime(timer));


#include <iostream>
#include <ctime>
using namespace std;

int main ( )
{
time_t rawtime;
time(&rawtime);
cout<<"The current local time is:"<<ctime(&rawtime);
return 0;
}


Output:
The current local time is: Wed Feb 13 16:06:10 2013

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
#ctime #time.h #localtime
🔵زمان (time)

🔹تابع localtime

struct tm * localtime (const time_t * timer);

آموزش مبحث تبدیل زمان :
اگر بخاطر بیاورید در آموزش های قبلی گفته شد که تابعی به نام time داریم که کار این تابع این است که زمان فعلی سیستم را بر حسب ثانیه به ما بدهد اما آن زمان را به زمان استاندارد تبدیل می کردیم.
حالا با تابع localtime می توانیم آن را به زمان استاندارد تبدیل کنیم.
و اما struct tm چیست ؟؟؟
این یک ساختاره داده ای است که فیلدهایی دارد و با استفاده از این فیلدها می توانیم به مقادیر ساعت، دقیقه و ثانیه دسترسی داشته باشیم البته به روز و ماه و سال هم می توانیم دسترسی داشته باشیم.


🔹پارامتر ها :
🔻مفهوم timer* :
این دقیقا همان زمانی است که با استفاده از تابع ( )time به دست می آوریم.

🔹مقادیر بازگشتی :
این تابع یک اشاره گر به یک struct با نام tm می دهد که داخل آن struct زمان های استانداردی مثل ثانیه و دقیقه نگهداری می شود.
اگر بخواهیم به زبان ساده تر بیان کنیم در اصل فیلدهای struct tm را با مقادیر استاندارد پر می کند.


#include <iostream>
#include <ctime>
using namespace std;

int main ( )
{
time_t tim;
tm *stim;
time(&tim);
stim=localtime(&tim);
cout<<stim->tm_hour<<":"
<<stim->tm_min<<":"
<<stim->tm_sec<<endl;
return 0;
}


Output :
00:21:38

ابتدا زمان غیر استاندارد سیستم، که فقط شامل ثانیه ها می شود را به اضافه تابع time در tim می ریزیم سپس با استفاده از localtime زمان استاندارد را در stim می ریزیم حال می توانیم با استفاده از فیلدهای stim به زمان های استاندارد دقیقه، ساعت و ... هم دسترسی داشته باشیم.
با سرچ بیشتر می توانید بهتر متوجه مطلب شوید.

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
#ctime #time.h #strftime
🔵زمان (time)

🔹تابع strftime

size_t strftime (char* ptr, size_t maxsize, const char* format,const struct tm* timeptr );

این تابع هم برای تبدیل کردن زمان به رشته با فرمتی خاص به کار می رود.
در این تابع دقیقا عین تابع ( )printf عمل می کنیم، یعنی برای هر کدام از زمان ها مثل ماه، سال یا روز باید یک کاراکتر خاص را بلد باشیم.
مثل تابع ( )printfکه برای نشان دادن هرکدام از انواع داده ها باید از یک کاراکتر فرمت خاصی راحفظ باشیم.

🔹پارامتر ها :

🔻مفهوم ptr* :
این یک اشاره گر به ابتدا آرایه ای است که می خواهیم زمان را داخلش بریزیم.

🔻مفهوم Maxsize :
همان‌ طول آرایه است که وارد تابع می شود تا تابع بداند چه مقدار حافظه برای نوشتن دارد.

🔻مفهوم format* :
همانطور که می دانید یک رشته حاوی کاراکترهایی است که به طور منظم کنار هم قرار گرفته تا معنی دار باشند، به همین نظم و ترتیب خاص فرمت رشته می گوییم.
حال می توانیم به طرق مختلف فرمت رشته را عوض کنیم مثلا یک رشته را به عدد تبدیل کنیم یا برعکس حالا گاهی لازم است یک زمان را به رشته تبدیل کنیم باید به strftime بگوییم که این کدام نوعِ زمان است مثل تابع ( )printf شما لیست کاراکتر های فرمت را داخل( )printf می دانید ولی این کاراکتر ها در strftime متفاوت است.
این میشود :
specifier  Replaced by  Example

🔹%a
Abbreviated weekday name *Thu

🔹%A
Full weekday name *Thursday

🔹%b
Abbreviated month name *Aug

🔹%B
Full month name
*August

🔹%c
Date and time
representation
*Thu Aug 23 14:55:02 2001

🔹%C
Year divided by 100 and truncated to integer (00-99) 20

🔹%d
Day of the month, zero-padded (01-31) 23

🔹%D
Short MM/DD/YY date, equivalent to %m/%d/%y 08/23/01

🔹%e
Day of the month, space-
padded ( 1-31) 23

🔹%F
Short YYYY-MM-DD date, equivalent to %Y-%m-%d 2001-08-23

🔹%g
Week-based year, last two digits (00-99) 01

🔹%G
Week-based year 2001

🔹%h
Abbreviated month name * (same as %b) Aug

🔹%H
Hour in 24h format (00-23)
14

🔹%I
Hour in 12h format (01-12) 02

🔹%j
Day of the year (001-366) 235

🔹%m
Month as a decimal number (01-12) 08

🔹%M
Minute (00-59) 55

🔹%n
New-line character ('\n')

🔹%p
AM or PM designation PM

🔹%r
12-hour clock time * 02:55:02 pm

🔹%R
24-hour HH:MM time, equivalent to %H:%M 14:55

🔹%S
Second (00-61) 02

🔹%t
Horizontal-tab character ('\t')

🔹%T
ISO 8601 time format (HH:MM:SS), equivalent to %H:%M:%S 14:55:02

🔹%u
ISO 8601 weekday as number with Monday as 1 (1-7) 4

🔹%U
Week number with the first Sunday as the first day of week one (00-53) 33

🔹%V
ISO 8601 week number (00-53) 34

🔹%w
Weekday as a decimal number with Sunday as 0 (0-6) 4

🔹%W
Week number with the first Monday as the first day of week one (00-53) 34

🔹%x
Date representation * 08/23/01

🔹%X
Time representation * 14:55:02

🔹%y
Year, last two digits (00-99) 01

🔹%Y
Year 2001

🔹%z
ISO 8601 offset from UTC in timezone (1 minute=1, 1 hour=100)
If timezone cannot be determined, no characters ت +100

🔹%Z
Timezone name or abbreviation *
If timezone cannot be determined, no characters CDT
%% A % sign %


🔻مفهوم timeptr* :
همان زمانی است که می خواهیم فرمت آن را عوض کنیم.

🔹مقادیر بازگشتی :
اگر‌ برای این تابع مشکلی پیش نیاید (که معمولا مشکل کم بودن طول آرایه یا نامفهوم بودن محتوای format می شود) و به اندازه ای فضا داشته باشد که بتواند آخر آرایه را با کاراکتر null پر کند، تعداد کاراکتر های نوشته شده در ptr را برمیگرداند و اگر تابع درکار خود شکست بخورد مقدار صفر را برمیگرداند.

#include <stdio.h>/* puts */
#include <time.h>/* time_t, struct tm, time, localtime, strftime */

int main ( )
{
time_t rawtime;
struct tm *timeinfo;
char buffer[80];

time (&rawtime);
timeinfo=localtime(&rawtime);

strftime (buffer,80,"Now it's %I:%M%p.",timeinfo);
puts (buffer);

return 0;
}


output:
Now it's 03:21PM.

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
#ctime #time.h #clock_t
🔵زمان (time)

🔹تابع clock_t
type clock_t

تعریفی ابتدایی برای یک حسابگر با قابلیت بالا در ارائه ی تعداد تیک تاک های ساعت

تیک تاک های ساعت واحد هایی از نوع
ثابت(constant) ولی در عین حال تابع سیستم هستند که با تابع clock ارائه می شوند.

🔰ترجمه شده ازسایت
www.cplusplus.com

@Learncpp
#ctime #time.h #time_t
🔵زمان (time)

🔹تابع time_t
type time_t

تعریفی ابتدایی برای یک حسابگر با قابلیت بالا در ارائه ی زمان ها، که با تابع time ارائه می شود.

بنا به دلایلی، به طور کلی به عنوان یک متغیر از نوع عدد صحیح (integer) که حاوی ثانیه های سپری شده از زمان 00:00 و تاریخ یک ژانویه سال 1970 است، تعریف می شود،گرچه بعضی از کتابخانه ها می توانند به شکل دیگری هم آن را ارائه دهند.

برنامه های portable بهتر است که از مقادیر این تابع به صورت مستقیم استفاده نکنند و در عوض از کتابخانه های استاندارد دیگری برای ترجمه ی این تابع به صورت portable بهره بگیرند.

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
#ctime #time.h #struct_tm #struct_time
🔵زمان (time)

🔹تابع Struct tm

این ساختار مقادیر استاندارد زمان را داخل خودش دارد و داخل چندین تابع مجبوریم از آن استفاده کنیم.
البته همه ی این مقادیر جدا از هم هستند.
این ساختار 9 عضو دارد که از این قرار
(t.me/Learncpp/1377)
هستند.

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
#ctime #time.h #struct_tm #struct_time
🔵زمان (time)

🔹تابع Struct tm

🔻نمایش 9 عضو تابع struct tm
(t.me/Learncpp/1376)

@Learncpp
#ctime #time.h #struct_tm #struct_time
🔵زمان (time)

🔹تابع Struct tm

پرچم ساعت تابستانی (The Daylight Saving Time flag یا tm_isdst) می تواند مقادیر زیر را داشته باشد.

1.مقداری بزرگتر از صفر که نشان دهنده ی روشن بودن این قابلیت در سیستم می باشد.

2.مقدار صفر که نشان دهنده ی خاموش بودن این قابلیت در سیستم می باشد.

3.مقداری کوچکتر از صفر که نشان دهنده ی عدم وجود اطلاعات کافی در سیستم می باشد.

همچنین tm_sec به طور کلی در بازه ی(0 _59)تعریف می شود و مقادیر اضافی برای همسان سازی پرش های ثانیه در سیستم های مختلف استفاده می شود.

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
زحمت ترجمه کتابخانه "Signal" را آقای فردین مارابی کشیدن از این بزرگوار بخاطر کمکشون سپاسگزاریم 🙏🌺
@Learncpp
🔸ترجمه کتابخانه "Signal (سیگنال)" از سایت رسمی برنامه نویسان ++C به آدرس
www.cplusplus.com/reference

@Learncpp
#csignal #signal.h

🔵سیگنال (Signal)

🔹کتابخانه Signal

🔸کتابخانه ی سی به منظور مدیریت سیگنال :

🔻بعضی از محیط های اجرایی از سیگنال ها به منظور آگاه سازی از پروسه های در حال اجرای رویدادها مشخص استفاده می کنند.

🔻این رویداد ها ممکن است مربوط به آن خطاهایی باشند که به وسیله ی کد برنامه ایجاد شده اند مثل یک عملیات جبری ناصحیح (مانند تقسیم بر صفر) و یا استثنایی از قبیل یک درخواست برای توقف برنامه.

🔻سیگنال ها عموما حالتی هستند که برنامه مجبور به پایان است و یا یک خطای غیر قابل برگشت روی داده است بنابراین مدیریت یک سیگنال منجر به این می شود که برنامه عملیات پاک سازی قبل از کنسلی را اجرا کند و یا تلاش به ادامه ی کار پس از روی دادن خطا کند.

🔻همه ی محیط های اجرایی ملزوم به تولید سیگنال ها برای موقعی که در کتابخانه ی سی طراحی شده اند نیستند.

🔻بعضی دیگر از محیط ها نه تنها این نوع از سیگنال ها را تولید می کنند بلکه بسیاری از سیگنال ها مشخصه دیگری را نیز تولید می کنند.

🔻ولی در تمامی موارد سیگنال ها به طور صریح از فراخوانی تابعی که مطابق با آن سیگنال بخصوص است تولید می شوند.

🔹توابع

🔻تابع Raise : وضع تابعی که سیگنال را مدیریت می کند.

🔻تابع Signal : یک سیگنال را تولید می کند.

🔹نوع :
Sig-atomic-t (داده ی صحیح)

🔹ثابت های بزرگ

type : macro : signal

🔹int : SIGABRT : توقف های غیر عادی

🔹int : SIGFPE : عملیات های جبری نادرست

🔹int : SIGLLL : تصویر تابع نامعتبر از قبیل ساختار ناصحیح

🔹int : SIGINT : سیگنال های تاثیر گذار برهم

🔹int : SIGSEGV : دسترسی نامعتبر به حافظه

🔹int : SIGTERM : درخواست توقف برنامه

🔹function : SIG_DFL : مدیریت استثنا با یک عمل قراردادی

🔹function : SIG_IGN : رد کردن یک سیگنال

🔹function : SIG_ERR : یک بازگشت بخصوص که نشانگر شکست است

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
#csignal #signal.h
🔵سیگنال (Signal)

🔹نوع (type)

🔻جدول ثابت های بزرگ

@Leancpp
#csignal #signal.h #raise
🔵سگینال (signal)

🔹تابع Raise
int raise(int seg);

🔸تولید یک سیگنال :
سیگنال (سیگ) را به برنامه در حال اجرا می فرستد و سیگنال توسط تابع سیگنال مدیریت می شود.

🔹پارامترها

🔻پارامتر Sig :
مقدار سیگنال برای ارسال به تابع است.
ثابت های مارکرو که در پایین معرفی می کنیم مقدار استاندارد سیگنال را شناسایی می کنند.

macro : Signal

▫️SIGABRT :
توقف های غیر عادی

▫️SIGFPE :
عملیات های جبری نادرست

▫️SIGILL :
تصویر تابع نامعتبر از قبیل ساختار ناصحیح

▫️SIGINT :
سیگنال های تاثیر گذار برهم

▫️SIGSEGV :
دسترسی نامعتبر به حافظه

▫️SIGTERM :
درخواست توقف برنامه

پیاده سازی هر کتابخانه امکان فراهم آوردن مقدار سیگنال های اضافه تری را که با این تابع استفاده شود را فراهم می آورد.

🔻مقدار بازگشتی :
اگر موفقیت آمیز باشد صفر را بر می گرداند و در غیر اینصورت یک مقدار غیر صفر را برمی گرداند.

🔻مسیر(گردش) داده :
فراخوانی همزمان این تابع بلا اشکال است و باعث ایجاد اشتباه و دور نمی شود توجه داشته باشید که به هرحال امکان دارد که فرآیند مدیریت بر تمامی قسمت ها اثر گذار باشد.

🔻استثناء ها (++C) :
اگر هیچ تابعی برای مدیریت سیگنال تعریف نشده باشد آن تابع هرگز استثنا تولید نمی کند و در باقی حالت ها رفتار و برخورد تابع بستگی به تابع پیاده سازی شده دارد.

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
#csignal #signal.h #raise
🔵سیگنال (Signal)

🔹تابع Raise

🔹پارامترها

🔻پارامتر Sig

مطالب بیشتر در
t.me/Learncpp/1590

@Learncpp
#Csignal #signal.h #signal
🔵 سیگنال (signal)

🔹تابع Signal :
void (*signal(int sig, void (*func)(int)))(int);

🔸قراردادن تابعی به منظور مدیریت سیگنال :

تعیین کردن راهی برای مدیریت سیگنال از شماره ی سیگنال که به سیگ معروف است.

🔸تابع پارامتری شده یکی از سه راهی که می شود سیگنال ها را در برنامه مدیریت کرد را مشخص می کند :

1️⃣ مدیریت اختیار(sig_def) :

سیگنال یک کار دلخواه و رندوم برای یک نوع بخصوص سیگنال انجام می دهد.

2️⃣ نادیده گرفتن (sig_ign) :

سیگنال نادیده گرفته می شود و برنامه به کار خود ادامه می دهد حتی اگر ادامه ی کار بی معنی به نظر برسد.

3️⃣ تابع مدیریت کننده :

تابع بخصوصی برای مدیریت سیگنال تعریف می شود‌.

🔹پارامترها

🔻پارامتر Sig :

مقدار سیگنالی که برای تابع مدیریت کننده وضع شده است.

🔘 عبارت های ثابت ماکروی زیر مقدارهای استاندارد سیگنال را معرفی می کنند.

macro : Signal

▫️SIGABRT :
توقف های غیر عادی

▫️SIGFPE :
عملیات های جبری نادرست

▫️SIGILL :
تصویر تابع نامعتبر از قبیل ساختار ناصحیح

▫️SIGINT :
سیگنال های تاثیر گذار برهم

▫️SIGSEGV :
دسترسی نامعتبر به حافظه

▫️SIGTERM :
درخواست توقف برنامه

🔸 با پیاده سازی کتابخانه ها امکان دارد مقدار سیگنال های اضافه تری را فراهم آورد که از طریق ثابت های ماکرو قابل استفاده هستند.

⚠️ دقت کنید که همه ی محیط های اجرایی مجبور به تولید اتوماتیک سیگنال ها نیستند، همه ی محیط های اجرایی باید سیگنال های تولید شده توسط تابع raise را دریافت کنند.

🔻تابع Func:
یک اشاره گر به تابع، این ممکن است که یک تابع تعریف شده توسط برنامه نویس باشد و یا یکی از تابع های از قبل تعریف شده ی زیر باشد :

1️⃣ sig_def
2️⃣ sig_ign

▶️ اگر تابعی باشد که توسط برنامه نویس تعریف شده باشد باید فرمی به شکل زیر داشته باشد :

void handler_function (int parameter);

🔻نوع بازگشتی :
نوع بازگشتی درست مانند پارامتر های تابع است، اگر درخواست موفقیت آمیز باشد تابع یک اشاره گر به یک نوع مشخص تابع مدیریت کننده است که در راس مدیریت این سیگنال قبل از اظهار هیچ یا یکی از دو تابع Sig_def ,Sig_ign قرار دارد.
سیگنال فراخوانی شده به صورت دلخواه اجرا می شود و یا نادیده گرفته می شود، اگر تابع در فعال سازی و اجرای تابع های جدید سیگنال به صورت موفقیت آمیز عمل نکند Sib_ebr را بازگشت می دهد و یک عدد مثبت به errno اختصاص می دهد.

مثال )
#include <stdio.h> 
/* printf */

#include <signal.h>
/* signal, raise, sig_atomic_t */

sig_atomic_t signaled = 0;

void my_handler (int param)
{
signaled = 1;
}

int main ( )
{
void (*prev_handler)(int);

prev_handler = signal(SIGINT, my_handler);

/* ... */
raise(SIGINT);
/* ... */

printf ("signaled is %d.\n",signaled);

return 0;
}


🔻مسیر داده :
فراخوانی این تابع در چندین موقعیت رفتار نامشخصی را به دنبال دارد.

🔻استثناء ها (++C) :
این تابع هرگز یک استثناء را بیرون نمی اندازد.
No-throw guarantee

🔰ترجمه شده از سایت
www.cplusplus.com

@Learncpp
#csignal #signal.h #signal
🔵سیگنال (signal)

🔹تابع signal

🔹پارامترها

🔻پارامترSig

مطالب بیشتر در
t.me/Learncpp/1616

@Learncpp
🏵 گروه ++C و ساختمان داده
telegram.me/Learncpp/325
🚷 قوانین گروه هارو حتما مطالعه کنید


📚 فهرست آموزش های کانال

📓 جلسه اول (مقدمات زبان ++C)
telegram.me/Learncpp/534
📘 جلسه دوم (ساختارهای تکرار و تصمیم گیری)
telegram.me/Learncpp/535
📗 جلسه سوم (آرایه ها)
telegram.me/Learncpp/536
📙 جلسه چهارم (توابع)
telegram.me/Learncpp/537
📽 فیلم های آموزشی
telegram.me/Learncpp/538
💻 نرم افزار های مرتبط
telegram.me/Learncpp/540
🙇🏻 دانستنی ها
telegram.me/Learncpp/539
🌐 کامپایلر، IDE، کتاب برنامه نویسی و...
telegram.me/Learncpp/362


🌍 ترجمه کتابخانه ها از سایت مرجع برنامه نویسان ++C
www.cplusplus.com

🔹وکتور (vector)
telegram.me/Learncpp/1029

🔹رشته ها(string)
telegram.me/Learncpp/1030

🔹عملیات ورودی/خروجی (cstdio)
telegram.me/Learncpp/1194

🔹زمان (time)
telegram.me/Learncpp/1414

🔹سیگنال (signal)
telegram.me/Learncpp/1672

🔸کتابخانه بعدی درحال ترجمه است


⛔️ از آنجا که مطالب کانال از جایی کپی پیست و دزدیده نمی شوند همچنین یکی از اهداف اصلی کانال پوشش دادن ریز به ریز و کامل مطالب است تا خواننده درک درست و کاملی از آموزش ها داشته باشد، به همین خاطر ابتدا تمامیه مطالب درون word تایپ سپس پس از تکمیل به صورت رایگان داخل کانال قرار می گیرند، پس به دلیل جمع آوری مطالب ممکن است مدت زمانی درون کانال آموزشی قرار نگیرد به همین دلیل "لطفا صبر پیشه کنید"...

🎁 دوستانی که مشتاق به ترجمه کتابخانه های سی پلاس پلاس‌ از سایت رسمی Cplusplus.com هستند یا تمایل به آموزش موضوعات مرتبط با سی پلاس را دارند (به صورت رایگان) به آیدی @QtCplusplus پیام بدن تا هماهنگی های لازم انجام شده و در انتها زحمات افراد همراه مشخصاتشان برای عموم داخل کانال @Learncpp منتشر شود🌹


❤️ تبلیغات بسیار ارزانتر جهت کمک به بچه های سرطانی
💝 @tabligh_cpp

آموزش تخصصی ©
🌈 @Learncpp
زحمت ترجمه قسمتی از کتابخانه "map" را آقای دانیال تقی پور کشیدن، از ایشون بخاطر کمکشون
سپاسگزاریم🙏🌺

@Learncpp
🔸ترجمه کتابخانه "map (مَپ)" از سایت رسمی برنامه نویسان ++C به آدرس
www.cplusplus.com/reference

@Learncpp