0% found this document useful (0 votes)
5 views86 pages

Programming c++ 1 New

Uploaded by

sajadtaheri494
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)
5 views86 pages

Programming c++ 1 New

Uploaded by

sajadtaheri494
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/ 86

Computer since & engineering

Introduction to Computer Programming Using


C++
‫بخش اول‬

‫ جعفری‬:‫استاد‬

‫ اول‬:‫سمستر‬

© All rights reserved to Kateb University 1


© All rights reserved to Kateb University 12/19/2020 2
© All rights reserved to Kateb University 12/19/2020 3
© All rights reserved to Kateb University 12/19/2020 4
© All rights reserved to Kateb University 12/19/2020 5
© All rights reserved to Kateb University 12/19/2020 6
© All rights reserved to Kateb University 12/19/2020 7
© All rights reserved to Kateb University 12/19/2020 8
© All rights reserved to Kateb University 12/19/2020 9
© All rights reserved to Kateb University 12/19/2020 10
‫الگوريتم ها ‪Algorithm‬‬

‫شناخت حل مسئله و ارائه الگوريتم‬


‫شناخت اجزای الزم برای حل مساله‬
‫بررسی صحت الگوريتم‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪11‬‬


© All rights reserved to Kateb University 12/19/2020 12
© All rights reserved to Kateb University 12/19/2020 13
© All rights reserved to Kateb University 12/19/2020 14
© All rights reserved to Kateb University 12/19/2020 15
© All rights reserved to Kateb University 12/19/2020 16
© All rights reserved to Kateb University 12/19/2020 17
© All rights reserved to Kateb University 12/19/2020 18
© All rights reserved to Kateb University 12/19/2020 19
‫فلوچارت مجموع سه عدد‬
Begin

Read(a,b,c)

Sum a+b+c

Ave sum/3

Write(sum,ave)

End
© All rights reserved to Kateb University 12/19/2020 20
‫مثال‪ :‬فلوچارتی رسم نمائيد كه دو عدد از ورودی دريافت كرده سپس محتويات دو عدد را با هم جابجا نمايد‪.‬‬

‫را دو متغير كه در آنها دو عدد خوانده شده‪ ،‬قرار میگيرند در نظر میگيريم‪ .‬سپس با استفاده ‪b , a‬برای حل اين مسئله‬
‫از يك متغير كمكی محتويات اين دو عدد را جابجا میكنيم ‪:‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪21‬‬


a temp b a b
12 15 12 15
temp

12
temp

a b a b
15 15 15 12

12 12
temp temp

© All rights reserved to Kateb University 12/19/2020 22


:‫فلوچارت مسئله باال بصورت زير خواهد بود‬
Begin

Read(a,b)

temp a

a b

b temp

Write(a,b)

End
© All rights reserved to Kateb University 12/19/2020 23
‫تمرين ❖‬
‫‪1‬ـ فلوچارتی رسم نمائيد كه طول و عرض مستطيل را از ورودی دريافت‬
‫كرده محيط و مساحت آنرا محاسبه و چاپ كند‪.‬‬

‫‪2‬ـ فلوچارتی رسم نمائيد كه شعاع دايرهای را از ورودی دريافت كرده‪،‬‬


‫محيط و مساحت آنرا محاسبه و چاپ نمايد‪.‬‬

‫‪3‬ـ فلوچارتی رسـم كنيـد كـه سـه عـدد ‪ Third , second, first‬را از‬
‫ورودی دريافت كرده‪ ،‬محتويـات آنهـا را جابجـا نمـوده‪ ،‬حاصـل را در‬
‫خروجی چاپ كند‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪24‬‬


‫‪4‬ـ فلوچارتی رسم نمائيد كه دو عدد از ورودی دريافت كرده‪ ،‬سپس محتويات دو عدد را‬
‫بدون استفاده از متغير كمكی جابجا كند‪.‬‬

‫‪5‬ـ فلوچارتی رسم نمائيد كه عددی (درجه حرارت برحسب سانتيگراد) را از ورودی دريافت كرده سپس آنرا‬
‫به درجه فارنهايت تبديل كند‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪25‬‬


