زبان برنامه نویسی سی/متغیرها: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۱:
مطابق با دانش برنامه نویسی یک « متغیر » یک یا چند واحد از خانه های حافظه ( موقت ) است که :
 
1 - دارای یک نام یا همان « '''شناسه''' » است که فقط با همان شناسه و از طریق آن می توان به آن متغیر دسترسی پیدا نمود ( حتی در صورتی که بخواهیم ، غیر مستقیم به محتوای آن توسط اشاره گر دسترسی پیدا کنیم ، باید اشاره گر را به نام یا همان شناسه متغیر اشاره دهیم )
 
2 - دارای محتوایی است که به آن '''مقدار''' یا موجودی آن متغیر می گوئیم
خط ۲۲:
 
اگر مقداری به یک متغیر ندهید و آن را بدون وجود مقدار در مرتبه اول نوشتن آن داخل متن منبع وارد کنید آن متغیر را '''اعلان''' نموده اید . در ادامه برنامه اگر قصد استفاده از آن متغیر را داشته باشید باید حتماً آن متغیر در بدو کار مقدار و موجودی داشته باشد و اگر نداشته باشد یا کامپایلر خطا خواهد گرفت و یا یک عدد تصادفی در آن قرار خواهد گرفت که برنامه شما را بر هم می زند . به دادن محتوا به متغیر جهت ایجاد آن '''مقدار دهی اولیه''' می گوئیم . پس از مقدار دهی اولیه برای متغیر ، آن متغیر '''تعریف''' شده است و شما مجاز به استفاده از آن خواهید بود .
 
=== کار با متغیر ها ===
 
کلیدواژه های زبان سی را در مبخث آغازین کتاب نوشتیم . از این بین کلید واژه های :
 
char
int
short
long
float
double
long long int
long double
و
enum
 
جهت ایجاد متغیر های پایه به کار می روند . همچنین دو کلیدواژه signed و unsigned جهت تعیین اینکه عدد وارد شده برای مقدار متغیر دارای علامت منفی یا مثبت بودن عدد می باشد یا خیر ، به کار می رود . زمانی که کلیدواژه های بالا را در متن منبع خود می نویسید ، مجاز و مجبور به استفاده از یک نام دلخواه خواهید بود تا یک متغیر ایجاد کنید . اما فراموش نکنید که زبان سی ، یک زبان حساس به کوچک و بزرگی حروف می باشد که اصطلاحاً به آن case sensitive می گویند . بنابراین شما نمی توانید بنویسید Int یا INT و فقط مجاز به استفاده از شکل صحیح آن یعنی « int » می باشید . در مورد نام یا همان شناسه متغیر نیز قوانینی وجود دارد که یکی از آنها همین حساس بودن به کوچک یا بزرگ بودن حروف می باشد . شما زمانی که نامی را برای یک متغیر انتخاب می کنید و می نویسید در دفعات بعدی که میخواهید آن را در جای دیگر برنامه مورد استفاده قرار دهید ، حتماً باید دقیقاً کاراکتر به کاراکتر نام آن را همانند آنچه که برای انتخاب نامش استفاده کرده اید ، استفاده کنید و بنویسید . یعنی اگر نام آن را name گذاشته اید ، نمی توانید در ادامه برنامه ، وقتی می خواهید آن را فرابخوانید بنویسید : Name ! در صورت این اشتباه شما ، کامپایلر از شما خطا خواهد گرفت .
در انتخاب نام یک متغیر شما مجاز به استفاده از حروف کوچک a-z و حروف بزرگ A-Z و اعداد 9-0 و کاراکتر زیر خط ، یعنی « _ » می باشید ، به غیر از اینکه کاراکتر اول نامی که انتخاب می کنید نباید یک عدد یا کاراکتر زیر خط باشد . همانند Name_05 ، اما نمی توانید این نام را انتخاب کنید : 05Name
 
=== متغیر های عددی ===
 
از ابتدای کتاب یادآور گشتیم که بارها استاندارد سی تعریف شده است ، اما علاوه بر آن کامپایلر ها هر کدام اندازه مختص خود را برای متغیر ها اختصاص می دهند . مثلاً متغیری از نوع صحیح یعنی int در اولین استاندارد تنها یک بایت باید در حافظه جا اشغال می نمود ، بعد ها به دو بایت افزایش یافت . با این حال برخی کامپایلر ها اندازه های دیگری را اختصاص می دهند ، مثلاً چهار بایت . ابتدا کامپایلر خود را تست کنید تا ببینید که چه قدر برای هر نوع متغیر اختصاص می دهد :
 
<code language="C">
 
#include<stdio.h>
 
int main()
{
 
printf(sizeof(char), "\n");
printf(sizeof(int), "\n");
printf(sizeof(short), "\n");
printf(sizeof(float), "\n");
printf(sizeof(double), "\n");
printf(sizeof(long), "\n");
printf(sizeof(long long), "\n");
printf(sizeof(long double), "\n");
 
return 0;
 
}
 
</code>
 
