تعریف ثوابت در زبان C

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

  • استفاده از دستور Const

مثال :

const float pi=3.14;

  • استفاده از دستور #define

مثال:

#define pi 3.14

تعریف ثابت ها معمولا در ابتدای برنامه با استفاده از دستور #define  صورت می گیرد زیرا این دستور پیش پردازنده بوده و به بهبود برنامه کمک می کند . به طور کلی در زبان سی دستوراتی که با #  آغاز می شوند پیش پردازنده هستند یعنی کامپایلر ابتدا آنها را پردازش و سپس بقیه برنامه را کامپایل می کند.

دستورات شرطی  در C

اگر بخواهیم تحت شرایطی تعدادی از دستور ها اجرا شوند و یا تعدادی دیگر اجرا نشوند، باید از ساختار های شرطی استفاده کنیم. دستورات شرطی در تمام زبان های برنامه نویسی از اجزای اصلی هستند. یک دستور شرطی، شرطی که کاربر مشخص می کند را بررسی کرده و در صورت صحیح بودن یک دسته از کدهای کاربر و در صورت غلط بودن دسته ی دیگری از کدهای کاربر را اجرا می کند.

دستور شرطی if

همان طور که در بالا مشاهده می شود، اگر شرط موردنظر برقرار باشد، کدهای درون { } در زیر if  اجرا خواهند شد. اگر شرط موردنظر برقرار نباشد، کدهای درون { } در زیر else  اجرا خواهند شد به مثال زیر توجه کنید:

if(a==7)

PORTD=0b11110000;

else

PORTD=0b00001111;

توضیح : در مثال بالا اگر متغیر a  برابر با عدد .  باشد، مقدار باینری 11110000 به رجیستر PORTD نسبت داده می شود و اگر برابر با .  نباشد، مقدار باینری 00001111 به رجیستر PORTD نسبت داده می  شود. دقت شود، در سطرهای بالا دو علامت { } وجود ندارد و این به این علت است در زیر دستور if و else  تنها یک دستور وجود دارد، اگر تعداد دستورات بیشتر از یک دستور باشد حتماً باید از { } استفاده شود. وجود دستور else در if  ضروری نیست و بسته به نیاز کاربر قرار داده می شود.

دستور شرطی switch

ساختار switch یکی از ساختار های مهم و جالب در زبان C  است. از این ساختار برای تصمیم گیری های  چندگانه بر اساس مقادیر مختلف یک عبارت، استفاده می شود. به طور کلی، در تمام تصمیم گیری هایی که بیش از سه انتخاب وجود داشته باشد بهتر است از ساختار switch استفاده شود. دستور شرطی switch  نسبت به دستور شرطی if  از توانمندی کمتری برخوردار است . این دستور فقط می تواند برابری را مورد شرط قرار دهد . قالب دستور شرطی switch را در زیر مشاهده می کنید :

Switch( عامل مورد شرط )
{
Case مقدار اول :
کدهایی که در صورت برابر بودن عامل شرط با مقدار اول باید اجرا شود
Break;
Case مقدار دوم :
کدهایی که در صورت برابر بودن عامل شرط با مقدار دوم باید اجرا شود
Break;
.
.
.
Default :
کدهایی که در صورت برابر نبودن عامل شرط با هیچ یک از مقادیر باید اجرا شود
}

گزینه Default در ساختار دستور switch ضروری نیست و بسته به نیاز کاربر قرار داده می شود. در دستور switch مقادیر صحیح مورد بررسی قرار می گیرند . هر دستور case  یک شرط برابری را مورد بررسی قرار می دهد و در صورت برابر بودن ، کد های قرار گرفته در زیر آن اجرا شده و توسط دستور Break  از ساختار switch خارج می شود. اگر در زیر هر case دستور Break  قرار داده نشود، هر case با case بعدی or منطقی  (یا) می شود. در بعضی شرایط به این صورت می توان 2 مقدار را بررسی کرد.

حلقه های تکرار  در C

یکی دیگر از از اجزا اصلی زبان های برنامه نویسی حلقه ها هستند. حلقه های تکرار تحت شرایط خاصی، یک یا چند دستور را چندین بار اجرا می کنند. به عنوان مثال، اگر بخواهیم تعداد 100  عدد را از ورودی بخوانیم و آن ها را با هم جمع کنیم. باید عمل خواندن عدد را 100 بار ت کرار کنیم. عملکرد یک حلقه به این صورت  است که کد مربوط به حلقه تا زمانی که شرط حلقه برقرار باشد، تکرار می شود و تا زمانی که حلقه در حال اجرا است، برنامه در محل حلقه می ماند.

