Дистанційна освіта з інформатики в період січня 2021 року
25.01.2021 - 31.01.2021
Тема: Створення
та реалізація об’єктів в середовищі опису та виконання алгоритмів Thonny.
Теоретична частина
Зразки алгоритмів: https://pythontask.pp.ua/
Осмислюємо
властивості алгоритмів на текстовому матеріалі різнорівневих компететнісних
завдань:
Зразок 1.
Створити алгоритм для виконавця розстановки 10
стільців у квадратній кімнаті так, щоб біля кожної стінки стояло порівну
крісел.
Реалізація.
Система команд для виконавця буде такою:
1. Поставити 1-ий стілець в північно-західний
куток.
2. Поставити 2-ий стілець в південно-східний
куток.
3. Поставити 3-ій, і 4-ий стільці до західної
стіни, не ставлячи їх в куток.
4. Поставити 5-ий, і 6-ий стільці до східної
стіни, не ставлячи їх в кутки.
5. Поставити 7-ий, і 8-ий стільці до північної
стіни, не ставлячи їх у кутки.
6. Поставити 9-ий, і 10-й стільці до південної
стіни, не ставлячи їх у кутки.
Результат. Біля кожної стіни по три стільці.
Зразок 2.
Створити алгоритм для виконавця розстановки 8
стільців у квадратній кімнаті так, щоб біля кожної стінки стояла різна
кількість крісел.
Реалізація.
Система команд для виконавця буде такою:
1. Поставити 1-ий стілець в північно-західний
куток.
2. Поставити 2-ий стілець в південно-східний
куток.
3. Поставити 3-ій, 4-ий стільці до
західної стіни, не ставлячи їх в куток.
4. Поставити 5-ий, і 6-ий, 7-ий стільці до
східної стіни, не ставлячи їх в кутки.
5. Поставити 8-ий стілець до до північної стіни,
не ставлячи його у куток.
Результат: південна стіна має один стілець; північна стіна має два
стільці; західна стіна має три стільці; східна стіна має чотири стільці.
Зразок 3.
Створити алгоритм для виконавця "дід
Макар", котрий зможе перевезти на човні через річку три об'єкти: вовка,
козу, капусту без втрат. Якщо відомо, що в човні може поміститися лише двоє
об'єкти: чоловік або з капустою, або з вовком, або з козою. При цьому відома
система команд:
1. Якщо лишити без нагляду вовка з козою , то
він з'їсть козу.
2. Якщо лишити без нагляду козу з капустою, то
зникне капуста.
3. У присутності діда Макара ніхто нічого не з'їдає.
Реалізація.
Система команд для діда Макара буде такою:
1. Перевезти козу на протилежний берег.
2. Повернутися назад лише діду на човні.
3. Перевезти капусту на протилежний берег.
4. Залишити капусту на березі і перевезти назад
козу на човні.
5. Залишити козу і перевезти на протилежний
берег лише вовка.
6. Повернутися назад лише діду на човні.
7. Перевезти козу на протилежний берег.
Зразок 4.
Створити алгоритм для з'єднання ланцюжка із 15
кілець для виконавця "коваль". При цьому в коваля є заготовлені 5
ланцюжків. У кожного із п'яти ланцюжків лише по три кільця. Вважати вірною таку
систему команд:
1. Якщо розкувати кільце - це одна операція,
2. Якщо з'єднати два кільця - це ще одна операція.
Чи зможе коваль за шість операцій створити один
ланцюжок із 15 кілець?
Реалізація.
Система команд для виконавця коваля.
1. Розібрати на три окремі кільця один
триланковий ланцюжок. Це три операції.
2. Першим кільцем з'єднати 2-ий і 3-ій ланцюжки.
3. Другий кільцем з'єднати 4-ий і 5-ий ланцюжки.
4. Третім кільцем з'єднати два ланцюжки, що
мають по сім кілець.
Результат. За шість операцій отримано ланцюжок на 15 кілець.
Зразок 5.
У одній із стародавніх країн засуджені на
смертну кару, мали право на помилування через процедуру витягування жеребу.
Процедура витягування жеребу відбувалася відкрито і публічно. У посудині
знаходилися дві кулі, а в кожній кулі схована записка. Одна записка містила
слово: помилувати. Друга записка містила слово: покарати.
Друзі засудженого повідомили йому, що судді
вирішили його покарати у будь-якому випадку, тому записку
"помилувати" замінили на записку "покарати". Отже і
посудині є дві кульки, і в кожній кульці записка "покарати".
Створити алгоритм дій засудженого під час
витягування жеребу так, щоб засуджений залишився живим.
Реалізація.
Система команд для засудженого:
1. Витягнути довільну кульку із посудини.
2. Відкрити кульку.
3. Не читаючи, швидко проковтнути записку.
4. Повідомити суддям, що треба подивитися, що
записано у другій кульці.
5. Відкрити другу кульку.
6. Прочитати записку другої кульки.
7. Повідомити усім, що засуджений проковтнув
записку "помилувати".
Зразок 6.
Відома така система команд для видудлювання діжки
квасу для діда та баби.
1. Випити діжку квасу за 10 днів разом діду і
бабі.
2. Випити діжку квасу за 14 днів тільки діду.
3. Випити діжку квасу за х днів тільки бабі.
Знайти значення х, враховучи дію 1. та дію 2.
Реалізація.
Шукаємо таке число, яке ділиться націло на 10 і
14 одночасно. Це число 70. Якщо 70 днів питимуть квас разом дід і баба,
то вони вип'ють аж 70:10= 7 діжок квасу. Якщо 70 днів питиме тільки дід, то він
подужає 70:14=5 діжок квасу. Тому х=7-5=2 дні.
Результат. Третя дія звучить так: "випити діжку квасу за 2 дні
тільки бабі".
Зразок 7.
Учитель інформатики склав собі систему команд
для цільової мотивації досягнення власного успіху:
1. Якщо мені ще прожити половину років від тих,
які я уже прожив, то мені буде 72 роки.
2. Якщо мені ще прожити третину років від тих,
які я уже прожив, то мені буде 64 роки.
3. Якщо мені ще прожити чверть років від тих,
які я уже прожив, то мені буде 60 років.
4. Якщо мені ще прожити половину та ще третину
та ще чверть років від тих, які я прожив, то мені буде аж 100 років.
Як за даною системою команд дізнатися, скільки
зараз років учителю інформатики.
Реалізація.
1 спосіб. Спочатку використовуємо лише умову
команди 4.
Уявіть, що уже 100 років учителю інформатики.
Тоді ці роки складаються із таких доданків: х +0,5х+х/3+0,25х. Зведемо до
спільного знаменника. Отримаємо 25х/12=100. Звідси х = 48.
Результат . 48 років - це вік учителя інформатики.
Цей результат легко перевірити виконання умов команди 1. 2. 3.
1)48 +24=72
2)48+16=64
3)48+12=60.
Зразок 8.
Менеджер малого підприємства "Цейлон-чай" для
продавщиць бутику "Чай" створила систему команд:
1. Закупити 1т цейлонського чаю за 12 000
грн.
2. Закупити 1 т. індійського чаю за 8 000 грн
3. Закупити 8 т. китайського чаю за 5 000 грн.
4. Змішати усі три сорти чаю у пропорції х:у:z
так, щоб 1т. замішаного чаю стала коштувала 6 000 грн. І назвати його
"чай-купаж".
5. Продавати 1т. чаю-купаж за 10 000 грн.
Запитання. Як знайти величини: х, у та z?
Який прибуток від такої системи команд?
Чи варто працювати за таким алгоритмом?
Реалізація.
По суті, сума х+у+z - це кількість частин, які
становлять 1т чаю-купаж вартістю 6 000 грн. Складаємо рівняння
5x+8y+12z=6(x+y+z),
звідси отримаємо один із розв'язків:
х= 8; у=1;
z=1.
Як це знайдено?
Ліва і права частина рівняння може поділитися на 10.
Тому усього маємо десять частин.
Їх розподіляємо на три сорти так,
щоб 5*8=40, 8*1=8; 12*1 = 12;
отже, 40+8+12= 60=6*10=6(8+1+1).
Перевіряємо: 5*8+8*1+12*1=6(8+1+1).
Отже, увесь чай-купаж має масу 8+1+1=10
т. ,
який коштує згідно
закупки: 5+8+12=25 тис. грн
10*10=100 тис. грн коштуватиме виручка після
продажу 10 тон чаю-купажу.
Знаходимо прибуток: 100-25= 75 тис.грн - це грязного
прибутку, тобто, це не врахуючи податки на продаж та підприємницьку діяльність
і так далі.
Нехай усі податки та відкати становлять 40 відсотків від
прибутку.
Тому
75*0,4=30 тис. грн це йде на оплату податків і відкати.
Отже, 75-30=45 тис. грн чистий дохід у фірми.
Далі. 20 тис. грн на оплату праці продавцям та
менеджерам.
Результат. Так, фірма "Цейлон-чай" має
ще 25 тис. грн,
щоб продовжувати і далі таку схему "ботяжити"
чай-купаж
і продавати його 1тонну
вже не 10 тис. грн, а за 11 тис. грн.
Підручник. Для підтримки процесу необхідний підручник Інформатика
8 клас (авторів Морзе, Барна) за 2020 рік. В більшості учнів
підручник 2015 року, він не підходить. Як бути? В кого немає нового підручника,
його можна завантажити в електронному варіанті ( в мене такий). Посилання для
завантаження https://pidruchnyk.com.ua/uploads/book/7-klas-informatyka-morze-2020.pdf (не
забуваємо про авторське право)
2. Середовище
програмування. Основна мова програмування, яка використовується при вивченні
даної теми Python гілки 3, або його ще
називають Python3. В залежності від наявних у вас
пристроїв, можна обрати своє середовище (програму для написання програм).
Налаштувати ваші пристрої для роботи допоможе підручник (опрацюйте п.7
підручника ст.61 -65 до вправи 3). Для користувачів OS Windows, бажано
встановити Середовище Thonny, оскільки робота в
ньому непогано описана в нашому підручнику.
Середовище Thonny Python IDE for
beginners https://thonny.org/
Для завантаження можна прямо
перейти за посиланням
Для Windows: https://github.com/thonny/thonny/releases/download/v3.3.2/thonny-3.3.2.exe
Практична частина.
Практично осмислюємо найпростіші зразки
кодування
алгоритмів в середовищі Thonny
Навчальна вправа 1. Обчислювальння з дробовими числами
Створити та
реалізувати в середовищі Thonny подану нижче програму
мовою Python, зберегти, як файл та протестувати для трьох таких числових пар:
1) (a;b)=(2.75; 3.25); 2) (a;b)=(-4.57; -3.198); 3) (a;b)=(83.423;-41.598).
Реалізація.
import math # виклик математичного модуля
функцій у Python3.
a = float(input("Введіть число a=")) # виклик для введення
числа а.
b = float(input("Введіть число b=")) # виклик для введення
числа а.
x = math.sqrt(a*b) # виклик функції квадратного кореня у Python3.
y = math.exp(a)*b # виклик функції експоненти (ex=2.7319281928x)у Python3.
z = a*math.exp(2*a/b)
u = math.sqrt(a*b)/(math.exp(a)*b)-a*math.exp(2*a/b)
print("x=", x)
print("y=", y)
print("z=", z)
print("u=", u)
Навчальна вправа 2. Обчислення
зі списками
Створити та реалізувати програму для алгоритму зі списками мовою програмування Python3 в Thonny, що виконує обчислення з елементами списку в циклічному
алгоритмі з додатковою умовою на третій елемент списку, а саме пропускається і
не обчислюється третій елемент в списку.
Реалізація.
T1=[4, 5, 6] # оголошується список Т1, який має
посилання на список із трьох чисел
T2=[1, 2, 3] # оголошується список Т2, який має
посилання на список із трьох чисел
T=2*T1+3*T2 # оголошується новий список Т, який
утвориться із двох різних списків (Т має
15 елементів)
M=[0]*3 # оголошується список М, який
посилається на список [0,0,0]
for i in range(len(M)): # оголошується цикл, який має лічильник,
що не перевищує довжину списка М.
if i!=2: #перевіряється
номер елемента списку на наявність в ньому
номера 2.
M[i]=2*T1[i]+3*T2[i] #виконуються арифметичні дії
над елемент списків T1=[і] і T2=[і]
print("M[",i,"]=",
M[i]) #виводиться на
екран елемент списку
continue #
арифметичне множення і додавання відповідних елементів із 2 різних списків.
print("T=", T)
#виводиться на
екран список T на 15 елементів
print("M=", M) #виводиться на екран список
М на 3 елементи
Протестуйте алгоритм для: 1) T1=[‘(2-f)’, ‘(7-5n)’, ‘-(2+s)’ ; T2=[‘7’, ‘-3’, ‘2’] 2) T1=[-564, -155, -136] ; T2=[7.7, -3.5, 6.8]
Навчальна вправа 3. Обчислення зі списками на випадкових об’єктах
Зразок алгоритму, що використовує генерування
випадкових об’єктів мовою Python3:
import random # виклuкається модуль, що генерує випадкові об’єкти
M1=['analysis', 'synthesis', 'studying', 'research'] # список M1 із невипадкових символьних рядків
K=['None']*4 # оголошується список K= ['None', 'None', 'None', 'None']
N=['None']*4 # оголошується список N= ['None', 'None', 'None', 'None']
for i in range(len(M1)): # оголошується цикл з лічильником , що не
перевищує довжину М1
N[i]=
random.choice(M1) # присвоює
будь-яке(випадкове) значення із списку М1
K[i]=
random.choice(M1) # присвоює
,будь-яке(випадкове) значення із списку М1
K11= random.randint(0,10) #оголошується число к11 з посиланням на випадковy цифру.
P=random.gauss(1,10) #оголошується число P з посиланням на випадкове дробове
число.
print ('M1=',M1)
print('N=', N) #виводиться на екран вміст списків з випадковими
елементами
print('K=',K) #виводиться на екран вміст списків з випадковими
елементами
print('K11=',K11, 'P=',P, ' K11-P*random number(10, 100)=', K11-P*random.randint(10,100)) #виводиться результат обчислення «замороченого» тобтообрахованого випадкового цілого числа
print('2**K11-4*K11+random.randint(100,1000)=', 2**K11-4*K11+random.randint(100,1000))
Протестуйте алгоритм 5 разів.
Результат
виконаної практичної роботи це тритекстові файла( три-проекти) надіслати вашому
учителю на електронну скриньку:
vinnser@gmail.com (Сергій Петрович)
ktdfz@i.ua (Юрій Васильович)
Довідник для учнів, що цікавляться програмуванням
· Теорія
· I. Інтерпретатор Python
· II. Основи Python
· 1. Типи, числа, операції
· 1.2. Літерали. Створення (генерування) об’єкту. Базові типи об’єктів
· 1.3. Числа
· 1.3.1. Представлення чисел різних типів. Базові числові типи. Функції перетворення чисел
· 1.3.2. Числа з фіксованою точністю. Клас Decimal
· 1.3.3. Раціональні числа. Клас Fraction
· 1.4. Оператори (операції)
· 1.4.1. Оператори (операції) для роботи з числовими об’єктами. Таблиця пріоритетності операцій
· 1.4.2. Змішування типів. Перетворення типів в операторах
· 1.4.3. Математичні (арифметичні) оператори. Приклади
· 2. Рядки
· 2.1. Рядки. Загальні поняття. Оголошення рядка. Операції над рядками. Приклади
· 2.2. Екрановані послідовності. Неформатовані рядки. Багаторядкові блоки тексту
· 2.3. Доступ за індексами. Зрізи. Отримання фрагменту рядка. Приклади
· 2.4. Вбудовані функції для роботи з рядками
· 2.4.2. Функції len(), max(), min()
· 2.5. Клас str. Функції роботи з рядками
· 2.5.1. Функції для роботи з рядками, що визначають особливості рядка
· 2.5.2. Функції пошуку та заміни підрядка в рядку
· 2.5.3. Функції що визначають та обробляють початок та кінець рядка
· 2.5.4. Функції обробки рядка згідно з форматом чи правилом кодування. Стилі форматування
· 2.5.5. Функції вирівнювання рядків
· 2.5.6. Функції які змінюють регістр символів у рядку
· 2.5.7. Функції розбиття рядків на частини та утворення нових рядків з допомогою кортежів та списків
· 3. Списки
· 3.1. Списки. Властивості списків. Приклади, що демонструють властивості списків
· 3.2. Операції над списками: конкатенація (+), дублювання (*), видалення, зріз, доступ за індексом
· 3.4. Методи роботи зі списками. Приклади
· 4. Словники
· 4.1. Словники. Основні поняття. Характеристики. Створення словників. Доступ до значень у словнику
· 4.2. Вбудовані функції та операції обробки словників
· 4.3. Методи роботи зі словниками
· 5. Кортежі
· 5.1. Кортежі. Основні поняття. Властивості кортежів
· 5.2. Операції над кортежами. Обхід кортежу. Методи роботи з кортежами
· 6. Файли
· 6.1. Загальні поняття. Відкриття/закриття файлу. Функції open(), close()
· 6.2. Приклади роботи з текстовими файлами
· 6.3. Приклади роботи з бінарними файлами
· 6.6. Приклади розв’язку задач на модифікацію текстових файлів
· 7. Множини
· 7.2. Операції та функції для визначення надмножин та підмножин. Порівняння множин
· 7.3. Класи set, frozenset. Функції для роботи з множинами. Приклади
· 7.4. Обмеження на застосування множин. Застосування класу frozenset. Генератори множин
· 9. Керуючі інструкції
· 9.1. Оператор присвоєння. Форми присвоювання. Приклади. Позиційне присвоювання кортежів, списків
· 9.2. Інструкція (оператор) if. Визначення. Приклади
· 9.3. Оператор while. Приклади
· 10. Функції. Видимість імен
· 10.1. Поняття функції. Загальна форма. Приклади оголошення та використання функцій
· 10.4. Ключове слово nonlocal. Особливості використання. Приклади
· 10.5. Аргументи в функціях
· 10.5.1. Передача аргументів у функцію. Зміна аргументів у тілі функції
· 12. Класи
· 12.1. Класи в Python. Загальні поняття. Ключове слово class. Об’єкти класів. Об’єкти екземплярів
· 12.2. Спадковість у класах. Правила застосування спадковості. Приклади
· 12.3. Класи і модулі. Звертання до класів інших модулів
· 12.4. Перевантаження операторів у класах
· 12.4.1. Перевантаження операторів. Загальні відомості. Методи, що перевантажують оператори. Приклади
· ІІІ. Стандартна бібліотека Python
· 1. Модуль io. Ієрархія класів. Клас IOBase. Методи роботи з файлами
· 2. Модуль math
· 2.1. Теоретико-числові функції та функції представлення
· 2.2. Степеневі та логарифмічні функції
· 2.3. Тригонометричні функції
· 2.5. Спеціальні функції та константи
· 3. Модуль random
· 3.2. Функції для послідовностей
· 3.3. Функції генерування випадкових чисел з плаваючою комою
· 4. Модуль struct. Упакування/розпакування даних. Базові методи модуля
Немає коментарів:
Дописати коментар