آموزش زبان برنامه نویسی C قسمت 6

 

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

در این قسمت به بررسی انواع حلقه ها و کاربردهاشون در زبان سی میپردازیم . با ما همراه باشید.

 

در برنامه نویسی خیلی مواقع احساس نیاز به انجام کارهای تکراری وجود داره.مثلا فرض بفرمایید ما بخوایم اعداد 1 تا 10 رو چاپ کنیم.خیلی ساده لوحانه است اگه بگیم خب برای هرکدوم یه دستور printf مینویسیم (یا حتی در یک خط همه ی اعداد رو مینویسیم) خب اگه این اعداد بشن 1 تا 1000 چی؟! پس باید از ابزار دیگه ای استفاده کنیم.

به اون ابزار میگن حلقه (Loop)! حلقه ها برای ما کارهای تکراری انجام میدن.تعداد تکرار حلقه میتونه دست ما باشه و یا نباشه ولی یک حلقه همیشه یک شرط کنترلی داره که اگه اون شرط دارای ارزش درستی باشه ، دستورات حلقه اجرا میشن و در غیراینصورت کنترل برنامه به بعد از دستورات حلقه منتقل میشه.اگه شرط یک حلقه همیشه درست باشه اصطلاحا حلقه ی بی نهایت (Infinite Loop) ایجاد میشه.

ما 3 نوع دستور برای ایجاد حلقه در زبان سی داریم : 

1.حلقه ی for : 

سینتکس استفاده از این حلقه به صورت زیره : 

for (initialization ; condition ; step){

           //statements

}

 

این حلقه دارای 3 بخشه که این بخش ها توسط ; از هم جدا میشن.دوستان ما برای استفاده از حلقه ها اغلب به یک متغیر نیاز داریم که بهش میگن شمارنده (counter).این متغیر رو معمولا با i نشون میدن که اول کلمه ی iterator به معنای تکرارشونده است. بخش اول مقداردهی اولیه به شمارنده است.بخش دوم شرط ادامه ی حلقه است که معمولا با استفاده از عملگرهای رابطه ای بیان میشه.اگه آموزش عملگرها رو نخوندید،برید اینجا. و در قسمت آخر هم گام حلقه قرار میگیره که معمولا از عملگرهای ++ یا -- استفاده میشه.البته گام حلقه میتونه هر مقداری باشه.

با یک مثال کار رو پیش میبریم : 

for (int i=1 ; i<=10 ; i++) {

       printf("%i\n",i);

}

همون مثالیه که در ابتدای بحث گفتم.اعداد 1 تا 10 رو چاپ میکنه.در حلقه ها هم اگه فقط یک دستور وجود داشته باشه میتونید {} رو نذارید اما همونطور که قبلا گفتم ، سعی کنید همیشه بذارید.

 

for (int j=10 ; j<=20 ; j+=2) printf("%d\n",j);

 

این حلقه 10 و 20 و اعداد زوج بین اونها رو به صورت صعودی چاپ میکنه.اینجا من از {} استفاده نکردم چون یک دستور بیشتر نبود و الان حلقه کارشو به درستی انجام میده.فقط خواستم یه بار دیده باشید که به این صورت هم درسته ولی از این به بعد کدها رو داخل یه بلوک قرار میدیم.

 

int i ;

for (i=1000 ; i>=0 ; i--){

      printf("%d\n",i);

}

امیدوارم نکات جدید رو خودتون متوجه شده باشید.در این حلقه هم اعداد 0 تا 1000 به صورت نزولی چاپ میشن.

 

2.حلقه ی while : 

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

while (condition){

         //statements

}

 

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

دوستان با کمی دقت میتونید به این نتیجه برسید که میشه حلقه ی for رو به شکل حلقه ی while دراورد.ببینید : 

 

int i ;  //initialization

while(condition){

         //statements

 

    i++ ; //step

}

مثلا پیاده سازیه یکی از مثال های بالا این بار با حلقه ی while رو ببینید : 

 

int i = 1000 ;

while (i>=0){

         printf("%d\n",i);

         i--;

}

معمولا از حلقه ی for وقتی استفاده میشه که ما تعداد دفعات تکرار رو میدونیم و در مواردی که این مقدار برای ما مشخص نیست و فقط میدونیم که در صورت برقراری شرط باید اون دستورات اجرا بشن از حلقه ی while استفاده میکنیم.

 

3.حلقه ی do while : 

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

do {

 

     //statements

 

} while (condition) ;

 

دوستان حواستون به ; بعد از while باشه !

یک مثال با هم ببینیم : 

int num ;

do {

      printf("Please Enter a Number : ") ; 

      scanf("%d",&num) ;

} while (num<10) ;

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

 

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

 

این قسمت هم به پایان رسید.امیدوارم از کار با حلقه ها لذت ببرید :) 

بدرود .