برنامه نویسی و دیگر هیچ

فضایی برایه یادگیری برنامه نویسی

برنامه نویسی و دیگر هیچ

فضایی برایه یادگیری برنامه نویسی

جمعه, ۲۹ شهریور ۱۳۹۲، ۰۹:۰۸ ق.ظ

حلقه

حلقه ها


فرض کنید می خواهیم یک الگوریتم برای تراش کردن مداد بنویسیم:


1- شروع

2-تراش را با دست چپ بردار.

3-مداد را با دست راست بردار.

4-مداد را درون حفره تراش قرار بده.

5- 3 بار مداد را داخل تراش بچرخان.

6-مداد را از تراش خارج کن.

7- تمام.


در مثال بالا با انجام 7 مرحله یک الگوریتم برای تراش کردن یک مداد نوشتیم!

 یک سوال؟ اگر بخواهیم الگوریتمی برای تراش کردن یک جعبه مداد رنگی 24 رنگ بنویسیم چکار میکنیم؟؟؟



یک روش اینه که ما دستورهای 3 تا 6 را برای هر کدوم از 24 مدادی که داریم بنویسیم اما الگوریتم ما خیلی طولانی خواهد شد و مدام دستورات تکراری را دوباره نویسی کرده ایم!

در اینجا بهتر است که از ساختار حلقه درون الگوریتم خود استفاده کنیم

به اینصورت که دستورهای 3 تا 6 که تکراری هستند را درون یک حلقه قرار میدهیم و با استفاده از یک شمارشگر حلقه را کنترل میکنیم که 24 بار تکرار شود!

1- شروع

2-تراش را با دست چپ بردار.

3-فرض کن k دارای مقدار صفر است.

4-تا زمانیکه  k  کمتر از 24 است.

4/1- مداد را با دست راست بردار.

4/2- مداد را درون حفره تراش قرار بده.

4/3- 3 بار مداد را داخل تراش بچرخان.

4/4- مداد را از تراش خارج کن.

4/5- یک واحد به k اضافه کن و برو به خط 4.

7- تمام.


در الگوریتم بالا ما از یک حلقه شرطی استفاده کردیم که 24 بار تکرار میشود! و در هر بار تکرار یک مداد  تراش خواهد شد . پس جمعا 24 عدد مداد رنگی در پایان این الگوریتم تراش خواهند شد!


شمارشگر چیست؟

عموما هر شمارشگر یک متغیر است که وظیفه شمارش را به ساده ترین روش به وسیله آن انجام میدهیم

مثلا در مثال بالا ما از k به عنوان شمارشگر استفاده کرده ایم به اینصورت که در ابتدا مقدار آن را برابر 0 گرفتیم و بعد در هر تکرار حلقه به آن یک واحد اضافه کردیم و ساختمان الگوریتم را هم طوری نوشتیم که تا وقتی که k کمتر از 24 باشه حلقه تکرار شود.


یک نکته: در الگوریتم بالا خط 4 شروع حلقه ماست  و دستوراتی که قرار است در هر بار تکرار حلقه تکرار بشه بصورت 4/1 تا 4/5 شماره گذاری شده است تا مشخص باشد که  دستورات مربوط به حلقه کدوم ها هستند!


توجه: در هر بار تکرار حلقه شرطی زمانی که به آخرین خط درون حلقه( در اینجا خط 4/5 ) برسیم دوباره به شروع حلقه ( در اینجا خط 4) برمیگردیم تا دوباره شرط ورود به حلقه رو چک کنیم!



خب حالا میدانیم که حلقه ها  برای تکرار دستوراتی که قرار است چندین بار انجام شود استفاده میشود! مثل بالا که دستورات کلی تراش کردن یک مداد را درون حلقه ای با یک شمارشگر انداختیم تا 24 بار تکرار شود!

ساختار کلی حلقه شرطی

تا زمانیکه ( شرط)

    دستور 1
    دستور 2
         .
         .
         .
    دستور n


مثال: الگوریتمی بنویسید که اعدا 1 تا 100 را چاپ کند!

1- شروع

2-a=1 را از نوع int  تعریف کن.

3-تا زمانیکه(a<=100)

       3/1- a  را چاپ کن.

       3/2- a=a+1.

4- تمام.