حلقه while

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

while ( شرط حلقه )
{ ;کدهایی که تا زمان برقراری شرط حلقه تکرار می شود}
مثال
char a=0;
while( a<16 )
{
PORTD = a;
a++;
}

حلقه do…while

این حلقه عملکردی بسیار شبیه به حلقه while  دارد. در این حلقه یکبار کدهای درون حلقه اجرا می شود و  سپس شرط حلقه بررسی می گردد. بنابراین برای اینکه شرط در آخر بررسی شود از حلقه do…while استفاده می شود.

do
{
کد هایی که در زمان برقراری شرط حلقه تکرار می شوند//
}
While( شرط حلقه );

حلقه for

از این حلقه در حالتی که تعداد دفعات تکرار حلقه از قبل مشخص باشد، به کار می رود. در این حلقه، متغیری وجود دارد که تعداد دفعات تکرار حلقه را کنترل می کند.  این متغیر را اندیس حلقه تکرار یا شمارنده می گ ویند. اندیس حلقه دارای یک مقدار اولیه است که طی هر بار اجرای دستورات حلقه، مقداری به آن  اضافه می شود. به این مقدار اضافه شده در هر بار اجرای حلقه، گام حرکت گویند. گام حرکت می تواند عددی صحیح یا اعشاری، مثبت یا منفی ویا کاراکتری باشد. یکی دیگر از اجزای حلقه for  شرط حلقه است. شرط حلقه مشخص می کند که دستورات داخل حلقه for  تا کی باید اجرا شوند. اگر این شرط دارای ارزش درستی باشد، دستورات داخل حلقه اجرا می شوند وگرنه کنترل برنامه از حلقه خارج می شود. حلقه for  دارای یک متغیر شمارشی است که نسبت به تعداد تکرار حلقه،  طول آن مشخص شده و در ابتدای برنامه باید معرفی  شود. به طور مثال اگر تعداد تکرار حلقه ایی 200 مرتبه باشد، می توان متغیر شمارشی از نوع unsigned char  معرفی کرد، اما اگر تعداد تکرار حلقه 1000 مرتبه باشد، باید متغیری با طول بیشتر مثل نوع int  را  برای متغیر شمارشی انتخاب کرد. این متغیر شمارشی در بدنه حلقه کاربرد فراوانی دارد. دستور for  را به شکل زیر می توان به کار برد:

For(  مقدار اولیه شمارنده حلقه ;  شرط حلقه ; گام حرکت حلقه )

{;  کدهایی که تا زمان برقراری شرط حلقه تکرار می شود }

مثال :

int i;

for (i=0 ; i<8 ; i++)

a[i]=i;

توضیح : در ابتدای حلقه for مقدار متغیر i  برابر با مقدار صفر قرار داده شده است و شرط حلقه تا وقتی برقرار است که مقدار متغیر i  کوچکتر از عدد 8  باشد. گام حلقه به شکلی تنظیم شده که هر بار یک واحد به متغیر شمارشی اضافه می کند .در ابتدا مقدار متغیر i  برابر با صفر است و حلقه شروع می شود، کد های درون حلقه اجرا شده سپس یک واحد به متغیر i  اضافه می شود. تکرار کد های درون این حلقه، طبق شرط حلقه 8  مرتبه می باشد و به متغیر i  مقادیر 0  تا 7 تعلق می گیرد. از تغییرات متوالی مقدار متغیر i می توان در حلقه استفاده کرد. همان طور که در مثال بالا مشاهده می شود، یک آرایه با نام a  قبلا معرفی شده است، به جای اندیس آرایه a، متغیر i قرار گرفته است؛ بنابراین با هر بار تکرار حلقه و تغییر مقدار متغیر i ، اندیس آرایه نیز تغییر می کند و هر بار مقدار i به عضو i ام آرایه a  انتساب داده می شود. به طور مثال اگر حلقه در حرکت سوم قرار گیرد، یعنی مقدار i  برابر با عدد 2 است. در این حالت کد داخل حلقه به صورت a[2]=2 می شود.

دستورbreak  وcontinue  در حلقه ها

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