Дистанційна освіта з інформатики в період січня 2021 року
25.01.2021 - 31.01.2021
Тема: Створення
та реалізація об’єктів в середовищі опису та виконання алгоритмів Thonny.
Теоретична частина. Вікі-підручник Python3
Зразки алгоритмів мовою Python: https://pythontask.pp.ua/
Осмислюємо властивості алгоритмів на текстових компетентнісних
задачах.
Зразок 1.
Учитель інформатики пропонує учням:
«Ось вам n терабайт пам’яті на диску. Розділіть цю
пам’ять на два диски так, щоб менша частина, збільшена в 4 рази, дорівнювала би
більшій частині, яка зменшена в 3 рази».
Створити алгоритм для реалізації такого розподілу.
Реалізація.
Якщо зменшити втроє кількість пам’яті у більшої
частини ми отримаємо їх стільки ж, як у чотирьох менших частинах. Значить,
більша частина повинна складати 3*4=12 разів більше памяті, ніж менша частина.
Але загальна кількість памяті повинна становити в 13 разів більша, ніж меншої
частини, 12+1=13 частин складає уся пам’ять. Тому маємо такий алгоритм:
1. n/13 мегабайт памяті виділяємо для першого
диску, бо це 1/13 частина від n.
2. 12n/13 мегабайт памяті виділяємо для другого
диску, бо це 12/13 частин від цілого n.
Результат: Розподілити між двома дисками усю пам’ять у
відношені 1:12.
Зразок 2.
У програміста є n терабайт памяті. Щодня він
програмує і зберігає інформації в середньому
на 1,67 гігабайт пам’яті. На який день роботи йому треба буде знаходити
додаткову пам’ять?
Створити алгоритм підрахунку дня, коли потрібно
шукати нову пам’ять.
Реалізація.
Алгоритм для програміста:
1. n*1024 гігабайт пам’яті в наявності у
програміста.
2. 1024n/1,67=613,1736n кількість днів використання
памяті для програміста.
Якщо n=2 ГБ,
то маємо на 1228 днів, більше ніж три
роки використання.
Результат: На 614n день
потрібно шукати нову пам’ять.
Зразок 3.
Створити алгоритм для того, щоб у числі
3728954106 викреслити лише три цифри так, аби отримане число було б найменшим
семицифровим числом із різних можливостей.
Реалізація.
Алгоритм для отримання найменшого семицифрового
числа.
1.Викреслити у числі цифру 7.
2. Викреслити у числі цифру 3.
3. Викреслити у числі цифру 9.
Результат: 2854106
Зразок 4.
Створити алгоритм для отримання найбільшої
кількості частин площини, якщо на цю площину покласти n різних прямих.
Реалізація.
Алгоритм утворення найбільшої кількості частин на
площині за допомогою накладання прямих на неї.
1. Покласти на площину першу пряму.
2. Кожну наступну пряму покласти на площину так,
щоб вона перетнула усі попередньо покладені на площину прямі у нових точках.
3. Найбільша кількість частин, які утворяться при
накладанні n прямих на площину, дорівнює 1+0,5(n+1)n частин цієї площини.
Результат: 1+0,5(n+1)n
частин площини.
Зразок 5
Створити алгоритм для богатиря, який хоче
перемогти чудовисько, якщо відомо:
1. Напочатку чудовисько має 1000 голів.
2. Якщо одним ударом меча богатир може відтинати: 33, 21,
17, 1 голову, то у нього відповідно виростатиме 40,0,14,10 голів.
3. Якщо ж
відрубати всі голови, то нові голови вже не виростуть.
Чи може богатир перемогти чудовисько не більше, ніж за 50 ударів
мечем?
Реалізація.
Алгоритм дій богатиря для отримання перемоги над
чудовиськом запишемо у вигляді числового виразу: 21*47+1-10+21+1=1000.
Отже, богатир застосує 50 ударів для перемоги над
чудовиськом.
Результат: Може перемогти.
Підручник. Для підтримки процесу необхідний
підручник Інформатика
7 клас (авторів Морзе, Барна) за 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
Зразки алгоритмів: https://pythontask.pp.ua/
Практична частина.
Практично осмислюємо найпростіші зразки
кодування
алгоритмів в середовищі 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 (Юрій Васильович)
Складіть програми мовою програмування або Scratch або Python або Pascal для розв´язування наступних задач
Найпростіші завдання з програмування
1.Програма задає два випадкових додатних парних числа k та b. Створити алгоритм мовою програмування, який спочатку
додає до кожного числа однакове випадкове число, що більше 100, а потім
знаходить потроєну суму двох чисел. А в остаточному результаті виводить остачу від ділення знайденої суми на 19.
2.Програма задає два випадкових непарних числа k та b, що більші, ніж 100 і менші 800. Створити алгоритм мовою програмування, який спочатку
знаходить квадрати обох чисел, а потім середнє арифметичне цих квадратів. А в остаточному результаті виводить остачу від ділення середнього арифметичного на 15.
3.Програма задає два випадкових непарних числа k та b, що більші, ніж 300 і менші 900. Створити алгоритм мовою програмування, який спочатку
знаходить більше число та його квадрат , а потім знаходить куб меншого числа, а потім
знаходить їхнє середнє арифметичне квадрату та кубу. А в остаточному результаті виводить остачу від ділення середнього арифметичного на 13.
4.Програма задає два випадкових непарних числа k та b, що більші, ніж 400 і менші 700. Створити алгоритм мовою програмування, який спочатку
знаходить більше число та його подвоює, а потім знаходить потроєне менше число,
а потім знаходить їхнє середнє арифметичне. А в остаточному результаті виводить остачу від ділення середнього арифметичного на 10.
Довідник для учнів, що цікавляться програмуванням
· Теорія
· 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. Упакування/розпакування даних. Базові методи модуля
Немає коментарів:
Дописати коментар