در اینجا a  را به عنوان یک شمارشگر در نظر گرفتیم که مقدار اولیه آن 1 است و در هر تکرار حلقه بعد از چاپ مقدار آن به آن یک واحد اضافه کردیم و در هنگام خروج از حلقه مقدار آن برابر با 101 خواهد بود!


  • علیرضایی

نظرات  (۱۸)

سلام !!!

خانم علیرضایی فردا از ما امتحان تعیین سطح می گیرین !!!؟؟؟ :(

پاسخ:
سلام!

فردا امتحان ندارید! خیالتون راحت!
فردا امتحان داریم خانوم عایا؟؟؟؟؟؟
میشه لطفا جواب این سوال رو امروز واسم بفرستید؟
الگوریتمی بنویسید که حاصلضرب دو عدد aوb را حساب کند
پاسخ:
الگوریتم زیر  2 عدد مثلا a,b رو از ورودی میگیره و حاصلضربشون رو چاپ میکنه:

1- شروع.
2- a وb را از نوع float تعریف کن.
3-a, b را از ورودی بگیر.
4- a*b را چاپ کن.
5- تمام.

---------------

سلام

اگه امکان داره جواب این سوال را  در سایت قرار دهید:

الگوریتم برنامه ای را با استفاده از حلقه لوپ بنویسید که یک عدد را دریافت نماید مشخص نماید این عدد بر چه اعدادی بخش پذیر است وتعداد اعدادی که بر ان بخش پذیر باشد را چاپ نماید؟

پاسخ:
سلام

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

پاسخ:
سلام

به ترتیب شماره برنامه ها رو براتون اینجا نوشتم


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


1.الگوریتمی بنویسید که حقوق کارمندی را دریافت میکند که اگر کمتر از200000باشد2% اگر بین 200000تا400000باشد3% و اگر بیش از 400000باشد 5%مالیات از آن کم کند ونتیجه را چاپ کنید.

ترو خدا به این سوالم جواب بدین خیلی ممنون.
پاسخ:

سلام. خواهش میکنم. اگه سوالی داشته بپرس تا اونجا که وقت داشته باشم جواب میدم:)

1- شروع

2-متغییر a را از نوع int تعریف کن

3-a را از ورودی بگیر

4-اگر(a<200000)

4/1- 0.98*a<----a

5- در غیر اینصورت اگر(a<=400000   &&    a>=200000 )

5/1- a<----a*0.97

6- در غیر اینصورت

6/1-a<----a*0.95

7- a را چاپ کن

8- تمام

راستی ما الگوریتم رو در حد ساده خوندیم چون تازه ترم یک هستیم در حد همون فارسی اگه مقدور هست براتون جوابارو به همون فارسی بدین بازم ممنون
بابت جوابی که دادید ممنون
 
پاسخ:
       خواهش میکنم:)
سلام ببخشید من سوال همین دوستمون شیوا رو داشتم ولی بعضی چیزها رو متوجه نمیشم مثل
متغیر aرا از نوع int بگیرید
یا
0.97*a<------a
پاسخ:

سلام

وقتی میگیم یه متغیر( مثل a) رو از نوع int  تعریف کن یعنی مقادیر مجازی که میشه داخل این متغییر ذخیره کرد از نوع صحیح هست.

اگه بخواهیم متغییر را از نوع اعشاری در نظر بگیریم مینویسیم a را از نوع float تعریف کن.

 

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

 

و قسمت دوم : این عبارتی که نوشتم به معنی این هست که ابتدا مقدار a را در عدد 0.97  ضرب کن و بعد حاصل را داخل a بریز.

از نظر ریاضی هم چون گفته قراره 3 درصد مالیات کم بشه و من فرض کردم a حقوق اولیه است پس با کسر 3 درصد آن 97 درصدش باقی میمونه.

 

امیدوارم  روشن شده باشه/ اگه بازم جایی بود که ابهام داشتی حتما بپرس! موفق باشی:)

واقعا تشکر من متوجه شدم به خدا خنگ نیستم ولی چون رشتم ریاضی بود تو دبیرستان و کامپیوتر نخوندم بعضی چیزا رو متوجه نمیشم خیلییییییییییییییی مرسی
پاسخ:

 سلام!

خوشحالم که متوجه شدی

