08.11.2021-15.11.2021
Тема: Створення математичної моделі до алгоритмів
Теоретична частина
Чому у даній таблиці пофарбували числа?
Якою властивістю володіють однокольорові числа?
Як створити алгоритм для підрахунку однокольорових чисел?
Чому у даній таблиці пофарбували числа?
Якою властивістю володіють однокольорові числа?
Завдання 1. На складі m діжок олії, ємністю по n відер кожна. Усі ці діжки продали заводу та їдальні у відношенні k:p. Скільки відер олії купив завод та їдальня? Створити, реалізувати, протестувати алгоритм в середовищі Thonny для знаходження кількості двомовних туристів, в залежності від введених натуральних чисел p, k, n, m.
Математична модель завдання 1:
1)Х=m*n*k/(p+k) відер олії купив завод. 2) У=m*n*p/(p+k) відер олії купила їдальня.
Завдання 2. Якби бабуся захотіла дати кожному своєму внукові по m цукерок, то один внук не отримав би жодної цукерки. А коли бабуся захотіла дати кожному своєму внукові по k цукерок, то n цукерок залишились би у неї. Скільки внуків у бабусі? Створити, реалізувати, протестувати алгоритм в середовищі Thonny для знаходження кількості внуків, в залежності від введених натуральних чисел k, n, m.
Математична модель завдання 2:
R=(m+n)/(m-k) внуків у бабусі.
Завдання 3. Щодня від мотка дроту довжиною m метрів відрізають кусок довжиною k метрів. Скільки залишолось днів для відрізання дроту, якщо вже n днів відрізався дріт. Створити, реалізувати, протестувати алгоритм в середовищі Thonny для знаходження кількості днів для відрізання дроту, що залишилися, в залежності від введених натуральних чисел k, n, m.
Математична модель завдання 4:
A=(m-k*n)/k днів залишилось для відрізання дроту.
Завдання 4. Трицифрове число має х сотень, у десятків, і z одиниць. Яка різниця між цим числом та сумою цифр цього числа? Створити, реалізувати, протестувати алгоритм в середовищі Thonny для знаходження різниці між числом та сумою цифр, в залежності від введених натуральних чисел x, y, z
Математична модель завдання 4:
A= 99*x+9*y - різниці між числом та сумою цифр числа xyz
.
Практична частина
Створення списків різними способами мовою Python3.
Завдання 0. Створити, реалізувати, протестувати алгоритм мовою програмування Python3 в середовищі прогамування Thonny для креслення на основі полігонів авангардного малюнку "автобуса " на канвасі. Зверніть увагу, що в алгоритмі використовують списки координат (х,у) вершин ломаної, що обмежує полігон(багатокутник).
Реалізація
from tkinter import*
print('Алгоритм малювання полігонів та декількох кіл на канвасі')
A=['None']*8; B=['None']*8;
tk=Tk(); #rk=Tk(); pk=Tk();
canvas=Canvas(tk, width=900, height=600)
canvas.pack()
points1=[25, 300, 25, 100, 50, 50, 700, 50, 725, 100, 725, 300,620,300,580,225,500,225,450,275,420,225, 325,225,290,300,210,300,175,225,75,225,50,300,25,300]
tk=canvas.create_polygon(points1, outline='gold', fill='orange', width=2)
tk=canvas.create_oval(60, 390, 195,240, fill="black", outline="black")
tk=canvas.create_oval(80, 370, 168,270, fill="#002211", outline="black")
tk=canvas.create_oval(310, 390, 445,240, fill="black", outline="black")
tk=canvas.create_oval(328, 370, 420,260, fill="#002211", outline="black")
tk=canvas.create_oval(460, 390, 595,240, fill="black", outline="black")
tk=canvas.create_oval(575, 370, 478,265, fill="#002211", outline="black")
points2=[50, 200, 50, 100, 200, 100, 200, 200, 50, 200]
tk=canvas.create_polygon(points2, outline='gold', fill='purple', width=4)
points3=[220, 75, 295, 75, 295, 300, 220, 300, 220, 75]
tk=canvas.create_polygon(points3, outline='gold', fill='violet', width=4)
points4=[325, 100, 525, 100, 525, 200, 325, 200, 325, 100]
tk=canvas.create_polygon(points4, outline='gold', fill='purple', width=4)
points5=[550, 75, 650, 75, 650, 300, 608, 300, 550, 225, 550, 75]
tk=canvas.create_polygon(points5, outline='gold', fill='violet', width=4)
points6=[700, 300, 700, 225, 727, 225, 727, 300, 700, 300]
tk=canvas.create_polygon(points6, outline='gold', fill='silver', width=4)
points7=[675, 215, 729, 215, 729, 100, 711, 75, 675, 100, 675, 215]
tk=canvas.create_polygon(points7, outline='gold', fill='#ffffff', width=4)
points8=[675, 225, 729, 175, 729, 225, 675, 225, 729, 175]
tk=canvas.create_polygon(points8, outline='gold', fill='indigo', width=4)
tk=canvas.create_text(10, 200, text="Автобус: Вінниця - Жмеринка", fill='indigo', width=4, font=('Helvetica',9))
Завдання 1. Реалізувати поданні нижче способи створення списків
1) Перерахуванням всіх елементів (цей спосіб був розглянутий вище):
print('Алгоритм 1 створення елементів списку перерахуванням всіх елементів ' )
a = [ "Андрій", "Віра", "Даша", "Коля", "Юра"];
print(a)
Можна створити порожній список:
print('Алгоритм 2 створення порожнього списку, списку із нулів, списку слів ' )
n=20; a=[]*n;
print('a=',a, 'type(a)=',type(a))
m=5; b=['None']*m
print('b=',b, 'type(b)=',type(b))
m=10; c=[0]*m
print('c=',c, 'type(c)=',type(b))
a = [i for i in range (10)]; print(a)
2) За допомогою генератора випадкових чисел для списку:
print('Алгоритм 3 генерування чисел випадковим чином або формулою ' )
import random
n=20; a=[]*n; b=[]*n; c=[]*n;
a=[-3*random.randint(-20,-2) for i in range(n) if i%3==0];
b=[-3*random.randint(-10,0) +1 for i in range(n) if i%3==1];
c=[-3*i*i-6*i+2 for i in range(n) if i%3==2];
print('Генерування списку випадкових чисел -3*random.randint(-20,-2), тому a=',a, 'type(a)=',type(a))
print('Генерування списку випадкових чисел -3*random.randint(-10,0) +1, тому b=',b, 'type(b)=',type(b))
print('Генерування списку формулою m[i]=3*i*i-6*i+2, тоді c=',c, 'type(c)=',type(b))
3) Шляхом введення елементів з клавіатури (кожен елемент з нового рядка):
print('Алгоритм 4 введення чисел з клавіатури' )
A=[0]*2; B=[[0,0]]*2
print('Уведіть числа для списку з клавіатури:')
for i in range(2):
print("A[", i,"] =", end=" ")
A[i]=int(input())
print('Ви створили такий список A=',A)
print('Ви створили такий одновимірний масив розміром 1х2 із цілих чисел A=',A)
B=[A,A]
print('Ви використали список А і створили новий список B=',B)
print('Ви створили такий двовимірний масив 2х2 із цілих чисел B=',B)
print('Перший спосіб виведення елементів двовимірного масиву В')
print("B[", 0,",",0,"] =", A[0], " B[", 0,",",1,"] =", A[1])
print("B[", 0,",",1,"] =", A[0], " B[", 1,",",1,"] =", A[1])
print('Другий спосіб виведення елементів двовимірного масиву В')
for i in range(2):
for j in range(2):
print("B[", i,",",j,"] =", B[i][j], end=" ")
Запустіть цю програму і створіть список, ввіши самостійно числа з клавіатури.
4) Шляхом введення елементів з клавіатури (всі елементи в одному рядку через пропуск). Для цього використовується метод a.split (), який повертає список рядків, які вийдуть, якщо вихідну рядок розрізати на частини по прогалин:
print('Алгоритм 5 введення трьох чисел з клавіатури в один рядок з одним пропуском ' )
S=input() # користувач вводить в рядок три числа із одним пропуском між ними "1 2 3"
D=S.split()
print('Ви створили такий список D=',D, type(D))
print('Ви створили такий одновимірний масив розміром 1х2 із цілих чисел D=',D)
Завдання 2. Реалізувати поданні нижче способи вивеведення списків
Cпособи виведення списку
Списки можна виводити різними способами.
1) Найпростіший спосіб - просто дати команду вивести список:
print('Алгоритм 6’); b = [17, 409, 88]; print(b)
2) Виведення кожного елемента списку по-окремо:
print('Алгоритм 7’);
a = [ "Андрій", "Віра", "Даша", "Коля", "Юра"]
for i in range (5):
print (a [i])
3) Виведення кожного елемента списку по-окремо в одному рядку:
print('Алгоритм 8’);
a = [ "Андрій", "Віра", "Даша", "Коля", "Юра"]
for i in range (5):
print (a [i], end = " ")
4) Виведення елементів списку без звернення до індексів елементів:
print('Алгоритм 9’);
fruits = [ "Яблуко", "Банан", "Груша"]
for x in fruits:
print (x, end = " ")
Завдання 3. Реалізувати поданні нижче способи опрацювання списків
Опрацювання списків різними способами зміни його елементів списку
Реалізація алгоритму каскадного обміну місцем розташування елементів у списку
print('Алгоритм 10 обміну місцями розташування між сусідніми елементами в списку')
a=["Андрій", "Віра", "Даша", "Коля", "Юра"];
print('Початкове розташування елементів у списку a=', a)
for i in range (0,4):
a[i], a[i+1]=a[i+1], a[i]
print('a[',i,']=',a[i])
print('a[',i+1,']=',a[i+1])
print('Остаточне розташування елементів у списку a=',a)
Реалізація алгоритму заміни деяких елементів у списку
print('Алгоритм 11 заміни парних елементів в списку на число нуль')
q=[1, 2, 3, 4, 5, 6]
print('Початкове розташування елементів у списку q=', q)
for i in range (6):
if q[i]%2==0:
q[i]=0
print('Остаточне розташування елементів у зміненому списку q=',q)
3) Можна додавати елементи в кінець списку. Для цього використовується метод a.append (x):
print('Алгоритм 12 дописування в кінець списку елементів в списку')
f=[1, 2, 3, 4, 5, 6]
print('Початкове розташування елементів у списку f=', f)
for k in range(7):
f.append(100+k+1)
print('Остаточне розташування елементів у зміненому списку f=',f)
4) Чи можна розширювати список, додаючи в його кінець елементи іншого списку. Для цього використовується метод a.extend(b):
print('Алгоритм 13 дописування в кінець списку елементів іншого списку)
a=[1, 2, 3, 4, 5, 6]; b=[100, 200, 300];
print('Початкове розташування елементів у списку a=', a)
print('Початкове розташування елементів у списку b=', b)
for k in range(2):
a.extend(b); print('номер ітерації в циклі k=',k,'доповнений список а=',a)
b.extend(a); print('номер ітерації в циклі k=',k,'доповнений список b=',b)
print('Остаточне розташування елементів у зміненому списку a=',a)
print('Остаточне розташування елементів у зміненому списку b=',b)
5) Списки можна копіювати:
print('Алгоритм 14 копіювання списку' )
a=[1, 2, 3, 4, 5, 6]; c=b=[100, 200, 300];
print('Початкове розташування елементів у списку a=', a)
print('Початкове розташування елементів у списку с=b=', b)
for k in range(1):
a1=a
b1=c
print('Остаточне розташування елементів у скопійованому списку a1=а=',a1)
print('Остаточне розташування елементів у скопійованому списку b1=c=',b1)
5) Функція знаходження довжини списку len (a):
print('Алгоритм 15 пошуку кількості елементів у списку' )
a=["Яблуко", "Банан", "Груша"]
print('Початкове розташування елементів у списку a=', a)
k=len(a)
print ('Кількість елементів списку k=len(a)=',k)
6) Заповнення списку випадковими елементами із різних числових проміжків:
print('Алгоритм 16 заповнення списку випадковими числовими елементами' )
from random import randint
x=7
a=[0]*(2*x+3);
print('Початкове розташування елементів у списку a=', a)
for i in range(x):
a[i]=randint(10,100)
print('Перше тимчасове розташування елементів у списку a=', a)
for m in range(x,2*x):
a[m]=randint(1000,100000)
print('Друге тимчасове розташування елементів у списку a=', a)
for m in range(2*x,2*x+2):
a[m]=randint(1,10)
print('Остаточне розташування елементів у списку a=', a)
k=len(a)
print ('Кількість елементів списку k=len(a)=',k)
7) Перестановка елементів списку в зворотному порядку. Метод a.reverse():
print('Алгоритм 17 заповнення списку випадковими відємними елементами та зворотного запису спику' )
from random import randint
y=3; a=[0]*(2*y+5);
print('Початкове розташування нульових елементів у списку a=', a)
a=[2*randint(10,100) for n in range(0, 2*y+5,1)]
print('Початкове розташування випадкових парних елементів у списку a=', a)
a=[2*randint(-100,-1)-1 for n in range(1, 2*y+5,3)]
print('Перше тимчасове розташування непарних відємних елементів у списку a=', a)
a.reverse()
print('Зворотне розташування елементів у списку a=', a)
k=len(a)
print ('Кількість елементів списку k=len(a)=',k)
8) Сортування списку. Функція sorted(a):
print('Алгоритм 18 сортування елементів списку випадковими відємними елементами у порядку спадання та зростання' )
from random import randint
z=3; a=[0]*(7*z+5);
print('Початкове розташування нульових елементів у списку a=', a)
a=[2*randint(1,10) for n in range(0, 4*z+1,1)]
print('Початкове розташування випадкових парних елементів у списку a=', a)
a=[2*randint(-10,-1)-1 for n in range(1, 5*z+3, 3)]
print('Перше тимчасове розташування непарних відємних елементів у списку a=', a)
sorted(a)
print('Упорядковане розташування елементів у списку за ознакою зростання a=', a)
a.reverse()
print('Упорядковане розташування елементів у списку за ознакою спадання a=', a)
k=len(a)
print ('Кількість елементів списку k=len(a)=',k)
print ('Максимальний елемент у списку v= max(a)=',max(a))
print ('Мінімальний елемент у списку w= min(a)=',min(a))
print ('Сума усіх елементів у списку h= sum(a)=',sum(a))
print ('Середнє арифметичне елементів у списку p= sum(a)/k=',sum(a)/k)
Додаткові завдання для самостійного
кодування алгоритмів в online-Python
Завдання 1. Створити, реалізувати, протестувати алгоритм в
середовищі програмування для знаходження результатів арифметичних дій
додавання, множення, віднімання двох випадкових парних чисел: 2*n, 2*m.
Перевірити результати цих дій на властивість парності. Чому результати завжди
парні числа?
Завдання 2. Створити, реалізувати, протестувати алгоритм в
середовищі програмування для знаходження результатів арифметичних дій
додавання, віднімання двох випадкових непарних чисел: 2n+1, 2m-1.
Перевірити результати цих дій на властивість парності. Чому результати завжди
парні числа?
Завдання 3. Створити, реалізувати, протестувати алгоритм в
середовищі програмування для знаходження результатів арифметичних дій
множення, двох випадкових непарних чисел: 2n+1, 2m+1. Перевірити
результати цих дій на властивість парності. Чому результати завжди непарні
числа?
Завдання 4. Створити, реалізувати, протестувати алгоритм в
середовищі програмування для знаходження
результатів арифметичних дій додавання, віднімання двох випадкових
непарного та парного чисел: 2n-1, 2m. Перевірити результати цих дій на
властивість парності. Чому результати завжди непарні числа?
Завдання 5. Створити, реалізувати, протестувати алгоритм в
середовищі програмування для знаходження
результатів арифметичних дій множення двох випадкових непарного та парного
чисел: 2n-1, 2m. Перевірити результати цих дій на властивість парності. Чому
результати завжди парні числа?
Завдання 6. Створити, реалізувати, протестувати алгоритм в
середовищі програмування для знаходження результатів арифметичних дій
додавання, двох випадкових парних та одного випадкового непарного чисел:
2n-1, 2m, 2k Перевірити результати цих дій на властивість парності. Чому
результати завжди непарні числа?
Завдання 7. Створити, реалізувати,
протестувати алгоритм в середовищі програмування для знаходження результатів арифметичних дій
додавання трьох випадкових непарних та одного парного чисел: 2n-1, 2m-1, 2k-1,
2p. Перевірити результати цих дій на властивість парності. Чому результати
завжди непарні числа?
Завдання 8. Створити, реалізувати, протестувати алгоритм в середовищі
програмування для знаходження результатів арифметичних дій множення трьох
випадкових парних та одного непарного чисел: 2n-1, 2m, 2k, 2p. Перевірити
результати цих дій на властивість парності. Чому результати завжди парні числа?
Немає коментарів:
Дописати коментар