inF | 9 клас |27 листопада
Тема:
Алгоритми впорядкування масиву.
import random
n=9
amax=99
a = []
for j in range(n):
a.append(random.randint(1,amax))
print(a)
for j in range(n-1):
for k in range(j+1,n):
if a[j]>a[k]:
a[j],a[k]=a[k],a[j]
print('Результат впорядкування цього масиву такий')
print(a)
Code language: Python (python)

Вправа 1. Сортування вибором з «кольоровою діаграмою» масиву
(алгоритм
Інструкція / пояснення
● Алгоритм: на кожному кроці шукається найменший елемент у правій частині масиву й міняється місцями з елементом на поточній позиції
Візуалізація:
● Кожен елемент — свій колір, щоб їх легко відрізняти.
● Поточна позиція
● Знайдений мінімальний елемент для цього кроку виділений червоним.
Завдання для учня:
● Змінити розмір масиву
● Прослідкувати, як змінюється масив на кожному кроці.
● Пояснити, скільки разів алгоритм порівнює елементи в гіршому випадку.
(алгоритм
selection sort, різні кольори для всіх елементів)Інструкція / пояснення
● Алгоритм: на кожному кроці шукається найменший елемент у правій частині масиву й міняється місцями з елементом на поточній позиції
i.Візуалізація:
● Кожен елемент — свій колір, щоб їх легко відрізняти.
● Поточна позиція
i виділена зеленим.● Знайдений мінімальний елемент для цього кроку виділений червоним.
Завдання для учня:
● Змінити розмір масиву
n і межу значень amax.● Прослідкувати, як змінюється масив на кожному кроці.
● Пояснити, скільки разів алгоритм порівнює елементи в гіршому випадку.
import random
# Кольори ANSI
COLORS = [
"\033[31m", # червоний
"\033[32m", # зелений
"\033[33m", # жовтий
"\033[34m", # синій
"\033[35m", # пурпурний
"\033[36m", # блакитний
]
RESET = "\033[0m"
TITLE = "\033[96m" # бірюзовий для заголовків
INFO = "\033[90m" # сірий для службових повідомлень
H_MIN = "\033[91m" # яскраво-червоний (мінімум на кроці)
H_I = "\033[92m" # яскраво-зелений (поточна позиція)
n, amax = 10, 50
a = [random.randint(1, amax) for _ in range(n)]
def color_for_index(idx):
"""Повертає колір для елемента з індексом idx (циклічно)."""
return COLORS[idx % len(COLORS)]
def show_array(arr, i=-1, min_i=-1, title=""):
"""Текстова «діаграма» з різнокольоровими стовпчиками."""
if title:
print(TITLE + title + RESET)
m = max(arr)
scale = max(1, m // 20)
print(INFO + "Індекси: " + " ".join(f"{k:3}" for k in range(len(arr))) + RESET)
print("Значення:", " ".join(f"{v:3}" for v in arr))
print("Діаграма:")
for idx, val in enumerate(arr):
base_color = color_for_index(idx)
if idx == i:
color = H_I
elif idx == min_i:
color = H_MIN
else:
color = base_color
bar = "█" * (val // scale)
print(f"{color}{val:3} | {bar}{RESET}")
print("-" * 40)
print(TITLE + "Сортування вибором (selection sort)" + RESET)
print("Початковий масив:", a)
show_array(a, title="Стартовий стан масиву")
for i in range(len(a) - 1):
min_i = i
for j in range(i + 1, len(a)):
if a[j] < a[min_i]:
min_i = j
a[i], a[min_i] = a[min_i], a[i]
show_array(a, i=i, min_i=min_i, title=f"Крок {i + 1}: мінімум перенесено на позицію {i}")
print(TITLE + "Результат сортування:" + RESET, a)
show_array(a, title="Фінальний вигляд масиву")
Code language: Python (python)

Вправа 2. Бульбашкове сортування з покроковим переглядом
(алгоритм
Інструкція / пояснення
Алгоритм: на кожному проході по масиву сусідні елементи порівнюються і, якщо вони «не в порядку», міняються місцями. Найбільший елемент «спливає» в кінець.
Візуалізація:
● Кожен елемент свого кольору (як у Вправі 1).
● Пара порівнюваних елементів виділяється яскравим червоним і зеленим.
● Є запит
Завдання для учня:
● Відстежити, як змінюється масив протягом проходів.
● З’ясувати, на якому кроці масив стає впорядкованим.
(алгоритм
bubble sort, різні кольори, порівнювані елементи виділяються)Інструкція / пояснення
Алгоритм: на кожному проході по масиву сусідні елементи порівнюються і, якщо вони «не в порядку», міняються місцями. Найбільший елемент «спливає» в кінець.
Візуалізація:
● Кожен елемент свого кольору (як у Вправі 1).
● Пара порівнюваних елементів виділяється яскравим червоним і зеленим.
● Є запит
input(), щоб переходити крок за кроком.Завдання для учня:
● Відстежити, як змінюється масив протягом проходів.
● З’ясувати, на якому кроці масив стає впорядкованим.
import random
COLORS = [
"\033[31m", "\033[32m", "\033[33m",
"\033[34m", "\033[35m", "\033[36m",
]
RESET = "\033[0m"
TITLE = "\033[96m"
INFO = "\033[90m"
C_LEFT = "\033[91m" # лівий елемент у порівнянні
C_RIGHT = "\033[92m" # правий елемент у порівнянні
n, amax = 8, 40
a = [random.randint(1, amax) for _ in range(n)]
def color_for_index(idx):
return COLORS[idx % len(COLORS)]
def show_array_line(arr, i=-1, j=-1, note=""):
m = max(arr)
scale = max(1, m // 10)
if note:
print(TITLE + note + RESET)
print(INFO + "Індекси: " + " ".join(f"{k:3}" for k in range(len(arr))) + RESET)
print("Значення:", " ".join(f"{v:3}" for v in arr))
print("Стовпчики:")
for idx, val in enumerate(arr):
base_color = color_for_index(idx)
if idx == i:
color = C_LEFT
elif idx == j:
color = C_RIGHT
else:
color = base_color
bar = "█" * (val // scale)
print(f"{color}{bar:8}{RESET}", end=" ")
print("\n" + "-" * 60)
print(TITLE + "Бульбашкове сортування (bubble sort)" + RESET)
show_array_line(a, note="Початковий стан масиву")
input(INFO + "Enter → почати сортування..." + RESET)
for i in range(len(a) - 1):
swapped = False
print(TITLE + f"Прохід {i + 1}" + RESET)
for j in range(len(a) - 1 - i):
show_array_line(a, i=j, j=j+1, note=f"Порівнюємо елементи з індексами {j} і {j+1}")
if a[j] > a[j + 1]:
print("\033[91mОбмін елементів\033[0m")
a[j], a[j + 1] = a[j + 1], a[j]
swapped = True
show_array_line(a, i=j, j=j+1, note="Після обміну")
else:
print("\033[92mОбмін не потрібен\033[0m")
input(INFO + "Enter → наступний крок..." + RESET)
if not swapped:
print("\033[92mМасив уже впорядкований. Дострокове завершення.\033[0m")
break
print(TITLE + "Результат сортування:" + RESET, a)
show_array_line(a, note="Фінальний вигляд масиву")
Code language: Python (python)

Вправа 3. Порівняння двох алгоритмів з вибором і напрямом сортування
(короткий код, різні кольори для початкового і відсортованого стану)
Інструкція / пояснення
Алгоритми:
1 — бульбашкове сортування.
2 — сортування вставками (
Користувач обирає:
● Алгоритм.
● Напрям: за зростанням або за спаданням.
Візуалізація:
● Початковий масив — блакитні стовпчики.
● Відсортований масив — зелені стовпчики.
● Значення теж підсвічені, щоб було видно різницю.
Завдання для учня:
● Запустити програму кілька разів з різними параметрами.
● Порівняти час виконання для різних алгоритмів (хоча масив невеликий).
● Пояснити, у чому різниця між підходом
(короткий код, різні кольори для початкового і відсортованого стану)
Інструкція / пояснення
Алгоритми:
1 — бульбашкове сортування.
2 — сортування вставками (
insertion sort).Користувач обирає:
● Алгоритм.
● Напрям: за зростанням або за спаданням.
Візуалізація:
● Початковий масив — блакитні стовпчики.
● Відсортований масив — зелені стовпчики.
● Значення теж підсвічені, щоб було видно різницю.
Завдання для учня:
● Запустити програму кілька разів з різними параметрами.
● Порівняти час виконання для різних алгоритмів (хоча масив невеликий).
● Пояснити, у чому різниця між підходом
bubble sort і insertion sort.
import random, time
RESET = "\033[0m"
TITLE = "\033[96m"
INFO = "\033[90m"
C_INIT = "\033[36m" # блакитний (початковий масив)
C_SORT = "\033[32m" # зелений (відсортований масив)
n, amax = 12, 99
a = [random.randint(1, amax) for _ in range(n)]
def show_bars(arr, color, title):
m = max(arr)
scale = max(1, m // 25)
print(TITLE + title + RESET)
for v in arr:
bar = "█" * (v // scale)
print(f"{color}{v:3} | {bar}{RESET}")
print("-" * 40)
def bubble(arr, rev=False):
a = arr[:]
for i in range(len(a) - 1):
for j in range(len(a) - 1 - i):
if (a[j] > a[j+1]) != rev:
a[j], a[j+1] = a[j+1], a[j]
return a
def insertion(arr, rev=False):
a = arr[:]
for i in range(1, len(a)):
k = a[i]
j = i - 1
while j >= 0 and ((a[j] > k) != rev):
a[j+1] = a[j]
j -= 1
a[j+1] = k
return a
print(TITLE + "Порівняння алгоритмів сортування" + RESET)
print("Початковий масив:", a)
show_bars(a, C_INIT, "Початковий вигляд масиву")
print("Оберіть алгоритм:")
print("1 – Бульбашкове сортування")
print("2 – Сортування вставками")
alg = input("Ваш вибір (1/2): ").strip()
print("Оберіть напрям:")
print("1 – за зростанням")
print("2 – за спаданням")
rev = (input("Ваш вибір (1/2): ").strip() == "2")
start = time.time()
if alg == "2":
res = insertion(a, rev)
name = "Сортування вставками"
else:
res = bubble(a, rev)
name = "Бульбашкове сортування"
t = time.time() - start
direction = "спадання" if rev else "зростання"
print(INFO + f"Алгоритм: {name}, напрям: {direction}" + RESET)
show_bars(res, C_SORT, "Відсортований масив")
print(INFO + f"Час виконання: {t:.6f} c" + RESET)
print(INFO + "Перевірка sorted(): " + RESET, sorted(a, reverse=rev))
Code language: Python (python)

Домашня робота
Вивчити з підручника: § 14 ст. ст. 156-159
та матеріал з презентації
inF | 9 клас |25 листопада
Тема:
Алгоритми опрацювання масивів: пошук елемента з найбільшим/найменшим значенням. Практична робота
a=[]
flag=0
k=float(input('Введіть контрольний результат '))
for i in range(10):
a.append(int(input('Введіть результат ')))
for i in range(9):
if a[i]==k:
flag=i+1
break
print(a)
if flag>0:
print('Номер результату', flag)
else:
print('Результату, що повторює контрольний не існує')
Code language: Python (python)
import random
n=7
amax=35
a=[]
for j in range(n):
a.append(random.randint(-20,amax))
print(a)
a_max = max(a)
print('Найбільший показники температури')
print(a_max)
print('Найменший показники температури')
a_min = min(a)
print(a_min)
Code language: Python (python)
import random
a=[]
flag=0
n = int(input('Введіть шукане число '))
for j in range(10):
a.append(random.randint(1,100))
print(a)
for j in range(10):
if a[j] == n:
flag=j+1
print('Число', a[j], 'під номером', j+1)
if flag==0:
print('Елемент не існує')
Code language: Python (python)
import random
n=10
a=[]
for i in range(n):
a.append(random.randint(10,100))
print(a)
a_max = max(a)
print('Найвища оцінка')
print(a_max)
print('Найнижча оцінка')
a_min = min(a)
print(a_min)
a.remove(a_max)
a.remove(a_min)
print(a)
s=sum(a)
s=s/(n-2)
print('Загальна оцінка =', round(s,2))
Code language: Python (python)
Домашня робота
Вивчити з підручника: § 12 ст. ст. 155
та матеріал з презентації
inF | 9 клас |20 листопада
Тема:
Алгоритми опрацювання масивів: пошук елемента з найбільшим/найменшим значенням.
import random
n=9
amax=99
a=[]
for j in range(n):
a.append(random.randint(1,amax))
print(a)
print('Найменше з поданих чисел дорівнює')
a_min=a[0]
for j in range(n):
if a[j]<a_min:
a_min=a[j]
print(a_min)
Code language: Python (python)
A=[0, 5.5, 21.5, 60.5, 4.3, 45.1]
a_max=max(A)
n = A.index(a_max)
if A[0]==0:
k=n*2
if A[0]==-1:
k=n*2-l
print ('Номер будинку ', k)
Code language: Python (python)
import random
a=[]
for i in range(3):
for j in range(5):
a.append(random.randint(1,10))
print(a)
print('Cумарне навантаження ')
s = sum(a)
print(s)
Code language: Python (python)
Домашня робота
Вивчити з підручника: § 13 ст. ст. 151-155
та матеріал з презентації
inF | 9 клас |18 листопада
Тема:
Алгоритми опрацювання масивів: пошук у масиві за певними критеріями.
a=[]
flag=0
for i in range(10):
a.append(int(input('Введіть елемент списку ')))
for i in range(9):
if a[i+1]==a[0]:
flag=i+1
break
print(a)
if flag>0:
print(flag)
else:
print('Елемент не існує')
Code language: Python (python)
a=[]
k=0
for і in range (24):
a.append(float(input('Отримана температура')))
for i in range (1,24):
if a[i]==a[0]:
k+=1
print (k)
Code language: Python (python)
import random
a=[]
for i in range(3):
for j in range(5):
a.append(random.randint(1,10))
print(a)
print('Cумарне навантаження ')
s = sum(a)
print(s)
Code language: Python (python)
Домашня робота
Вивчити з підручника: § 13 ст. ст. 149-151
та матеріал з презентації
inF | 9 клас |13 листопада
Тема:
Розв’язування задач. Практична робота
# створюємо порожній список
a = []
for i in range (8):
# додаємо введені елементи до списку в області виконання проєкту
a.append(int(input('Введіть кількості проданих одиниць товару ')))
s = sum(a)
# виводимо результат
print("Сума =", s)
Code language: Python (python)
# створюємо порожній список
a = []
for i in range (10):
# додаємо введені елементи до списку в області виконання проєкту
a.append(int(input('Введіть число ')))
s=0
k=0
for i in a:
if i>0:
s+=i
else:
k+=1
print('Cyмa додатних чисел з поданих дорівнює')
print(s)
print('Кількість від’ємних елементів')
print(k)
Code language: Python (python)
import random
a=[]
for i in range(3):
for j in range(5):
a.append(random.randint(1,10))
print(a)
print('Cумарне навантаження ')
s = sum(a)
print(s)
Code language: Python (python)
Домашня робота
Вивчити з підручника: § 12 ст. ст. 148
та матеріал з презентації
inF | 9 клас |11 листопада
Тема:
Алгоритми опрацювання масивів: зміна значень елементів масиву.
# імпорт модуля генерування випадкових чисел
import random
#створюємо порожній список
a = []
# надаємо змінній для обчислення середнього початкового значення
s=0
for i in range (10):
# додаємо введені елементи до списку в області виконання проекту
a.append(round((random.random()+9.0),2))
# знаходимо суму елементів списку
s=s+a[i]
# знаходимо середнє значення елементів списку
s=s/10
# виводимо згенерований список
print(a)
# виводимо середнє значення
print(round(s,2))Code language: PHP (php)
import random
n=9
amax=99
a=[]
for j in range(n):
a.append(random.randint(1,amax))
print(a)
print('Cyмa парних чисел з поданих дорівнює')
s=0
for j in range(n):
if a[j]%2==0:
s+=a[j]
print(s)
Code language: PHP (php)
Домашня робота
Вивчити з підручника: § 12 ст. ст. 144-148
та матеріал з презентації
inF | 9 клас |07 листопада
Тема:
Алгоритми опрацювання масивів: зміна значень елементів масиву.
# імпорт модуля генерування випадкових чисел
import random
#створюємо порожній список
a = []
# надаємо змінній для обчислення середнього початкового значення
s=0
for i in range (10):
# додаємо введені елементи до списку в області виконання проекту
a.append(round((random.random()+9.0),2))
# знаходимо суму елементів списку
s=s+a[i]
# знаходимо середнє значення елементів списку
s=s/10
# виводимо згенерований список
print(a)
# виводимо середнє значення
print(round(s,2))Code language: PHP (php)
import random
n=9
amax=99
a=[]
for j in range(n):
a.append(random.randint(1,amax))
print(a)
print('Cyмa парних чисел з поданих дорівнює')
s=0
for j in range(n):
if a[j]%2==0:
s+=a[j]
print(s)
Code language: PHP (php)
Домашня робота
Вивчити з підручника: § 12 ст. ст. 144-148
та матеріал з презентації
inF | 9 клас |04 листопада
Тема:
Алгоритми опрацювання масивів: зміна значень елементів масиву.
<strong>import tkinter as tk
import random
# --- Налаштування ---
root = tk.Tk()
root.title("Вправа: Онови масив!")
root.geometry("600x400")
root.config(bg="#161628")
array = [random.randint(-10, 15) for _ in range(8)]
# --- Функції ---
def update_display():
display.delete("1.0", tk.END)
txt = " ".join(f"{x:>4}" for x in array)
display.insert(tk.END, txt)
def add_one():
for i in range(len(array)):
array[i] += 1
update_display()
show_action("Додано 1 до кожного елемента")
def double():
for i in range(len(array)):
array[i] *= 2
update_display()
show_action("Помножено на 2")
def to_positive():
for i in range(len(array)):
if array[i] < 0:
array[i] = -array[i]
update_display()
show_action("Всі від’ємні стали додатними")
def to_zero():
for i in range(len(array)):
if array[i] > 10:
array[i] = 0
update_display()
show_action("Елементи > 10 замінено на 0")
def shuffle_array():
random.shuffle(array)
update_display()
show_action("Масив перемішано")
def reset_array():
global array
array = [random.randint(-10, 15) for _ in range(8)]
update_display()
show_action("Новий масив згенеровано!")
def show_action(text):
status.config(text=text)
# --- Інтерфейс ---
tk.Label(root, text="Зміни масив за допомогою кнопок",
font=("Arial", 15, "bold"), fg="#29abe2", bg="#161628").pack(pady=10)
display = tk.Text(root, height=3, width=40, font=("Consolas", 16),
bg="#1b1b2f", fg="#00ffcc", bd=0)
display.pack(pady=10)
update_display()
btn_frame = tk.Frame(root, bg="#161628")
btn_frame.pack(pady=10)
buttons = [
("+1", add_one, "#6f47ff"),
("×2", double, "#29abe2"),
("→ +", to_positive, "#00cc99"),
(">10→0", to_zero, "#ff4477"),
("Перемішати", shuffle_array, "#ffaa00"),
("Новий масив", reset_array, "#00ccff"),
]
for i, (text, cmd, color) in enumerate(buttons):
tk.Button(btn_frame, text=text, command=cmd, bg=color, fg="white",
font=("Arial", 12, "bold"), width=12, relief="flat",
activebackground="#ffffff", activeforeground="#000000").grid(row=i//3, column=i%3, padx=8, pady=8)
status = tk.Label(root, text="", font=("Arial", 12), fg="#ffffff", bg="#161628")
status.pack(pady=10)
root.mainloop()
</strong>Code language: PHP (php)

