четвер, 21 січня 2021 р.

Дистанційна освіта з інформатики 25.01.2021 - 31.01.2021

 Дистанційна освіта з інформатики в період січня 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.




Довідник для учнів, що цікавляться програмуванням


Python

·         Теорія

·         I. Інтерпретатор Python

·         Робота з редактором Python. Загальні питання. Інтерактивний та програмний режими роботи. Набір тексту програми

·         II. Основи Python

·         1. Типи, числа, операції

·         1.1. Представлення даних в Python. Поняття об’єкту. Ідентичність, тип, значення об’єкту. Функції id()type(). Оператори isis not

·         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. Математичні (арифметичні) оператори. Приклади

·         1.4.4. Оператори порівняння

·         1.4.5. Бітові оператори

·         2. Рядки

·         2.1. Рядки. Загальні поняття. Оголошення рядка. Операції над рядками. Приклади

·         2.2. Екрановані послідовності. Неформатовані рядки. Багаторядкові блоки тексту

·         2.3. Доступ за індексами. Зрізи. Отримання фрагменту рядка. Приклади

·         2.4. Вбудовані функції для роботи з рядками

·         2.4.1. Засоби перетворення рядків та одиночних символів. Функції int()str()repr()float()ord()chr()

·         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.3. Обробка списків у циклах. Створення списків з допомогою генераторів списківІтерації по списках. Представлення та обробка матриць з допомогою списків. Операція in

·         3.4. Методи роботи зі списками. Приклади

·         3.5. Об’єкти-ітератори. Використання ітераторів та генераторів для списків. Функції range()next()iter()

·         4. Словники

·         4.1. Словники. Основні поняття. Характеристики. Створення словників. Доступ до значень у словнику

·         4.2. Вбудовані функції та операції обробки словників

·         4.3. Методи роботи зі словниками

·         4.4. Робота зі словниками. Вбудовані функції list()zip(). Обхід словника. Генератори словників. Сортування. Поєднання словників з множинами

·         5. Кортежі

·         5.1. Кортежі. Основні поняття. Властивості кортежів

·         5.2. Операції над кортежами. Обхід кортежу. Методи роботи з кортежами

·         6. Файли

·         6.1. Загальні поняття. Відкриття/закриття файлу. Функції open()close()

·         6.2. Приклади роботи з текстовими файлами

·         6.3. Приклади роботи з бінарними файлами

·         6.4. Модуль struct. Робота з бінарними файлами. Приклади збереження/читання упакованих двійкових даних

·         6.5. Модуль pickle. Серіалізація об’єктів. Приклади використання для запису/читання інформації з бінарних файлів

·         6.6. Приклади розв’язку задач на модифікацію текстових файлів

·         7. Множини

·         7.1. Основні поняття. Створення множини. Операція in. Операції над множинами, які утворюють нову множину

·         7.2. Операції та функції для визначення надмножин та підмножин. Порівняння множин

·         7.3. Класи setfrozensetФункції для роботи з множинами. Приклади

·         7.4. Обмеження на застосування множин. Застосування класу frozenset. Генератори множин

·         9. Керуючі інструкції

·         9.1. Оператор присвоєння. Форми присвоювання. Приклади. Позиційне присвоювання кортежів, списків

·         9.2. Інструкція (оператор) if. Визначення. Приклади

·         9.3. Оператор whileПриклади

·         9.4. Оператор forПриклади

·         10. Функції. Видимість імен

·         10.1. Поняття функції. Загальна форма. Приклади оголошення та використання функцій

·         10.2. Області видимості імен в Python. Локальні та глобальні імена. Правила видимості імен. Правило LEGB. Ключове слово global. Перевизначення імен в функціях

·         10.3. Вкладені функції. Вкладені області видимості. Правила пошуку імен у випадку вкладених функцій. Фабричні функції. Передача значень у вкладену функцію

·         10.4. Ключове слово nonlocal. Особливості використання. Приклади

·         10.5. Аргументи в функціях

·         10.5.1. Передача аргументів у функцію. Зміна аргументів у тілі функції

·         10.5.2. Режими співставлення аргументів. Класифікація. Співставлення за позицією. Співставлення за іменами. Аргументи за замовчуванням

·         10.5.3. Режими співставлення аргументів. Аргументи змінної довжини. Комбінування різних способів співставлення аргументів. Приклади

·         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.4. Гіперболічні функції

·         2.5. Спеціальні функції та константи

·         3. Модуль random

·         3.1. Генерування випадкових чисел. Класи RandomSystemRandom. Функції рахівництва. Функції для цілих чисел

·         3.2. Функції для послідовностей

·         3.3. Функції генерування випадкових чисел з плаваючою комою

·         4. Модуль struct. Упакування/розпакування даних. Базові методи модуля

 


Немає коментарів:

Дописати коментар