0% found this document useful (0 votes)
9 views32 pages

prog3

Uploaded by

zahrakarayy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views32 pages

prog3

Uploaded by

zahrakarayy
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

‫موسسه آموزش عالی پاسارگاد شیراز‬

‫دستورات کنترلی‬
‫‪ ‬ساختار شرط‬
‫ساختار شرط به صورت زیر است‪:‬‬
‫( ‪if‬‬ ‫)‬
‫{‬
‫;‬
‫}‬

‫‪ ‬که در آن دستورات می توانند از یک تا چندین خط باشند‪ ،‬همچین رویه کار این ساختار بدین‬
‫صورت است که اگر شرط یا همان گذاره صحیح بود دستورات اجرا می شوند‪ ،‬در غیر این صورت‬
‫دستورات اجرا نمی شوند‪.‬‬

‫‪2‬‬
‫دستورات کنترلی‬
‫‪ ‬ساختار شرط‬
‫‪ ‬هر دستور شرط می تواند دارای یک ‪else‬باشد که در واقع بیان گر این است که اگر شرط اشتباه بود‬
‫چه دستوری اجرا شود‪ .‬ساختار شرط همراه با ‪else‬به صورت زیر است‪:‬‬
‫( ‪if‬‬ ‫)‬
‫{‬
‫;‬
‫}‬
‫‪else‬‬
‫{‬
‫;‬
‫}‬

‫‪3‬‬
‫دستورات کنترلی‬
# ‫ مثال‬
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int a, b;
6 cin >> a >> b;
7 if (a > b)
8 {
9 cout << "a is bigger";
10 }
11 else
12 {
13 cout << "b is bigger";
14 }
15 return 0;
16 }

‫استفاده‬if else ‫ در مثال فوق که برای تشخیص بزرگتر بودن یک عدد از بین دو عدد است از دستور‬
.‫کرده ایم‬

4
‫دستورات کنترلی‬
‫‪ ‬گاهی ما به این موضوع بر خورد می کنیم که نیاز است در ‪else‬نیز شرطی داشته باشیم یا حتی گسترده تر در‬
‫تمامی ‪else‬ها یک شرط داشته باشیم برای این کار می توان از ساختار زیر استفاده کرد‪:‬‬
‫( ‪if‬‬ ‫)‬
‫{‬
‫;‬
‫}‬
‫( ‪else if‬‬ ‫)‬
‫{‬
‫;‬
‫}‬
‫‪else‬‬
‫{‬
‫;‬
‫}‬

‫الزم به ذکر است که می توان این رویه اضافه کردن ‪else if‬را گسترش داد و حالت های دیگری را نیز‬ ‫‪‬‬
‫بررسی نمود‪.‬‬
‫‪5‬‬
‫دستورات کنترلی‬
:‫ برنامه زیر برای تشخیص عالمت یک متغیر به کار می رود‬
#
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int a;
6 cin >> a;
7 if (a > 0)
8 {
9 cout << "a is +";
10 }
11 else if (a < 0)
12 {
13 cout << "a is -";
14 }
15 else
16 {
17 cout << "a is 0";
18 }
19 return 0;
20 }