این دستور را دریک فایل c ذخیره کنید و سپس آن را کامپایل کرده و خروجی را اجرا کنید ( بهتر است از طریق ترمینال آن را اجرا نمائید تا پنجره زود بسته نشود ) تا ببینید که هر نوع متغیر چه فضایی را مطابق با تعریف کامپایلر شما اشغال می نماید . زمانی که یک بایت اشغال می گردد 8 بیت برای ما در نظر گرفته می شود تا از 0 و 1 انباشته گردد . یعنی از 00000000 آغاز می گردد و تا 11111111 ادامه می یابد که در مبنای دهدهی می شود : 0 تا 255 که یعنی 256 عدد را شامل می شود که می شود : 2 به توان 8 . بدیهیست در صورت اشغال دو بایت این مقدار می شود 2 به توان 16 . عدد 0 در زبان سی و در بسیاری از زبان های دیگر جزء اعداد مثبت محسوب می شود . بنابراین اگر عدد شما علامت دار باشد ( که به صورت پیش فرض به همین شکل می باشد ، مگر آنکه با استفاده از کلیدواژه unsigned ، آن را بدون علامت کنید )
زمانی که یک متغیر یک بایت را اشغال می کند و علامتی ندارد ، 256 عدد را می تواند در خود جای دهد که همان طور که گفته شد از 0 آغاز می گردد و تا 255 ادامه می یابد ، یعنی شما مجاز به قرار دادن عددی بزرگ تر از عدد 255 در چنین متغیری نمی باشید ( هر چند اینها متغیر های پایه هستند و شما می تواند متغیر های خودتان را در زبان سی به کمک کلیدوژاه های دیگر و فایل های سرآیند ایجاد کنید و یا اندازه نوع متغیر ها را تغییر دهید ) اما اگر نوع داده علامت دار باشد ، از آنجایی که گفتیم عدد 0 ، عددی مثبت محسوب می شود ، بازه ما از 128- تا 127 خواهد بود ؛ چرا که 128 عدد از 256 عدد که نصف آن می باشد اعداد منفی ما هستند و از 0 تا 127 که می شود 128 عدد ، اعداد مثبت ما می باشند .
 
در ایجاد متغیر ها می توان دو گونه عمل کرد : یکی اینکه هر متغیر را ، حتی اگر از یک نوع باشند در خط های جداگانه ایجاد نمود و هم اینکه آنها را به صورت متوالی نوشت و با هم ایجاد کرد و حتی می توان در همان خط ، تک تک آنها را مقدار دهی نمود . در ایجاد یک متغیر از نوع صحیح یا integer که به صورت int نوشته می شود و همان کلیدواژه اختصاصی ایجاد اعداد صحیح می باشد می نویسیم :
 
<code language="C">
 
int a = 15;
 
</code>
 
اگر بخواهیم میتوانیم مقدار آن را بعدها نیز به آن اختصاص بدهیم . در اینجا متغیر a تعریف شده است اما اگر مقداری به آن نمی دادیم ، آن را اعلان نموده بودیم ، مثل :
 
<code language="C">
 
int a;
 
</code>
 
پس از اعلان یک متغیر ، برای دادن مقدار به آن یا استفاده از آن هرگز نباید دوباره نوع داده آن را بنویسیم ، یعنی اگر بخواهیم بعدها به a مقداری بدهیم می نویسیم : a = 15 یا مثلاً a = 8 . و اگر متغیر دیگری داشته باشیم با نام b می نویسیم : a - b و '''نباید''' از واژه int دوباره استفاده نمائیم . همچنین نحوه ایجاد چند متغیر از یک نوع در یک خط و دادن مقدار به آنها به شکل زیر می باشد ( هر چند به مبتدی ها توصیه نمی شود ) :
 
<code language="C">
 
int a, b, c, d = 5, 8, 16, 73;
 
</code>
 
<big>تذکر :</big>
 
علامت کالن یعنی « , » یک عملگر می باشد که وظیفه آن جدا کردن کد ها می باشد ، کاربرد آن در این قطعه کد برای جدا کردن نام متغیر ها و همچنین مقادیر آنها بود . اگر آن را فراموش کنید ، توسط کامپایلر به صورت یکپارچه خوانده خواهد شد که اگر فاصله ای هم بین آنها باشد مطمئناً کامپایلر خطا خواهد گرفت . پس وجود آن ضروری می باشد . همچنین علامت سمی کالن یعنی « ; » به معنی پایان دهنده و فاسخ می باشد . وظیفه آن که در انتهای حکم می آید ، پایان دادن به قطعه از کد و به اجرا گذاشتن آن می باشد . این عملگر از زبان های اسمبلی سطح بالا توسط زبان سی به ارث برده شده است . بنابراین زمانی که شما یک سمی کالن را قرار می دهید ، هر آنچه که پیش از آن نوشته شده است به صورت مجزا به اجرا در می آید که در اینجا یک متغیر را ایجاد می نماید و در صورت داشتن مقدار ، مقدار آن را داخل حافظه جای میدهد . پس نوشتن غیر ضروری آن یک خطای بارز خواهد بود و توسط کامپایلر به شما گوشزد خواهد گردید . در ایجاد و استفاده عملیاتی از داده ها و همین طور در پایان توابع کتابخانه ای باید از علامت سمی کالن استفاده نمائید و وجود آن ضروری می باشد ولی استفاده غیر ضروری از آن منجر به خطا در کامپایل برنامه شما خواهد گردید
 
در جدول زیر انواع داده های عددی به همراه فضای اشغال شده در حافظه توسط آنها ( مطابق با استاندارد سی ) و بازه اعدادی که می توانید در آنها جای دهید ، نوشته شده است :
 
 
[[رده:زبان برنامه نویسی سی]]