‫❖ دستورالعمل‌هاي‌شرطي‌‬
‫در حل بسياری از مسائل يا تقريباً تمام مسائل نياز به استفاده از شروط جزء‪ ،‬نيازهای اساسی محسوب میشود‪ .‬همانطور كه‬
‫ما خودمان در زندگی روزمره با اين شرطها سركار داريم‪ .‬بطور مثال اگر هوا ابری باشد ممكن است چنين سخن بگوييم‪:‬‬

‫اگر هوا بارانی باشد سپس چتری برمیدارم‪ .‬در غير اينصورت چتر برنمیدارم‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪26‬‬


‫در حالت كلي شرط را بصورت زير نمايش ميدهند‪:‬‬

‫‪then‬شرط يا شروط ‪If‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪27‬‬


.‫ جفت يا طاق بودن آن را تشخيص دهد‬،‫ فلوچارتي رسم نمائيد كه عددي را از ورودي دريافت كرده‬: ‫مثال‬

Begin

Read(a)

R a mod 2

yes
if R=0 then Write(‘even’)

No

Write(‘odd’)

© All rights reserved to Kateb University End 12/19/2020 28


© All rights reserved to Kateb University 12/19/2020 29
‫مثال ‪ :‬فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت كرده بزرگترين عدد را پيدا كرده در خروجي چاپ نمايد‪.‬‬

‫‪Begin‬‬