خب اون اولش که آدم میخواد برنامه نویسی یاد بگیره براش سخته ولی کم کم راه میوفتی! نگران نباش;)

سلام.چرا سوال منو تو سایتتون نزدین؟خوب منم سوال دارم
پاسخ:

       سلام!

یکم سرم شلوغ بود دیگه;)

سوال:الگوریتم را بنویسید که یک عدد  از ورودی دریافت کردیم اگر مثبت بود به توان2 واگر منفی بود به توان3 برسانید.

اینم جواب:

 

1- شروع

2- متغیر a را از نوع float تعریف کن.

3- a را از وردی بخوان.

4- اگر  (a>0)

  4/1-  a<----a*a

5- در غیر اینصورت اگر(a<0)

  5/1-  a<----a*a*a

6- a را چاپ کن.

7- تمام.

 

 

 :) موفق باشی.

تذکر: من فرض کردم 0 نه مثبته نه منفی!

 

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

2.الگوریتمی بنویسید که فاکتوریل یک عدد را محاسبه کند.
پاسخ:

1-شروع.

2-  0= i=1, sum=0,a,b=1 , max  وnum را از نوع int  تعریف کن

3-   aرا از ورودی بگیر

4- تا زمانیکه(i<5)

4/1-تا زمانیکه(b<=a)

   4/1/1 - اگر (a%b==0)

          4/1/1/1- sum<---sum+b

    4/1/2- b<---b+1

 4/2- اگر (sum>max)

  4/2/1-  max<---sum

   4/2/2- num<---a

4/3 - i<---i+1

 4/4- b<---1

 4/5-sum<---0

4/6- a را از ورودی بخوان.

 

5-  num  را چاپ کن.

6- تمام.

 

 جواب سوال 2 هم اینجا است.

ترو خدا جواب منو بدین من امتحان دارد







































پاسخ:

سلام.

جوابا  رو تو نظر قبلی دادم.

موفق باشی.

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

1.شروع
2. 0----->max و 1------->i
3. 0----->s و 1----->b و a را از ورودی بگیر
4.اگر a%b برابر صفر است آنگاه
              b+s---->s   و 1+b----->b 
در غیر این صورت
اگر sum>max باشد آنگاه
             s----->max
5.max<----------a
6.اگرb<=a باشد آنگاه برو به دستور 4
7. 1+i<-------i
8.اگر 5=>i باشد آنگاه به دستور 3
9. num را چاپ کن
10.پایان

پاسخ:

کلیت الگوریتمت درست بود فقط به اون در غیر اینصورت احتیاجی نبود چون برای هر عدد که از ورودی میگیری باید همه عددهای بین 1 تا خود عدد رو چک کنی تا ببینی کدوم هاشون مقسوم علیه عدد هستن. به خاطر همین بعد از اینکه در خط 4 به  b یک واحد اضافه میکنی باید بلافاصله چک کنی که b هنوز کوچکتر یا مساوی a هست. و تازه بعد از اینکه b به  a رسید چک میکنیم که مجموع مقسوم علیه هاش در مقایسه با عدد قبلیه چه وضعی داره و اگه بیشتر بود مقدار max  میشه s  و خود عدد هم که در a هست رو میریزیم تو num و بعد به مرحله بعد میریم.

خب اینم الگوریتم شما به یه کوچولو تصحیح:

1.شروع
2. 0----->max و 1------->i
3. 0----->s و 1----->b و a را از ورودی بگیر
4.اگر a%b برابر صفر است آنگاه
              b+s---->s   و 1+b----->b 

5.اگرb<=a باشد آنگاه برو به دستور 4
6-اگر s>max باشد آنگاه
             s----->max
              و  a----->num
7. 1+i<-------i
8.اگر 5=>i باشد آنگاه به دستور 3
9. num را چاپ کن
10.پایان
مرسی دستتون درد نکنه 
کمکم داره یه چیزایی میفهمم
پاسخ:
خواهش. یه چندبار که مرور کنی همه چی دستت میاد
موفق باشی:)
ممنون استاد دستتون درد نکنه
پاسخ:
خواهش میکنم.
موفق باشی:)
سلام میشه کمکم کنید


پاسخ:
سلام، تا اونجایی که وقتم جواب بده خوشحال میشم، کاری کنم:)

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی