субота, 20 лютого 2021 р.

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

 

Дистанційна освіта з інформатики в період лютого 2021 року

22.02.2021 - 28.02.2021

Тема: Створення та реалізація текстових типів даних  та списків на Python3 в середовищі опису та виконання алгоритмів Thonny.

Теоретична частина.

 




Осмислюємо властивості алгоритмів на текстових компетентнісних завданнях:

Задача 1. Дано півсклянки води і півсклянки молока. Три ложки води долили до молока, а потім три ложки суміші знову перелили в склянку з водою. Чого виявилось більше ( у грамах) внаслідок цих переливань: суміші: води в молоці чи суміші:  молока у воді?

Розв’язання: Порівну, бо скільки відлили молока, стільки ж долили води.

Задача 2. Три подруги одягли сукні різних кольорів. Одна − блакитну, друга − білу, і третя − зелену. Їхнє взуття було не таких самих кольорів, як сукні; тільки в Олі колір взуття був  однаковий. Наталка була в зелених босоніжках. Сукня і взуття Валі не були білими. Хто і як був одягнений?

Розв’язання: Зрозуміло, що колір Валиного взуття блакитний. Отже, Оля була у білій сукні і білих босоніжках. Наталка одягла блакитну сукню, а Валя – зелену.

Задача 3. Скільки існує двоцифрових  натуральних чисел, обидві цифри яких розташовані у зростаючому порядку?

Розв’язання:  У другому десятку їх 8, у третьому десятку – 7, у четвертому десятку  - 6, і так далі. 8+7+.....+ 2+1=36 двоцифрових чисел?

Задача 4. Довести, що серед 5 осіб принаймні двоє з них мають однакову кількість знайомих.

Розв’язання:  Помістимо 5 осіб у „клітки” з номерами 0,1,2,3,4, де номер „клітки” відповідає кількості знайомих особи. Зауважимо, клітки з номерами 0 та 4  не можуть бути заповнені одночасно, бо якщо є особа, що не знайома ні з ким, тоді клітка під номером 4 порожня. Отже 5 осіб розміщені в чотирьох клітках. Принаймні дві особи знаходяться в одній клітці., тобто мають однакову кількість знайомих.

Задача 5.  Для п’яти дипломатів  є ключі в одній зв’язці. Скільки необхідно зробити спроб, щоб відімкнути три дипломати?

Розв’язання: Перенумеруємо усі дипломати. Першим із ключів в найгіршому випадку треба зробити  4 спроби. Якщо ключ не підійшов до 4  дипломатів, то цей ключ обов’язково відімкне п’ятий дипломат. Залишається 4 ключі та 4 дипломати. Другий ключ знайде свій дипломат у найгіршому випадку за 3 спроби, тоді третій ключ у найгіршому випадку відімкне  за три спроби третій дипломат. Отже, щоб відімкнути три дипломати, потрібно 5+4+3=12 спроб.

Задача 6. Двоє по черзі розламують шоколадку 6x8.  За один хід дозволяється зробити прямолінійний розлом будь-якої частини вздовж заглиблення. Програє той, хто не зможе зробити хід.

Розв’язання: Головне міркування: після кожного ходу кількість частинок збільшується рівно на 1.      Спочатку був один шматок.   В кінці гри, коли не можна зробити жоден хід, шоколадка розламана на маленькі частинки. А їх-48. Таким чином, гра буде тривати рівно 47 ходів, Останній, 47-й хід (також, як і всі інші ходи з непарними номерами), зробить перший гравець. Тому він в цій грі перемагає, причому незалежно від того, як він буде грати.

Задача 8. Є дві купи каменів по 7 в кожній. За хід дозволяється взяти

 будь-яку кількість каменів, але тільки із однієї купи. Програє той, кому нема що брати.

Розв 'язування. В цій грі другий гравець перемагає за допомогою

симетричної стратегії: кожним своїм ходом він повинен брати

 стільки ж каменів, скільки попереднім ходом взяв перший гравець,

але з іншої купи. Таким чином, у другого гравця завжди є хід.

Симетрія в цій задачі грунтується на рівності числа каменів в купах. 

Задача 9. Є дві купки камінців: в одній  -30, в другій - 20. За хід