‫)‪Read(a,b‬‬

‫‪max‬‬ ‫‪a‬‬

‫‪if b>max‬‬ ‫‪yes‬‬ ‫‪max‬‬ ‫‪b‬‬

‫‪No‬‬

‫)‪Write(max‬‬

‫‪End‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪30‬‬


Begin
‫ فلوچارتی رسم نمائيد كه سه عدد از ورودی‬: ‫مثال‬
Read(a,b,c) ‫ كوچكترين عدد را يافته‬،‫دريافت كرده‬
:‫در خروجی چاپ نمايد‬
min a

if b<min then yes min b

No

if c<min then yes min c

No

Write(min)

31
© All rights reserved to Kateb University End 12/19/2020
:‫نمونه اجرای فلوچارت باال بصورت زير میباشد‬

a b c Min ‫خروج‬

1 12 11 17 11
2 12
3 11
4 11
5 11

© All rights reserved to Kateb University 12/19/2020 32


© All rights reserved to Kateb University 12/19/2020 33
‫❖ تمرين‬
‫‪ -1‬فلوچارتی رسم كنيد كه عددی را از ورودی دريافت كرده‪ ،‬قدر مطلق‬
‫عدد را در خروجی چاپ كند‪.‬‬

‫‪ -2‬فلوچارتی رسم نمائيد كه عددی از ورودی دريافت كرده مثبت‪ ،‬منفی‬


‫يا صفر بودن عدد را تشخيص داده‪ ،‬در خروجی با پيغام مناسب‬
‫چاپ كند‪.‬‬
‫‪ -3‬فلوچارتی رسم نمائيد كه عددی را از ورودی دريافت كرده‪ ،‬بخشپذيری‬
‫آن بر ‪ 3‬و ‪ 5‬را بررسی نمايد‪.‬‬
‫‪4‬ـ فلوچارتی رسم نمائيد كه ضرايب يك معادله درجه دوم را از ورودی‬
‫دريافت كرده‪ ،‬ريشههای آن را محاسبه در خروجی چاپ كند‪.‬‬
‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪34‬‬
: ۲‌‫الگوريتم‌معادله‌درجه‬

a𝑥 2 + 𝑏𝑥 + 𝑐 = 0 ‫𝑎 ورودی‬, 𝑏, 𝑐 ‫ 𝑏 = 𝚫 محاسبه‬2 − 4𝑎𝑐

(‫)شرط‬
−𝑏 + 𝚫
𝑥1 =
2𝑎
−𝑏 − 𝚫
𝑥2 =
2𝑎

© All rights reserved to Kateb University 12/19/2020 35


Begin
‫ شروع‬-۱
‫ را‌بخوان‬c‌‫ و‬b‌‫ و‬a -۲
Read(a,b,c) 𝑏 2 − 4𝑎𝑐 𝚫 -۳
‫) آنگاه‌بنويس‌جواب‌ندارد‬ ( ‫ اگر‬-۴
−𝑏+ 𝚫
𝑏 2 − 4𝑎𝑐 𝚫 2𝑎
x1 :‌‫در‌غيراين‌صورت‬

yes −𝑏− 𝚫
Write(‫)جواب‌ندارد‬ 𝑥2
2𝑎
No
‌‌‌‌‌‌‌‌‫ پايان‬-۵

Write(x1,x2)

End
© All rights reserved to Kateb University 12/19/2020 36
‫اجرای مثال قبل‪:‬‬
‫‪ -۱‬شروع‬
‫‪2‬‬
‫)‪1‬‬ ‫‪x − 5x + 6 = 0‬‬ ‫‪ a -۲‬و‌‪ b‬و‌‪ c‬را‌بخوان‬
‫𝑐𝑎‪𝑏 2 − 4‬‬ ‫‪𝚫 -۳‬‬
‫)‪2‬‬ ‫‪3x 2 + 2x + 5 =0‬‬ ‫) آنگاه‌بنويس‌جواب‌ندارد‬ ‫‪ -۴‬اگر (‬
‫𝚫 ‪−𝑏+‬‬
‫‪x1‬‬ ‫در‌غيراين‌صورت‌‪:‬‬
‫𝑎‪2‬‬

‫𝚫 ‪−𝑏−‬‬
‫‪𝑥2‬‬
‫𝑎‪2‬‬
‫‪ -۵‬پايان‌‌‌‌‌‌‌‌‬
‫شماره اجرا‬ ‫‪a‬‬ ‫‪b‬‬ ‫𝚫 ‪c‬‬ ‫‪x1‬‬ ‫‪x2‬‬ ‫خروجی‬
‫)‪1‬‬ ‫‪1‬‬ ‫‪-5‬‬ ‫‪6‬‬ ‫‪(−5)2 −4 1 6‬‬ ‫‪− −5 + 1‬‬ ‫‪− −5 − 1‬‬ ‫‪3,2‬‬
‫‪= 25 − 24 = 1‬‬ ‫)‪2(1‬‬ ‫)‪2(1‬‬
‫‪6‬‬ ‫‪4‬‬
‫‪= =3‬‬ ‫‪= =2‬‬
‫‪2‬‬ ‫‪2‬‬
‫)‪2‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪5 (2)2 −4 3 5 =4-60‬‬ ‫جواب‌ندارد‬
‫‪=-56‬‬
‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪37‬‬
‫مثال ‪ :‬الگوریتمی بنویسید که اندازه های سه قطعه خط را دریافت کرده؛ تعیین نماید که آیا این سه قطعه خط می توانند یک مثلت تشکیل دهند؟‬
‫یا خیر‪.‬‬

‫‪a=8‬‬ ‫‪b=4‬‬ ‫‪ -۱‬شروع‬


‫‪C=20‬‬ ‫‪ c , b , a -۲‬را‌بخوان‬
‫‪ -۳‬اگر(‪ )a+b≤c‬آنگاه‌بنويس‌خير‬
‫در‌غير‌اين‌صورت‌اگر(‪ )a+c ≤b‬آنگاه‌بنويس‌خير‬
‫در‌غير‌اين‌صورت‌اگر(‪ )b+c ≤a‬آنگاه‌بنويس‌خير‬
‫در‌غير‌اين‌صورت‌بنويس‌بله‬
‫‪ -۴‬پايان‌‌‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪38‬‬


‫اجرای مثال تشکیل مثلث‪:‬‬

