Scientific journal ISSN 2413-158X (online)
PHYSICAL AND MATHEMATICAL EDUCATION ISSN 2413 1571 (Print)
Has been issued since 2013.
Науковий журнал
Ф1ЗИКО-МАТЕМАТИЧНА ОСВ1ТА
Видасться з 2013.
https://fmo-journal.org/
Кобильник Т.П., Когут У.П., Жидик В.Б. Memodu4Hi аспекти вивчення основ алгоритм!зацп i програмування мовою Python у шкльному курс! '¡нформатики у старших класах. Ф'!зико-математична освта, 2021. Випуск 5(31). С. 36-44.
Kobylnyk T., Kohut U., Zhydyk V. Methodical aspects of studying the fundamentals of algorithmization and programming language Python school course in informatics in high school. Physical and Mathematical Education, 2021. Issue 5(31). Р. 36-44.
DOI 10.31110/2413-1571-2021-031-5-006 УДК 378:147:51:004
Т.П. Кобильник
Нацюнальний ушверситет «Льв'вська пол!техн!ка», Украна
taras.p. kobylnyk@lpnu. ua https://orcid.org/0000-0002-2703-7570 У.П. Когут
Дрогобицький державний педагог!чний ушверситет !мен! 1вана Франка, Украша
ulyana3001@gmail.com https://orcid.org/0000-0002-2861-2274 В.Б. Жидик
Дрогобицький державний педагог!чний ушверситет !мен! 1вана Франка, Украша
Zhvb63@gmail.com https://orcid.org/0000-0002-9876-0053
МЕТОДИЧН1 АСПЕКТИ ВИВЧЕННЯ ОСНОВ АЛГОРИТМ1ЗАЦИ I ПРОГРАМУВАННЯ МОВОЮ PYTHON У ШК1ЛЬНОМУ КУРС1 1НФОРМАТИКИ У СТАРШИХ КЛАСАХ
АНОТАЦ1Я
Основи алгоритм'1зацп i програмування е одн'ею з основних змстових лiнiй курсу информатики у aiKoni. У cmammi досл'джено проблеми вивчення елементiв основ алгоритм'зац'й та програмування в шкiльному кура iнформатики у 10-11 класах.
Формулювання проблеми. Важливою педагог'мною проблемою е формування i розвиток алгоритм'мних навичок учн/'в. Проблеми вдосконалення методичноÏ системи навчання iнформатики в загальнй середнй школi потребують подальшого досл'дження з метою пошуку бльш ефективних форм, метод'ю iзасоб'ю навчання. Необхiдно забезпечити формування в учн'ю компетентностей, необх'дних для св'домого вибору майбутнього профiлю навчання. Учнi повиннi розумти зв'язок м ':ж теоретичною i прикладною нформатикою, знати способи застосування iнформацiйних технологй для розв'язування р'зномаштних задач. А також визначено переваги мови Python у навчаннi iнформатики та особливостi ïx педагог'много застосування у навчаннi основ алгоритм 'зацп та програмування.
Матер/'али i методи. Для досягнення поставлено)'мети застосовано комплекс метод 'ю: системного аналiзу наукових праць, що охоплюють проблему досл'дження, анал'з втчизняного досв'ду вивчення елемент 'в програмування в шкльному курсi iнформатики; узагальнення та обфунтування теоретичних засад використання мови програмування Python в шкльному курсi iнформатики.
Результати. Розглянуто основн характеристики мови програмування Python та наведено можливостi iï використання у процес'1 навчання основ алгоритм'зацК в шкльному курсi iнформатики. Вивчення основ алгоритм'заци та програмування е одним 'в засоб'ю формування операцйного стилю мислення. Знання дано)' зм 'стово)' лiнiï передбачае здатнсть формал'зувати задачу, визначити у нй зв'язки м'ж частинам, обирати якнайкращий алгоритм розв'язування завдання, вмiння правильно iнтерпретувати та анал':зувати отримаш результати.
Висновки. Мова Python - одна з найпопулярнiшиx мов програмування. Вона знаходить свое застосування у рiзниx галузях.
В'дпов 'дно ринок прац потребуе фаxiвцiв, якiмогли створювати програмт продукти мовою Python. Заклади загально)' середньо)' освти не залишилися осторонь цього процесу. Автори шкльних пiдручникiв починають включати мову Python до ¡'х змкту. Таким чином, виникае потреба у розробц навчально-методичних матер 'тл 'ю з вивчення елемент 'в алгоритм '1зацп i програмування мовою Python. Методологiчне значення цього роздлу шкльного курсу iнформатики полягае у розкриттi важливостi алгоритм'ю.
КЛЮЧОВ1 СЛОВА: заклад загальноÏ середньоï осв':ти, шкльний курс :нформатики, основи алгоритм'1зацп, програмування, мова програмування Python.
© Т.П. Кобильник, У.П. Когут, В.Б. Жидик, 2021.
ВСТУП
Постановка проблеми. 1нформатика у старших класах вивчаеться на piBHi стандарту та на профтьному piBHi.
Програма (piBeHb стандарту) (1нформатика 10-11 клас, 2020) розрахована на вивчення шформатики у 10-11 класах як вибipково-обов'язковий предмет, 35 годин якого складае базовий модуль. Аналiз змкту базового модуля показав, що не передбачено вивчення жодних роздЫв, пов'язаних з алгоритмами, алгори^за^ею та програмуванням. Проте програмою передбачено вибipковий модуль «Креативне програмування», який пов'язаний з програмуванням.
Слщ зазначити, що вибipковий (один чи кiлька) модуль учителю рекомендуеться обирати вщповщно до профтю закладу загально! середньо! освiти, шдивщуальних iнтеpесiв i здiбностей учнiв, матеpiально-технiчноí бази та наявного програмного забезпечення. Осктьки модуль «Креативне програмування» е вибipковим, то не всi учы, якi навчаються на piвнi стандарту, будуть мати змогу вивчати елементи алгоpитмiзацií та програмування.
Програмою з шформатики (пpофiльне навчання) для учыв 10-11 клаав (1нформатика для 10-11 клаав (пpофiльне навчання), 2020) передбачено вивчення таких роздЫв як «Мова програмування та структури даних», «Алгоритми» та «Парадигми програмування», якi так чи шакше передбачають опанування певною мовою програмування. Слiд зазначити, що вивчення основ програмування, мови, синтаксису, структури та правил написання програм передбачено у роздЫ «Мова програмування та структури даних».
Навчальними програмами з шформатики не визначено певно! мови програмування для вивчення основ алгоpитмiзацií. Тому вибip залежить вщ вчителя або закладу освiти. Проте автори шктьних тдручниюв починають включати мову Python до (х змкту. Проте методичних pекомендаuiй щодо використання мови Python у шктьному кура шформатики е мало, на вщмшу вщ Pascal. Таким чином, виникае потреба у розробц навчально-методичних матеpiалiв з вивчення елементiв алгоpитмiзаuií i програмування мовою Python.
Аналiз актуальних дослiджень. У пiдpучниках з шформатики для 5-6 клаав елементи aлгоpитмiзaцií та програмування пропонуеться вивчати з використанням мови Scratch. Зауважимо, що у шктьних тдручниках з шформатики (2016 року) для учыв 7-9 класах мова Python не була вщображена, за винятком тдручни^в авторського колективу Н.В. Морзе. У вах тдручниках як основну мову програмування було обрано Free Pascal i середовище Lazarus. У тдручниках (Морзе& Барна& Вембер, 2016) разом зi згаданими середовищем i мовою програмування подаються вiдомостi i про Python з прикладами створення програм. Зокрема, вивчення у 8-му та 9-му класах роздЫв «Алгоритми роботи з об'ектами та величинами» та «Табличн величини та алгоритми (х опрацювання» вщповщно проводиться з використанням мови Python.
Ситуащя у тдручниках 2020 року випуску для 7-9 клаав кардинально змшилася. Автори вщмовляються вщ мови Free Pascal середовища Lazarus. Нaтомiсть зосередилися на опиа мови Python. Наприклад, у тдручниках (Морзе&Барна, 2020) для 7-го класу при вивченнi pоздiлу «Алгоритми i програми» поряд з Python подаються вщомост i про Scratch. Також зауважимо, що у тдручнику для 8-го класу (Ривкшд& Лисенко&Чернтова&Шакотько В.В., 2021) нaдaлi для вивчення роздту «Алгоритми i програми» пропонуеться i Lazarus, i Python.
Якщо брати до уваги старшу школу, то, як вже було сказано, на piвнi стандарту вивчення програмування можливе ттьки у вибipковому модулi «Креативне програмування». Вiдповiдно пiдpучникiв, де були вщображеы нaвчaльнi мaтеpiaли з даного модуля нема.
У тдручнику (Руденко&Речич&По^енко, 2019) для 10 класу профтьного piвня у pоздiлi «Мови програмування та структури даних» як мову програмування обрано Python. Зокрема, у ньому поряд з основами aлгоpитмiзaцií та програмування подаються вщомост й про основи об'ектно-оpiентовaного програмування. Це здшснюеться на пpиклaдi мови Python i середовища програмування IDLE. Зокрема, у тдручнику розглядаються там питання як: структура i способи виконання проек^в мовою Python; оператори, вирази, i засоби опрацювання чисел; pеaлiзaцiя базових алгори^чних констpукuiй; вбудован типи даних та (х опрацювання; функцп користувача та модулi Python; основи об'ектно-оpiентовaного програмування; основи гpaфiчного iнтеpфейсу користувача.
У тдручнику (Руденко&Речич&По^енко, 2019) автори для 11 класу профтьного piвня у роздЫ «Алгоритми» пропонують вивчати i pеaлiзовувaти бaзовi алгоритми (сортування та пошуку даних, опрацювання pядкiв, графи, динaмiчне програмування i жaдiбнi алгоритми, основи обчислювaльноí геометрп), з використанням мови Python та середовища IDLE.
Ще у 2013 роц pедaкuiя журналу «Комп'ютер у школi та сiм'í» звернулася до вщомих учителiв iнфоpмaтики, фaхiвuiв у гaлузi нaвчaльноí iнфоpмaтики з проханням взяти участь в обговорены питання «Яку мову програмування вивчати у школi?». Таке обговорення вилилося у ктька публтацм, у яких знаш педагоги (та й не ттьки педагоги) висловлювали своí думки з приводу цього питання. У кожного з них е своя обГрунтована пози^я щодо вивчення мови програмування у школк Pascal, C, C++, Visual Basic, Visual Basic For Application, JavaScript, Python тощо. Пщсумовуючи, можна зробити висновок, що уа аргументи на користь тiеí чи iншоí мови програмування е важливими, але останне слово завжди залишаеться за вчителем.
На думку aвтоpiв статп (Юpченко&Семенiхiнa&Хвоpостiнa&Удовиченко&Петpенко, 2019), перспективним сьогоды у стapшiй школi вивчати популяры мови Java, Python та С++.
Мета статл. З огляду на це метою статп е висв™ення пiдходiв вивчення основ aлгоpитмiзaцií та програмування мовою Python в шктьному кура шформатики у старших класах.
МЕТОДИ ДОСЛ1ДЖЕННЯ
Для досягнення постaвленоí мети застосовано комплекс методiв: системного aнaлiзу наукових праць, що охоплюють проблему дослщження, вивчення вiтчизняного досвщу вивчення елементiв програмування в шктьному кура шформатики; узагальнення та обГрунтування теоретичних засад використання мови програмування PYTHON в шктьному кура шформатики.
РЕЗУЛЬТАТИ ДОСЛ1ДЖЕННЯ
Щоб обрати певну мову програмування, треба визначити критерп, яким повинна вона вщповщати.
Обрана мова для вивчення програмування у школi повинна вiдповiдати таким вимогам ^омп'ютер у школi та амЧ, 2013): транслятор мови повинен бути кросплатформеним i безкоштовним; мова повинна мати простий синтаксис, з одного боку, i потужн засоби, з шшого; програми повинн бути короткими i зрозумтими, форма запису повинна бути максимально звичною для людини; мати розвинутi бiблiотеки, можливост розробки рiзноманiтних додаткiв; повинна пщтримувати стилi як структурного, так i функцюнального та об'eктно-орieнтованого програмування; мова повинна бути сучасною, не «мертвою», входити хоча б у 10 найбтьш уживаних в реальному виробниц^ мов програмування; середовище розробки програм не повинно бути перевантажене додатковими функ^ями i можливостями, складнiсть освоeння яких «затьмарюe» i вiдсуваe на другий план алгоритмiчну складысть проекту. Обов'язковою також e наявнiсть консольного транслятора.
Таким вимогам вiдповiдаe мова Python (http://www.python.org), яку використовують не тiльки в навчальних цтях. Python займаe друге мюце (пiсля C) в рейтингу популярности мов програмування TIOBE Programming Community Index (TIOBE Index,2020) (станом на вересень 2021 року). Мова активно розвиваeться, маe вiдкритий (Open Source) програмний код, поширюeться за GPL-лiцензieю.
У (Kомп'ютер у школi та сiм'Ï №S, с. 1S) Паахов Ю.Я. та Kравець Г.П. наводять деяк переваги мови Python над шшими (С, С++, Pascal), серед яких слщ вiдзначити там. Простi програми записуються у ктька рядкiв, вiдсутнi iнструкцiÏ, що не мають безпосереднього вщношення до алгоритму (наприклад, int main() у мовi С чи C++). Як правило, програми мовою Python e коротшими, ыж на С, С++, Pascal, та С#. Мова сучасна, пiдтримуe високорiвневi складенi структури даних (списки, множини, асо^ативы масиви, iнше). Мова Python iз самого початку створювалася на основi парадигми об^ктно-орieнотованого програмування, але чудово e пристосованою для структурного i функцюнального програмування.
^м консольного штерпретатора мови, Python маe кiлька рiзних середовищ розробки програм, зокрема IDLE (стандартне середовище, що входить у дистрибутив, e простим i зрозумтим). Слщ зауважити, що детальний аналiз середовищ програмування мовою Python наведено у (Базурш^О^). Там же автор зазначаe, що до найбтьш популярних середовищ програмування мовою Python належать: IDLE, PyCharm, PyDEV, WingWare, Komodo IDE, Eric, Eclipse, Geany, Spyder, PyScripter. ^м цього, також використовуються online середовища.
Освоeння будь-якоÏ мови програмування розпочинаeться з вивчення ÏÏ синтаксису та алфавпу, з якого створюються лексеми (ключов1 слова, лiтерали, iдентифiкатори, операцп, знаки пунктуацп). Зауважимо, що мова Python e доступною для використання у вах поширених сучасних операцмних системах сiмейств Windows, Linux, Mac. Як i будь-яка мова, Python маe своÏ особливостi, серед яких виокремимо так:
■ наявнють штерактивного режиму та пiдтримка файлу програмного коду;
■ розрiзняeться регiстр введених лтер, тобто A та a - це рiзнi змiннi (чи символи);
■ вщступи e обов'язковими Ох використовують для задання певного блоку операторiв);
■ динамiчна тишзащя змiнних, тобто у програмi не потрiбно описувати змiннi (до якого типу вони належать);
■ змшы збер^ають адресу об'eкта у пам'ят комп'ютера, а не сам об^кт;
■ вiдсутнe поняття масиву: використовуються списки;
■ перед першим запуском програмного коду його слщ зберегти. Якщо цього не виконати, то користувачу запропонують це зробити;
■ наявнють значноÏ ктькосп бiблiотек. Наприклад, бiблiотека math, яка мiстить основы математичн функцп, для використання яких необхщно виконати import math. Далi використовувати функцп цieÏ бiблiотеки так, наприклад sin(x) чи sqrt(x): math.sin(x) чи math.sqrt(x) вiдповiдно.
Слiд зазначити, що учн 10-х класiв уже знайомi основами алгоритмiзацiÏ та програмування, ям вони вивчали у 5-9 класах з використанням мов Scratch, Free Pascal, рщше Python. Тому ми не будемо зупинятися на ознайомленн з алгоритмiчною структурою слщування у мовi Python. Перейдемо вщразу до алгоритмiчноÏ структури розгалуження з метою узагальнення i систематизацп знань з даноÏ теми, отриманих раыше.
Пояснення умовного оператора if пропонуeться проводити на таких задачах як «Визначення чвертi, до якоÏ належить точка», «Розв'язування лiнiйного рiвняння» та «Розв'язування квадратного рiвняння». Це зумовлено тим, що для знаходження м^мального та максимального з двох чи трьох (або бтьше) чисел у мовi Python можна використовувати функцп min та max вщповщно.
Наведемо приклад розв'язування лшмного рiвняння.
Приклад 1. Скласти програму, за якою отримуeться розв'язок лшшного рiвняння ax+b=0, де a,b - деякi параметри, x - невiдома.
Перш за все учыв треба привчати до складання алгоритму розв'язування задачi, а по™ вже до його реалiзацiÏ мовою програмування.
Спочатку розв'яжемо дане рiвняння аналiтично. Або iншими словами опишемо алгоритм словесно-аналтично. Розв'язати рiвняння з параметрами означаe, що для всiх можливих значень a,b необхiдно вказати можливi значення невiдомоÏ x.
1. Ввести значення a,b.
2. Якщо a*0, то виконати п.3, iнакше п.5.
3. Обчислити x=-b/a. Вивести значення x.
4. Перейти до п.9.
5. Якщо b*0, то виконати п.6, iнакше п.S.
6. Вивести повщомлення «Рiвняння коренiв не маe».
7. Перейти до п.9.
8. Вивести повщомлення «Рiвняння маe безлiч коренiв».
9. КЫець.
На основ! словесно-анал1тичного опису алгоритму складемо блок-схему (Рис. 1):
Початок
{ KiHeub
Рис. 1. Блок-схема алгоритму розв'язування лшшного рiвняння
На 0CH0Bi блок-схеми пишемо програмний код для дано!' задачi (Рис. 2).
е-1п£(1приь("Введ1ть значения а=")) ж I
Ь=1пс[1прис(,гВвед1ть значения Ь=")) if а!=0: х=-Ь/а
else:
if Ь!=0:
ptint("PiBHffHHÄ KopeHis не мае")
else:
pc±nt("PifiHÄHHfl мае 6езл1ч xopeHiB")
Рис. 2. Програмний код для розв'язування лшшного рiвняння
Пiсля написання програмного коду i його вщлагодження наступав етап тестування. Для цього для рiзних можливих значень параметрiв а,Ь тестуеться програмний код. Такими можливими значення параметрiв можуть бути наприклад:
1.а=3,Ь=6;
2.а=0,Ь=5;
3.а=0,Ь=0.
Результат тестування програмного коду наведено на Рис. 3.
/Ру£Эюп34/11ггеае_еч- ру === = =----= = = = ==== = = = = =
/Pyöioii34/l:LneaE_eq. ру === = = = = = = = = == ====== = =
Рис. 3. Тестування програмного коду для розв'язування лшшного рiвняння
---= = = = = == = = = = =------RESTART: С:
Введ1ть значения а=3 Введ1ть значення Ь = б -2.0
»>
===================== FESTART: С:
Введ1ть значения а=0 Введ1ть значення Ь = 5
Р1еняння корен! в не мае
»>
---..._._.___....----RESTART: С:
В в е Д1 ть значения а= 0 Въед1ть значения Ь-0 Р1ВНЯННЯ ппг безл±ч корен! в
Розглянемо розв'язування квадратного рiвняння
Приклад 2. Скласти програму, за якою отримуються розв'язки квадратного рiвняння ахл2+Ьх+с=0 з дiйсними коефiцiентами а (а*0),Ь,с.
Опишемо алгоритм словесно-аналiтично.
1. Ввести значення а,Ь,с.
2. Обчислити дискримшант D=bл2-4ac.
3. Якщо D>0, то виконати п.4, iнакше - п.7.
4. Обчислити коренi х_1=(-Ь--^)/(2а), x_2=(-b+VD)/(2a).
5. Вивести значення х_1,х_2.
6. Перейти до пункту 8.
7. Вивести повщомлення <^вняння не мае дшсних корешв».
8. КЫець.
На основi словесно-аналiтичного опису алгоритму складемо блок-схему (Рис. 4):
Рис. 4. Блок-схема алгоритму розв'язування квадратного рiвняння
На ocHOBi блок-схеми пишемо програмний код для дано!' задачi (Рис. 5). Слщ зауважити, що перед написанням програмного коду учням необхщно нагадати, що використання функцп для обчислення квадратного кореня (math.sqrt), треба тд'еднати математичну бiблioтеку math (import math).
impone math
a=incí1прис("Введ1ть вначення а=")) Ь=>1пС(1приЬ("Бвед1ть значення Ъ=")) c=int(inputj"BBefliTb вначення с=")) D=b**2-4*a',c if D>=0:
xl=(-b-math.sqEt.(D> )/<2*а) x2-(-Ь+matli. sqrcfD) J/fZ^a) j)Eint("xJ, = ",xl, " x2=",x2) else:
print("Гиндння не пае Д1исни>: KopeHiE")
Рис. 5. Програмний код для розв'язування квадратного рiвняння
jJ
Програмний код тестуемо для можливих значень коефщетчв a (a*0),b,c. Такими значеннями можуть бути наприклад:
1.a=1,b=-5,c=6 - рiвняння мае два дiйcних рiзних кореы;
2.a=1,b=2,c=1 - рiвняння мае два дшсних рiвних кoренi;
3.a=1,b=1,c=1 - рiвняння не мае дiйcних кореыв. Результат тестування програмного коду наведено на Рис. 6.
Рис. 6. Тестування програмного коду для розв'язування квадратного рiвняння
Шсля тестування програмного коду (тобто перевiрки правильности роботи) учням ставиться питання: «Як буде працювати програмний код за умови a=0?». Далi перевiряемo роботу програмного коду за умови a=0 (Рис. 7).
Рис. 7. Результат програмного коду за умови a=0
Як видно з результату, отримуеться повщомлення про помилку у виразi x1=(-b-math.sqrt(D))/(2*a) - «дтення на нуль» (ZeroDivisionError: float division by zero).
Одыею з властивiстю алгоритмiв е масовкть, тобто алгоритм повинен розробляеться для цiлого класу задач, що вiдрiзняються тiльки набором вхiдних даних. Тому учням самоспйно пропонуеться скласти алгоритм та програмний код для розв'язування рiвняння axA2+bx+c=0 в загальному випадку, тобто враховуючи i значення a=0. При цьому Ум пояснюеться, що для розв'язування тако''' задачi необхiдно об'еднати в едине цте двi вище наведенi задачi, тобто розв'язування ложного та квадратного рiвнянь, що заданi сво'ми коефiцiентами. Очтуваний результат - словесно-аналiтичний опис алгоритму, блок-схема та програмний код з його тестування при рiзних можливих наборах значень коеф^ен^в a,b,c.
Зауважимо, що задачi з параметрами розвивають в учнiв, логiчне мислення, вмЫня аналiзувати, формуються навички дослщницько'|' дiяльностi.
Крiм того, з дано''' теми учням можна пропонувати задачi такого типу:
1) Визначити, чи заданий рт е високосним. Попередньо учням пропонуеться знайти, яким умовам повинен вщповщати високосний рт.
2) Визначити, чи однакового кольору двi клтинки на шаховiй дошцi. Клтинка однозначно визначаеться номером (вiд 1 до 8) рядка i стовпця.
У мовi Python е можливкть багатоальтернативного вибору. Це можна продемонструвати на такому прикладГ
Приклад 3. У п'ятницю у десятому клас е шiсть урокiв: 1 - алгебра, 2 - украшська мова, 3 - Ыформатика, 4 -географiя, 5 - бiологiя, 6 - фiзкультура. Необхiдно скласти програму визначення назви уроку за його номером.
Очевидно, що таке завдання зручнше виконувати, використовуючи багатоальтернативний вибiр. Програмний код наведено на Рис. 8.
Рис. 8. Реалiзацiя багатоальтернативного вибору
Тестування програмного коду наведено на Рис. 9.
Рис. 9. Тестування програмного коду на багатоальтернативний вибiр
Вивчення ци^чних структур ми рекомендуемо проводити на побудовi алгорт^в ^рових задач та ïx програмно''' реалiзацiï. Наприклад, гра «Вгадай число» чи «Двадцять одне». Як показуе досвд навчання на таких задач пщвищуе рiвень мотивацп в учыв.
Зокрема, роботу циклiчноï структури з тсляумовою можна продемонструвати на прикладi гри «Вгадай число» (Ковалюк, 2005), змкт яко' е таким.
Приклад 6. Програма генеруе випадкове цте число з деякого дiапазону (наприклад, вщ 1 до 1000). Користувач намагаеться його вщгадати, вводячи його з клавiатури. Якщо число вгадане, то програма виводить повщомлення про це i завершуе роботу, шакше - спроби вiдгадати число повторюються. На початку виконання програми встановлюеться певний «призовий фонд» (наприклад, 100), що зменшуеться з кожною невдалою спробою (наприклад, на 10). Гра закшчуеться у двох випадках: гравець вщгадав число або «призовий фонд» дорiвнюе нулю (Ковалюк, 2005).
Розв'язування. Очевидно, що процес вщгадування числа е ци^чним. Тут доцiльно використовувати цикл з тсляумовою, осктьки принайми повинна вiдбутися одна спроба вгадування. Зауважимо, що у мовi Python вщсутый такий оператор циклу. Проте його можна реалiзувати, використовуючи цикл з передумовою так:
while True: тто циклу if <умова> break:
Змшы, ям будемо використовувати у програмному кодк prize - призовий фонд, y - випадкове цте число, згенероване комп'ютером, penalty - штраф, x - число, яке вводиться гравцем. Зауважимо, що для генерацп цтого випадкового числа вщ 1 до 1000 використовуеться функ^я randint(1,1000) з бiблioтеки random (import random). Програмний код гри «Вгадай число» наведено на рис.10.
import, random penalty=10
y=random.randint(1,1000)# генерац!я влпадкового ц!лого числа в!д 1 до 1000 prize=100
while True:
x=int(input("Бвед1ть число з1д 1 до 1000: ")) if х>у:
print ("Неправильно, введ1ть менше число") prize=prize-penalty else:
if х.<у:
print("Неправильно, введ^ть больше число") prize=prize-penalty
else:
print("Б1таемо! Би виграли! Баш виграш становить ",prize) break if prize==0:
print("На жаль, Би програли. Спробуйте ще")
print("Загадене число: ",у)
break
input ()
Рис. 10. Програмний код гри «Вгадай число»
RESTART: С :/Python34/ugada
Введл.ть число вл.д 1 до 1000
Неправильно, введл.ть менше число
Введл.ть число вл.д 1 до 1000
Неправильно, введл.ть ненше число
Введ1ть число в1д 1 до 1000
Неправильно, введ1ть ненше число
Введ1ть число в1д 1 до 1000
Неправильно, введл.ть ненше число
Введл.ть число вл.д 1 до 1000
Неправильно, введл.ть ненше число
Введл.ть число вл.д 1 до 1000
500
Результати тестування програмного коду гри «Вгадай число» наведено на рис 11. На рис 11,а наведено випадок виграшу гравцем, а на рис 11,6 - програшу.
==================== RESTART: С:/Ру
Введл.ть число в1д 1 до 1000: 576 Неправильно, введл.ть ненше число Введл.ть число вл.д 1 до 1000: 423 Неправильно, введл.ть ненше число Введл.ть число вл.д 1 до 1000: 345 Неправильно, введл.ть ненше число Введл.ть число вл.д 1 до 1000: 234 Нецравильно, введл.ть иенше число Введл.ть число вл.д 1 до 1000: 123 Нецравильно, введл.ть бз.льше число Введл.ть число вл.д 1 до 1000: 145 Неправильно, введл.ть б1лыие число Введл.ть число вл.д 1 до 1000: 157 Неправильно, введл.ть б1льше число Введ1ть число в1д 1 до 1000: 167 Неправильно, введл.ть б1льше число Введл.ть число вл.д 1 до 1000: 178 Неправильно, еерд1ть б1льше число Введл.ть число вл.д 1 до 1000: 188 Неправильно, введл.ть бл.лыие число На жаль, Ви програли. Спробуйте ше Загадане число: 232
250
125
65
35
18
Неправильно, введл.ть ненше число Введл.ть число вл.д 1 до 1000 Вл.таено! Ви виграли! Ваш виграш становить 40 I
а) б)
Рис. 11. Тестування програмного коду гри «Вгадай число»
ВИСНОВКИ ТА ПЕРСПЕКТИВИ ПОДАЛЬШОГО ДОСЛ1ДЖЕННЯ
Отже, узагальнивши вщомосп, зваживши вci переваги i недолти, ми прийшли до висновку, що Python наразi е оптимальною мовою програмування для вивчення основ алгорт^заци у шктьному курci iнфoрматики, тому що:
- мае простий синтаксис, програмний код легко читаеться;
- це oб'ектнo-oрiентoвана мова програмування високого рiвня, призначена для розв'язування найрiзнoманiтнiших завдань;
- е кросплатформенною мовою, що дозволяе створювати програми, ям будуть працювати у вciх операцшних системах.
- е бiблioтеки готових процедур для використання у сво'|'х програмах. Це дозволяе створювати склады програми швидко.
- пщтримуе рiзнi парадигми програмування.
Мова Python мае потужну стандартну бiблioтеку, яку користувач може розширювати власними бiблioтеками й бiблioтеками iнших кoриcтувачiв.
У статт ми навели деякi метoдичнi пщходи для вивчення алгoритмiчнoï структури розгалуження та повторення, зокрема реалiзацiю циклу з тсляумовою. На конкретних прикладах продемонстрували реалiзацiю окремих алгoритмiв мовою Python. Звертаемо увагу, що з використанням мови Python там класичн алгоритми як пошук мiнiмальнoгo (чи
максимального) елемента, обмшу значеннями мiж змiнними втрачають свое значення. Вщповщно 3míct навчання треба наповнювати Ышими завданнями. На нашу думку, важливим проблемою вивчення основ алгоритмiзацií i програмування з використанням мови Python е пiдбiр таких завдань, щоб в учыв якомога рiдше виникало питання «навщо нам вивчати алгоритм, якщо це можна зробити, використовуючи одну-двi функцп мови Python?».
Подальшл дослiдження будуть спрямованi на методик навчання опрацювання складних структур даних, зокрема списав, кортежiв, словникiв, ряд^в, засобами мови Python.
Список використаних джерел
1. БазурЫ В. М. Порiвняльний аналiз середовищ програмування мовою Python. Новiтнi комп'ютернi технологи. Кривий Р^ : Видавничий центр ДВНЗ «Криворiзький нацiональний уыверситет», 2018. Том XVI. С. 281-292.
2. 1нформатика для 10-11 клаав (профiльне навчання). URL: https://mon.gov.ua/storage/app/media/zagalna%20serednya/programy-10-11-klas/2018-2019/01/10-11-profilniy-riven.docx (дата звернення 12.04.2020)
3. 1нформатика. Навчальна програма вибiрково-обов'язкового предмету для учнiв 10-11 клаав загальноосвп>лх навчальних закладiв ^вень стандарту). URL: https://mon.gov.ua/storage/app/media/zagalna%20serednya/programy-10-11-klas/2018-2019/informatika-standart-10-11.docx (дата звернення 12.04.2020)
4. Морзе Н. В., Барна О. В., Вембер В. П. 1нформатика: тдр. для 8 кл. загальноосвп-. навч. Закладiв.К. : УОВЦ «Орюн», 2016. 240 с.
5. Морзе Н. В., Барна О. В., Вембер В. П. 1нформатика: тдр. для 9 кл. загальноосвп-. навч. Закладiв.К. : УОВЦ «Орюн», 2016. 208 с.
6. Морзе Н.В., Барна О.В. 1нформатика. Шдручник для 7 кл. закладiв загальноí середньо' освiти. Ки'в: УОВЦ «Орiон», 2020. 176 с.
7. Руденко В.Д., Речич Н.В., По^енко В. О. 1нформатика (профтьний рiвень) : тдруч. для 10 кл. закл. загал, серед, освти. Харкiв : Вид-во «Ранок», 2019. 256 с.
8. Руденко В.Д., Речич Н.В., По^енко В. О. 1нформатика (профтьний рiвень) : тдруч. для 11 кл. закл. загал, серед, освiти. Харюв : Вид-во «Ранок», 2019. 256 с.
9. Юрченко А.О., Семеыхша О.В., Хворостша Ю.В., Удовиченко О.М., Петренко С.1. Навчання програмувати в старший школi крiзь призму чинних навчальних програм. Фiзико-математична освiта. 2019. Випуск 2(20). Ч. 2. С. 48-55.
10. Яку мову програмування вивчати у школГ Комп'ютер у школi та амЧ №8, 2013. С. 9-18.
11. Ривюнд Й.Я., Лисенко Т.1., Чернiкова Л.А., Шакотько В.В. 1нформатика : пiдруч. для 8-го кл. закл. заг. серед. освiти. К.: Генеза, 2021.256 с.
12. TIOBE Index. URL: https://www.tiobe.com/tiobe-index/ (дата звернення: 26.09.2021).
13. Ковалюк Т.В. Основи програмування. К.:Видавнича група BHV, 2005. 384 с.
References
1. Bazurin, V.M. (2018) Comparative analysis of Python programming environments. The latest computer technology. Kryvyi Rih: Kryvyi Rih National University Publishing Center. Volume XVI. Pp. 281-292. [in Ukrainian].
2. Informatics for 10-11 grades (profile training). (2020) URL: https://mon.gov.ua/storage/app/media/zagalna%20serednya/programy-10-11-klas/2018-2019/01/10-11-profilniy-riven.docx (access date 12.04. 2020). [in Ukrainian].
3. Informatics. Curriculum of elective-compulsory subject for students of 10-11 grades of secondary schools (standard level). (2020) URL: https://mon.gov.ua/storage/app/media/zagalna%20serednya/programy-10-11-klas/2018-2019/informatika-standart-10-11.docx (accessed 12.04.2020). [in Ukrainian].
4. Morse, N.V., Barna, O.V., Wember, V.P. (2016). Informatics: ed. for 8 classes. general education. textbook Institutions.K. : УОВЦ «Орюн». 240 с. [in Ukrainian].
5. Morse, N.V., Barna, O.V., Wember, V.P. (2016). Informatics: ed. for 9 classes. general education. textbook Institutions.K. : УОВЦ «Орюн». 208 с. [in Ukrainian].
6. Morse, N.V., Barna, O.V. (2020). Computer Science. Textbook for 7 classes. general secondary education institutions. Kyiv: UORC Orion. 176 p. [in Ukrainian].
7. Rudenko, V.D., Rechich, N.V., Potienko, V.O. (2019). Informatics (profile level): textbook. for 10 classes. lock general, among, education. Kharkiv: Ranok Publishing House. 256 p. [in Ukrainian].
8. Rudenko, V.D., Rechich, N.V., Potienko, V.O. (2019). Informatics (profile level): textbook. for 11 classes. lock general, among, education. Kharkiv: Ranok Publishing House. 256 p. [in Ukrainian].
9. Yurchenko, A.O., Semenikhina, O.V., Khvorostina, Y.V., Udovychenko, O.M., Petrenko, S.I. (2019). Learning to program in high school through the prism of existing curricula. Physical and mathematical education. Issue 2 (20). Part 2. pp. 48-55. [in Ukrainian].
10. What programming language to study at school. (2013). Computer in school and family №8. P.9-18. [in Ukrainian].
11. Rivkind, Y.Y., Lysenko, T.I., Chernikova, L.A., Shakotko, V.V. (2021). Informatics: textbook. for the 8th grade. lock head among. education. K .: Genesis.256 p. [in Ukrainian].
12. TIOBE Index. URL: https://www.tiobe.com/tiobe-index/ (date of application: 26.09.2021). [in English].
13. Kovalyuk, T.V. (2005). Basics of programming. K.: BHV Publishing Group. 384 p. [in Ukrainian].
METHODICAL ASPECTS OF STUDYING THE FUNDAMENTALS OF ALGORITHMIZATION AND PROGRAMMING LANGUAGE PYTHON SCHOOL COURSE IN INFORMATICS IN HIGH SCHOOL Taras Kobylnyk1, Uliana Kohut2, Volodymyr Zhydyk2
1Lviv Polytechnic National University, Ukraine 2Drohobych Ivan Franko State Pedagogical University, Ukraine
Abstract. The article investigates the problems of studying the elements of programming in the school course of computer science.
Formulation of the problem. An important pedagogical problem is the formation and development of the algorithmic skills of students, the improvement of their professional training. The problems of improving the methodological system of teaching computer science in general secondary school require further research in order to find more effective forms, methods and means of teaching. It is necessary to ensure the formation in students of the competencies necessary for a conscious choice of the future profile of education. Students should understand the relationship between theoretical and applied informatics, know how to use various types of information technology in professional activities. And also the advantages of the Python language in teaching informatics and the features of their pedagogical use in teaching the basics of algorithms are determined.
Materials and methods. To achieve this goal, a set of methods was used: a systematic analysis of scientific works covering the problem of research, studying the domestic experience of studying programming elements in a school computer science course; generalization and substantiation of the theoretical foundations of using the PYTHON programming language in the school computer science course.
Results. The main characteristics of the Python programming language are considered and the possibilities of using this language in the process of teaching the basics of algorithmization in the school computer science course are presented. The study of the basics of algorithms and programming is one of the means of forming the operational style of thinking. Knowledge of this section presupposes the ability to formalize the task, determine the connections between the parts in it, choose the most effective algorithm for solving the problem, and the ability to correctly interpret and analyze the results obtained.
Conclusions. The Python language is one of the most popular programming languages. It finds its application in various fields. According to the labor market, there is a need for specialists who could create software products in the Python language. The institutions of general secondary education did not remain aloof from this process. School textbook authors are starting to incorporate Python into their content. Thus, there is a need for the development of teaching materials for the study of the elements of algorithmization and programming in Python. The methodological significance of this section of the school computer science course lies in the disclosure of the importance of algorithms. Fundamentals of Algorithmization and Programming is one of the main content lines of the computer science course in basic school.
Key words: institution of general secondary education, school course in computer science, the basics of algorithms, programming, programming language Python.
This work is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.