6
‫دستورات کنترلی‬
‫‪ ‬حلقه ها‬
‫در برنامه نویسی بسیار پیش خواهد آمد که شما بخواهید یک روند را چندین بار تکرار کنید و این تکرار ها بسته به مکان ممکن است متغیر باشد‪،‬‬ ‫‪‬‬
‫در ‪C++‬ما دستوراتی داریم که به حلقه یا ‪loop‬معروف هستند و برای ما عمل تکرار دستورات را انجام می دهند‪.‬‬
‫)‪for (intialization;condition;statement‬‬
‫{‬ ‫دستور ‪for‬‬ ‫‪‬‬
‫;‬
‫}‬
‫‪initialization‬جهت نسبت دهی مقداری به شمارنده به کار می رود‪،‬‬ ‫‪‬‬

‫‪condition‬شرط پایان حلقه است‬ ‫‪‬‬

‫‪statements‬دستوراتی بر روی شمارنده هستند(به عبارتی گام ها را مشخص می کنند)‪.‬‬ ‫‪‬‬

‫حلقه ‪for‬تا زمانی اجرا می شود که شرط صحیح باشد و همچنین این حلقه در زمان های قابل شمارش بودن تعداد دور‬ ‫‪‬‬
‫ها بکار می رود‪ ،‬دقت کنید که ابتدا ‪initialization‬اجرا می شود پس از آن شرط و در انتها ‪statements‬را خواهیم‬
‫داشت‪.‬‬
‫‪7‬‬
‫دستورات کنترلی‬
‫ حلقه ها‬
initialization
for ‫فلوچارت دستور‬ 

for (intialization;condition;statement)
{
True
;
}

False

statement

8
‫دستورات کنترلی‬
‫ مثال‬
#
1 #include <iostream> Enter a number:3
2 using namespace std; 3,2,1,Start!
3 int main()
4 {
5 int a;
6 cout << "Enter a number:";
7 cin >> a;
8 for (int i=a;i > 0;i--)
9 {
10 cout << i << ",";
11 }
12 cout << "Start";
13 return 0;
14 }

9
‫دستورات کنترلی‬
‫برای یاد گیری کار حلقه ها می توان آنها را آنالیز نمود که این روش بهترین شیوه برای یافتن راه حل مسئله نیز می باشد‪ .‬برای این کار ابتدا جدولی به‬ ‫‪‬‬
‫شرح زیر خواهیم داشت که در آن متغیرهای به کار رفته در حلقه را می نویسیم و همچنین شرط حلقه که بدانیم در چه مرحله ای حلقه تمام خواهد شد‬
‫‪#‬‬
‫و از بلوک مربوط به آن خارج می شویم‪:‬‬
‫‪1‬‬ ‫>‪#include <iostream‬‬ ‫‪Enter a number:3‬‬
‫‪2‬‬ ‫;‪using namespace std‬‬ ‫!‪3,2,1,Start‬‬ ‫ما جدول را با ورودی ‪a=3‬همانند مثال فوق شروع می کنیم‪.‬‬ ‫‪‬‬
‫‪3‬‬ ‫)(‪int main‬‬
‫‪4‬‬ ‫{‬
‫‪5‬‬ ‫;‪int a‬‬ ‫‪a‬‬ ‫‪i‬‬ ‫شط‬
‫‪6‬‬ ‫;"‪cout << "Enter a number:‬‬
‫‪7‬‬
‫‪8‬‬
‫;‪cin >> a‬‬
‫)‪for (int i=a;i > 0;i--‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪True‬‬
‫‪9‬‬
‫‪10‬‬
‫{‬
‫;"‪cout << i << ",‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪True‬‬
‫‪11‬‬
‫‪12‬‬
‫}‬
‫;"‪cout << "Start‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪True‬‬
‫‪13‬‬
‫‪14‬‬ ‫}‬
‫;‪return 0‬‬
‫‪3‬‬ ‫‪0‬‬ ‫‪False‬‬
‫در جدول فوق که نشان دهنده روش شمارش کاهشی به کمک ‪for‬است‪ ،‬در هر مرحله مقدار متغیر های به کار رفته را بررسی کرده ایم و در صورت‬ ‫‪‬‬
‫درستی شرط کار را ادامه داده ایم و در صورتی شرط اشتباه بود اتمام کار را داشته ایم‪.‬‬

‫‪10‬‬
‫دستورات کنترلی‬
‫ مثال‬
#
1 #include <iostream> Enter a number:3
2 using namespace std; 1,2,3,Start!
3 int main()
4 {
5 int a;
6 cout << "Enter a number:";
7 cin >> a;
8 for (int i=1;i >= a;i++)
9 {
10 cout << i << ",";
11 }
12 cout << "Start";
13 return 0;
14 }

11
‫دستورات کنترلی‬
‫این بار نیز همانند قبل جدولی را برای بررسی برنامه با ورودی ‪a=3‬در نظر می گیریم و حلقه ‪for‬را بررسی می کنیم‪:‬‬ ‫‪‬‬
‫‪#‬‬
‫‪1‬‬ ‫>‪#include <iostream‬‬ ‫‪Enter a number:3‬‬
‫‪2‬‬ ‫;‪using namespace std‬‬ ‫!‪1,2,3,Start‬‬
‫‪3‬‬ ‫)(‪int main‬‬
‫‪4‬‬ ‫{‬
‫‪5‬‬ ‫;‪int a‬‬
‫‪6‬‬ ‫;"‪cout << "Enter a number:‬‬
‫‪7‬‬ ‫;‪cin >> a‬‬
‫‪8‬‬
‫‪9‬‬
‫)‪for (int i=1;i >= a;i++‬‬
‫{‬ ‫‪a‬‬ ‫‪i‬‬ ‫شط‬
‫‪10‬‬ ‫;"‪cout << i << ",‬‬
‫‪11‬‬
‫‪12‬‬
‫}‬
‫;"‪cout << "Start‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪True‬‬
‫‪13‬‬ ‫;‪return 0‬‬
‫‪14‬‬ ‫}‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪True‬‬
‫‪3‬‬ ‫‪3‬‬ ‫‪True‬‬
‫‪3‬‬ ‫‪4‬‬ ‫‪False‬‬
‫دقت کنید که این بار در هر بار اجرا شدن دستورات ‪for‬یک واحد به ‪i‬اضافه می شود در حالی که در مثال قبل یک واحد کسر می شد‬ ‫‪‬‬

‫‪12‬‬
‫دستورات کنترلی‬
‫‪ ‬مثال‪:‬مضارب عدد ‪ 3‬که کوچک تر از ‪ 29‬هستند را در خروجی چاپ کنید‬
‫برای حل این مسئله می توان از یک حلقه ‪for‬استفاده نمود و کار آن بسیار ساده است‪ ،‬چرا که می دانیم مضارب یک عدد از حاصل‬ ‫‪‬‬
‫ضرب آن عدد در عدد دیگری بدست می آید و می توان مضارب را با گام افزایش آن عدد بدست آورد‪ ،‬یعنی برنامه ای به‬
‫شکل زیر‪:‬‬
‫‪#‬‬
‫‪1‬‬ ‫>‪#include <iostream‬‬ ‫‪0‬‬
‫‪2‬‬ ‫;‪using namespace std‬‬ ‫‪3‬‬
‫‪3‬‬ ‫)(‪int main‬‬ ‫‪6‬‬
‫‪4‬‬ ‫{‬ ‫‪9‬‬
‫‪5‬‬ ‫)‪for (int i=0;i <= 29;i = i + 3‬‬ ‫‪12‬‬
‫‪6‬‬ ‫{‬ ‫‪15‬‬
‫‪7‬‬ ‫;‪cout << i << endl‬‬ ‫‪18‬‬
‫‪8‬‬ ‫}‬ ‫‪21‬‬
‫‪9‬‬ ‫;‪return 0‬‬ ‫‪24‬‬
‫‪10‬‬ ‫}‬ ‫‪27‬‬

‫‪13‬‬
‫دستورات کنترلی‬
‫‪ ‬حلقه ها‬
‫دستور ‪while‬‬ ‫‪‬‬

‫این حلقه فقط دارای یک شرط است و ساختار آن به صورت زیر است‪:‬‬ ‫‪‬‬

‫( ‪while‬‬ ‫)‬
‫{‬
‫;‬
‫}‬

‫این حلقه معموال برای ساختار هایی که تعداد آن ها را نمی دانیم استفاده می شود و برای شماره گذاری نیاز است که‬ ‫‪‬‬
‫خودمان اقداماتی را انجام دهیم‪.‬‬

‫‪14‬‬
‫دستورات کنترلی‬
‫‪ ‬حلقه ها‬
‫فلوچارت دستور ‪while‬‬ ‫‪‬‬

‫‪True‬‬

‫( ‪while‬‬ ‫)‬
‫{‬
‫;‬
‫‪False‬‬ ‫}‬

‫‪15‬‬
‫دستورات کنترلی‬
‫ مثال‬
#
1 #include <iostream> Enter a number:3
2 using namespace std; 3,2,1,Start!
3 int main()
4 {
5 int a;
6 cout << "Enter a number:";
7 cin >> a;
8 while (a > 0)
9 {
10 cout << a << ",";
11 --a;
12 }
13 cout << "Start";
14 return 0;
15 }

16
‫دستورات کنترلی‬
‫‪ ‬مثال‪ :‬برنامه ای بنویسید که تا زمان مثبت بودن ورودی عددی از ورودی دریافت کند‪.‬‬
‫‪#‬‬
‫‪1‬‬ ‫>‪#include <iostream‬‬ ‫‪Enter‬‬ ‫‪a‬‬ ‫‪number:3‬‬
‫‪2‬‬ ‫;‪using namespace std‬‬ ‫‪Enter‬‬ ‫‪a‬‬ ‫‪number:5‬‬
‫‪3‬‬ ‫)(‪int main‬‬ ‫‪Enter‬‬ ‫‪a‬‬ ‫‪number:122‬‬
‫‪4‬‬ ‫{‬ ‫‪Enter‬‬ ‫‪a‬‬ ‫‪number:-23‬‬
‫‪5‬‬ ‫;‪int a‬‬
‫‪6‬‬ ‫;"‪cout << "Enter a number:‬‬
‫‪7‬‬ ‫;‪cin >> a‬‬
‫‪8‬‬ ‫)‪while(a > 0‬‬
‫‪9‬‬ ‫{‬
‫‪10‬‬ ‫;"‪cout << "Enter a number:‬‬
‫‪11‬‬ ‫;‪cin >> a‬‬
‫‪12‬‬ ‫}‬
‫‪13‬‬ ‫;‪return 0‬‬
‫‪14‬‬ ‫}‬

‫همانند ‪for‬برای تمام حلقه های دیگر نیز می توان با استفاده از آنالیز جدولی‪ ،‬دریافت که این برنامه چه می کند‪ .‬برای مثال فوق با‬ ‫‪‬‬
‫ورودی های وارد شده جدول زیر را خواهیم داشت‪.‬‬
‫‪a‬‬ ‫شط‬
‫‪3‬‬ ‫‪True‬‬
‫‪5‬‬ ‫‪True‬‬
‫‪122‬‬ ‫‪True‬‬
‫‪-23‬‬ ‫‪False‬‬
‫‪17‬‬
‫دستورات کنترلی‬
‫‪ ‬حلقه ها‬
‫دستور ‪do while‬‬ ‫‪‬‬

‫این حلقه برای زمانی است که ما می خواهیم یک بار حلقه اجرا شود و پس از آن در صورت برقرار بودن شرط ادامه‬ ‫‪‬‬
‫‪do‬‬ ‫دهیم‪:‬‬
‫{‬
‫;‬

‫( ‪} while‬‬ ‫;)‬

‫دقت کنید که در این ساختار پس از )( ‪while‬یک ";" وجود دارد‪ ،‬در حالی که در دیگر دستورات چنین نبود‪.‬‬ ‫‪‬‬

‫‪18‬‬
‫دستورات کنترلی‬
‫‪ ‬حلقه ها‬
‫فلوچارت دستور ‪do while‬‬ ‫‪‬‬

‫‪do‬‬
‫{‬
‫‪True‬‬
‫;‬

‫( ‪} while‬‬ ‫;)‬

‫‪False‬‬

‫‪19‬‬
‫دستورات کنترلی‬
‫ مثال‬
#
1 #include <iostream> Enter a number:3
2 using namespace std; 3,2,1,Start!
3 int main()
4 {
5 int a;
6 cout << "Enter a number:";
7 cin >> a;
8 do
9 {
10 cout << a << ",";
11 --a;
12 } while (a > 0);
13 cout << "Start!";
14 return 0;
15 }

20
‫دستورات کنترلی‬
‫‪ ‬مثال‪ :‬برنامه ای بنویسید که تا زمان مثبت بودن ورودی عددی از ورودی دریافت کند‪.‬‬
‫‪#‬‬
‫‪1‬‬ ‫>‪#include <iostream‬‬ ‫‪Enter‬‬ ‫‪a‬‬ ‫‪number:3‬‬
‫‪2‬‬ ‫;‪using namespace std‬‬ ‫‪Enter‬‬ ‫‪a‬‬ ‫‪number:5‬‬
‫‪3‬‬ ‫)(‪int main‬‬ ‫‪Enter‬‬ ‫‪a‬‬ ‫‪number:122‬‬
‫‪4‬‬ ‫{‬ ‫‪Enter‬‬ ‫‪a‬‬ ‫‪number:-23‬‬
‫‪5‬‬ ‫;‪int a‬‬
‫‪6‬‬ ‫‪do‬‬
‫‪7‬‬ ‫{‬
‫‪8‬‬ ‫;"‪cout << "Enter a number:‬‬
‫‪9‬‬ ‫;‪cin >> a‬‬
‫‪10‬‬ ‫;)‪} while (a > 0‬‬
‫‪11‬‬ ‫;‪return 0‬‬
‫‪12‬‬ ‫}‬

‫این برنامه همانند روش ‪while‬است با این تفاوت که این بار با توجه به خاصیت ‪do while‬دیگر نیازی نیست در ابتدا یک‬ ‫‪‬‬
‫بار ورودی داشته باشیم‪،‬‬

‫‪21‬‬
‫دستورات کنترلی‬
‫ دستورات پرش‬
break ‫ دستور‬
‫در واقع باعث می شود که از داخلی ترین بلوک حلقه (همان بلوک {}) خارج شویم و برنامه را بعد‬break ‫استفاده از‬ 
‫از آن ادامه دهیم‬
#
1 #include <iostream>
‫مثال‬ 
Enter a number:3
2 using namespace std; 3,2,Start!
3 int main()
4 {
5 int a;
6 cout << "Enter a number:";
7 cin >> a;
8 for (int i=a;a>0;a--)
9 {
10 cout << a << ",";
11 if (a == 2)
12 {
13 break;
14 }
15 }
16 cout << "Start!";
17 return 0;
18 } 22
‫دستورات کنترلی‬
‫ دستورات پرش‬
continue ‫ دستور‬
‫ شرط حلقه بررسی می شود و حلقه ادامه‬،‫ دستورات بعد از آن اجرا نمی شود‬،‫اگر از این دستور در حلقه استفاده کنیم‬ 
‫می یابد‬
#
1 #include <iostream> Enter a number:3 ‫مثال‬ 
2 using namespace std; 3 ,1,Start!
3 int main()
4 {
5 int a;
6 cout << "Enter a number:";
7 cin >> a;
8 for (int i = a;a > 0;a--)
9 {
10 if (a == 2)
11 {
12 continue;
13 }
14 cout << a << ",";
15 }
16 cout << "Start!";
17 return 0;
18 }
23
‫دستورات کنترلی‬
‫‪ ‬دستور ‪switch‬‬
‫این دستور کمی متفاوت تر از دستور های قبل است و در آن یک متغیر یا ثابتی مقایسه می شود و در صورت‬ ‫‪‬‬
‫یکی بودن ثابت با متغیر آن حالت را اجرا می کند‬
‫( ‪switch‬‬ ‫)‬
‫{‬
‫‪case‬‬ ‫‪:‬‬

‫;‬
‫;‪break‬‬

‫‪case‬‬ ‫‪:‬‬

‫;‬
‫;‪break‬‬

‫‪default:‬‬
‫;‬
‫}‬

‫در این دستور در واقع پس از اجرای دستور ;‪break‬دستور به اتمام می رسد و در صورتی که دستور یا دستورهایی ;‪break‬را‬ ‫‪‬‬
‫نداشته باشید‪ ،‬همه حالت ها بررسی می شود و تا رسیدن به اولین ‪break‬همه دستورات اجرا می شود‪.‬‬
‫‪24‬‬
‫دستورات کنترلی‬
‫ * طراحی کنید‬- + ‫ یک ماشین حساب با سه عمل‬:‫ مثال‬
#
1 #include <iostream> 3,2
2 using namespace std; +
3 int main() 5
4 {
5 int a, b;
6 char c;
7 cin >> a >> b;
8 cin >> c;
9 switch (c)
10 {
11 case '+':
12 cout<<a+b;
13 break;
14 case '-':
15 cout<<a-b;
16 break;
17 case '*':
18 cout<<a*b;
19 break;
20 default:
21 cout<<"wrong operator!";
22 }
23 return 0;
24 } 25
‫مثال‬
‫(میانگین ممکن‬.‫از ورودی دریافت کند و پس از آن میانگین آن را محاسبه کند‬a, b, c ‫برنامه ای بنویسید که سه عدد‬ 
)‫است اعشاری باشد‬

#
1 #include <iostream> 10
2 using namespace std; 12
3 int main() 10
4 { Average is :10.6667
5 int a, b, c;
6 cin >> a >> b >> c;
7 float av = (a + b + c) / 3.0;
8 cout << "Average is :" << av;
9 return 0;
10 }

26
‫مثال‬
‫برنامه ای بنویسید که الفبای انگلیسی را چاپ کند‬ 

#
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 for (char a = 'a';a <= 'z';a++)
6 {
7 cout << a;
8 }
9 return 0;
10 }

