Інформатика 9 клас

inF | 9 клас |27 листопада

Тема:

Алгоритми впорядкування масиву.

Repl iT
Вправа
inF-Codes
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)
Зображення 1.1 - Сортування вибором з «кольоровою діаграмою» масиву
Вправа 2. Бульбашкове сортування з покроковим переглядом
(алгоритм 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)
Зображення 1.2 - Бульбашкове сортування з покроковим переглядом
Вправа 3. Порівняння двох алгоритмів з вибором і напрямом сортування
(короткий код, різні кольори для початкового і відсортованого стану)

Інструкція / пояснення
Алгоритми:
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)
Зображення 1.3 - Порівняння двох алгоритмів з вибором і напрямом сортування

Домашня робота
Вивчити з підручника: § 14 ст. ст. 156-159
та матеріал з презентації

inF | 9 клас |25 листопада

Тема:

Алгоритми опрацювання масивів: пошук елемента з найбільшим/найменшим значенням. Практична робота

Repl iT
Вправа
inF-Game
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 листопада

Тема:

Алгоритми опрацювання масивів: пошук елемента з найбільшим/найменшим значенням.

Repl iT
Вправа
inF-Game
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 листопада

Тема:

Алгоритми опрацювання масивів: пошук у масиві за певними критеріями.

Repl iT
Вправа
inF-Game
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 листопада

Тема:

Розв’язування задач. Практична робота

Repl iT
Вправа
inF-Game
# створюємо порожній список
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 листопада

Тема:

Алгоритми опрацювання масивів: зміна значень елементів масиву.

Repl iT
Вправа
inF-Game
# імпорт модуля генерування випадкових чисел
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 листопада

Тема:

Алгоритми опрацювання масивів: зміна значень елементів масиву.

Repl iT
Вправа
inF-Game
# імпорт модуля генерування випадкових чисел
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 листопада

Тема:

Алгоритми опрацювання масивів: зміна значень елементів масиву.

Repl iT
<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)

Домашня робота
Вивчити з підручника: § 12 ст. ст. 138-141
та матеріал з презентації