بایگانی برچسب: s

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – ساختمان ( struct ) – قسمت دوم

تابع sizeof

تابع sizeof: تابعی است برای بدست آوردن size یک متغیر یا size یک نوع متغیر بر اساس byte.
مثال:
بدست آوردن size نوع متغیر int:

در خروجی ۴ چاپ می شود و نشان می دهد که اندازه ی یک متغیر از نوع int برابر با ۴ بایت یعنی ۳۲ بیت است.
می توانیم به جای گذاشتن نوع یک متغیر در آراگومان تابع sizeof نام متغیر هم گذاشت:

خروجی برابر با ۴ خواهد بود.

حالا می خواهیم یک آرایه از نوع structی که خودمان ایجاد کرده ایم بسازیم و size آنرا محاسبه کنیم.

تابع sizeof برای محاسبه ی struct

اطلاعات در مورد size انواع متغیر

توضیحات: قبل از اجرای برنامه می خواهیم خودمان size آرایه ی جدید را محاسبه کنیم.
در struct با نام f1 یک آرایه ی ۱۰تایی از کاراکتر داریم و اگر دقت کنید متوجه می شوید که هر کاراکتر ۱ byte است
یعنی:

۱*۱۰=۱۰byte

در ادامه یک آرایه ی ۵تایی از نوع int داریم که size نوع int هم برابر با ۴بایت است و چون ما یک آرایه ی ۵تایی از این نوع داریم پس درواقع پنج متغیر از این نوع داریم
یعنی:

۴*۵=۲۰byte

بعلاوه ی ۱۰ تای اول:

۲۰+۱۰=۳۰byte

در ادامه یک متغیر از نوع double داریم و اندازه ی double برابر با ۸بایت است
یعنی:

۸*۱=۸byte

۳۰+۸=۳۸byte

در اینجا متغیر های ما در struct تعریفی ما به اتمام می رسد یعنی اندازه ی یک متغیر از نوع struct تعریفی ما به نام f1 برابر با ۳۸بایت است و چون ما یک آرایه ی ۱۰تایی از این نوع متغیر ایجاد کرده ایم
پس:

۳۸*۱۰=۳۸۰byte

struct_part2

آموزش زبان ++C - مقدمه

آموزش برنامه نویسی ++C – ساختمان ( struct ) – قسمت اول

موارد استفاده : برای مثال فرض کنید می خواهیم اسامی و تاریخ تولد و معدل ۱۰۰ دانشجو را از ورودی بگیریم.
ما دو راحل داریم: یکی اینکه یک آرایه ی ۱۰۰تایی از char برای اسم و دو آرایه ی ۱۰۰تایی از int برای تاریخ تولد و معدل در نظر بگیریم.
راحل دوم این است که ما یک آرایه از یک نوع خاصی در نظر بگیریم که مقادیر هر اندیسش برابر است با یک رشته برای اسم و دو متغیر از نوع int برای گرفتن تاریخ تولد و معدل از ورودی.
برای بوجود آوردن اینچنین متغیر خاصی از struct استفاده می شود.

ساختار کلی:

struct نام نوع جدید
{
فیلد ها
};

مثال (مثالی که در بالا زدیم):

نکته:

رشته: رشته یک متن است که در واقع یک متن آرایه ای از کاراکتر هاست که برای مثال به این صورت تعریف می شوند:

یعنی یک رشته ای که حداکثر می تواند با ۲۰ کاراکتر پر شود.
برای گرفتن رشته از ورودی:

این توضیحات صرفا برای آشنایی اندک با رشته بود در مقاله های بعدی به طور کامل با رشته آشنا می شوید.
ادامه ی بحث struct :
نکته: struct را در بالای تابع main تعریف می کنند.
ایجاد متغیر از نوع جدیدی که ایجاد کرده ایم:
نام نوع متغیر جدید نام متغیر;
برنامه ی کامل از مثال بالا:

توضیحات:

یک struct با نام st ایجاد کرده ایم که شامل یک رشته به نام name با تعداد اندیس ۱۰ است و یک متغیر با نام  moadel و یک متغیر با نام tarikh از نوع int.

در این قسمت ما از نوع جدیدی که ایجاد کرده ایم به نام st یک متغیر تعرف می کنیم با نام s1.
دسترسی به هرکدام از فیلد های نوع متغیر جدید:
برای مثال دسترسی به moadel:

حالا فیلد moadel برابر با ۱۰ می شود. ولی ما در کدهایمان می خواهیم از کاربر این مقادیر را بگیریم.
نکته: این نوع متغیر هایی که ما آنرا ایجاد می کنیم مانند s1 که تعریف کردیم ADT یا abstract data type گویند.
اجرای برنامه ی بالا:
struct1

برنامه ی بالا مشخصات یک دانشجو را می گیرد ما می توانیم از نوع متغیر جدید خود آرایه هم تعریف کنیم.
مثال:
برنامه ای بنویسید که اگر کاربر در خروجی کاراکتر یک را وارد کرد یک اندیس آرایه از نوع st که در برنامه ی بالا تعریف کرده یم توسط کاربر پر شود و اگر کاربر کاراکتر دو را وارد کرد تمام فیلد های پر شده توسط کاربر نمایش داده شود و اگر x وارد شود برنامه از حالت اجرا خارج شود (آرایه دارای ۳ اندیس باشد).

توضیحات: ابتدا ما یک آرایه از نوع st تعریف میکنیم سپس یک متغیر k=0 از نوع int ایجاد می کنیم به عنوان شمارنده ی اندیس ها سپس یک نوع منو ایجاد می کنیم که کاربر را توجیح کنیم.
تمام کد هایمان را در while میگذاریم چون نمیدانیم کار بر چند بار به آرایه مقدار می دهد یا از آن استفاده می کند.
کاراکتر ch را از ورودی میگیریم:
اگر برابر با ۱ بود: name, moadel,tarikh اندیس اول آرایه ی s1 را از کاربر میگیریم سپس یک مقدار بر k اضافه می کنیم.
اگر برای با ۲ بود: در یک for همه ی مقادیر آرایه ی s1 را نشان می دهیم.
اگر برابر با x بود: از تابع exit(0) استفاده می کنیم برای خارج شدن از اجرای برنامه.
اجرای برنامه:
دوبار زدن دکمه ۱:
struct2
سپس زدن دکمه ی ۲:
struct3
برای خروج کاراکتر x.
اطلاعات بیشتر در مورد struct