Тема 3 "Реалізація базових алгоритмічних конструкцій"
 

3.1. Реалізація алгоритмів з розгалуженням

3-1 Реалізація алгоритмів з розгалуженням

More presentations from Galina

 

Завдання для самостійного опрацювання

  1. Оклад працівника дорівнює s грн. За якісне й дострокове виконання завдання йому нараховується премія у розмірі 50 % окладу. Розробіть програму визначення реальної заробітної платні працівника.
  2. Дано два дійсних числа. Розробіть програму, за допомогою якої менше число замінюється нулем, а більше — одиницею.
  3. Дано ціле число n. Розробіть програму, за допомогою якої це число збільшується на 7, якщо воно більше 15, і зменшується на 5, якщо воно менше або дорівнює 15.
  4. Тренер формує команду для гри у баскетбол з учнів, які на зріст не нижчі ніж 180 см. Розробіть програму визначення, чи потрапить у цю команду учень зростом h см?
  5. Дано рівносторонній трикутник зі стороною b. Розробіть програму визначення, чи можна у трикутник вписати коло з радіусом r.
  6. Відомі три найкращі результати учнів школи у стрибках у довжину. Розробіть програму, за допомогою якої за результатами стрибків визначаються прізвища учнів. 
  7. У п’ятницю у 9 класі такі уроки: 1 — історія, 2 — математика, 3 — географія, 4 — інформатика, 5 — фізкультура. Розробіть програму, за допомогою якої визначається назва
    предмету за його номером у розкладі.
  8. Знайдіть в Інтернеті та складіть список із п’яти найбільших міст України. Розробіть програму, за допомогою якої визначається назва міста за його номером у цьому списку.

3.2. Вкладені оператори умовного переходу

Опрацювати навчальну презентацію до теми уроку

Завдання для самостійного опрацювання

  1. Дано три дійсних числа a, b, c. Якщо a>b>c, кожне число збільшується удвічі, інакше кожне число зменшується на одиницю. Розробіть програму реалізації цього завдання.
  2. Дано три сторони трикутника. Розробіть програму, за допомогою якої визначається, чи є цей трикутник прямокутним.
  3. Дано три сторони трикутника. Розробіть програму для визначення, чи є цей трикутник рівнобедреним.
  4. Літак вилітає за розкладом з Києва у Мюнхен, якщо швидкість вітру в Києві менше v, а хмарність у Мюнхені не менше h. Розробіть програму для визначення, чи вилетить літак за розкладом.
  5. Шкільна команда шахістів із трьох учнів потрапляє до фінальних міських змагань у випадку, якщо у відбірних змаганнях кожен учень набере не менше 5 очок. Розробіть програму, за допомогою якої визначається, чи потрапить команда до фінальних змагань, якщо перший учень набрав a очок, другий — b очок і третій — c очок.
  6. У Всеукраїнській учнівській олімпіаді з інформатики з однієї школи беруть участь два учні. Щоб потрапити до української команди для участі в міжнародній олімпіаді, потрібно набрати не менше k балів. Перший учень набрав a балів, а другий — b балів. Розробіть програму, за допомогою якої визначаються усі варіанти потрапляння до цієї команди учнів школи.
  7. Перед останнім туром чемпіонату України з футболу склалася така ситуація. Щоб команда «Динамо» (Київ) стала чемпіоном, їй потрібно виграти у команди «Ворскла», і щоб «Шахтар» при цьому програв «Дніпру». Розробіть алгоритм із вкладеним умовним оператором визначення, чи стане «Динамо» чемпіоном.

 

3.3. Реалізація циклічних алгоритмів

3.3.1. Цикли з параметрами

Завдання для самостійного опрацювання

Приклад 1. Розробити програму реалізації алгоритму отримання таблиці множення на 8.

# об'єктом в операторі for є цілі числа
for i in range (10) :
    i=i+1
    p=8*i
    print("8*",i,"=",p)
input()

Приклад 2. У банк покладено 5000 грн під 20 % річних. Визначити суму вкладу за кожний із п’яти років.

# Сума вкладу в банк за кожні із 5 років
s=10000
for i in range (5) :
    i=i+1
    s=s+s*0.2
    print("за ",i,"рік: ",s)
input()

Приклад 3. Дано рядок символів. Скласти програму виведення кожного символу з рядка через один пробіл і підрахунку в ньому кількості символів.

k=0   # Початкова кількість символів
#об'єктом в операторі for є рядок
for s in "мікропроцесор" :
    print (s, end=" ")
    k=k+1
print() #перехід на новий рядок
print ("Кількість символів =",k)
input()

Приклад 4. У заданій послідовності комп’ютерних термінів підрахувати кількість конкретного терміну й вивести його стільки разів, скільки він повторюється.

k=0   # Початкова кількість слів
# об'єктом в операторі for є список
for p in ['миша','біт','біт','принтер','біт']:
    if p=='біт' :
        print (p, end=" ")    # друк через 1 пробіл
        k=k+1                 # обчислення кількості слів