‫‪ -۱‬شروع‬
‫‪ c , b , a -۲‬را‌بخوان‬
‫‪ -۳‬اگر(‪ )a+b≤c‬آنگاه‌بنويس‌خير‬
‫در‌غير‌اين‌صورت‌اگر(‪ )a+c ≤b‬آنگاه‌بنويس‌خير‬
‫در‌غير‌اين‌صورت‌اگر(‪ )b+c ≤a‬آنگاه‌بنويس‌خير‬
‫در‌غير‌اين‌صورت‌بنويس‌بله‬
‫‪ -۴‬پايان‌‌‬

‫شماره اجرا‬ ‫‪a‬‬ ‫‪b‬‬ ‫‪c‬‬ ‫خروجی‬


‫‪۲۰ (1‬و‌‌‪۱۰‬و‪۵‬‬
‫)‪1‬‬ ‫‪20‬‬ ‫‪10‬‬ ‫‪5‬‬ ‫خير‬ ‫‪ ۷ (2‬و‌‪ ۱۵‬و‪۶‬‬
‫)‪2‬‬ ‫‪7‬‬ ‫‪15‬‬ ‫‪6‬‬ ‫خير‬ ‫‪۹ (3‬و‌‪ ۸‬و‪۱۱‬‬
‫)‪3‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪11‬‬ ‫بله‬
Begin
:‫فلوچارت مثال تشکیل مثلث‬

Read(a,b,c)

yes
a+b≤ c Write(‫)خير‬

No
yes
a+c ≤ b Write(‫)خير‬

No
yes
a+b≤ c Write(‫)خير‬
No

Write(‫)بله‬

© All rights reserved to Kateb University End 12/19/2020 40


‫ترکیب شرطها‪:‬‬
‫‪A‬‬ ‫‪B‬‬ ‫‪A && B‬‬ ‫‪A||B‬‬

‫‪T‬‬ ‫‪T‬‬ ‫‪T‬‬ ‫‪T‬‬ ‫مثال‌تشکيل‌مثلث‌را‌با‌وی‌شرطها‌بنويسيد‪.‬‬

‫‪T‬‬ ‫‪F‬‬ ‫‪F‬‬ ‫‪T‬‬ ‫‪ -۱‬شروع‬


