Дистанційна освіта з інформатики в період лютого 2021 року
01.02.2021 - 07.02.2021
Конспект уроку для
учнів
Тема: Вказівка
присвоювання. Середовище опису та виконання лінійних та нелінійних алгоритмів Thony мовою
програмування Python3.
Теоретична частина.
Фізкультхвилинка
Один,
два – усі піднялись,
Повернулись,
похитались.
Три,
чотири – руки вгору,
В
сторони і вгору знову.
П’ять,
шість – опустили,
І
швиденько всі присіли.
Сім,
вісім – всі малята
Стрибають,
як жабенята.
Дев’ять,
десять, - рівно стали
І
за парти посідали.
Осмислюємо властивості алгоритмів на текстовому матеріалі різнорівневих компететнісних завдань:
Зразок 1.
Створити алгоритм для складання магічних
числових стовпців Вінницького вигляду:
а ... а ... а ... а ... а = 0
а ... а ... а ... а ... а = 1
а ... а ... а ... а ... а = 2
а ... а ... а ... а ... а = 3
а ... а ... а ... а ... а = 4
................
а ... а ... а ... а ... а = n-2
а ... а ... а ... а ... а = n-1
а ... а ... а ... а ... а = n
Де замість знаку «...» можна нічого не ставити а
дозволяється поставити будь-яку арифметичну дію: додавання, віднімання,
множення, ділення. А також у виразі можна поставити: круглі дужки, квадратні
дужки- це ціла частина від дробового числа, фігурні дужки - це дробова частина
від будь-якого числа, можна поставити квадратний корінь, можна поставити дію
факторіал числа.
Реалізація.
Алгоритм матиме такі команди:
(а -а)*а*а*а = 0
а:а+(а-а)*а =1
(а+а):а+а-а=2
(а+а):а+а:а=3
(а+а+а+а):а=4
.............
а-а:а-а:а=а-2
а-а:а+а-а=а-1
а+а-а+а-а=а
аа:аа+а=1+а
а:а+а:а+а:а=2+а
.......... і так далі.
Зразок 2.
Створити алгоритм для складання чарівних
числових стовпців Вінницького такого вигляду:
1 ... 2 ... 3 ... ... 8 ... 9
= 0
1 ... 2 ... 3 ... ... 8
... 9 = 1
1 ... 2 ... 3 ... ... 8
... 9 = 2
1 ... 2 ... 3 ... ... 8
... 9 = 3
1 ... 2 ... 3 ... ... 8
... 9 = 4
................. і так далі
Де замість знаку ... можна нічого не ставити а
дозволяється поставити будь-яку арифметичну дію: додавання, віднімання,
множення, ділення. А також у виразі можна поставити: круглі дужки, квадратні
дужки- це ціла частина від дробового числа, фігурні дужки - це дробова частина
від будь-якого числа, можна поставити квадратний корінь, можна поставити дію
факторіал числа.
Реалізація.
Покажимо алгоритми для окремого випадку n = 100. Тобто
1 ... 2 ... 3 ... ... 8 ... 9
= 100
Тоді отримаємо більше 10 варіантів:
1*2-3+4-5+6+7+89 =100
1+2+3+4+5+6+7+8*9 =100
(1+2+3-4)*5*6*(7+8):9=100
1+2+3-4+5+6+78+9=100
(1+2):3+4+5-6+7+89=100
1*2+34+56+7-8+9=100
12-3-4+5-6+7+89=100
123+45-67+8-9=100
123-4-5-6-7+8-9=100
123-45-67+89=100
123+4-5+67-89=100
12+3-4+5+67+8+9=100.
Зразок 3.
Створити алгоритм для складання магічного квадрату розміром 3х3 із довільних
трьох різних чисел, які позначені латинськими змінними:
a, b, c. Умова магічності така. Треба щоб у кожному рядку таблиці стояли різні
числа, у кожному стовпці таблиці стояли різні числа. А сума чисел кожного рядка
дорівнювала добутку чисел кожного стовпця. А сума чисел кожного стовпця
дорівнював добутку чисел кожного рядка.
Реалізація.
Розглянемо таке позначення адресу клітинки в числовій таблиці:
(1; 1) (1; 2) (1; 3)
(2; 1) (2; 2) (2; 3)
(3; 1) (3; 2) (3; 3)
Алгоритм матиме такі команди:
1. Число а поставити в такі комірки квадратної таблиці:
(1; 1) (2; 3) (3; 2)
2. Число b поставити в такі комірки квадратної таблиці:
(1; 2) (2; 4) (3; 3)
3. Число c поставити в такі комірки квадратної таблиці:
(1; 3) (2; 2) (3; 1)
Результат.
Утвориться такий квадрат на латинських
буквах.
a b c
b c a
c a b
Магічна сума дорівнює a + b+c =S
Магічний добуток дорівнює abc= P
Магічна сума і магічний добуток виконуються як по рядках, так і по стовпцях.
Самостійно перевірте цю властивість для двох діагоналей створеного числового
квадрата.
Питання, коли виконується умова
a+ b + c = abc, a=1; b=2; c=3.
1+2+3=1*2*3=6.
Отже, маємо гіпермагічний числовий квадрат 3х3 на сумах і на добутках:
1 2 3
2 3 1
3 1 2
Зразок 4.
Створити алгоритм для складання магічного квадрату розміром 4х4 із
довільних чотирьох різних чисел, які позначені латинськими змінними:
a, b, c, d. Так щоб у кожному рядку таблиці були стояли різні числа, у кожному
стовпці таблиці стояли різні числа.
Реалізація.
Розглянемо таке позначення адресу клітинки в числовій таблиці:
(1; 1) (1; 2) (1; 3) (1; 4)
(2; 1) (2; 2) (2; 3) (2; 4)
(3; 1) (3; 2) (3; 3) (3; 4)
(4; 1) (4; 2) (4; 3) (4; 4)
Алгоритм матиме такі команди:
1. Число а поставити в такі комірки квадратної таблиці:
(1; 1) (2; 3) (3; 4) (4; 2)
2. Число b поставити в такі комірки квадратної таблиці:
(1; 2) (2; 4) (3; 3) (4; 1)
3. Число c поставити в такі комірки квадратної таблиці:
(1; 3) (2; 1) (3; 2) (4; 4)
4. Число d поставити в такі комірки квадратної таблиці:
(1; 4) (2; 4) (3; 1) (4; 3) .
Результат.
Утвориться такий квадрат на латинських
буквах.
a b c d
c d a b
d c b a
b a d c
Магічна сума дорівнює a+b+c+d=S
Магічний добуток дорівнює abcd=P
Магічна сума і магічний добуток виконуються як по рядках, так і по стовпцях.
Самостійно перевірте цю властивість для двох діагоналей створеного числового
квадрата.
Зразок 5.
Створити алгоритм для складання магічного квадрату розміром 4х4 із 16
послідовних натуральних чисел, які позначені латинськими змінними:
a+1, а+2, а+3, ..., а+14, а+15, а+16. Так щоб у кожному рядку таблиці були
стояли різні числа, у кожному стовпці таблиці стояли різні числа. Умова
магічності така. Треба щоб сума чисел кожного рядка, сума чисел кожного стовпця,
сума чисел головної і сума чисел бічної діагоналі дорівнювала числу, яке
обчислюється за формулою:
М=(а+16)(а+17)/8.
Реалізація.
Розглянемо таке позначення адресу клітинки в числовій таблиці:
(1; 1) (1; 2) (1; 3) (1; 4)
(2; 1) (2; 2) (2; 3) (2; 4)
(3; 1) (3; 2) (3; 3) (3; 4)
(4; 1) (4; 2) (4; 3) (4; 4)
Алгоритм матиме такі команди:
1. Заповнюємо цей квадрат підряд, якщо а=0:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
2. Переставляємо числа тільки на двох діагоналях за правилом. Відносно центру
квадрата обмінюються місцями такі пари чисел: 1 і 16; 6 і 11;
7 і 10; 4 і 13.
3. Утвориться такий квадрат на магічний
квадрат на сумах. Якщо а=0:
16 2
3 13
5 11
10 8
9
7 6 12
4 14
15 1
Результат. Магічна сума квадрата 4х4 дорівнює 34.
Магічний добутку у цього квадрата відсутній.
Магічна сума 34 виконуються як по рядках, так і по стовпцях та двох діагоналях.
Практична частина
Завдання
1.
from math import fabs
import random
a= int(random.gauss(1, 8))+7
b =int(random.gauss(9, 14))+6
c=abs(int((a+b)*(a-b)-a**2+b**2+a/b)+8+b**2)
p= int(random.gauss(5, 10))+34
q= int(random.gauss(4, 9))+53
k= int(random.gauss(1, 8))+26
m=int(random.gauss(9, 14))+13
n=m%k+k%m+k//(m+1)+
p//(q+2)-k//(p+3)+m%p
print("a=",a,
"b=",b,"Результат обчислення:c=", c, round(c, 4), type(c),
bin(c))
print("p=",p,
";q=",q,";k=",k, ";m=",m,"Результат:
n=", n, ";n^3=", pow(n,3))
Завдання
3.
b=1
print("Побітові дії з числами:",
" bin{a} = ", bin(a), "
bin{b} = ", bin(b))
invers=(~a)
print("Це результат
інверсій для числа a=", a, "invers=(~a)=", invers, type(invers))
print("Це результат
інверсій числа в 2-овій системі: bin{~a} = ", bin(~a), " bin{~b} =
", bin(~b))
ampres=(a)&(b)
print("Це результат
логічного and для двох чисел : ampres=", ampres, type(ampres))
logicor=(a)|(b)
Завдання
4.
Завдання
5.
import random
x= abs(int(random.gauss(-5,
-2)))
y=fabs(float(random.gauss(4.9,
7.8)))
print("логічний вираз
",x, ">", y, " має значення: ", x>y)
print("логічний вираз
",x, "<", y, " має значення: ", x<y)
print("логічний вираз
",x, ">=", y, " має значення: ", x>=y)
print("логічний вираз
",x, "==", y, " має значення: ", x==y)
print("логічний вираз
",x, "!=", y, " має значення:", x!=y)
Завдання для вироблення навичок програмування
Складіть програми мовою програмування або Scratch або Python або Pascal для розв´язування наступних задач
Найпростіші завдання з програмування
1.Програма задає два випадкових додатних парних числа k та b. Створити алгоритм мовою програмування, який спочатку
додає до кожного числа однакове випадкове число, що більше 100, а потім
знаходить потроєну суму двох чисел. А в остаточному результаті виводить остачу від ділення знайденої суми на 14.
2.Програма задає два випадкових непарних числа k та b, що більші, ніж 300 і менші 700. Створити алгоритм мовою програмування, який спочатку
знаходить квадрати обох чисел, а потім середнє арифметичне цих квадратів. А в остаточному результаті виводить остачу від ділення середнього арифметичного на 11.
3.Програма задає два випадкових непарних числа k та b, що більші, ніж 540 і менші 980. Створити алгоритм мовою програмування, який спочатку
знаходить більше число та його квадрат , а потім знаходить куб меншого числа, а потім
знаходить їхнє середнє арифметичне квадрату та кубу. А в остаточному результаті виводить остачу від ділення середнього арифметичного на 12.
4.Програма задає два випадкових непарних числа k та b, що більші, ніж 135 і менші 700. Створити алгоритм мовою програмування, який спочатку
знаходить більше число та його подвоює, а потім знаходить потроєне менше число,
а потім знаходить їхнє середнє арифметичне. А в остаточному результаті виводить остачу від ділення середнього арифметичного на 17.
Довідник для учнів, що цікавляться програмуванням
· Теорія
· 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. Упакування/розпакування даних. Базові методи модуля