дозволяється брати будь-яку кількість камінців, але тільки з одної купки.

Програє той, кому нема що брати.

Розв 'язування. Виграє перший. Першим ходом він зрівнює кількість

камшців в купках, після чого грає  і перемагає за допомогою

симетричної стратегії: кожним своїм ходом він повинен брати

 стільки ж каменів, скільки попереднім ходом взяв другий гравець,

але з іншої купи.

 https://pythontask.pp.ua/



 Практична частина.

 Для користувачів 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

Завдання 0.  Створити алгоритм на Python3  для утворення списку із випадкових чисел. Потім знайти  суму усіх чисел, що є у створеному списку, та  добуток усіх чисел, що є у створеному списку. Виконайте реалізацію цієї програми в середовищі для програмування Thonny/

Реалізація

import random

print("Списки з випадковими числами")

print("*Початок допоміжної процедури  створення списків**")

def rand_vector(n):

    r=['None']*n 

    for i in range(0,n):

        r[i]=random.randint(-25,25)

    return r

print("***Кінець процедури створення списків*****")

print("*Початок допоміжної  процедури  множення списків*")

def mult(a):

    lst =a

    val = 1

    for i in range(0,len(lst)):

        val=(val*lst[i])

    return val

print("***Кінець процедури  множення списків*****")

print("***Початок алгоритму*****")

k=rand_vector(8);   m=sum(k);     n=mult(k)

print(k, "cума чисел y списку",m);

print(k, "добуток чисел y cписку",n)

print("***Особливе множення чисел у списку*****")

A=[1,2,3,4]

res=[i*j for i in A for j in A]

print(A, "множення чисел в списку",res)

res+=[i*j for i in A for j in A]

print(A, "множення чисел в списку",res)

 Протестуйте алгоритм декілька разів

Завдання 1.  Створити алгоритм мовою програмування Python3 з діями над списками  в  середовищі програмування Thonny. І протестуй цю програму три рази, змінивши елементи.

Реалізація. В алгоритмі використовується тип даних: списки

