آموزش الگوریتم و برنامه نویسی

دانشجو پس از مطالعه اين مطالب بايد بتواند:

الگوریتمی را برای حل مسئله ارائه دهد.
الگوریتم های مختلف برای یک مسئله را مقایسه کند.   شرط ها و حلقه ها را در الگوریتم بکار ببرد .

مقدمه
شرط اصلی برای نوشتن برنامه به زبانهای مختلف (سی، ویژوال بیسیک،
سی شارپ ، پاسکال، ... ) یادگیری ومفهوم الگوریم است.
روش حل مسایل با استفاده از روشها وتحلیلهای ریاضی و منطقی،اولین بار 
به وسیله دانشمند بزرگ ایرانی خوارزمی مورد توجه قرار گرفت ، وی علاوه
 بر مباحث مختلفی که در علوم ریاضی ونجوم طرح کرد اساس وروشی را در
حل مسایل بنا نهاد که درآینده مدتها مورد استفاده برنامه نویسان کامپیوتر
قرار گرفت.نام الگوریم نیزبه افتخار وی واز عبارت " الخوارزمی" گرفته شده
است.همه ما روزانه اموری را انجام می دهیم که از نظام خاصی پیروی
می کنند مانندروش مصرف دارو، روش تهیه یک نوع غذای معین ، چگونگی
رفتن به محل کار.مثلا روش مصرف دارو تا از بین رفتن کامل علائم روزی سه
بار، هربار یک قاشق چایخوری از این دارو را در یک لیوان آب سرد حل کرده ،
قبل از غذا میل کنید. اینگونه روش انجام کار را الگوریتم گویند.

برای پی بردن مفهومه الگوریتم مثالی در نظر میگیریم : 
اگر بخواهیم بین تعدادی عدد بزرگترین آنها را پیدا کنید چگونه عمل میکنید؟
ممکن است پاسخ این باشد که:این کار بسیار ساده است وبانگاهی به
مجوعه ای از اعداد می توان بزرگترین آنهارا انتخاب کرد. اما این کار همیشه
ممکن نیست زیرا اگر تعداد اعداد بسیارزیاد باشد این روش کارساز نخواهد بود.
احتمالاپاسخ این است که یک بارتمام اعدادرا از ابتدا تا انتهابرسی می کنیم 
ودرهرلحظه بخاطرمی سپاریم که بزرگترین عددی که تاکنون با آن برخوردکردیم 
چه بوده است.هرگاه به عددی بزرگتر ازعددی که بخاطر سپرده ایم برخوردیم 
آن را بجای عدد قبلی به خاطر می سپاریم ودر غیر این صورت بدون تغییر دادن
عدد به خاطر سپرده شده،به برسی خود ادامه می دهیم.این روش را می توان
به صورت مجموعه ای از دستورالعمل های منظم بیان کرد. 

تعريف الگوريتم
الگوريتم مجموعه‌اي از دستورالعمل ها، براي حل مسئله مي‌باشد كه 
شرايط زير را بايد دارا باشد:

1.  دقيق باشد 
2. جزئيات كامل حل مسئله را داشته باشد.
3. پايان‌پذير باشد.

اولویت عملگرا در برنامه نویسی:
درانجام محاسبات ریاضی، عمل جمع ، تفریق ، ضرب ، تقسیم را انجام
می دهیم. که این نمادهارا در اصطلاح کامپیوتر ، عملگر(operator) گویند
اما کامپیوتر برای عمل تقسیم از علامت / و برایعمل ضرب از علامت * 
وبرایاعمال جمع وتفریق نیز از + و - استفاده می کند.
الویت عملگرا 
1.  پرانتز  (   )                                
2.  توان    ^                                    
3.  منفی  ( - )
4. ضرب وتقسیم * و/
5. تقسیم صحیح  \
6. باقی مانده تقسیم صحیح   mod
7. جمع وتفریق    + و -

مراحل الگوريتم 
براي حل يك مسئله بايد الگوريتم آن مسئله را مشخص كنيم (يا بيابيم). 
كه اصطلاحاً طراحي الگوريتم براي آن مسئله ناميده مي‌شود.
 در طراحيالگوريتم معمولاً سه مرحله زير را از هم جدا مي‌كنند:
1. خواندن داده‌ها
2. انجام محاسبات
3. خروجي‌ها

حل برنامه های ساده

مثال 1 
الگوريتمي بنويسيد كه دو عدد از ورودي دريافت كرده مجموع دو عدد
را محاسبه و چاپ نمايد.

خواندن داده ها : a  و  b
انجام محاسبات: جمع دو عدد
خروجي‌ها : مجموع دو عدد
0ـ شروع 
1ـ b ,a را بخوان.
2ـ مجموع b , a را محاسبه و در sum قرار بده.
3ـ sum را در خروجي چاپ كن 
4ـ پايان

مثال 2
الگوريتمي بنويسيد كه سه عدد از ورودي دريافت كرده مجموع
و ميانگين سه عدد را محاسبه و چاپ كند.

خواندن داده ها : a  و  b  و c
انجام محاسبات: محاسبه مجموع و محاسبه میانگین
خروجي‌ها : چاپ مجموع و چاپ میانگین
0ـ شروع
1ـ سه عدد از ورودي بخوان
2ـ مجموع سه عدد را محاسبه و در sum قرار بده.
3ـ sum را بر سه تقسيم كرده،در ave قرار بده.
4ـ ave , sum را در خروجي چاپ كن.
5ـ پايان.

حل برنامه های شرطی
گاهی اوقات لازم است با مقایسه مقادیر داده های ورودی، اطلاعات خروجی،
متغیرها و... عملیاتی را در الگوریتم هدایت کرده ودستورالعمل های خاصی را 
اجرا کنید یا روند اجرای الگوریتم را با اتخاذ تصمیمات مناسبی کنترل نمایید.
دراین صورت میتوانید از دستورات شرطی استفاده کنید .  

مثال 1 
برنامه ای بنویسید که یک عدد را بگیرد و زوج وفرد بودن عدد را نشان دهد.
0 ـ شروع
1 ـ n را بخوان 
2 ـ R = n mod 2
3 ـ اگر R = 0 آنگاه "عدد زوج است " را نمایش بده       در غیر این صورت "عدد فرد است" را نمایش بده
4 ـ پایان
مثال 2
الگوریتمی بنویسید که سه عدد دلخواه را دریافت کرده وبزرگ ترین مقدار
 را در بین آن ها تعیین کند و نمایش دهد.
0 ـ شروع
1 ـ a و b و c را بخوان
2 ـ sum <----- a 
3 ـ اگر sum < b آنگاه sum <----- b
4 ـ اگر sum < c  آنگاه sum <----- c
5 ـ sum را نمایش بده
6 ـ پایان 

دستورالعمل های تکرار:
بخش دیگر درحلقه، دستورالعمل هایی هستندکه داخل حلقه تکرار می شوند. 
این دستورالعمل ها با توجه به نیاز مسئله انتخاب می شوند.
مثال 1
الگوریتمی بنویسید که میانگین دمای شهررا در طول یک هفته محاسبه نموده 
و نمایش دهد .
0 ـ شروع 
1 ـ 1 ----->n
2 ـ 0 -----> sum
3 ـ t را دریافت کن
4 ـ sum = sum + t
5 ـ n = n + 1
6 ـ اگر n <= 7  آنگاه به مرحله 3 برو
7 ـ sum / 30 را نمایش بده
8 ـ پایان 
مثال 2
الگوریتمی بنویسید که 100 مضرب اول عدد 3 را بدست آورد  و چاپ کند.
0 ـ شروع 
1 ـ به ازای i= 1 to 100  انجام بده کار های زیر را
 i * 3 را چاپ کن
3 ـ پایان
مثال 3
الگوریتمی بنویسید که اعداد 1 تا 10 را چاپ نماید.
0 ـ شروع 
1 ـ  1 ------> i
2 ـ تازمانیکه i <= 10 انجام بده دستورات زیرا
چاپ کن i را
1 + i = i  3 ـ پایان
دستوالعمل های منطقی:

گاهی اوقات ممکن است لازم باشد در دستورالعمل های شرطی که در حل
یک الگوریتم به کار می روند بیش از یک شرط مورد برسی قرار گیرد و با توجه
به نتیجه برسی تمامی شرط ها ذکر شده سایر دستورالعمل هی اجرا شوند.
در چنین حالت هایی می توان از عملگر های منطقی برای ترکیب دو یا چند
شرط استفاده کرد.
عملگر های منطقی عبارت اند از: (AND . و) ، ( OR . یا ) ، ( NOT . نقیص )
عمل کرد (AND . و )
T AND F = F
F AND T = F
F AND F = F
T AND T = T
عملکرد ( OR . یا )
T OR F = T
F OR T = T
T OR T = T
F OR F = F
عملکرد ( NOT . نقیض )
T = F
F = T
مثال 1
الگوریتمی بنویسید که مقدار مصرف برق یک مشترک دلخواه را دریافت کرده
وبر اساس شرط های زیر رتبه میزان مصرف وی را مشخص کند.
الف . بین 0 تا50   کم مصرف 
ب . بین 50 تا 200  عادی
ج . از 200 به بالا   پرمصرف
0 ـ شروع
1 ـ kw را دریافت کن
2 ـ اگر kw >= 0 و kw < 50  آنگاه " کم مصرف است " را نمایش بده
3 ـ اگر kw >= 50 و kw < 200  آنگاه " عادی است " را نمایش بده
4 ـ اگر kw >200  آنگاه " پر مصرف است " را نمایش بده
5 ـ پایان
مثال 2
الگوریتمی بنویسید تا معدل یک دانش آموزرا دریافت کرده و رتبه وی را
 بر اساس شرایطی که در ادامه می آید تعیین کند.
الف ـ درصورتی که میانگین نمرات وی بیشتر از 18 باشد، رتبه ممتاز است.
ب ـ درصورتی که میانگین نمرات بین 16 تا 18 باشد، رتبه ممتاز است.
ج ـ درصورتی که میانگین نمرات بین12 تا 16 باشد، رتبه متوسط است.
د ـ درصورت که میانگین نمرا کمتر از 12 باشد، رتبه ضعیف است.
0 ـ شروع
1 ـ n را دریافت کن
2 ـ اگر n > 18 باشد آنگاه "رتبه lممتاز است " را نمایش بده
3 ـ اگر n > 16 و n < = 18  باشد آنگاه " رتبه خوب است " را نمایش بده
4 ـ اگر n > 12 و n <= 16 باشد آنگاه " رتبه متوسط است " را نمایش بده
5 ـ اگر n < 12 باشد آنگاه " رتبه ضعیف است " رانمایش بده
6 ـ پایان 
آرایه
الگوریتم های که تا کنون طراحی کرده اید داده ها را دریافت کرده وبلافاصله
مورد پردازش قرار می داد اما گاهی اوقات لازم است تا پردازش پس از ورود
تمامیا بخشی از اطلاعات انجام شود یا عملیاتی چون مرتب سازی یا جست
جویاطلاعات در داده های وارد شده انجام گیرد درمواردی هم حجم داده های
ورودیزیاد است وبرای زخیره سازی آنها باید متغیر های متعددی با نامهای
متفاوتاستفاده کرد وسپس از آنها در پردازش بهره برد که کاری دشوار است
ودراکثرموارد غیر ممکن خواهد بود؛ به عنوان مثال فرض کنید میخواهید
الگوریتمی بنویسیدکه داده های مربوط به مشخصات ونمرات 100 دانش آموز
یک مدرسه را ذخیره وپردازش نماید تعریف متغیر های مورد نیاز به این تعداد
عملاکار بسیار دشواری است . در چنین مواری میتوانید از آرایهاستفاده کنید: 
آرایه مکان هایی از حافظه است که با یک نام شناسایی شده ودارای
 اندیس هایی برای اشاره به خانه های این آرایه است. در نتیجه آرایه را
 می توان به صورت یک متغیر با مکان های متعددی که داده های هم نوع
 را در خود نگه می دارند، تعریف کرد . ادرس خانه های آرایه متوالی بوده و