print() #перехід на новий рядок
print ("Кількість символів =",k)
input()

Практична робота

1. Вивести результати арифметичних операцій довільного цілого числа х із числами 2, 5, 7.

x=int(input("Увести довільне число "))
for a in [2, 5, 7] :
    print ("x+a=",x+a)
    print ("x-a=",x-a)
    print ("x*a=",x*a)
    print ("x/a=",x/a)

2. Надрукувати власне прізвище через 2 пропуски
3. У списку імен учнів групи знайти ім'я Дмитро і порахувати скільки разів воно зустрічається у списку
4. Визначити суму вкладу за кожний із семи років при початковому капіталі 20000 і 15% річних 

3.3.2. Цикли з умовою

3.3.2-4 Цикли

More presentations from Galya

Приклад 1. Автомобіль, рухаючись зі швидкістю v км/год, раптом здійснює термінове гальмування. За першу секунду швидкість його руху падає на 10 км/год, а за кожну наступну секунду швидкість зменшується на 10 км/год від значення за попередню секунду. Через скільки секунд автомобіль зупиниться?

v=int(input("Увести швидкість автомобіля v="))
y=10    #гальмування за першу секунду
k=0     #початкове значення змінної - кількість секунд 
while (v>0):
    v=v-y     #поточне значення швидкості
    y=y+10  #поточне значення гальмування
    k=k+1
print ("Автомобіль зупиниться через ",k,"секунд")

Приклад 2. Мінімальна кількість розрядів (n) для адресації k байт пам’яті визначається нерівністю 2**n>k.

v=int(input("Увести швидкість автомобіля v="))
y=10    #гальмування за першу секунду
k=0     #початкове значення змінної - кількість секунд 
while (v>0):
    v=v-y     #поточне значення швидкості
    y=y+10  #поточне значення гальмування
    k=k+1
print ("Автомобіль зупиниться через ",k,"секунд")

Приклад 3. Батискаф заглиблюється в океан. За першу хвилину він заглиблюється на 10 м, а за кожну наступну хвилину на 10 % менше, ніж за попередню хвилину. Через скільки хвилин батискаф досягне глибини 100 м?

v=int(input("Увести швидкість автомобіля v="))
y=10    #гальмування за першу секунду
k=0     #початкове значення змінної - кількість секунд 
while (v>0):
    v=v-y     #поточне значення швидкості
    y=y+10  #поточне значення гальмування
    k=k+1
print ("Автомобіль зупиниться через ",k,"секунд")

Приклад 4. У банк покладено 10 000 грн під 15 % річних. Кожного року з рахунка знімається 800 грн. Через скільки років сума вкладу перевищить 14 000 грн?

Тренувальні вправи

  1.  Розробіть код обчислення суми для чисел 2, 7, 21, 9, 33, 13.
  2.  Розробіть код, який обчислює суму непарних чисел, що більші 7, але менші 25.
  3.  Розробіть код обчислення суми чисел натурального ряду, максимальне значення якого не перевищує 7.
  4.  Перший член геометричної прогресії дорівнює 6, а її знаменник — 0.5. Розробіть код обчислення значень членів прогресії, більших 0.6, і визначення номера останнього члена прогресії, що підсумовується.
  5.  Дано куб, сторони якого набувають п’ять значень 3; 4.5; 6; 7.5; 9. Розробіть код визначення об’єму кожного з них.
  6.  Дано рівносторонній трикутник зі стороною b. Розробіть програму визначення, чи можна в трикутник уписати коло з радіусом r.
  7.  Радіус першої кулі дорівнює 2 см, а радіус кожної наступної збільшується на 0.5 см. Розробіть код для визначення бокових поверхонь перших шести куль.
  8.  Відомо результати плавання вільним стилем на дистанції 50 м п’яти учнів кожного з трьох 10-х класів школи. Розробіть код, за допомогою якого визначається середній час запливу учнями кожного класу.
  9.  У банк покладено S грн під n % річних. Розробіть код, за допомогою якого визначається кількість років, через які сума вкладу буде не менше N грн.

1) s=0
for a in [2, 7, 21, 9, 33, 13] :
    s=s+a
print ("s=",s)

2) s=0
a=7
while a<25 :
    s=s+a
    a=a+2
print ("s=",s)

3) s=0
a=1
while a<7 :
    s=s+a
    a=a+1
print ("s=",s)

Візьміть до уваги!

Для підключення будь-яких модулів використовується конструкція:

іmport назва_модуля

Також можна використовувати наступну конструкцію, для того, щоб потім повторно не вказувати модуль при використанні функцій:

from  назва_модуля import *

В цьому випадку ми вказуємо, що з певного модуля ми імпортуємо всі функції (*).

Практична робота

