برنامه نویسی
مقدماتی – جلسه شماره سه
---------------------------------------------------
مسئله شماره نه : الگوریتمی بنویسید که با دریافت عدد طبیعی
n حاصل جمع n جمله ی اول سری
زیر را محاسبه نماید (زمان لازم برای این تمرین 7 دقیقه)
برای حل این دسته از مسائل که خروجی الگوریتم بستگی به عدد
ورودی (در این مسئله عدد n) دارد، بایستی به دنبال یک الگوی ثابت باشیم که البته در یک حلقه
ی تکرار، مدام تکرار میشه. خب تو این مسئله، الگوی ثابت تقریبا واضح هست. مخرج هر
جمله ضریبی از عدد 3 هست. پس می تونیم یک جمله عمومی برای این سری و به صورت زیر
بنویسیم:بنابراین الگوریتم
این مسئله به صورت زیر خواهد بود :
1. Start
2. i = 1
3. s = 0
4. Read “n”
5. s = s + ( 1 / (3*i) )
6. i = i + 1
7. If ( i <= n) Then go to #5
8. Write “s”
9. End
----------------------------------------------------------------------------------------------------
مسئله شماره ده: الگوریتمی بنویسید که با دریافت عدد صحیح و
زوج n حاصل مجموع زیر را
محاسبه کند (زمان لازم برای این تمرین 7 دقیقه)
همانطور که می بینید، جمله ی عمومی این سری به صورت زیر هست
:
از ظاهر جمله عمومی نترسید! خیلی راحت میشد از صورت مسئله
به این نتیجه رسید. اگه باز هم در این مورد مشکل دارید، با مقدار گذاری در متغیر i چند جمله اول سری رو
بدست بیارید و اون رو با صورت مسئله مقایسه کنید. در نهایت الگوریتم رو با استفاده
از فرم جمله ی عمومی می نویسیم :
1. Start
2. Read “n”
3. If (n/2 != [n/2]) Then go to #2
4. i = 2
5. s = 0
6. p = 1
7. s = s + ( p * ( i-1 / i) )
8. i = i + 1
9. If ( i <= n ) Then (p = -p) & (go to #7 )
10. Write “s”
11. End
از اونجا که برای ما مهم هست تا عدد ورودی زوج باشه، به
همین دلیل در خط شماره 3 بررسی میکنیم که آیا عدد ورودی زوج هست یا نه و در صورتی
که زوج نبود الگوریتم به خط 2 بر میگرده تا یک بار دیگه از ورودی عدد دریافت کنه.
علامت != به معنای عدم برابری یا همون مخالف هست. بعضی جاها
هم از علامت <> استفاده میکنن. نکته
ی دیگه این هست که چون ضریب جملات به صورت یکی در میان مثبت و منفی میشه، ما هم
برای تعیین ضریب هر جمله در این الگوریتم از متغیر p
استفاده کردیم. همونطور که می بینید در خط 9 ، اگر شرط مورد نظر برقرار باشه بعدش دو
تا کار باید انجام بشه. یکی اینکه علامت p
در یک منفی ضرب بشه (قرینه بشه) و کار دوم این هست که به خط شماره 7 برگردیم.
علامت & به معنای and هست و در جایی به کار میره که ما بخواهیم دو تا شرط یا بیشتر رو
بررسی کنیم یا اینکه بخواهیم بیشتر از یک عمل رو در یک دستور مشخص کنیم. در برخی
جاها هم از علامت &&
استفاده میکنن.
----------------------------------------------------------------------------------------
یادآوری : از
درس ریاضی به یاد داریم که مقلوب عدد 1234 برابر است با 4321
مسئله شماره یازده: الگوریتمی
بنویسید که با دریافت عدد صحیح n از ورودی، مقلوب آن را در خروجی نمایش دهد. (زمان لازم برای این
تمرین 5 دقیقه)
1. Start
2. Read “n”
3. r = n mod 10
4. Write “r”
5. n = n / 10
6. If ( n > 0 ) Then go to #3
7. End
بررسی الگوریتم رو به عهده خود شما میگذارم، فقط این نکته
رو بگم که دستور شماره 3 داره میگه که "باقیمانده ی تقسیم عدد n بر عدد 10 را حساب کن
و حاصل را در متغیر r قرار بده"-------------------------------------------------------------------------------
مسئله شماره دوازده: در این مسئله میخوام کمی شما رو به
دردسر بندازم. الگوریتم زیر را خط به خط اجرا کنید و خروجی آن را به دست آورید.
(زمان لازم برای این تمرین 10 دقیقه)
1. Start
2. i = 3
3. a = 1
4. b = 2
5. c = a + b
6. a = b
7. b = c
8. i = i + 1
9. If ( i < = 10 ) Then go to #5
10. Write “c”
11. End
پاسخ این مسئله 10 امین عدد از سری فیبوناچی است. در مورد
سری فیبوناچی در ترم های بالاتر بسیار خواهید شنید. در واقع شما باید عدد 89 رو به
عنوان خروجی به دست آورده باشین.------------------------------------------------------------------------------
بسیار خب، تا
همین جا کافیه. در جلسه بعد به معرفی فلوچارت خواهیم پرداخت. البته قصد داشتم فلوچارت رو هم در همین جلسه معرفی کنم، اما به خاطر محدودیت در انتشار مطلب باید یک جلسه جداگانه رو به اون اختصاص بدیم.