Отримання знань

дистанційна підтримка освіти школярів


Цикл із передумовою while
 
  Цикл -  це набір команд, який може повторюватись більше одного разу.
 
У вигляді блок-схеми
Алгоритмічною мовою
Мовою Python
                      поки умова                         
    пц
          тіло циклу
          (серія команд)
    кц 
      while умова :                 
           тіло циклу
          (серія команд) 
 
 

Приклад 

  Якого значення набуде змінна x після виконання циклу?
     a= 35
     b= 8
     x= 0
     while  a>b:
            x= x+a
            a= a-b

                                            Таблиця виконання

         


Задача “Mushrooms.py” 

 

  Дідусь Василь N днів ходив у ліс по гриби. Першого дня він знайшов 11 грибів, другого – 20, третього – 29. Кожного дня кількість знайдених грибів стабільно збільшувалась.

   Скільки всього грибів зібрав досвідчений грибник?

   Контрольні приклади

      1)  N= 3      =>   sym= 60

      2)  N= 5      =>   sym= 145

Розв’язання

  Введемо змінні:
      ¤  sym – загальна кількість грибів; 
      ¤  x – кількість грибів, знайдена певного дня;
      ¤  i – лічильник днів.

   Початкове значення загальної кількості грибів sym=0 (ми ще нічого не рахували). У перший день дідусь знайшов 11 грибів, тому x=11.

   Відлік днів ведемо, починаючи з 1, тому i=1. Цикл виконуємо, поки лічильник днів i не досягне заданої кількості днів N (i<=N). Щодня сума знайдених грибів sym збільшується на x, тобто sym=sym+x.

   Неважко помітити, що 20-11= 29-20= 9, тобто щодня грибник знаходив на 9 грибів більше. Тому щоденна кількість грибів x=x+9.

Програма Пояснення

 N=input('N=')

 sym=0

 x=11

 i=1

 while i<=N:

     sym=sym+x

     x=x+9

     i=i+1

 print 'sym=', sym   

 Зчитуємо введене значення змінної N

 Початкова загальна кількість грибів sym дорівнює 0

 У перший день зібрано 11 грибів

 Відлік днів починаємо з 1

 поки номер дня i не перевищує N

     до загальної суми sym додаємо знайдені у цей день гриби x

     збільшуємо щоденну кількість грибів x на 9

     збільшуємо лічильник днів i

 Виводимо фразу 'sym=' і значення змінної sym


Задача “Winnie_Pooh.py”

  Ведмедик Вінні Пух дуже полюбляє мед і хоче, щоб бджоли збирали його якомога більше. Мудра Сова порадила йому посіяти на галявині квіти фацелії, які є чудовим медоносом.

   Ведмедик весною посіяв 1 зернину. Влітку рослина зацвіли, а восени Вінні Пух зібрав 5 насінин.

  Наступного року кожна з 5 посіяних зернин потішила ведмедика пишним цвітом та 7 насінинами врожаю. Тобто восени 2-ого року Вінні Пух мав вже 35 зернин.

   Скільки насінин матиме любитель меду через N років?

 

      Контрольні приклади

          1)  N= 2    =>  k= 35
          2)  N= 7    =>  k= 11486475

Розв’язання

  Введемо змінні:
     ¤  i
лічильник років;
     ¤  m
 кількість зернят, які з’явились на кінець року на кожній рослині;
     ¤  k
 загальна кількість насінин, яку в поточному році спочатку посіяв, а потім зібрав Вінні Пух.

   Відлік років ведемо з першого, тому i=1. Працюватимемо, поки лічильник років i не перевищить заданої кількості років N (i<=N).

   Першого року було посіяно 1 зернятко, тому k=1. На кінець року на рослині з’явилось 5 насінин, тому m=5

   Щоб знайти кількість зернин, отриманих восени, потрібно посаджену кількість рослин k помножити на кількість насінин на кожній із них m, тобто k=k*m (кількість зернин збільшується у m разів).

   Неважко помітити, що врожайність рослин щороку зростає на 2 зернини, тому m=m+2.

Програма Пояснення

 N=input('N=')  

 k=1

 m=5

 i=1

 while i<=N:

     k=k*m

     m=m+2

     i=i+1

 print 'k=', k    

 Зчитуємо введене значення змінної N

 Початкова кількість насінин k дорівнює 1

 У перший рік із 1 рослини зібрано 5 зернин

 Відлік днів починаємо з 1

 поки номер дня i не перевищує N

      збільшуємо початкову кількість насінин k у m разів

      збільшуємо врожайність рослин на 2 зернини

      збільшуємо лічильник днів i

 Виводимо фразу 'k=' і значення змінної k


В системі: гості - (1); користувачі - LuDmila