‫‪ a -۲‬و‌‪ b‬و‌‪ c‬را‌بخوان‬
‫‪F‬‬ ‫‪T‬‬ ‫‪F‬‬ ‫‪T‬‬ ‫‪ -۳‬اگر((‪ ))b+c >a(&&)a+c >b(&&)a+b >c‬آنگاه‌بنويس‌بله‬
‫در‌غير‌اين‌صورت‌بنويس‌خير‬
‫‪F‬‬ ‫‪F‬‬ ‫‪F‬‬ ‫‪F‬‬ ‫‪ -۴‬پايان‬
‫شماره اجرا‬ ‫‪a‬‬ ‫‪b‬‬ ‫‪c‬‬ ‫خروجی‬
‫)‪1‬‬ ‫‪20‬‬ ‫‪10‬‬ ‫‪5‬‬ ‫خير‬ ‫‪۲۰ (1‬و‌‌‪۱۰‬و‪۵‬‬
‫‪ ۷ (2‬و‌‪ ۱۵‬و‪۶‬‬
‫)‪2‬‬ ‫‪7‬‬ ‫‪15‬‬ ‫‪6‬‬ ‫خير‬
‫‪۹ (3‬و‌‪ ۸‬و‪۱۱‬‬
‫)‪3‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪11‬‬ ‫بله‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪41‬‬


‫مثال تشکیل مثلت را به یای شرطها بنویسید‪.‬‬
‫‪A‬‬ ‫‪B‬‬ ‫‪A && B‬‬ ‫‪A||B‬‬

‫‪T‬‬ ‫‪T‬‬ ‫‪T‬‬ ‫‪T‬‬ ‫‪ -۱‬شروع‬


‫‪ a -۲‬و‌‪ b‬و‌‪ c‬را‌بخوان‬
‫‪T‬‬ ‫‪F‬‬ ‫‪F‬‬ ‫‪T‬‬ ‫‪ -۳‬اگر((‪ ))b+c <=a(||)a+c <=b(||)a+b <=c‬آنگاه‌بنويس‌خير‬
‫درغيراين‌صورت‌بنويس‌بله‬
‫‪F‬‬ ‫‪T‬‬ ‫‪F‬‬ ‫‪T‬‬
‫‪ -۴‬پايان‬
‫‪F‬‬ ‫‪F‬‬ ‫‪F‬‬ ‫‪F‬‬

‫شماره اجرا‬ ‫‪a‬‬ ‫‪b‬‬ ‫‪c‬‬ ‫خروجی‬


‫‪۲۰ (1‬و‌‌‪۱۰‬و‪۵‬‬
‫)‪1‬‬ ‫‪20‬‬ ‫‪10‬‬ ‫‪5‬‬ ‫خير‬
‫‪ ۷ (2‬و‌‪ ۱۵‬و‪۶‬‬
‫)‪2‬‬ ‫‪7‬‬ ‫‪15‬‬ ‫‪6‬‬ ‫خير‬ ‫‪۹ (3‬و‌‪ ۸‬و‪۱۱‬‬
‫)‪3‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪11‬‬ ‫بله‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪42‬‬


‫❖ حلقه‌ها‬
‫در حل بسياری از مسائل با عملياتی روبرو میشويم ‪ ،‬كه نياز به تكرار دارند و عمـل تكـرار‬
‫آنها به تعداد مشخصی انجام میگيرد‪ .‬فرض كنيد‪ ،‬بخواهيم اوسط ‪ 100‬عدد را محاسبه كنـيم‪،‬‬
‫در اينصورت منطقی بنظر نمیرسد كه ‪ 100‬متغير مختلف را از ورودی دريافت كنـيم سـپس‬
‫آنها را جمع كنيم‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪43‬‬


‫انواع حلقه ها‬

‫حلقه های با تكرار مشخص‬

‫حلقه های با تكرار نا مشخص‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪44‬‬


‫حلقه هاي با تکرار مشخص‬
‫در اين نوع حلقهها تعداد تكرار مشخص میباشد اين حلقه از اجزاء زير‬
‫تشكيل میشود‪:‬‬

‫‪1‬ـ انديس حلقه‬


‫‪2‬ـ مقدار اوليه برای انديس حلقه‬
‫‪ -3‬مقدار افزاينده برای انديس حلقه (معموال يك واحد در هر مرحله)‬
‫‪4‬ـ مقدار نهايی (تعداد تكرا حلقه)‬
‫‪5‬ـ شرطی برای كنترل تعداد تكرار حلقه‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪45‬‬


‫اين‌حلقه‌ها‌را‌غالباً‌با‌فلوچارت‌بصورت‌زير‌نمايش‌مي‌دهند‪:‬‬

‫‪1‬‬ ‫‪i‬‬

‫‪No‬‬
‫‪i<=n‬‬ ‫اتمام كار حلقه‬

‫‪yes‬‬

‫مجموعه دستورات حلقه‬

‫‪i+1‬‬ ‫‪i‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪46‬‬


‫مثال ‪ :‬فلوچارتی رسم نمائيد كه عدد ‪ n‬را از ورودی دريافت كرده‪ ،‬مجموع اعداد از يك تا ‪ n‬را محاسبه كند‪.‬‬

‫مقدار نهايي‬ ‫𝑛 ‪Sum= 1 + 2 + 3 + ⋯ +‬‬


‫‪n‬‬
‫انديس حلقه‬ ‫‪ -۱‬شروع‬
‫‪ n -۲‬را‌بخوان‬
‫‪i‬‬ ‫‪0 sum -۳‬‬
‫‪1‬‬ ‫‪i -۴‬‬
‫‪i+sum‬‬ ‫‪sum -۵‬‬
‫‪i+1‬‬ ‫‪i -۶‬‬
‫‪ -۷‬اگر(‪ )i≤n‬آنگاه‌برو‌به‌‪۵‬‬
‫‪ sum -۸‬را‌چاپ‌کن‬
‫‪ -۹‬پايان‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪47‬‬


Begin

Read(n)

0 sum
1 i

i<=n No
Write(sum)

yes
‫حلقه‬
End
sum+I sum

i+1 i
© All rights reserved to Kateb University 12/19/2020 48
‫نمونه‌اجراي‌فلوچارت‌باال‌بصورت‌زير‌است‪:‬‬

‫‪ -۱‬شروع‬
‫شماره اجرای‬ ‫‪n‬‬ ‫‪sum‬‬ ‫‪i‬‬ ‫خروجی‬
‫‪ n -۲‬را‌بخوان‬
‫)‪1‬‬ ‫‪5‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪15‬‬ ‫‪0 sum -۳‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪i -۴‬‬
‫‪3‬‬ ‫‪3‬‬ ‫‪i+sum‬‬ ‫‪sum -۵‬‬
‫‪6‬‬ ‫‪4‬‬ ‫‪i+1‬‬ ‫‪i -۶‬‬
‫‪10‬‬ ‫‪5‬‬ ‫‪ -۷‬اگر(‪ )i≤n‬آنگاه‌برو‌به‌‪۵‬‬
‫‪15‬‬ ‫‪ sum -۸‬را‌چاپ‌کن‬
‫‪ -۹‬پايان‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪49‬‬


