قالب وردپرس افزونه وردپرس
خانه / دوره آموزش مقدماتی C و ++C / قسمت یازدهم آموزش C – ساختارهای تکرار

قسمت یازدهم آموزش C – ساختارهای تکرار

با قسمت یازدهم از آموزش های زبان C در خدمت شما هستیم امیدوارم تا اینجای کار با ما همراه بوده باشید . در این جلسه قصد داریم ساختارهای تکرار در برنامه نویسی را به شما علاقه مندان برنامه نویسی آموزش دهیم .

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

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

for( i=0 ; i< n ; i++)
{
دستورات ;
}
نکاتی که باید در مورد نحوه کاربرد ساختار تکرار for در نظر داشت عبارتند از :

۱ – دستوری که بعد از ساختار for آمده است می تواند در خط دیگری تایپ شود.

۲ – ساختار for به ; ختم نمی شود . زیرا در غیر این صورت مجموعه دستوراتی که اجرای آنها باید تکرار شود ، فقط یک بار اجرا خواهند شد .

۳ – بعد از اولین مقدار اندیس حلقه و شرط حلقه ; قرار می گیرد .

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

بعنوان مثال در دستور :

#include <stdio.h>
#include <conio.h>
void main()
{
int i ;
for( i=0 ; i<5 ; i++ )
printf("\n the value of i is : %d" , i);
getch();
}

اندیس حلقه تکرار است که مقدار اولیه آن برابر با صفر است . شرط حلقه تکرار این است که i کوچکتر از ۵ باشد و گام حرکت نیز ۱ است که با ++i مشخص شده است . خروجی حاصل از اجرای این دستور بصورت زیر است :

the value of i is : 0

the value of i is : 1

the value of i is : 2

the value of i is : 3

the value of i is : 4

مثال ۱ :  برنامه ای که تعداد ۱۰ عدد را از ورودی خوانده ، میانگین آنها را محاسبه کرده و به خروجی می برد :

#include <stdio.h>
#include <conio.h>
void main()
{
int i , sum=0 , num ;
float ave ;
for( i=1 ; i<=10 ; i++ )
{
printf("enter number %d : ", i);
scanf("%d", &num);
sum+=num ;
printf("\n");
}
ave=sum/10 ;
printf("\n the average is:%f " , ave);
getch();
}

خروجی حاصل از اجرای برنامه مثال ۱ :

enter number 1 : 12
enter number 2 : 13
enter number 3 : 17
enter number 4 : 18
enter number 5 : 16
enter number 6 : 20
enter number 7 : 23
enter number 8 : 28
enter number 9 : 31
enter number 10 : 14

the average is:19.000000

مثال ۲ : برنامه ای که جدول ضرب اعداد از ۱ تا ۱۰ را درصفحه نمایش چاپ میکند.

#include <stdio.h>
#include <conio.h>
void main()
{
int i,j;
for(i=1 ; i<=10 ; i++)
{
for(j=1 ; j<=10 ; j++)
printf("%3d " , i*j);
printf("\n");
}
getch();
}

خروجی حاصل از برنامه فوق :

۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰
۲ ۴ ۶ ۸ ۱۰ ۱۲ ۱۴ ۱۶ ۱۸ ۲۰
۳ ۶ ۹ ۱۲ ۱۵ ۱۸ ۲۱ ۲۴ ۲۷ ۳۰
۴ ۸ ۱۲ ۱۶ ۲۰ ۲۴ ۲۸ ۳۲ ۳۶ ۴۰
۵ ۱۰ ۱۵ ۲۰ ۲۵ ۳۰ ۳۵ ۴۰ ۴۵ ۵۰
۶ ۱۲ ۱۸ ۲۴ ۳۰ ۳۶ ۴۲ ۴۸ ۵۴ ۶۰
۷ ۱۴ ۲۱ ۲۸ ۳۵ ۴۲ ۴۹ ۵۶ ۶۳ ۷۰
۸ ۱۶ ۲۴ ۳۲ ۴۰ ۴۸ ۵۶ ۶۴ ۷۲ ۸۰
۹ ۱۸ ۲۷ ۳۶ ۴۵ ۵۴ ۶۳ ۷۲ ۸۱ ۹۰
۱۰ ۲۰ ۳۰ ۴۰ ۵۰ ۶۰ ۷۰ ۸۰ ۹۰ ۱۰۰