print('**ОПЕРАЦії НАД СПИСКАМИ, що містять різні  числа і текстові рядки”)

lst1=[1,2,3,'analysis','synthesis','studying','research']

print('Вивеведеня на екран списку lst1=',lst1, type(lst1))

lst1[0]='-1'; lst1[1]='-n'; lst1[2]='-3n'; lst1[3]='--65n';

print('Вивеведеня на екран зміненого списку lst1=',lst1, type(lst1))

print('Пошук найбільшого елемента: max(lst1)=', max(lst1))

print(' Пошук найменшого елемента: min(lst1)=',min(lst1))

print('**ОПЕРАЦії НАД СПИСКАМИ, що містять лише числа**')

lst2=[-4.7, -5.8, 6.3,0.5, -9,87]; lst6=sorted(lst2)

print('lst2=',lst2); print('Відсортований список: lst2=',sorted(lst6))

lst2[0]=abs(int(-20.05 - lst2[1]+2* lst2[2]))

lst2[1]=abs(int(-18.35- lst2[0] +3* lst2[1]))

lst2[2]=abs(int(-10.55+ lst2[2]+4* lst2[0]))

MIN=min(lst2); MAX=max(lst2); middle=(MAX+MIN)/2

SEREDNIJ=MIN+MAX

print('lst2=',lst2)

print('min(lst2)=', MIN)

print('max(lst2)=', MAX)

print('middle(lst2)=',middle)

print('**ОПЕРАЦії НАД СПИСКАМИ, що містять рядки**')

lst3=['a','b','c','d','e','f']

print('lst3=', lst3)

for i in range(len(lst3)):

    lst3[i]=i*('1+5h-')+'A'

    print('lst3[i]=',lst3[i])

print('lst3=',lst3)

print('min(lst3)=',min(lst3))

print('max(lst3)=',max(lst3))

Протестуйте алгоритм декілька разів

Завдання 2.  Створити алгоритм з відношеннями  над множинами чисел в в середовищі програмування Thonny. І протестуй цю програму три рази, змінивши елементи.

Реалізація. В алгоритмі використовується тип даних: множини чисел

import random

M1=['Бандеролька','парасолька','монополька','бараболька']

K=['None']*4

N=['None']*4

for i in range(len(M1)):

    N[i]=random.choice(M1)

    K[i]=random.choice(M1)

    print("N[",i, "]=", N[i])

    print("K[",i, "]=", K[i])

    print("Виконання операцій зі списками")

    N[i]=i*('(1+Z)')+('+...+ZN')

    K[i] =i*('(1+Y)')+('+...+YN')

    print("N[",i, "]=", N[i])

    print("K[",i, "]=", K[i])

print ('M1=',M1)

print ('N=',N)

print ('K=',K)

print("Виконання операцій з випадковими числами")

K11=random.randint(-100,100)

P=random.gauss(-20,100)

print ('Випадкове ціле число: K11=',K11,' Випадкове дробове число:P=',P)

print ('Результат дій над двома числами: K11 та Р =',K11%2-P*random.randint(10,100))

print ('Результат дій над  двома числами: K11та Р=',(2**K11)%10+(P/4)*K11+random.randint(100,1000))

 

Завдання 3.  Створити алгоритм пошуку непарних двохцифрових чисел, які діляться націло на 3 в середовищі програмування Thonny. І протестуй цю програму три рази, змінивши елементи.

Реалізація. В алгоритмі використовується тип даних: множини чисел

 

n=100

A={s for s in range(10, n)}

print("Множина A=",A, type(A))

B={s for s in A if s%2==1}

print("Множина парних чисел B=",B, type(B))

C1={s for s in A if s%3=0}

print("Множина чисел, що кратні 3, C1=",C1, type(C1))

C2= {s for s in A if s%7!=0}

print("Множина чисел, що не кратні 7, C2=",C2, type(C2))

D1=C1|C2

print("Множина D1=C1|C2",D1, type(D1))

D2=C1&C2

print("Множина D2=C1&C2",D2, type(D2))

Протестуйте алгоритм декілька разів

Результат виконаної практичної роботи це чотири файла( із кодами алгоритму та результатами виконання  алгоритму) надіслати вашому учителю на електронну скриньку: 
vinnser@gmail.com (Сергій Петрович)


Складіть програми мовою програмування або Scratch  або Python або  Pascal для розв´язування наступних задач

Найпростіші завдання з програмування

1.Програма задає два випадкових додатних парних числа k та b.  Створити алгоритм мовою програмування, який спочатку додає до кожного числа однакове випадкове число, що більше 102, а потім знаходить потроєну суму  двох чисел.  А в  остаточному результаті  виводить остачу від  ділення знайденої суми на 18.

2.Програма задає два випадкових непарних числа k та b, що більші, ніж 199 і менші 899.  Створити алгоритм мовою програмування, який спочатку знаходить квадрати обох чисел, а потім середнє арифметичне цих квадратів.  А в  остаточному результаті  виводить остачу від  ділення  середнього арифметичного на 11.

3.Програма задає два випадкових непарних числа k та b, що більші, ніж 399 і менші 999.  Створити алгоритм мовою програмування, який спочатку знаходить більше число та його квадрат , а потім знаходить куб меншого числа,   а потім знаходить їхнє середнє арифметичне квадрату та кубу.  А в  остаточному результаті  виводить остачу від  ділення  середнього арифметичного на 14.

4.Програма задає два випадкових непарних числа k та b, що більші, ніж 499 і менші 799.  Створити алгоритм мовою програмування, який спочатку знаходить більше число та його подвоює, а потім знаходить потроєне менше число,  а потім знаходить їхнє середнє арифметичне.  А в  остаточному результаті  виводить остачу від  ділення  середнього арифметичного на 18.

 


пʼятниця, 12 лютого 2021 р.

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

 

Дистанційна освіта з інформатики в період лютий 2021 року

15.02.2021 - 21.02.2021

Тема: Додаткові модулі. Turtle. Створення та реалізація графічних об’єктів в середовищі опису та виконання алгоритмів Thonny.

Теоретична частина.


Команди для малювання в Python3

che = turtle.Pen()    #створення черепашки che(курсор або пензлик)

che.forward(50)       #черепашка che рухається вперед на 50 пікселів

che.reset()                # очистити і повернути в початкову позицію

che.clear()                # очистити і залишитись у поточній позиції

che.goto(x,y)           # перемістити черепашку в координати

che.backward(100)    # рухатись назад

che.up()                     # підняти перо

che.pensize(3)       # товщина ліній черепашки

wn = turtle.Screen()      #  створення поля

wn.bgcolor("lightgreen")  # колір тла поля

wn.title("Tess & Alex")   # назва поля

che.color("blue")       #  колір ліній черепашки   

che.begin_fill()         #  використання шаблонів фігур  черепашкою  

che.color("blue")     #  колір фігури   

команди малювання   #  наприклад для кола: che.circle(100)

che.end_fill()             #  закриття шаблонів фігур  черепашкою  

 




.

 Текстові задачі на кількість елементів у множині

Задача 1. З Києва до Чернігова можна дістатися пароплавом, поїздом, автобусом, літаком; з Чернігова до Новгород – Сіверська – пароплавом і автобусом. Cкількома способами можна здійснити подорож за маршрутом Київ  Чернігів – Новгород – Сіверськ?

Розв’язання. Очевидно, число різних шляхів з Києва до Новгород-Сіверська дорівнює 4∙2 = 8, бо, обравши один з чотирьох можливих способів подорожі від Києва до Чернігова, маємо два можливих способи подорожування від Чернігова до Новгород-Сіверська.

  Узагальнення:

Такі міркування, які були проведені при розв'язуванні задачі 1, доводять справедливість такого простого тверджен­ня, яке будемо називати основним правилом комбінаторики.

Якщо деякий вибір А можна здійснити m різними спосо­бами, а для кожного з цих способів деякий другий вибір В можна здійснити n способами, то вибір А і В (у вказаному порядку) можна здійснити mn способами.

Інакше кажучи, якщо певну дію (наприклад, вибір шля­ху від Києва до Чернігова) можна здійснити m різними спо­собами, після чого другу дію (вибір шляху від Чернігова до Новгород-Сіверська) можна здійснити n способами, то дві дії разом (вибір шляху від Києва до Чернігова, вибір шляху від Чернігова до Новгород-Сіверська) можна здійснити mспособами.

 

Задача 2. У розіграші першості країни з футбола бере участь 16 команд. Скількома способами можуть бути розподілені золота і срібна медалі?

Розв’язання. Золоту медаль може одержати одна з 16 команд. Після того, як визначено володаря золотої медалі, срібну медаль може мати одна з 15 команд. Отже, загальне число способів, якими може бути розподілена золота і срібна медалі, до­рівнює 1615 = 240.

 

Сформулюємо тепер основне правило комбінаторики (правило множення) в загальному вигляді.

Нехай треба виконати одну за одною k дій. Якщо:

 першу дію можна виконати n1 способами, 

другу дію – n2 способами, 

третю дію – n3 способами 

,,,,,,,,,

і так до 

k-ї дії, яку можна вико­нати nk способами, 

то всі k дії разом можуть бути виконані  

n1∙ n2∙ n3∙…∙ nk-1nk способами.

 

Задача 3. Скільки чотиризначних чисел можна склас­ти з цифр 0, 1,2, 3,4, 5, якщо:

а)      жодна цифра не повторюється більше одного разу;