‫مثال‪ :‬الگوريتمي بنويسید که اعداد جفت بین ‪ 10‬و ‪ 20‬را يکي يکي تولید و چاپ نمايد‪ .‬در‬
‫ضمن مجموع آنها را محاسبه و چاپ نمايد‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪50‬‬


© All rights reserved to Kateb University 12/19/2020 51
© All rights reserved to Kateb University 12/19/2020 52
‫مثال‪ :‬الگوريتمي بنويسید که عدد طبیعي ‪ N‬را دريافت و مجموع زير را محاسبه و چاپ‬
‫نمايد‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪53‬‬


© All rights reserved to Kateb University 12/19/2020 54
:‫مثال‬

© All rights reserved to Kateb University 12/19/2020 55


© All rights reserved to Kateb University 12/19/2020 56
‫مثال ‪ :‬فلوچارتی رسم كنيد كه ‪ n‬عدد از ورودی دريافت كرده‪ ،‬بزرگترين مقـدار از بـين ‪ n‬عـدد را پيـدا كـرده در‬
‫خروجی چاپ نمايد‪.‬‬

‫انديس حلقه‬ ‫‪i‬‬

‫مقدار نهايي‬ ‫‪n‬‬

‫بزرگترين مقدار‬ ‫‪Max‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪57‬‬


© All rights reserved to Kateb University 12/19/2020 58
Begin

Read(n)

I 2
max a

No
if i<=n then write(max)

yes
End
‫حلقه‬ Read(a)

yes
if a > max max a

No
© All rights reserved to Kateb University i i+1 12/19/2020 59
© All rights reserved to Kateb University 12/19/2020 60
© All rights reserved to Kateb University 12/19/2020 61
© All rights reserved to Kateb University 12/19/2020 62
© All rights reserved to Kateb University 12/19/2020 63
© All rights reserved to Kateb University 12/19/2020 64
© All rights reserved to Kateb University 12/19/2020 65
© All rights reserved to Kateb University 12/19/2020 66
© All rights reserved to Kateb University 12/19/2020 67
‫مثال ‪ :‬فلوچارتی رسم نمائيد كه ‪ ،n , x‬دو عدد صحيح مثبت را از ورودی دريافت كـرده سـپس ‪ x‬بـه تـوان ‪ n‬را‬
‫محاسبه كند‪.‬‬

‫‪i‬‬ ‫انديس حلقه‬


‫‪n‬‬ ‫مقدار نهايی‬
‫‪pow‬‬ ‫عدد به توان ‪n‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪68‬‬


© All rights reserved to Kateb University 12/19/2020 69
Begin

Read(n,x)

i 1
pow 1

if i<=n then No
write(pow)

yes
End
‫حلقه‬ pow pow*x

