فصل چهارم در تکرار ++C

<!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

mohsen_mahyar@yahoo.com

C++فصل چهارم در تکرار 101

این مثال یک راه برای خروج از حلقۀ نامتناهی را نشان داد. مثال بعدی روش

برای خاتمه دادن break دیگری را نشان می دهد. اما برنام هنویسان ترجیح می دهند از

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

4 متوقف کردن یک حلقۀ نامتناهی ‐ * مثال 6

اگر از راهکارهای خاتمۀ حلقه استفاده نکنید، حلقه برای همیشه ادامه پیدا می کند

و به طبع آن برنامه هم هیچ گاه به پایان نمی رسد. ممکن است شرط کنترلی که برای

نشود و حلقه تا بی نهایت ادامه « نادرست » حلقه می نویسید هنگام اجرای برنامه هیچ گاه

Ctrl+C یابد. در چنین مواردی از سیستم عامل کمک بگیرید. با فشردن کلیدهای

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

روی صفحه کلید خود را فشار دهید تا برنامۀ فعلی خاتمه پیدا کند. به کد زیر C کلید

نگاه کنید:

int main()

{ long bound;

cout << "Enter a positive integer: ";

cin >> bound;

cout << "Fibonacci numbers < " << bound << ":\n0, 1";

long f0=0, f1=1;

while (true) // ERROR: INFINITE LOOP! Press <Ctrl>+c.)

{ long f2 = f0 + f1;

cout << ", " << f2;

f0 = f1;

f1 = f2;

}

}

Enter a positive integer: 1000

Fibonacci numbers < 1000:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987,

159781, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418,

317811, 5040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352,

24157817, 63245986, 102334155, 165580141, 267914296, 433494437,

 

102 برنامه سازی پیشرفته

چون هیچ شرط پایان حلق های در این برنامه وجود ندارد، اجرای برنامه تا

را Ctrl+C بی نهایت ادامه خواهد یافت (تا وقتی حافظه سرریز شود). پس کلیدهای

فشار دهید تا برنامه خاتمه یابد.

do..while 4 دستور ‐3

روش دیگری برای ساختن حلقه است. نحو آن بهdo..while ساختار

صورت زیر است:

do statement while (condition);

دستور یا statement یک شرط قرار می گیرد و به جای condition به جای

را اجرا statement بلوکی قرار می گیرد که قرار است تکرار شود. این دستور ابتدا

را بررسی می کند. اگر شرط درست بود حلقه condition می کند و سپس شرط

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

است. با این فرق که شرط کنترل while مانند دستور do..while دستور

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

یعنی هر متغیر کنترلی به جای این که قبل از شروع حلقه تنظیم شود، می تواند درون آن

همیشه بدون توجه به do..while تنظیم گردد. نتیجۀ دیگر این است که حلقۀ

می تواند اصلا اجرا while مقدار شرط کنترل، لااقل یک بار اجرا می شود اما حلقۀ

نشود.

do..while 4 محاسبۀ حاصل جمع اعداد صحیح متوالی با حلقۀ ‐ * مثال 7

4 را دارد: ‐ این برنامه همان تأثیر مثال 1

int main()

{ int n, i=0;

cout << "Enter a positive integer: ";

cin >> n;

long sum=0;

do

sum += i++;

while (i <= n);

cout << "The sum of the first " << n << " integers is " << sum;

 

 

فصل چهارم / تکرار 103

}

4 اعداد فاکتوریال ‐ * مثال 8

اعداد فاکتوریال ! 0 و ! 1 و ! 2 و ! 3 و … با استفاده از رابطه های بازگشتی زیر

تعریف می شوند:

0! = 1 , n! = n(n-1)!

در معادلۀ دوم داریم: n = برای مثال، به ازای 1

1! = 1((1-1)!) = 1(0!) = 1(1) = 1

داریم: n = همچنین برای 2

2! = 2((2-1)!) = 2(1!) = 2(1) = 2

داریم: n = و به ازای 3

3! = 3((3-1)!) = 3(2!) = 3(2) = 6

برنامۀ زیر همۀ اعداد فاکتوریال را که از عدد داده شده کوچ کترند، چاپ می کند:

int main()

{ long bound;

cout << "Enter a positive integer: ";

cin >> bound;

cout << "Factorial numbers < " << bound << ":\n1";

long f=1, i=1;

do

{ cout << ", " << f;

f *= ++i;

}

while (f < bound);

}

Enter a positive integer: 100000

Factorial numbers < 100000:

1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880

نادرست شود، تکرار (f < bound) تا وقتی که شرط کنترل do..while حلقۀ

می گردد.

 

 

104 برنامه سازی پیشرفته

for 4 دستور

به صورت زیر است: for نحو دستورالعمل

for (initialization; condition; update) statement;

برای initialization سه قسمت داخل پرانتز، حلقه را کنترل می کنند. عبارت

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

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

برای تعیین این که آیا حلقه باید تکرار شود یا خیر به کار می رود. یعنی این عبارت،

اجرا statement شرط کنترل حلقه است. اگر این شرط درست باشد دستور

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

ارزیابی می گردد. بنابراین زنجیرۀ وقایعی که تکرار را statement پس از اجرای

ایجاد می کنند عبارتند از:

initialization 1 – ارزیابی عبارت

اگر نادرست باشد، حلقه خاتمه می یابد. . condition 2 – بررسی شرط

statement 3 – اجرای

update 4 – ارزیابی عبارت

5 – تکرار گام های 2 تا 4

عبارت های update و condition و initialization عبارت های

اختیاری هستند. یعنی می توانیم آن ها را در حلقه ذکر نکنیم.

برای محاسبۀ مجموع اعداد صحیح متوالی for 4 استفاده از حلقۀ ‐ * مثال 9

4 را دارد: ‐ این برنامه همان تأثیر مثال 1

int main()

{ int n;

cout << "Enter a positive integer: ";

 

فصل چهارم / تکرار 105

cin >> n;

long sum=0;

for (int i=1; i <= n; i++)

sum += I;

cout << "The sum of the first " << n << " integers is " << sum;

}

i<=n است. شرط کنترل حلقه int i= در حلقۀ برنامۀ فوق، عبارت مقداردهی اولیه 1

/ 0 نظر / 148 بازدید