1. Обчислити значенння за даними варіантів завдань. Вивести результат у вигляді цілого числа, та з одним знаком після коми. (наприклад: m = 3.26 print(round(m), round(m, 1)) # Округлення числа до цілого і до одного знака після коми)

2. 

Виконати обчислення значення функції для трьох різних значень аргументу (для демонстрації працюючих віток програми в залежності від введеного значення х).

3. Скристатися багатоальтернативним розгалуженням до реалізації діалогу "Яким з графічних редакторів ви вмієте працювати? 1. Paint 2. Photoshop   3. CorelDraw"

Зразок фрагмента програмного коду

print('''Меню:

1. Файл

2. Вигляд

3. Вихід ''')

choice = int(input('Ваш вибір: '))

if choice == 1:

       print('Ви обрали пункт меню "Файл"')

elif choice == 2:

     print('Ви відкрили меню "Вигляд"')

elif choice == 3:

     print('Завершення.')

else:

    print('Деякий інший вибір')

4. Обчислення значення функції на проміжку від а до b кроком зміни h

Зразок виконання завдання:

a=1
b=5
h=1
x=a
import math
while x<=b:
    y=math.log10(x)
    print("x=",x,"  y=",round(y,1))
    x=x+h
input()

5. Використовуючи функцію range(), вивести на екран: а)  числа від 70 до 100  б) двозначні числа, що кратні 9  в) числа першого десятка у зворотному порядку.

# Приклад демонструє використання функції range()
print("Друкуємо двозначні числа від 10 до 20: ")
for i in range(10,21,1):
     print (i, end=" ")
print("\n\nВивести числа менші 50 і кратні п’яти: ")
for i in range(0, 50, 5):
     print (i, end=" ")
print("\n\nВиводимо числа у зворотному порядку: ")
for i in range(20, 10, -1):
     print (i, end=" ")
input("\n\nHaтисни Enter, щоб вийти.\n")

 

3.3.3. Оператори continue і break

Оператори continue і break застосовуються всередині операторів тіла циклу та призначені для їх переривання. 

Оператор continue перериває цикл і повертає управління на початок циклу. Це дозволяє перейти до наступної ітерації циклу до завершення виконання всіх інструкцій усередині циклу.

3.3.4. Вкладені цикли
Циклічні алгоритми, розглянуті раніше, не містять у собі інших циклів, тому їх називають простими циклами.
Вкладені цикли — це такі цикли, що містяться в іншому циклі.
Цикл, що входить до складу іншого циклу, називають внутрішнім, а цикл, який містить інший цикл, — зовнішнім.

Контрольні запитання

Що буде виведено на екран після виконання цього програмного коду

1.

a = ['Linux', 'Open', 'Source']

for x in a:

    print (x, len(x) )

2.

answer = "no"
while answer != "yes":
    answer = input("Ви любите Python? ")
    if answer == "yes":
        print ("Відмінно!")
    else:
        print ("Неправильна відповідь! Спробуйте знову." )

Для узагальнення та самостійного опрацювання. Метод insert()

Метод insert(0, x) вставляє у список другий аргумент перед індексом, який визначає перший аргумент.

Для визначення діапазону як арифметичної прогресії (1 2 3 4 5 6...) зручно користуватися функцією range(). Вона має три форми. Розглянемо їх на прикладах.

Перша форма повертає всі цілі числа в діапазоні від 0 до числа 10, не включаючи саме число 10.

>>> range(10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Друга форма повертає всі цілі числа в діапазоні від 5 до числа 10, не включаючи саме число 10, але включаючи початкове число 5.

>>> range(5, 10)

[5, 6, 7, 8, 9]

Третя форма повертає всі цілі значення в діапазоні – від початкового до кінцевого (не включаючи його) із кроком, що визначається третім параметром.

>>> range(0, 10, 3)

[0, 3, 6, 9]

>>> range(–10, –100, –30)

[–10, –40, –70]

Причому, якщо, наприклад, спробувати ввести range (1, 100, –1), то чисел у цьому діапазоні не буде і, відповідно, результатом буде порожній список [].

Самостійна робота

1. Серед випадкових чисел, що генеруються, знайти: усі від'ємні, усі більші заданого числа та всі числа, що потрапили у відомий діапазон.

Приклади переривання та продовження циклів for і while

1)

for n in range(1, 10):
    if n%2==0:
        print (n, ' = Парне число')
    elif n%7==0:
        print (n,' = Останнє непарне число, ділиться на 7')
        break
    else:
        print (n, ' = Непарне число' )

2)

for n in range(1, 10):
    if n%2==0:
        print (n, ' = Парне число')
    elif n%3==0:
        print (n,' = Останнє непарне число, ділиться на 3')
        continue
    else:
        print (n, ' = Непарне число' )
else:
    print (n, ' = Останнє число' )

Самостійна робота

1. Серед тризначних чисел знайти ті, сума цифр яких дорівнює 3

for sot in range(1,10):
    for des in range(0,10):
        for od in range(0,10):
            if sot+des+od==3:
                print(sot,des,od)

2. Назвемо тризначне число "щасливим", якщо сума першої та останньої його цифр дорівнює середній цифрі. Порахуйте кількість щасливих чисел, у яких сума цифр дорівнює 11.