prog3
prog3
دستورات کنترلی
ساختار شرط
ساختار شرط به صورت زیر است:
( 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جهت نسبت دهی مقداری به شمارنده به کار می رود،
حلقه 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