б)      цифри можуть повторюватись;

в)      числа повинні бути непарними?
Розв'язання.  а) Першою цифрою числа може бути одна з 5 цифр 1, 2, 3, 4, 5 (0 не може бути, бо тоді число не чотиризначне); якщо перша цифра обрана, то друга може бути обрана 5 способами, третя – 4, четверта – 3. Згідно з правилом множення загальне число способів дорівнює 5∙5∙4∙3 = 300.

б)      Першою цифрою може бути одна з цифр 1, 2, 3, 4, 5 (5 можливостей), для кожної з наступних цифр маємо 6 мож­ливостей (0, 1,2,3, 4, 5). Отже, число шуканих чисел дорів­нює 5∙6∙6∙6=5∙ 63 = 1080.

в)      Першою цифрою може бути одна з цифр 1, 2, 3, 4, 5, а останньою – одна з цифр 1,3,5, (числа повинні бути не­парними). Отже, загальна кількість чисел дорівнює 5663 = 540.

  

ФОРМУЛИ   КІЛЬКОСТІ   ЕЛЕМЕНТІВ  СКІНЧЕНИХ  МНОЖИН

 

Дуже важливими для практичних  задач є формули  підрахунку кількості різних елементів у декількох множинах, що містять спільні елементи, тобто кількості елементів в об’єднанні двох або трьох множин.

