0% found this document useful (0 votes)
9 views

prog3

Uploaded by

zahrakarayy
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

prog3

Uploaded by

zahrakarayy
Copyright
© © All Rights Reserved
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