Тема 3 "Реалізація базових алгоритмічних конструкцій"
3.1. Реалізація алгоритмів з розгалуженням
3-1 Реалізація алгоритмів з розгалуженням
More presentations from Galina
Завдання для самостійного опрацювання
- Оклад працівника дорівнює s грн. За якісне й дострокове виконання завдання йому нараховується премія у розмірі 50 % окладу. Розробіть програму визначення реальної заробітної платні працівника.
- Дано два дійсних числа. Розробіть програму, за допомогою якої менше число замінюється нулем, а більше — одиницею.
- Дано ціле число n. Розробіть програму, за допомогою якої це число збільшується на 7, якщо воно більше 15, і зменшується на 5, якщо воно менше або дорівнює 15.
- Тренер формує команду для гри у баскетбол з учнів, які на зріст не нижчі ніж 180 см. Розробіть програму визначення, чи потрапить у цю команду учень зростом h см?
- Дано рівносторонній трикутник зі стороною b. Розробіть програму визначення, чи можна у трикутник вписати коло з радіусом r.
- Відомі три найкращі результати учнів школи у стрибках у довжину. Розробіть програму, за допомогою якої за результатами стрибків визначаються прізвища учнів.
- У п’ятницю у 9 класі такі уроки: 1 — історія, 2 — математика, 3 — географія, 4 — інформатика, 5 — фізкультура. Розробіть програму, за допомогою якої визначається назва
предмету за його номером у розкладі. - Знайдіть в Інтернеті та складіть список із п’яти найбільших міст України. Розробіть програму, за допомогою якої визначається назва міста за його номером у цьому списку.
3.2. Вкладені оператори умовного переходу
Опрацювати навчальну презентацію до теми уроку
3-2 Вкладені оператори умовного переходу
Завдання для самостійного опрацювання
- Дано три дійсних числа a, b, c. Якщо a>b>c, кожне число збільшується удвічі, інакше кожне число зменшується на одиницю. Розробіть програму реалізації цього завдання.
- Дано три сторони трикутника. Розробіть програму, за допомогою якої визначається, чи є цей трикутник прямокутним.
- Дано три сторони трикутника. Розробіть програму для визначення, чи є цей трикутник рівнобедреним.
- Літак вилітає за розкладом з Києва у Мюнхен, якщо швидкість вітру в Києві менше v, а хмарність у Мюнхені не менше h. Розробіть програму для визначення, чи вилетить літак за розкладом.
- Шкільна команда шахістів із трьох учнів потрапляє до фінальних міських змагань у випадку, якщо у відбірних змаганнях кожен учень набере не менше 5 очок. Розробіть програму, за допомогою якої визначається, чи потрапить команда до фінальних змагань, якщо перший учень набрав a очок, другий — b очок і третій — c очок.
- У Всеукраїнській учнівській олімпіаді з інформатики з однієї школи беруть участь два учні. Щоб потрапити до української команди для участі в міжнародній олімпіаді, потрібно набрати не менше k балів. Перший учень набрав a балів, а другий — b балів. Розробіть програму, за допомогою якої визначаються усі варіанти потрапляння до цієї команди учнів школи.
- Перед останнім туром чемпіонату України з футболу склалася така ситуація. Щоб команда «Динамо» (Київ) стала чемпіоном, їй потрібно виграти у команди «Ворскла», і щоб «Шахтар» при цьому програв «Дніпру». Розробіть алгоритм із вкладеним умовним оператором визначення, чи стане «Динамо» чемпіоном.
3.3. Реалізація циклічних алгоритмів
3.3.1. Цикли з параметрами
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 Цикли
Приклад 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 грн?
Тренувальні вправи
- Розробіть код обчислення суми для чисел 2, 7, 21, 9, 33, 13.
- Розробіть код, який обчислює суму непарних чисел, що більші 7, але менші 25.
- Розробіть код обчислення суми чисел натурального ряду, максимальне значення якого не перевищує 7.
- Перший член геометричної прогресії дорівнює 6, а її знаменник — 0.5. Розробіть код обчислення значень членів прогресії, більших 0.6, і визначення номера останнього члена прогресії, що підсумовується.
- Дано куб, сторони якого набувають п’ять значень 3; 4.5; 6; 7.5; 9. Розробіть код визначення об’єму кожного з них.
- Дано рівносторонній трикутник зі стороною b. Розробіть програму визначення, чи можна в трикутник уписати коло з радіусом r.
- Радіус першої кулі дорівнює 2 см, а радіус кожної наступної збільшується на 0.5 см. Розробіть код для визначення бокових поверхонь перших шести куль.
- Відомо результати плавання вільним стилем на дистанції 50 м п’яти учнів кожного з трьох 10-х класів школи. Розробіть код, за допомогою якого визначається середній час запливу учнями кожного класу.
- У банк покладено 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.