صفحه 1:
الگ
لگوریتم و فلو
چارت
صفحه 2:
مراحل حل یک بر نامه:
۱- درک دقیق صورت مسئله
- یافتن مفروضات مسئله.
مسئله چه می خواهد . در جستجوی چه باشیم و ارتباط منطقی بین
مجهول و معلوم را بيابیم.
۲- طرح مناسبترین راه حل
۳- تحلیل راه حل
۴- نوشتن الگوریتم
۵- رسم فلوچارت
۶- نوشتن برنامه روی کاغذ
۷- وارد کردن برنامه به کامپیوتر
۸- اجرای برنامه به وسیلة کامپیوتر
صفحه 3:
در زندگی روزمره. انسان با مسائل مختلفی روبروست و برای هر کدام
از اين مسائل (حل مشکلات) راه حلی و روشی را بر میگزیند. مسائلی از قبیل
ol, رفتن. غذا خوردن. خوابیدن و غیره که بشر تقریبا هر روز آنها را پیش روی
خود دارد.
همه این مسائل نیاز به روشی برای حل کردن دارند مثلا راه رفتن
باید با ترتیب خاصی و مراحل معینی انجام شود. تا مسئله راه رفتن
برای بشر حل شود. اصطلاحاً روش انجام کار با حل مسئله را الگوریتم
آن مسئله مینامند
صفحه 4:
الگوریتم و فلوچارت
هر دستوربلعملی که مراحل انجام کاری را با زبانی دقیق
و با جزئیات کاقی بيان نمايد بطوريكه ترتيب مراحل و
Ben aude byt آن SR En eg ere eae OCs
] الگوریتم گویند.
صفحه 5:
:ی
|
مراحل الگوریتم
برای حل یک مسئله باید الگوریتم آن مسئله را مشخص کنیم (يا بیابیم). که
اصطلاحاً طراحی الگوریتم برای آن مسئله نامیده میشود. در طراحی
الگوریتم معمولا سه مرحله زیر را از هم جدا میکنند:
* خواندن دادهها
*انجام محاسبات
* خروجیها
صفحه 6:
0 شروع
,2-١ را بخوان.
١ مجموع 2 , «1را محاسبه و در 511333 قرار بده.
۳- 81110 را در خروجی چاپ کن
۴-پایان
صفحه 7:
۰ شروع
۱-مقدار ۵ را بخوان
"اكر 2<0 است برو به مرحلة 0.
۳ چاپ کن Negative
5- برو به مرحلة ۷
۵- حاصل 8/100 را بدست آورده و در 5 قرار بده.
1- 58 را در خروجی جاب كن.
۷- پایان.
صفحه 8:
شروع
١ سه عدد از ورودى بخوان
۲- مجموع سه عدد را محاسبه و در 511112 قرار بده.
۳- 51110 را بر سه تقسیم کردهدر 8176 قرار بده.
4- 913332 , ©2580 را در خروجى جاب oS
ما
صفحه 9:
معمولا درک یک الگوریتم با شکل راحتر از نوشتن آن بصورت متن
میباشد.
لذا الگوریتم را با فلوچارت( 1101801131 )نمایش میدهند.
فلوچارت از شکلهای زیر تشکیل میشود. (یبان تصویری الگوریتم)
صفحه 10:
برای نشان دادن شروع و خاتمه عملیلت
محاسبات و عملیات واگذاری
ورود اطلاعات
خروج بر روی صفحه نمایش
خروج اطلاعات بر روی کاغذ
سئوال؛ تصمیم گیری و شرط
های دلخواه
صفحه 11:
» ۳
مثال0: قلوچارتی رسم کنید که دو عدد را خوانده » حاصلضرب آنها محاسبه و نمایش داده شود
صفحه 12:
* فلوچارت مجموع و میانگین
سه عدد
9
Read(a,b,c)
Sum < atb+c
Ave < sum/3
3 Write(sum,ave) 2
End)
هته
صفحه 13:
.مثال: فلوجارتى رسم كنيد كه شعاع یک دایره را خوانده مساحت و محیط آنرا نمایش دهد
صفحه 14:
: تی رسم
محتویات دو عدد را با هم جابجا نماید.
اه اول : استفاده از متفیر کمکی
رای حل این مسئله ۵ , 19 را دو متغیر که در آنها دو عدد خوانده شده.
فرار میگیرند در نظر میگیریم. سپس با استفاده از یک متفیر کمکی
محتويات اين دو عدد را جابجا مى كنيم :
صفحه 15:
emp
12
emp
temp
12
emp
صفحه 16:
صفحه 17:
روش دوم: استفاده ازعملیات ریاضی
39۱15
صفحه 18:
EEE EE EEE << <<"
4 تمرین |
١ فلوجارتى رسم نمائيد كه طول و عرض مستطيل را از ورودى دريافت
کرده محیط و مساحت آنرا محاسبه و چاپ کند.
۱- فلوچارتی رسم نمائید که عددی (درجه حرارت برحسب سانتیگراد)
را از ورودى دریافت کرده سپس آنرا به درجه فارنهایت تبدیل کند.
صفحه 19:
92
4 دستورالعملهای شرطی |
در حل بسیاری از مسائل يا تقریباً تمام مسائل نیاز به استفاده از شروط
جزء نیازهای اساسی محسوب میشود. همانطور که ما خودمان در
زندگی روزمره با ابن شرطها سرکار داریم. بطور مثال اگر هوا ابری
باشد ممکن است چنین سخن بگوییم:
۰
اگر هوا بارانی باشد سپس چتری برمیدارم.
در غیر اینصورت چتر برنمیدارم.
صفحه 20:
عمل يا اعمال S
NO
عمل يا اعمال بعدى
صفحه 21:
مثال : فلوچارتی رسم نمائید که عددی را از ورودی دریافت کرده فرد یا
زوج بودن أن را تشخيص دهد.
C Begin) ~
a Read(a) Ly
a mod 2
Write(‘odd’) ۳ لك
a
صفحه 22:
را پیدا کرده در خروجي چاپ نماید.
صفحه 23:
فلوچارتی رسم کنید که سه عدد را خوانده و بصورت زیر تصمیم
گیری نماید:
- اگر عدد سوم صفر بود حاصل جمع دو عدد دیگر
- اگر عدد سوم منفی بود تفاضل دو عدد دیگر
- در غیر حالتهای فوق حاصل ضرب دو عدد دیگر را نمایش دهد
صفحه 24:
صفحه 25:
مثال:فلوچارتی رسم کنید که سه ضلع یک مثلث را خوانده» تعيين كنيد آيا مثلث قائم الزاويه لست يا |
7371
خیر؟
* براى قائم الزاويه بودن مثلث اندازه اضلاع آن بايد در يكى از عبارات اكند.
بصع با 62202۲0۶ یا 2
58
©
صفحه 26:
مثال:ريشه های یک معادله درجه دوم
(+000 ۴
0-02-00 ۲
* اگر ۰۲0>0 معادله ريشه ندارد
* اگر ۰0020 حاصل عبارت -)9/0) را در 0و ۱0 قرار بده
* حاصل عبارت رمم//+و برا در )ا قرار بده
" حاصل عبارت Be VD)/2A -) رادر © قرار بده
* مقادیر 20 و ©72 را نمايش بده
صفحه 27:
صفحه 28:
* حلقهها(1000)
در حل بسیاری از مسائل با عملیاتی روبرو میشویم . که
نیاز به تکرار دارند و عمل تکرار آنها به تعداد مشخص با
نامشخصی انجام میگیرد.
صفحه 29:
* حلقه های با تکرار مشخص
* حلقه های با تکرار نا مشخص
صفحه 30:
در اين نوع حلقهها تعداد تکرار مشخص میباشد این حلقه ها
از اجزاء زیر تشکیل میشود:
(- اندیس حلقه
۲- مقدار اولیه برای اندیس حلقه
۳- مقدار افزاینده برای اندیس حلقه (معمولا یک واحد
در هر مرحله)
۴- مقدار نهایی بتعداد تکرار حلقه)
۵- شرطی ly کنترل تعداد تکرار حلقه
صفحه 31:
صفحه 32:
صفحه 33:
9
© 8
© هي 600و
4
> © © © © © ه-
pany | te
صفحه 34:
مثال : فلوچارت برنامه ای را رسم کنید که ۱۰ عدد را گرفته و تعیین کند کدام
زوج و کدام فرد است.
صفحه 35:
مثال : فلوچارت برنامه ای را رسم کنید که عدد طبیعی 1< ۱ را خوانده و مقسوم علیه
های آن را نمایش دهد
صفحه 36:
مثال : فلوچارتی رسم کنید که « عدد از ورودی دریافت کرده.
بزرگترین مقدار از بین " عدد را پیدا کرده در خروجی چاپ نماید.
انديس حلقه i
بزرگترین مقدار
Max
صفحه 37:
صفحه 38:
مثال : فلوچارتی رسم نمائید که 6 , 13 . دو عدد صحیح مثبت را از
ورودی دریافت کرده سپس :به توان " را محاسبه کند.
صفحه 39:
yes
|
pow <— pow*x
سس ۱9
صفحه 40:
ِ ۳
1 رار سخص
( به حلقه ۲۷2116 مشهورند.)
در این حلقهها باتوجه به ورودی. تعداد تکرار مشخص
مى شود. و دقيقا نمی توان تعداد تکرار حلقه را بدون ورودی
معین کرد. این حلقه ها فقط شامل شرطی هستند که تا
زمانیکه برقرار باشد حلقه اجرا میشود.
صفحه 41:
No
محموعه دستورالعملها
و جاگزینها
صفحه 42:
مثال: فلوجارتى رسم كنيد كه عددى را از ورودى دريافت كرده
سپس تعداد ارقام آن را شمرده در خروجی جاپ نماید.
* عدد خوانده شده N
* تعداد ارقام count
صفحه 43:
Begin
count g 0
yes
|
حلقه N <—Ndiv10 نكم
J
count __ count+1
صفحه 44:
در سری فیبوناچی هر عدد برابر است با
.مجموع دو عدد قبلی خود
9,0,۰ ,4,9,9
صفحه 45:
همع
تس 60>
صفحه 46:
در این روش جذر دقیق عدد لا عبارت است از شمارش کلیه اعداد
ee cere i. Bik et mts
تقریبی گفته می شود.
Sia
صفحه 47:
همجموع
شمارنده
)توليد اعداد فرد
صفحه 48:
al Se های درو
الگوریتمهایی که تا حال بکار بردیم. فقط شامل یک حلقه بودند.
در صورتی که در بسیاری از مسائل ممکن است نیاز به استفاده از
چندحلقه در داخل هم باشیم. در اين نوع حلقهها باید دقت بیشتری به
خرج دهیم. تا مشکلی پیش نیاید. اگر از حلقههای نوع اول بصورت
تودر تو استفاده کنیم در اینصورت برای هر حلقه شرط نهابی و اندیس
اولیه جداگانه باید تعربف کنیم .
صفحه 49:
در حلقههاي تودرتو به ازاي یکبار تکرار حلقه اولیه. حلقه
داخلي به اندازه مقدار نهايي خود تکرار ميشود. در کل اگر
حلقه اوليه 11 بار تكرار شود وحلقه داخلي 13 بار. در
اينصورت كل حلقه :
nxm
بار تكرار خواهد شد.
صفحه 50:
صفحه 51:
۴ فلوچارت برنامه ای را رسم نمایید که جدول ضرب ۱ تا ۱۰ را با
استفاده از حلقه های تو در تو ایجاد نماید.
صفحه 52:
صفحه 53:
الگوریتم برنامه ای را بنویسید که دو عدد 2 و را خوانده. عبارت زير را
محاسبه و نمایش دهد
* () تعداد جملاتسری
* علامت ! فاکتوریل عدد را نشان می دهد
صفحه 54:
0
OH
۱۳ “00”
وامبو تمد
0۵0۲20۹020
هبو
e<= YOO"
۵-۵ ۵0ج
6+0-6دل
e<= “0”
)حم ++ / ©
ودود ود
<P “Yeo”
۵020 , 0
۳002۹20
©-0+لدل
e< Yeo"
هه موه
6+0-6دل
ونيد حنتا
GOT=6*9=90
WOH
”00“ <@
ورت وماحم
0-0 ۳۵0۲2
06+ ادل
۳ عهو
20 0*9
=OHI=0
۶ »۰ .
0۳0۳۳۳029
e<= ۲
ead X10 =04X
1-0-6
تست
۵0۲20 , 0
صفحه 55:
سری زير را محاسبه نماید:
a
S= 1+3+2 +..44
* اندیس حلقه اول 1
' ورودی N
* محاسبه فاکتوریل fact
* اندیس حلقه داخلی ل
* مجموع Sum
صفحه 56:
cn سپ
صفحه 57:
صفحه 58:
فرض كنيد بخواهیم اطلاعات ۱۰۰ کارمند را از ورودی بخوانیم و
سپس آنها را مرتب کنیم. در اینصورت باید ورودیها در جایی از
حافظه ذخیره کنیم. در زبانهای برنامهنویسی معمولا از آرایه برای
ذخیره اطلاعات در حافظه استفاده میکنند. در آرایهها ما با توحه به
تعداد وروديها. طول آن را مشخص میکنیم. سپس دادهها را خوانده در
آن قرار میدهیم
صفحه 59:
>" << آ«" ا" آاآ." "سا "اآ۰۳طء+"آ۳
** تعریف آرایه |
خانههای پشت سر هم از حافظه. که همنوع بوده و توسط یک اسم معرفی
میشوند. ارایه نام دارد.
نحوه دسترسی به هر یک از اعضاء آرایه. از طریق اندیس آرایه امکانپذیر
است . برای تعریف آرایه ابتدا طول آرایه که در حقیقت تعداد خانههای آن
را مشخص میکند. معین میکنیم. سپس نوع خانهها باید معین شوند.
در فلوچارتها آرایهها را بصورت زير نمایش میدهیم:
Name[ 1 .. Length [
طول آرایه . اسم آرايه
صفحه 60:
au.
ali..100]
Read(ali])
10
صفحه 61:
بصورت :
Nam [ index 1
انديس آرايه اسم آرایه
مثال: فلوجارتي رسم كنيد كه يك آرايه حداكثر 100 عنصري را از ورودي
دريافت كرده. سيس آن را خروجي نمايش دهد.
صفحه 62:
صفحه 63:
a[1..20]
1> 1
ali] <— Nmod2 if i No
۰" 1 رما ۱
yes
N <— Ndiv2 write(ali])
الگوریتم و فلوچارت
فصل سوم
1
مراحل حل یک برنامه:
-1درک دقیق صورت مسئله
یافتن مفروضات مسئله.مسئله چه می خواهد ،در جستجوی چه باشیم و ارتباط منطقی بین
مجهول و معلوم را بیابیم.
-2طرح مناسبترین راه حل
-3تحلیل راه حل
-4نوشتن الگوریتم
-5رسم فلوچارت
-6نوشتن برنامه روی کاغذ
-7وارد کردن برنامه به کامپیوتر
-8اجرای برنامه به وسیلۀ کامپیوتر
2
.
مقدمه
در زندگي روزمره ،انسان با مسائل مختلفي روبروست و براي هر كدام
از اين مسائل (حل مشكالت) راه حلي و روشي را بر ميگزيند .مسائلی از قبيل
راه رفتن ،غذا خوردن ،خوابيدن و غيره كه بشر تقريب ًا هر روز آنها را پيش روي
خود دارد.
همه اين مسائل نياز به روشي براي حل كردن دارند مثال راه رفتن
بايد با ترتيب خاصي و مراحل معيني انجام شود .تا مسئله راه رفتن
براي بشر حل شود .اصطالحاً روش انجام كار يا حل مسئله را الگوريتم
آن مسئله مينامند
3
الگوریتم و فلوچارت
هر دستورالعملی که مراحل انجام کاری را با زبانی دقیق
و با جزئیات کافی بیان نماید بطوریکه ترتیب مراحل و
شرط خاتمه عملیات در آن کامال“ مشخص شده باشد را
الگوریتم گویند.
4
مراحل الگوريتم
براي حل يك مسئله بايد الگوريتم آن مسئله را مشخص كنيم (يا بيابيم) .كه
ميشود .در طراحي
اصطالحاً طراحي الگوريتم براي آن مسئله ناميده
ميكنند:
الگوريتم معموالً سه مرحله زير را از هم جدا
• خواندن دادهها
• انجام محاسبات
• خروجيها
5
مثال :الگوريتمي بنويسيد كه دو عدد از ورودي دريافت كرده مجموع
دو عدد را محاسبه و چاپ نمايد.
خروجيها
مجموع دو عدد
انجام محاسبات
جمع دو عدد
وروديها
a , b
0ـ شروع
1ـ b ,aرا بخوان.
2ـ مجموع b , aرا محاسبه و در sumقرار بده.
3ـ sumرا در خروجي چاپ كن
4ـ پايان
6
مثال :الگوريتمي بنويسيد كه عدد برحسب سانتیمتر را از ورودی گرفته درحالت
مثبت آن را به متر تبدیل کرده و چاپ نماید ،در غیر این صورت Negative
پیام
گردد
.چاپ
وروديها
انجام محاسبات
خروجيها
تبدیل به متر در صورت مثبت بودن آن
نمایش عدد
در غیر این صورت
Negative
7
a
0ـ شروع
1ـ مقدار aرا بخوان
2ـ اگر a>0است برو به مرحلۀ .5
-3چاپ کن Negative
-4برو به مرحلۀ .7
-5حاصل a/100را بدست آورده و در sقرار بده.
s -6را در خروجي چاپ كن.
-7پايان.
مثال :الگوريتمي بنويسيد كه سه عدد از ورودي دريافت كرده مجموع و ميانگين
.سه عدد را محاسبه و چاپ كند
چاپ مجموع
چاپ ميانگين
8
خروجيها
محاسبه مجموع
محاسبه ميانگين
انجام محاسبات
a
b
وروديها
c
0ـ شروع
1ـ سه عدد از ورودي بخوان
2ـ مجموع سه عدد را محاسبه و در sumقرار بده.
3ـ sumرا بر سه تقسيم كرده،در aveقرار بده.
4ـ ave , sumرا در خروجي چاپ كن.
5ـ پايان.
معموال درك يك الگوريتم با شكل راحتر از نوشتن آن بصورت متن
ميباشد.
لذا الگوريتم را با فلوچارت( ) flowchartنمايش ميدهند.
فلوچارت از شكلهاي زير تشكيل ميشود( .بیان تصویری الگوریتم)
9
شکل
شرح
مثال
برای نشان دادن شروع و خاتمه عملیلت
start
stop
محاسبات و عملیات واگذاری
c←a+b
d← i
ورود اطالعات
خروج بر روی صفحه نمایش
خروج اطالعات بر روی کاغذ
سئوال ،تصمیم گیری و شرط
های دلخواه
A,B
”A,B,”100
ورودی
خروجی
?
خروجی
10
خروجی
.مثال:1
فلوچارتی رسم کنید که دو عدد را خوانده ،حاصلضرب آنها محاسبه و نمایش داده شود
Begin
)Read(A,B
z←A*B
)Write(A,B.z
End
11
فلوچارت مجموع و میانگین
سه عدد
Begin
Read(a,b,c)
Sum
a+b+c
Ave
sum/3
Write(sum,ave)
End
12
•
.مثال :فلوچارتی رسم کنید که شعاع یک دایره را خوانده مساحت و محیط آنرا نمایش دهد
Begin
)Read(R
A←3.14*R²
P←2*R*3.14
)Write(A,P
End
13
مثال :فلوچارتی رسم نمائيد كه دو عدد از ورودي دريافت كرده سپس
محتويات دو عدد را با هم جابجا نمايد.
راه اول :استفاده از متغیر کمکی
راي حل اين مسئله b , aرا دو متغير كه در آنها دو عدد خوانده شده،
قرار ميگيرند در نظر ميگيريم .سپس با استفاده از يك متغير كمكـي
محتويات اين دو عدد را جابجا ميكنيم :
14
a
b
a
b
12
15
12
15
temp
temp
a
b
a
15
15
b
12
12
temp
temp
15
فلوچارت مسئله باال بصورت زير خواهد بود:
Begin
Read(a,b)
temp
a
a
b
b
temp
Write(a,b)
End
16
استفاده ازعملیات ریاضی:روش دوم
Begin
Read(A,B)
Write(A,B)
َA←A+B
B←A-B
A←A-B
Write(A,B)
End
17
تمرين
1ـ فلوچارتي رسم نمائيد كه طول و عرض مستطيل را از ورودي دريافت
كرده محيط و مساحت آنرا محاسبه و چاپ كند.
2ـ فلوچارتي رسم نمائيد كه عددي (درجه حرارت برحسب سانتيگراد)
را از ورودي دريافت كرده سپس آنرا به درجه فارنهايت تبديل كند.
18
دستورالعملهاي شرطي
در حل بسياري از مسائل يا تقريب ًا تمام مسائل نياز به استفاده از شروط
جزء ،نيازهاي اساسي محسوب ميشود .همانطور كه ما خودمان در
زندگي روزمره با اين شرطها سركار داريم .بطور مثال اگر هوا ابري
باشد ممكن است چنين سخن بگوييم:
•
19
اگر هوا باراني باشد سپس چتري برميدارم.
در غير اينصورت چتر برنميدارم.
در حالت كلي شرط را بصورت زير نمايش ميدهند:
عمل يا اعمال
yes
شـرط یا شـروـط If
then
NO
عمل يا اعمال بعدي
20
مثال :فلوچارتي رسم نمائيد كه عددي را از ورودي دريافت كرده ،فرد يا
زوج بودن آن را تشخيص دهد.
Begin
)Read(a
R
a mod 2
yes
)’Write(‘even
if R=0 then
No
)’Write(‘odd
21
End
كرده بزرگترين عدد
مثال :فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت
Begin
را پيدا كرده در خروجي چاپ نمايد.
b
)Read(a,b
max
a
b
max
yes
max
if b>max
No
)Write(max
End
22
فلوچارتی رسم کنید که سه عدد را خوانده و بصورت زیر تصمیم
گیری نماید:
اگر عدد سوم صفر بود حاصل جمع دو عدد دیگر اگر عدد سوم منفی بود تفاضل دو عدد دیگر -در غیر حالتهای فوق حاصل ضرب دو عدد دیگر را نمایش دهد.
23
شروع
Read(A,B,C)
Y
C=0
D←A+B
N
D←A-B
Y
C<0
N
D←A*B
Write(D)
پایان
24
مثال:فلوچارتی رسم کنید که سه ضلع یک مثلث را خوانده ،تعیین کنید آیا مثلث قائم الزاویه است یا
خیر؟
شروع
صدق کند.
برای قائم الزاویه بودن مثلث اندازه اضالع آن باید در یکی از عبارات زیر
ی ا B²=A²+C²ی ا C²=A²+B²
A²=B²+C²
)Read(A,B,C
Y
A²=B²+C²
N
Y
B²=A²+C²
N
Y
C²=B²+A²
N
)”Write(“YES
)”Write(“NO
پایان
25
مثال:ریشه های یک معادله درجه دوم
26
AX²+BX+C=0
D=B²-4AC
اگر ، D<0معادله ریشه ندارد
اگر ، D=0حاصل عبارت – B/2Aرا در X1و X2قرار بده
حاصل عبارت )( B D) /(2Aرا در X1قرار بده
حاصل عبارت ( B D ) / 2Aرا در X2قرار بده
مقادیر X1و X2را نمایش بده
شروع
A,B,C
2
D B 4 A C
Y
D<0
“No root”
N
X1← -B/2A Y
X2← X1
D=0
N
X1 ( B D ) / 2A
X 2 ( B
D ) / 2A
X1,X2
پایان
27
حلقهها()Loop
در حل بسياري از مسائل با عملياتي روبرو ميشويم ،كه
نياز به تكرار دارند و عمل تكرار آنها به تعداد مشخص یا
نامشخصی انجام ميگيرد.
28
•
29
انواع حلقه ها
•
حلقه های با تکرار مشخص
•
حلقه های با تکرار نا مشخص
•
حلقه های با تکرار مشخص ( به حلقه forمشهورند).
در اين نوع حلقهها تعداد تكرار مشخص ميباشد اين حلقه ها
از اجزاء زير تشكيل ميشود:
1ـ انديس حلقه
2ـ مقدار اوليه براي انديس حلقه
-3مقدار افزاينده براي انديس حلقه (معموال يك واحد
در هر مرحله)
4ـ مقدار نهايي (تـعداد تكرار حلقه)
5ـ شرطي براي كنترل تعداد تكرار حلقه
30
ميدهند:
اين حلقهها را غالباً با فلوچارت بصورت زير نمايش
1
No
اتمام كار حلقه
i
if i<=n
yes
مجموعه دستورات حلقه
i+1
31
i
مثال :فلوچارتي رسم نمائيد كه عدد nرا از ورودي دريافت كرده،
مجموع اعداد از يك تا nرا محاسبه كند.
32
n
م قدار ن هايي
i
انديسحلقه
Begin
N
Read(n)
I
sum
1
0
if I<=n
1
2
3
4
5
6
7
5
I
1
0
2
3
sum
خروجي
+
15
1
3
4
5
No
6
10
6
Write(sum)
15
yes
حلقه
sum
I
sum+I
End
I+1
33
مثال :فلوچارت برنامه ای را رسم کنید که 10عدد را گرفته و تعیین کند کدام
زوج و کدام فرد است.
شروع
i←0
)Read (p
k ← p-INT(p/2)*2
K=0
n
”p, “odd
i ← i+1
y
i< 10
n
پایان
34
y
”P, “even
مثال :فلوچارت برنامه ای را رسم کنید که عدد طبیعی N>1را خوانده و مقسوم علیه
های آن را نمایش دهد
شروع
N
M←1
K N INT(N / M) M
M
Y
K=0
N
M ← M+1
M<=N
N
پایان
35
Y
مثال :فلوچارتي رسم كنيد كه nعدد از ورودي دريافت كرده،
بزرگترين مقدار از بين nعدد را پيدا كرده در خروجي چاپ نمايد.
انديس حلقه
مقدار نهايي
بزرگترين مقدار
Max
36
i
n
Begin
n ت\\عداد ا\عداد
a او\ل\ینع\دد
Read(n,a)
I
max
2
a
No
if i<=n then
write(max)
yes
End
Read(a)
حلقه
yes
if a > max
max
a
No
i
i+1
37
مثال :فلوچارتي رسم نمائيد كه ، n , xدو عدد صحيح مثبت را از
ورودي دريافت كرده سپس xبه توان nرا محاسبه كند.
•
•
•
38
انديس حلقه
n
مقدار نهايي
عدد به توان pown
i
Begin
Read(n,x)
i
pow
1
1
if i<=n then
No
write(pow)
yes
حلقه
pow
i
pow*x
End
i+1
39
حلقههايي كه تعداد تكرار آنها مشخص نيست
( به حلقه whileمشهورند).
در اين حلقهها باتـوجه به ورودي ،تعداد تكرار مشخص
ميشود .و دقيق ًا نميتوان تعداد تكرار حلقه را بدون ورودي
معين كرد .اين حلقه ها فقط شامل شرطي هستند كه تا
زمانيكه برقرار باشد حلقه اجرا ميشود.
40
ميشوند:
در حالت كلي اين نوع حلقهها بصورت زير نمايش داده
No
شـرط يـا شـروـط If
yes
محموعه دستورالعملها
و جاگزينها
41
مثال :فلوچارتي رسم كنيد كه عددي را از ورودي دريافت كرده
سپس تعداد ارقام آن را شمرده در خروجي چاپ نمايد.
42
•
عدد خوانده شده
•
تعداد ارقام
N
count
Begin
count
0
Read(N)
if N>0 then
No
write(count)
yes
حلقه
N
count
N div 10
End
count+1
43
مثال :فلوچارتي رسم نمائيد كه 20جمله اول ،سري
فيبوناچي را توليد نمايد.
در سری فیبوناچی هر عدد برابر است با
.مجموع دو عدد قبلی خود
…1,1,2,3,5,8,13,21,
44
s=0
A=1
B=0
C=1+0=1
شروع
1
S←0
A←1
B←0
A=0
B=1
S=0+1=1
1<20 “yes”
C=0+1=1
C ← A+B
1
C
A=1
B=1
S=1+1=2
2<20 “yes”
A←B
B←C
S ← S+1
Y
C=1+1=2
S < 20
2
A=1
B=2
S=2+1=3
3<20 “yes”
……
N
پایان
45
الگوریتم برنامه ای را بنویسید که یک عدد صحیح مثبت را خوانده جذر
.آن را نمایش دهد\
در این روش جذر دقیق عدد Nعبارت است از شمارش کلیه اعداد
فردی که مجموع آنها برابر Nباشد و اگر کامال“ برابر نبودند جذر
تقریبی گفته می شود.
مثال:
16 1 3 5 7 4
9 1 3 5 3
20 1 3 5 7 4
46
شروع
Sمجموع
Cشمارنده
Aتولید اعداد فرد
N=16
N
مقادیر اولیه
S←0
C←0
A←1
S=0
C=1
A=1
S=0+1=1
No
C=1+1=2
A=1+2=3
S ← S+A
C ← C+1
A ← A+2
N
S>=N
Y
N,C
پایان
47
S=1+3=4
NO
C=2+1=3
A=3+2=5
S=4+5=9
NO
C=3+1=4
A=5+2=7
S=9+7=16
YES
16 , 4
حلقههاي تودرتو
الگوريتمهايي كه تا حال بكار برديم ،فقط شامل يك حلقه بودند.
در صورتي كه در بسياري از مسائل ممكن است نياز به استفاده از
چندحلقه در داخل هم باشيم .در اين نوع حلقهها بايد دقت بيشتري به
خرج دهيم ،تا مشكلي پيش نيايد .اگر از حلقههاي نوع اول بصورت
تودرتو استفاده كنيم در اينصورت براي هر حلقه شرط نهايي و انديس
اوليه جداگانه بايد تعريف كنيم .
48
در حلقههاي تودرتو به ازاي يكبار تكرار حلقه اوليه ،حلقه
داخلي به اندازه مقدار نهايي خود تكرار ميشود .در كل اگر
حلقه اوليه nبار تكرار شود وحلقه داخلي mبار ،در
اينصورت كل حلقه :
nm
بار تكرار خواهد شد.
49
فلوچارت حلقههاي تودرتو را ميتوان بصورت زير نشان داد:
1
i
.
.
.
A
اتمام كار حلقه هاي تو در تو
No
if i<=n then
yes
1
مجموعه دستورات و جايگزينيـ ها
No
j
if j<=m then
yes
i
i+1
A
50
مجموعه دستورات و جايگزينيـ ها
j+1
j
حلقه داخلی
51
فلوچارت برنامه ای را رسم نمایید که جدول ض\رب 1تا 10را با
استفاده از حلقه های تو در تو ایجاد نماید.
start
i←1
i >=10
Y
stop
N
j←1
خارجی
j >=10
داخلی
Y
N
p←i*j
p
j ← j+1
i ← i+1
52
الگوریتم برنامه ای را بنویسید که دو عدد Xو Nرا خوانده ،عبارت زیر را
.محاسبه و نمایش دهد
33
22
xx xx xx
ee
1
1
1
1!! 2
2!! 3
!!3
53
Nت\\عداد ج\مالتس\\ری
عالمت ! فاکتوریل عدد را نشان می دهد
xx
برای چهار جمله اول:
N=4 , X=2
اولیه:
e=0 ,I=0
مقادیر
FACT=1 , J=1
FACT=1* 1=1
J=1+1=2
2<= 0 “NO”
e=0+Xº / 1=1
I=0+1=1
1<4 “YES”
FACT=1 , J=1
FACT=1* 1=1 , J=2
2<=1 “NO”
e=1+ X¹ /1 =1+X
I=1+1=2
2<4
“YES”
FACT=1 , J=1
FACT=1*1=1
J=1+1=2
I=3+1=4
4 < 4 “NO”
2< = 2
E=1+x+x²/2+x³/6
“YES”
شروع
N,X
e←0
I←0
FACT= 1*2=2
J=2+1=3
3<=2
“NO”
e=1+X+X² / 2
I=2+1=3
3<4
“YES”
Fact ← 1
J←1
Fact ← Fact * j
J ← J+1
FACT=1 , J=1
Y
FACT=1*1=1
J=1+1=2
2<= 3 “YES”
FACT=1* 2=2
J=2+1=3
3<=3
“YES”
FACT=2*3=6
J=3+1=4
4<3
“NO”
e=1+x+x²/2 +x³/6
J <=I
I
N
e e x / Fact
I ← I+1
Y
I <N
N
e
پایان
54
مثال :فلوچارتي رسم نمائيد كه Nرا از ورودي دريافت كرده ،مجموع
سري زير را محاسبه نمايد:
N
!N
•
•
•
•
•
55
....
3
!3
I
انديس حلقه اول
ورودي N
محاسبه فاكتوريل fact
انديس حلقه داخلي j
مجموع Sum
2
!2
S 1
i
sum
2
1
Read(N)
A
No
if i<=N
Write(sum)
yes
End
fact
j
1
2
if j<=i
No
sum
sum+i/fact
yes
fact
j
fact*j
j+1
i
i+1
A
56
57
كاربرد آرايه ها در الگوريتم ها
مقدمه
فرض كنيد بخواهيم اطالعات 100كارمند را از ورودي بخوانيم و
سپس آنها را مرتب كنيم ،در اينصورت بايد وروديها را در جايي از
حافظه ذخيره كنيم .در زبانهاي برنامهنويسي معموال از آرايه براي
ذخيره اطالعات در حافظه استفاده ميكنند .در آرايهها ما با توجه به
تعداد وروديها ،طول آن را مشخص ميكنيم .سپس دادهها را خوانده در
آن قرار ميدهيمـ.
58
تعريف آرايه
خانههاي پشت سر هم از حافظه ،كه همنوع بوده و توسط يك اسم معرفي
ميشوند ،آرايه نام دارد.
نحوه دسترسي به هر يك از اعضاء آرايه ،از طريق انديس آرايه امكانپذير
است .براي تعريف آرايه ابتدا طول آرايه كه در حقيقت تعداد خانههاي آن
را مشخص ميكند ،معين ميكنيم .سپس نوع خانهها بايد معين شوند.
در فلوچارتها آرايهها را بصورت زير نمايش ميدهيم:
] Name[ 1 .. Length
طول آرايه
59
اسم آرايه
براي خواندن يك آرايه از ورودي از حلقهها استفاده ميكنيم .فلوچارت
خواندن آرايه از ورودي بصورت زير ميباشد:
]a[1..100
1
No
i
if i<=100
yes
)]Read(a[i
i+1
60
i
با توجه به فلوچارت باال براي دسترسي به عنصر iام آرايه در حالت
كلي بصورت :
] [ index
Nam
انديس آرايه اسم آرايه
عمل ميكنند.
مثال :فلوچارتي رسم كنيد كه يك آرايه حداكثر 100عنصري را از ورودي
دريافت كرده ،سپس آن را خروجي نمايش دهد.
61
Begin
a[1..100]
i
1
Read(N)
if i<=N
No
i
1
yes
if i<=N
Read(a[i])
No
End
yes
i
i+1
write(a[i])
i
i+1
62
مثال :فلوچارتي رسمـ كـنيد كه عددي را از
ورودي دريافت كرده آن را به مبناي 2ببرد.
i
i-1
No
]a[1..20
i
1
)Read(N
if N>0
yes
End
No
N mod 2
i+1
if i >0
]a[i
i
yes
)]write(a[i
i-1
63
i
N div 2
N