27
‫مثال‬
.‫برنامه ای بنویسید که یک عدد را از ورودی بگیرد و تشخیص دهد آیا اول است یا خیر‬ 
#
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int n, c = 0;
6 cin >> n;
7 for (int i = 2;i <= (n / 2);i++)
8 {
9 if (n % i == 0)
10 {
11 c++;
12 }
13 }
14 if (c == 0)
15 {
16 cout << "It is prime number!";
17 }
18 return 0;
19 }

28
‫مثال‬
‫برنامه ای بنویسید که جدول ضرب را چاپ کند‬ 

#
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 for (int i = 1;i <= 10;i++)
6 {
7 for (int j = 1;j <= 10;j++)
8 {
9 cout << j * i << "\t";
10 }
11 cout << endl;
12 }
13 return 0;
14 }

29
‫مثال‬
.‫عدد ورودی عدد ماکزیمم را بیابد‬n ‫برنامه ای بنویسید که از بین‬ 

#
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int n, max = 0, cur;
6 cin >> n;
7 for (int i = 0;i < n;i++)
8 {
9 cin >> cur;
10 if (max < cur)
11 {
12 max = cur;
13 }
14 }
15 cout << "Max:" << max;
16 return 0;
17 }

30
‫مثال‬
.‫را چاپ کند‬n ‫ تا‬0 ‫برنامه ای بنویسید که اعداد اول بین‬ 

#
1 #include <iostream>
2 using namespace std;
3 int main ()
4 {
5 int n, f;
6 cin >> n;
7 for (int i = 2;i <= n;i++)
8 {
9 f = 0;
10 for (int j = 2;j < (i / 2);j++)
11 {
12 if (n % j == 0)
13 {
14 f++;
15 }
16 }//end j for
17 if (f == 0)
18 {
19 cout << i << endl;
20 }
21 }//end i for
22 return 0;
23 }

31
‫مثال‬
‫برنامه ای بنویسید که خروجی زیر را تایپ کند‬ 

#
1 #include <iostream> 54321
2 using namespace std; 4321
3 int main() 321
4 { 21
5 for (int i = 5;i > 0;i--) 1
6 {
7 for (int j = i;j > 0;j--)
8 {
9 cout << j;
10 }
11 cout << endl;
12 }
13 return 0;
14 }

32

You might also like