i i+1
© All rights reserved to Kateb University 12/19/2020 70
© All rights reserved to Kateb University 12/19/2020 71
‫• حلقههايي كه تعداد تكرار آنها مشخص نيست (در ‪C++‬به حلقه ‪ while‬مشهورند‪).‬‬

‫در اين حلقهها با توجه به ورودی‪ ،‬تعداد تكرار مشخص میشود‪ .‬و دقيقاً نمیتوان تعداد تكـرار حلقـه را بـدون ورودی‬
‫معين كرد‪ .‬اين حلقه ها فقط شامل شرطی هستند كه تا زمانيكه برقرار باشد حلقه اجرا میشود‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪72‬‬


‫در‌حالت‌كلي‌اين‌نوع‌حلقه‌ها‌بصورت‌زير‌نمايش‌داده‌مي‌شوند‪:‬‬

‫‪No‬‬
‫شرط يا شروط ‪If‬‬

‫‪yes‬‬

‫محموعه دستورالعملها‬
‫و جاگزينها‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪73‬‬


‫مثال‪ :‬فلوچارتی رسم كنيد كه عددی را از ورودی دريافت كرده سپس تعداد ارقام آن را شمرده در خروجی چاپ نمايد‪.‬‬

‫‪N‬‬ ‫عدد خوانده شده‬

‫‪count‬‬ ‫تعداد ارقام‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪74‬‬


© All rights reserved to Kateb University 12/19/2020 75
Begin

count 0

Read(N)

No
if N>0 then
write(count)

yes

End
N N div 10

‫حلقه‬

count count+1
© All rights reserved to Kateb University 12/19/2020 76
‫مثال ‪ :‬فلوچارتی رسم نمائيد كه عددی از ورودی دريافت كرده‪ ،‬سری فيبوناچی قبل از آنرا توليد نمايد‪.‬‬

‫در حالت كلی جمالت سری بصورت‪:‬‬


‫‪fk=fk-1+fk-2‬‬

‫‪N‬‬ ‫عدد خوانده شده‬


‫‪f1‬‬ ‫جمله اول سری‬
‫‪f2‬‬ ‫جمله دوم سری‬

‫‪f3‬‬ ‫جمله سوم سری‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪77‬‬


Begin

F1 0
f2 1

Read(N)

f3 f1+f2

if f3>N then No End

yes

write(f3)
‫حلقه‬

f1 f2
f2 f3
f3 f1+f2
© All rights reserved to Kateb University 12/19/2020 78
‫❖ تمرين‬
‫‪ -1‬فلوچارتی رسم نمائيد كه عددی از ورودی دريافت كرده‪ ،‬كامل بودن‬
‫آنرا بررسی نمايد‪( .‬عدد كامل‪ ،‬عددی است كه مجموع مقسومعليههای‬
‫آن با خودش برابر باشد‪).‬‬

‫‪ -2‬فلوچارتی رسم كنيد كه ‪ N‬را از ورودی دريافت كرده‪ N ،‬جمله سری‬


‫فيبوناچی را توليد نمايد‪.‬‬

‫‪3‬ـ فلوچارتی رسم نمائيد كه دو عدد ‪ N , M‬را از ورودی خوانده‪ ،‬بزرگتـرين‬


‫مقسومعليه مشترك دو عدد را محاسبه و چاپ كند‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪79‬‬


‫❖ حلقه‌هاي‌تودرتو‌‬

‫الگوريتمهايی كه تا حال بكار برديم‪ ،‬فقط شامل يك حلقه بودند‪ .‬در صورتی كه در بسياری از مسائل ممكن است‬
‫نياز به استفاده از چند حلقه در داخل هم باشيم‪ .‬در اين نوع حلقهها بايد دقت بيشتری به خرج دهيم‪ ،‬تا مشكلی‬
‫پيش نيايد‪ .‬اگر از حلقههای نوع اول بصورت تودرتو استفاده كنيم در اينصورت برای هر حلقه شرط نهايی و‬
‫انديس اوليه جداگانه بايد تعريف كنيم ‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪80‬‬