در حافظه به صورت پشت سر هم قرار می گیرند. 
برای تعریف یک آرایه شما میتوانید از روش "متغیر a20 و ...... و a2 و a1 "
استفاده کنید.
مثال 1
الگوریتمی بنویسید که 20 عدد دلخواه  را دریافت کرده ودر یک آرایه ذخیره 
نماید سپس آنهارا از آخر به اول نمایش دهد.
0 ـ شروع 
1 ـ متغیرهای a20 و .....و a3 و a2 و a1 را در نظر بگیرید
2 ـ 1------>i
3 ـ (a (i را دریافت کن 
4 ـ 1 + i = i
5 ـ اگر i<= 20 آنگاه برو به مرحله 3
6 ـ 20 ------> i
7 ـ (a (i رانمایش بده
8 ـ 1 - i = i
9 ـ اگر i >= 1 آنگاه برو به مرحله 7
10 ـ پایان
مثال 2
الگوریتمی بنویسید که 10 عدد دلخواه از ورودی دریافت کرده وآنها را در یک
آرایه ذخیره کند سپس اعدادی که زوج است را نمایش بدهد.
0 ـ شروع
1 ـ متغیرهای a10 و .....و a3 و a2 و a1 را در نظر بگیرید
2 ـ 1------>i
3 ـ (a (i را دریافت کن
4 ـ  1 + i = i
5 ـ اگر i<= 10 آنگاه برو به مرحله3
6 ـ 1 - i = i
7 ـ اگر i > 0  آنگاه برو به 8 در غیر این صورت برو به 10
8 ـ n = a (i) mod 2 
9 ـ اگر n = 0 آنگاه   " (a (i " نمایش بده در غیر این صورت برو به 6
10 ـ پایان
تمرین
1. الگوریتمی بنویسید که اعداد 1 تا 100 را نمایش دهد
2. الگوریتمی بنویسید که طول وعرض مسطتیلی را از ورودی دریافت کند
و محیط و مساحت آن را محاسبه وچاپ نماید.
3. الگوریتمی بنویسید که درآمد ماهانه تعدادی کارمند رادریافت کند، وبر
اساس تعرفه زیر مالیات آنها را محاسبه کرده، و چاپ نماید.
الف: کمتر از 40000 تومان بود مقدار مالیات 0
ب: بین 40000 تا 50000 تومان  مقدار مالیات 7% نسبت به مازاد
ج: بیش از 50000 تومان مقدار مالیات 12% نسبت به مازاد
4. الگوریتمی بنویسید که دو عدد a و b را از ورودی دریافت کند و کلیه 
اعداد زوج بین آنهارا در خروجی چاپ کند.
5. الگوریتمی بنویسید که نمرات داش آموزی را از ورودی گرفته ، و معدل
 وی را محاسبه و چاپ کند.
6. الگوریتمی بنویسید که 20 عدد دلخواه را بصورت یک آرایه دریافت کرده
و بزرگترین وکوچیکترین عدد را در بین آنها محاسبه کند ونمایش دهد.


مطالب مشابه :


الگوریتم - شبه کد 2

و در خط ۷ هم حلقه کامل می شود. برای بررسی بهتر الگوریتم یک عدد فرضی را در نظر می گیریم و تمام




جواب سوالات تمرینات شماره یک سری دوم

عدد طبیعی n را تام یا کامل گویند هرگاه زیر بدست آورید.الگوریتم را تا سه جمله




آموزش الگوریتم و فلوچارت

در خط ۲ الگوریتم ۲ عدد دلخواه a و b را می گیرد و در آن ها قرار می و در خط ۷ هم حلقه کامل می شود.




سوالات الگوریتم فلوچارت

سوالات الگوریتم که آنقدر عدد از ورودی بگیرد را گرفته تعیین کند که آیا کامل




آموزش الگوریتم و برنامه نویسی

رفتن به محل کار.مثلا روش مصرف دارو تا از بین رفتن کامل عدد بزرگترین الگوریتم های که




الگوریتم

عدد بعدی را به هر حال، چون چارلز بابیج هرگز موتور تحلیلی خود را کامل نکرد، این الگوریتم بر




Algorithm

چاپ عدد ورودي به شرط اول بودن عدد ( به کمک مجموع مقسوم عليه ) Cls. Let S =0. Input N. آموزش کامل




توانایی حل مسائل و الگوریتم و فلوچارت

:: تکنولوژی آموزشی :: - توانایی حل مسائل و الگوریتم و فلوچارت - وبلاگ سعید لطیفی - :: تکنولوژی




برچسب :