ساختار تکرار while در مواقعی مورد استفاده قرار می گیرد که تعداد دفعات تکرار مجموعه دستورات مورد نظر مشخص نباشد .
ساختار while بصورت های زیر استفاده می شود :

while(شرط)
{
دستورات ;
}

وقتی که کنترل اجرای برنامه به ساختار while رسید ، شرطی که در آن ذکر شده است تست می شود . اگر این شرط دارای ارزش منطقی درست باشد ، دستور یا دستورات داخل حلقه تکرار اجرا میشوند واجرای این دستورات تا برقراری شرط مذکورادامه می یابد. لذا باید توجه داشت که در داخل بدنه حلقه تکرار ، شرط حلقه نقض شود ، وگرنه دستورات داخل حلقه ، بینهایت بار اجرا خواهند شد .

مثال ۳ : برنامه ای که یک جمله رااز ورودی خوانده و تعداد کاراکترهای آن جمله را شمارش می کند ( انتهای جمله به کلید enter ختم می شود ) .

#include <stdio.h>
#include <conio.h>
void main()
{
int count=0 ;
printf("type a statement and ENTER");
printf("to end.");
while(getche()!='\r')
count ++ ;
printf("\n length of statement is:");
printf("%d", count );
getch();
}
با استفاده از ساختارهای تکرار for  و while می توانیم حلقه های تکراری درست کنیم که جهت ختم آنها باید از کلید CTL+BREAK استفاده کرد . به این حلقه های حلقه های بینهایت گفته می شود . برای ساختن حلقه تکرار از while می توانیم بجای شرط از یک (۱) به معنی ارزش درستی ، استفاده کنیم . ساختار تکرار do ساختار تکرار do مشابه ساختار تکرار while است . با این تفاوت که در ساختار while شرط حلقه در ابتدای حلقه تست میشود ولی در ساختار do شرط حلقه در انتهای حلقه تکرار تست خواهد شد. لذا در ساختار do مجموعه دستورات داخل ساختار، حداقل یکبار انجام می شوند . این ساختار بصورت زیر استفاده می شود :

do
{
دستورات ;
}while(شرط)

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

مثال ۴ : برنامه ای که عددی را از ورودی خوانده و سپس آنرا بصورت معکوس درخروجی چاپ می کند .
مثلا عدد ۲۱۵۳ را بصورت ۳۵۱۲ چاپ می نماید .

#include <stdio.h>
#include <conio.h>
void main()
{
int number , digit ;
printf("enter a number: ");
scanf("%d" , &number);
do {
digit=number%10 ;
printf("%d" , digit);
number/=10 ;
}while(number!=0 );
getch();
}

نمونه ای از خروجی حاصل از اجرای برنامه مثال ۴ :

enter a number:2153
۳۵۱۲

ساخت حلقه های تکرار بینهایت با استفاده از ساختار do نیز امکان پذیر است . استفاده گردد .

نقد و بررسی

User Rating: ۴٫۷۴ ( ۵ votes)

درباره ی آریـان پــور

سلام . آریــان پور هستم . از نویسندگان میکروپـدیا .. علاقه مــند به برنامه نویسی و طراحی وب و شبکه ! دیدگاه ها و نظرات شما دوستان بررسی میشه و باعث دلگرمـی برای نوشتن مطالب بهتر و به روزتر . در تماس باشید با : aryanpour [at] micropedia [dot] ir با مـا همراه باشید ..

مطلب پیشنهادی

قسمت بیست و چهارم آموزش C – عملگرهای اشاره گر

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

یک دیدگاه

  1. بازتاب ها: i

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پاسخ عبارت زیر را وارد کنید: *