‫در حلقههای تودرتو به ازای يكبار تكرار حلقه اوليه‪ ،‬حلقه داخلی به اندازه‬

‫مقدار نهايی خود تكرار میشود‪ .‬در كل اگر حلقه اوليه ‪ n‬بار تكرار شود و‬

‫حلقه داخلی ‪ m‬بار‪ ،‬در اينصورت كل حلقه ‪:‬‬


‫‪nm‬‬
‫بار تكرار خواهد شد‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪81‬‬


‫‪i‬‬ ‫‪1‬‬ ‫فلوچارت حلقههای تودرتو را میتوان بصورت زير نشان داد‪:‬‬

‫‪.‬‬
‫‪.‬‬
‫‪A‬‬ ‫‪.‬‬

‫‪No‬‬ ‫اتمام كار حلقه هاي تو در تو‬


‫‪if i<=n then‬‬

‫‪yes‬‬
‫‪j‬‬ ‫‪1‬‬

‫‪if j<=m then‬‬ ‫‪No‬‬ ‫مجموعه دستورات و جايگزيني ها‬

‫حلقه‬ ‫‪yes‬‬
‫مجموعه دستورات و جايگزيني ها‬ ‫‪i‬‬ ‫‪i+1‬‬

‫‪A‬‬
‫‪j‬‬ ‫‪j+1‬‬
‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪82‬‬
‫مثال ‪ :‬فلوچارتی رسم نمائيد كه ‪ N‬را از ورودی دريافت كرده‪ ،‬مجموع سری زير را محاسبه نمايد‪:‬‬

‫‪S = 1+‬‬ ‫‪2‬‬


‫!‪2‬‬ ‫‪+‬‬ ‫‪3‬‬
‫!‪3‬‬ ‫‪+ .... +‬‬ ‫‪N‬‬
‫!‪N‬‬

‫‪I‬‬ ‫انديس حلقه اول‬


‫‪N‬‬ ‫ورودي‬
‫‪fact‬‬ ‫محاسبه فاكتوريل‬
‫‪j‬‬ ‫انديس حلقه داخلي‬
‫‪Sum‬‬ ‫مجموع‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪83‬‬


i 2
sum 1

Read(N)
A
if i<=N No Write(sum)

yes End

fact 1
j 2

sum sum+i/fact
if j<=i No

yes
i i+1
fact fact*j

j j+1 A
© All rights reserved to Kateb University 12/19/2020 84
‫❖ تمرينات‌آخر‌فصل‬

‫‪ -1‬فلوچارتی رسم نمائيد كه ‪ N‬عدد از ورودی دريافت كرده تعداد اعداد اول و كامل را شمرده در خروجی چاپ‬
‫نمايد‪.‬‬

‫‪ -2‬فلوچارتی رسم نمائيد كه ‪ N , X‬را از ورودی خوانده مقدار سری زير را محاسبه كند‪:‬‬

‫‪S = 1+‬‬ ‫‪+‬‬ ‫‪+ .... +‬‬


‫‪x 2‬‬ ‫‪x4‬‬ ‫‪xn‬‬
‫!‪2‬‬ ‫!‪4‬‬ ‫!‪N‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪85‬‬


‫‪ -3‬فلوچارتی رسم نمائيد كه عددی را از ورودی دريافت كرده مقلوب عدد را محاسبه و در خروجی چاپ كند‪.‬‬

‫‪4‬ـ فلوچارتی رسم كنيد كه تاريخ تولد شخصی را از ورودی خوانده‪ ،‬سن شخص را با تـاريخ روز‪ ،‬محاسـبه نمـوده در‬
‫خروجی چاپ كند‪.‬‬

‫‪ -5‬فلوچارتی رسم نمائيد كه ‪ (m>n) N ,M‬را از ورودی دريافت كرده سری فيبونـاچی بـين ‪ N ,M‬را توليـد كـرده‪ ،‬در‬
‫خروجی چاپ كند‪.‬‬

‫‪© All rights reserved to Kateb University‬‬ ‫‪12/19/2020‬‬ ‫‪86‬‬

You might also like