Кількість елементів об'єднання  п(А+В)  будь-яких двох скін­ченних множин А і В обчислюється за формулою:

п(А+В) = п(А) + п(В) п(АВ), 

де

п(А) - кількість елементів множини А,

п(В) - кількість елементів множини В,

п(АВ) - кількість елементів перетину двох множин А та В.

Для будь-якої трійки скінченних множин А1, А2, А3 має місце формула кількості елементів множини п(A1 +А2 +А3, що є об’єднанням трьох множин, тобто 

A1+ А2 +А3:

п(A1 +А2 +А3) = п(А1) + п(А2) + п(А3- п(А1А2- п(А1 А3) - п(А2А3) + п(А1А2 А3).

Наводимо приклад використання поданих вище формул.

Задача 4.  У лабораторії науково-дослідного інституту працює декілька чоловік, причому кожний з них знає хоча б одну іноземну мову, 6 чоловік знають англійську, 6 німецьку, 7 французьку, 4 знають англійську і німець­ку, 3 німецьку і французьку, 2 французьку і англійсь­ку, один чоловік знає всі три мови. Скільки чоловік пра­цює в лабораторії? Скільки з них знає лише англійську мову? Скільки чоловік знає лише одну мову?

Розв'язання.

Позначимо п(А), п(Н), п(Ф) кількість співробітників у лабораторії, які знають англійську, німецьку та фран­цузьку  мови   відповідно,  а   п(НФ),  п(АН),  п(АФ), п(АНФ)   кількість чоловік, що знають по дві і три мови відповідно. Тоді, за правилом суми, загальне число співробітників у лабораторії дорівнює

п(А)+ п(Н) + п(Ф) - п(НФ) - п(АН) - п(АФ) + п(АНФ)  = 

=6 + 6 + 7 - 3 - 4 2 + 1 = 11.

Тільки англійську та німецьку мови знають

пАН = п(АН) п(АНФ) = 4-1= 3 чоловіка, тільки англійську і французьку

пАФ = п(АФ) - п( АНФ) = 2-1= 1 чоловік. Тоді тільки англійську мову знає

пА = п(А) - пАН  – пАФ - п( АНФ) =  6-3 -1-1 =1 чоловік. Тільки німецьку і французьку знають

пНФ = п(НФ) - п(АНФ) = 3 1 = 2 чоловіки. Тоді більше однієї мови знають

п(АНФ) + пАН + пАФ + пНФ = 1 +3+1+2 =7 чоловік, її тільки одну мову  p = п - т = 11- 7 = чоловіка.

Двома основними правилами комбінаторики є:

Принцип суми. Якщо множина A містить m елементів, а множина B – n елементів, і ці множини не перетинаються, то об’єднання двох множин A+B містить m+n елементів.

Принцип добутку. Якщо множина A містить m елементів, а множина B – n елементів, то добуток двох множин AB містить m∙n елементів, тобто пар.

Приклад. При A={a, b, c} розміщення з повтореннями по два елементи – це пари (a,a), (a,b), (a,c), (b,a), (b,b), (b,c), (c,a), (c,b), (c,c). Або, принцип добутку: 3∙3=9 пар.

Приклад. В одному з відділів магазину покупці зазвичай купляють або один торт, або коробку цу­керок. Одного дня було продано 57 тортів та 36 коробок цукерок. Скільки було покупців, якщо 12 з них придбали і торт, і коробку цукерок? Використаємо принцип суми: 57 + 36 - 12 = 81.

 

Задача 5. Заповнити таблицю 1х21, використовуючи цифри 1, 2, 3, 4, 5 та дотримуючись таких умов: 1) будь-які дві сусідні цифри в таблиці не рівні; 2) всі двоцифрові числа, що утворені двома сусідніми цифрами, відрізняються між собою, якщо читати їх зліва направо.

 

Задача 6. Розставити числа від 1 до 8 у зафарбованих клітинках таблиці 3х4 так, щоб жодних два послідовних числа не стояли у клітинках, які мають спільну вершину.

 

Задача 7. Розставити двоцифрові числа, які утворені з цифр 1, 2,  3,  4, 5 у клітинках таблиці 4х4 так, щоб жодних два послідовних числа не стояли у  клітинках, які мають спільну сторону і  будь-яке двоцифрове число не містило однакових цифр.

  https://pythontask.pp.ua/



Практична частина.

Завдання 1.  Створити алгоритм мовою програмування Python3 з діями над множинами чисел в  середовищі програмування Thonny. І протестуй цю програму три рази, змінивши елементи.

 

Реалізація. В алгоритмі використовується тип даних: множини чисел

A={10,9, 8,7,6,5}

print("Множина A=",A, type(A))

B={1,2, 3,4,5,6}

print("Множина B=",B, type(B))

C=A&B

print("Перетин двох множин C=А&B=",C, type(C))

D=A|B

print("Обєднання двох множин D=А|B=",D, type(D))

G=A-B

print("Різниця двох множин G=А-B=",G, type(G))

Q=B-A

print("Різниця двох множин Q=B-A=",Q, type(Q))

H=A^B

print("Симетрична різниця двох множин H=A^B=(А|B)-(A&B)=",H, type(H))

F=H|{12,11,10,9, 8,7,}

print("Доповнення порожньої множини F=",F, type(F))

F=F&{0,9, 8,7,6,5,4,3,2,1}

print("Перетин множини F з множиною цифр =",F, type(F))

F=F-{10,19, 8,7,6,5,4,3,2,1}

print("Різниця множини F з деякою множиною =",F, type(F))

F=F^{18,19, 8,7,6,5,4,3,2,1}

print("Симетрична різниця множини F з деякою множиною =",F, type(F))

Завдання 2.  Створити алгоритм з відношеннями  над множинами чисел в в середовищі програмування Thonny. І протестуй цю програму три рази, змінивши елементи.

Реалізація. В алгоритмі використовується тип даних: множини чисел

A={9, 8,7,6,5}

print("Множина A=",A, type(A))

B={1,9, 8,7,5,6}

print("Множина B=",B, type(B))

C1=A<B

print("Чи вірне таке відношення: C1=А<B:",C1, type(C1))

C2=B<A

print("Чи вірне таке відношення: C2=B<A:",C2, type(C2))

D1=A>B

print("Чи вірне таке відношення: D1=А>B:",D1, type(D1))

D2=B>A

print("Чи вірне таке відношення: D2=B>A:",D2, type(D2))

G=A>=B

print("Чи вірне таке відношення: G=А>=B:",G, type(G))

Q=B<=A

print("Чи вірне таке відношення: Q=B<=A:",Q, type(Q))

H=A==B

print("Чи вірне таке відношення: H=A= =B:",H, type(H))

F = H in {12,11,10,9, 8,7,}

print("Чи вірне таке відношення: F=H in", F, type(F))

 

Завдання 3.  Створити алгоритм пошуку парних двохцифрових чисел, які діляться націло на 3 в середовищі програмування Thonny. І протестуй цю програму три рази, змінивши елементи.

Реалізація. В алгоритмі використовується тип даних: множини чисел

 

n=100

A={s for s in range(10, n)}

print("Множина A=",A, type(A))

B={s for s in A if s%2==0}

print("Множина парних чисел B=",B, type(B))

C1={s for s in A if s%3==0}

print("Множина чисел, що кратні 3, C1=",C1, type(C1))

C2= {s for s in A if s%6!=0}

print("Множина чисел, що не кратні 6, C2=",C2, type(C2))

D1=C1|C2

print("Множина D1=C1|C2",D1, type(D1))

D2=C1&C2

print("Множина D2=C1&C2",D2, type(D2))

 

Результат виконаної практичної роботи це три файли( три пайтон-проекти) надіслати вашому учителю на електронну скриньку: 
vinnser@gmail.com (Сергій Петрович)
ktdfz@i.ua (Юрій Васильович)