Лекція № 8

Тема: Методика вивчення мови програмування. Методика навчання учнів роботі з допоміжним алгоритмом, застосування рекурсії. Особливості вивчення систем візуального програмування.

Питання.

1.      Основна мета вивчення розділу. Загальні питання методики.

2.      Поняття мови програмування, дані, величини, команди.

3.      Вивчення мов програмування.

4.      Методичні рекомендації до вивчення систем програмування.

5.      Розв’язування задач.

 

Основна мета. Познайомити учнів з розділом інформатики «Програмування». Навчити прийомам побудови простих обчислювальних алгоритмів і представлення алгоритмів на мові програмування високого рівня (наприклад, Паскаль). Навчити початковим навичкам роботи з системою програмування.

 

Основні тематичні одиниці матеріалу

1.      Програмування як розділ інформатики.

2.      Класифікація і коротка характеристика різних типів мов програмування.

3.      Знайомство з мовою програмування Паскаль. Структура Паскаль-програм.

4.      Призначення систем програмування. Освоєння прийомів роботи з системою програмування.

5.      Основні конструкції мови.

6.      Поняття величини. Основні типи величин, їх характеристика.

7.      Побудова обчислювальних алгоритмів різної структури.

 

Згідно з шкільною програмою з інформатики в 9-12 класах відводиться годин на вивчення данної теми:
12 кл. – 34 год.

 

1.

Алгоритми і алгоритмічні структури. Опис алгоритмів

9

2.

Методологія проектування програм

1

3.

Системи візуального програмування

24

 

Загальні питання.

Програмування – одна з самих традиційних тем у курсі інформатики, але місце і вага цієї теми в програмі даної дисципліни згодом змінюється. Найбільш істотний перегляд цього питання відбувся з переносом інформатики зі старших класів у базову школу і з розвитком комп'ютерних технологій. Останні редакції програми шкільного курсу інформатики і ВТ наголошують на курсі користувача, хоча програмування займає ще значне місце.

Новим напрямком у розвитку теми «Програмування» є введення до курсу інформатики вивчення об’єктно-орієнтованих мов програмування. Вчитель інформатики може в залежності від наявності комп'ютерної техніки і профільного напрямку школи викладати структурну чи об’єктно-орієнтовану мову програмування. Як об'єктно-орієнтовану мову в шкільній практиці можна використовувати розширення мови Паскаль – середовище візуального програмування Delphi-Pascal і Visual Basic.

Розглянемо питання, що таке програмування як предметна область. Програмування – це розділ інформатики, задача якого – розробка програмного забезпечення ЕОМ. У вузькому змісті слово програмування означає процес розробки програми певною мовою програмування. Розробку засобів системного програмного забезпечення і систем програмування прийнято називати системним програмуванням; розробку прикладних програм називають прикладним програмуванням. Згідно цьому принципу поділяють програмістів на системних і прикладних, в залежності від типу створюваних програм.

У період існування ЕОМ 1-2-3 поколінь для використання комп'ютера в будь-якій області фахівець повинний був уміти програмувати. У 1985р., коли вводився курс інформатики в школу, авторами 1 підручника був проголошений лозунг «Програмування – друга грамотність». Пройшов час, і стали з'являтися пакети прикладних програм. Прикладне програмне забезпечення стало доступним і загальноприйнятим. На сучасному етапі до програмування звертаються фахівці лише в тому випадку, коли відсутнє належне програмне забезпечення для розв’язування конкретної задачі. І такі випадки стають усе більш рідкими.

Виникає питання: для чого потрібно вивчати програмування в школі?

1.      З метою фундаменталізації курсу інформатики. Одним з фундаментальних принципів інформатики є принцип програмного керування роботою комп'ютера. Зрозуміти його неможливо, не знаючи, що таке програма для ЕОМ. Таким чином, знайомство з програмуванням є елементом загальноосвітнього змісту інформатики.

2.      З погляду профорієнтаційної функції предмета. Будь-який шкільний предмет повинний поряд з освітньою, виховною і розвиваючою функціями виконувати ще і профорієнтаційну. Програмування є професійною галуззю діяльності, дуже важливою, сучасною і престижною.

У залежності від мети й обсягу курсу наповнення методичної системи вивчення цього розділу може бути різним.

 

Існують різні парадигми програмування, і викладання кожної з них має свої особливості. До основних парадигм програмування відносяться:

·        процедурне програмування (Паскаль, Бейсік, Фортран, Сі, Асемблери);

·        логічне програмування (Пролог);

·        функціональне програмування (Лісп);

·        об’єктно-орієнтоване програмування (Смолток, Delphi-Pascal, Visual Basic, С++).

Класичним, універсальним і найбільш розповсюдженим у шкільній практиці є процедурний напрямок. Процедурні мови найбільше підходять для навчальної мети. Найбільш розповсюдженими в школах мовами програмування є Паскаль, Бейсік.

 

Класифікація мов програмування. На вступній бесіді вчитель повинний загалом охарактеризувати існуючі напрямки в програмуванні, розглянути сучасні підходи до розробки програм, дати класифікацію мов програмування й описати для розв’язування якого типу задач підходять різні мови.

1.      Мови програмування низького рівня.

Мова асемблера.

2.      Мови програмування високого рівня.

Fortran, Cobol, Algol, Pascal, Basic, C, C++, Java

3.      Мови програмування баз даних.

SQL (Structured Query Language)

4.      Мови програмування для Інтернету

Скріпт-мови, HTML, Perl, Java.

5.      Логічні мови програмування

PL/1, Prolog, LISP, Forth

 

Процес вивчення і практичного засвоєння програмування можна розділити на 3 етапи:

  1. вивчення методів побудови обчислювальних алгоритмів;
  2. вивчення мови програмування;
  3. вивчення і практичне засвоєння конкретної системи програмування.

 

Питання першої частини можна розглядати при вивченні розділу «алгоритмізація».

У розділі базового курсу «Введення до програмування» необхідно продовжувати ту ж структурну лінію, що була закладена в алгоритмічному розділі. Тому при виборі мови програмування варто віддавати перевагу мовам структурного програмування, найбільш придатним з них для навчання є Паскаль.

Процес програмування поділяються на 3 етапи:

1.      складання алгоритму рішення задачі;

2.      складання програми мовою програмування;

3.      налагодження і тестування програми.

У кожній мові програмування існує своя концепція типів даних, своя система типів. Однак у будь-яку мову входить мінімально-необхідний набір основних типів даних, до якого відносяться: цілий, дійсний, логічний і символьний. З типом величини зв'язані чотири його характеристики:

1.      множина припустимих значень;

2.      множина операцій  над даними;

3.      множина функцій, визначених над даними цього типу;

4.      множина визначених відношень.

З методичної точки зору знайомство учнів з типами величин краще розподілити на окремі уроки і вводити нові типи поступово, по мірі необхідності, в наступній послідовності: Integer, Real, Сhar, Boolean. Наприклад, після знайомства з цілим типом даних і розв’язування деякої кількості задач, вчитель змінює умову задачі таким чином, щоб учні зіштовхнулися з проблемною ситуацією: розв’язати дану задачу для діапазону цілих чисел не можливо. Вчитель вводить поняття  типу даних Real.

Не слід поспішати з знайомством характеристик логічного типу. Введення нового типу повинно викликатися практичною необхідністю, тобто алгоритмом розв’язування конкретної задачі.

Не слід забувати, що існує розширення типів даних. Наприклад, знайомство з типами LongInt, ShortInt, Byte повинно йти на інтуїтивному рівні під час розв’язування задач. При розв’язуванні задач на знаходження факторіалу натурального числа, учні зіштовхуються з проблемою, коли задається двозначне натуральне число діапазону цілих чисел недостатньо – вводимо розширення цілого типу даних.

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

 

Тип

Операції

Функції

Відношення

цілий

 

 

 

дійсний

 

 

 

логічний

 

 

 

символьний

 

 

 

 

Типи констант визначаються по контексту (за формою запису в тексті), а типи змінних встановлюються при описі змінних.

 

Інший варіант класифікації даних: за структурою. Дані поділяються на прості і структуровані. Для простих величин (їх ще називають скалярними) справедливе твердження: одна величина – одне значення. Для структурованого: одна величина – декілька значень. До структурованих величин відносяться: масиви, множини, рядки, файли, записи. У розділі «Введення до програмування» вивчають прості величини, масиви, рядки, інші типи – для поглибленного вивчення матеріалу.

 

Дії над величинами, обумовлені алгоритмом, ґрунтуються на наступній ієрархії понять: операція – вираз – команда (оператор) – система команд.

Операція – найпростіша закінчена дія над даними.

Вираз – запис в алгоритмі, що визначає послідовність операцій для обчислення деякої величини.

Команда – розпорядження виконавцю виконати деяку закінчену дію.

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

Вузлові поняття програмування: змінна й оператор присвоювання.

Процес розв’язування задачі – це процес послідовної зміни значень змінних. Змінна одержує шуканий результат у процесі присвоювання. На рівні машинних команд присвоювання – це занесення в комірку пам’яті, що відведена для змінної, визначені значення в результаті виконання команди. До таких команд відносяться: присвоювання, процедура введення даних і передача параметрів підпрограмам.

Досвід показує, що в багатьох випадках нерозуміння програмування деякими учнями походить від нерозуміння змісту та механізму дії операції присвоювання. Тому особливу увагу треба звертати на це питання.

<Змінна> := <вираз>

Механізм дії:

1. обчислити значення виразу;

2.присвоїти (покласти) отримане значення змінній.

 

Звернути увагу учнів, що дана команда виконується справа наліво.

Не можна плутати з математичною рівністю. Знак := - читається як присвоїти, а не дорівнює.

Далі обов’язково слід пояснити зміст команди:

Х:= Х + 1

Пояснити задачу обміну значеннями двох змінних.

x:=y;

y:=z;

z:=x

 

Під введенням у програмуванні розуміється процес передачі даних із зовнішнього пристрою до оперативної пам'яті. По команді введення робота процесора переривається і відбувається чекання дій користувача; користувач набирає на клавіатурі дані і натискає <Enter>; значення, які ввелися присвоюються змінним.

Для візуалізації процесів, що відбуваються усередині комп'ютера при виконанні даної команди можна показати на схемі

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Ефективним методичним засобом, що дозволяє досягти розуміння програмування, є ручне трасування алгоритмів.

 

Вивчення мов програмування.

 

Методика вивчення мови програмування спирається на структуру самого об'єкта вивчення  - мови програмування, яку можна представити на схемі:

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Це схема мови високого рівня.

 

Основний метод вивчення – демонстрація мови на прикладах простих програм з короткими коментарями. Деякі поняття досить сприймати учням на інтуїтивному рівні. Наочність такої мови як Паскаль полегшує це сприйняття. Розумінню матеріалу допомагає аналогія між Паскалем і алгоритмічною мовою. Для виконання учнями нескладних самостійних завдань на першому етапі досить діяти методом «за зразком».

Проблему як зв'язати вивчення методів побудови алгоритмів роботи з величинами і мови програмування можна вирішити 2 варіантами:

1.         спочатку розглядаються різноманітні алгоритми, для опису яких використовуються блок-схеми й алгоритмічна мова, а потім – правила мови програмування, способи перекладу вже побудованих алгоритмів у програму на цій мові;

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

 

Бажано, щоб учні як раніше одержали можливість перевіряти правильність своїх алгоритмів, працюючи на комп'ютері. Але навіть при використанні комп'ютера, спочатку, рекомендується не відмовлятися від ручного трасування.

 

Системи програмування.

Основний методичний принцип вивчення даної теми – принцип виконавця. В якості виконавця виступає комп'ютер. Робота комп'ютера складається з 3 складових: створення програми, налагодження програми, виконання програми.

У кожній конкретній системі програмування можна виділити наступні компоненти:

- середовище;

- режими роботи;

- система команд;

- дані.

Середовище системи програмування (СП) – це обстановка на екрані, у якій працює користувач системи програмування. Учитель показує й описує конкретну оболонку, за допомогою якої будуть працювати учні.

Характерні режими роботи систем програмування:

1.         режим редагування тексту програми;

2.         режим компіляції програми;

3.         режим виконання програми;

4.         робота з файлами;

5.         режим допомоги;

6.         налагодження програми.

Режим редагування. Частіше встановлюється автоматично при ініціалізації роботи системи. При цьому працює вбудований у систему текстовий редактор. Текст програми, за бажанням, можна підготувати в будь-якому текстовому редакторі, але це незручно. Освоїти роботу з текстовим редактором СП учням допоможуть навички, отримані при вивченні теми «Обробка текстової інформації».

Режим компіляції. Результатом компіляції є програма, яка записана мовою машинних команд ля майбутнього виконання. Одержання програми, що виконується, проходить декілька етапів: компіляція, робота редактора зв'язків, завантаження і т.д., але в базовому курсі ці питання не розглядаються. Їх можна розглянути лише при поглибленому вивченні курсу.

Режим виконання. У системах, що компілюють, в цьому режимі виконується програма в машинних командах, яка отримана після трансляції. Інтерпретатор безпосередньо сам виконує програму. У цих двох випадках виконання починається по команді RUN.

Режим роботи з файлами. У файлах на зовнішніх носіях система зберігає тексти програм вихідною мовою; програми, отримані в результаті трансляції; вихідні і кінцеві результати. У файловому режимі виконуються традиційні операції: зберегти інформацію у файлі, прочитати дані з файлу в оперативну пам'ять, присвоїти ім’я файлу, друкувати текст програми й ін. 

Режим допомоги. Дозволяє програмісту одержати підказку на екрані, що допомагає як у роботі із системою, так і з мовою програмування.

Режим налагодження. У цьому режимі можна робити трасування, покрокове виконання програми, слідкувати за зміною визначених величин, зупинити виконання програми у певному місці по визначеній умові. Режим налагодження дає можливість знайти алгоритмічні помилки в програмах.

 

Учитель, розповідаючи про режими роботи системи програмування, повинен розповідати про систему команд, що використовується в кожнім з режимів.

Наприкінці вивчення розділу «Введення до програмування» проходить урок узагальнення знань. На цьому уроці піднімається питання про різні класи мов програмування, про парадигми програмування, про способи трансляції, робляться висновки про особливості та характерні риси структурного підходу в програмуванні та об’єктно-орієнтованного.

Більш детальніше вивчення розділу «Програмування» виноситься для профільного курсу програмування.

 

Методичні рекомендації до розв’язування задач з курсу алгоритмізації та програмування.

Навчання складанню алгоритмів роботи з величинами повинне проводитися на прикладах типових задач з поступовим ускладненням структури алгоритмів. Послідовність завдань планується згідно  складності та послідовності вивчення алгоритмічних структур:

-        лінійні алгоритми (обчислення по формулах, будь-які пересилання значень змінних);

-        розгалужені алгоритми (пошук найбільшого чи найменшого значень з декількох даних, сортування 2-3 значень, діалог з розгалуженнями);

-        циклічні алгоритми (обчислення сум і добутків числових послідовностей, циклічне введення даних з наступною їх обробкою).

Вивчення мови програмування Паскаль відбувається в контексті розв'язуваних задач, тобто нові засоби мови вводяться по мірі необхідності для розв’язування чергового типу задач.

 

Приклади завдань, які можна запропонувати учням.

 

Приклад 1.

Порівняти вік двох дітей. Відповідь виводити у вигляді фраз: «Маша старша за Сашка», «Маша молодша за Сашка», «Маша і Сашко однолітки».

Зауваження. Алгоритм має структуру 2 вкладених повних розгалужень. При переході від алгоритмічної мови до Паскаля треба звернути увагу на необхідність дотримання правил синтаксису мови.

Приклад 2.

Скласти алгоритм упорядкування значень 3 змінних А, В, С по зростанню.

Зауваження. Для розв’язування цієї задачі слід застосувати алгоритм: упорядкувати А і В, упорядкувати В і С (після цього максимальне значення потрапить у С), ще раз упорядкувати А і В. Таким чином, алгоритм буде мати структуру 3 послідовних неповних розгалужень.

 

алг Сортування

Program Sort

реч А, В, С, Х

var A, B, С, Х:real;

поч

begin

      введення А, В, С

    read ( А, В. С);

      якщо   А>B

    if  А>B

                то      Х:=А;  А:=В;  В:=Х

         then   begin

      все

                   Х:=А;  А:=У;  У:=Х

              

                  end;

     якщо   В>С

    if  В>С

                то      Х:=В;  В:=С;  С:=Х

         then   begin     

     все

                   Х:=У;  У:=З;  З:=Х

 

                   end;

     якщо   А>B

    if  А>B

               то      Х:=А;  А:=В;   В:=Х

         then   begin

    все

                   Х:=А;  А:=У;  У:=Х

 

                 end;

    виведення А, В, С

    write (A, B, C);

кін

end.

 

Ця задача виводить на ідею використання допоміжних алгоритмів. Упорядкування 3 змінних виробляється триразовим застосуванням алгоритму упорядкування 2 змінних, тому розумно даний алгоритм оформити як допоміжний. Програми, що реалізують допоміжні алгоритми називаються підпрограмами. В Паскалі існує 2 види підпрограм: підпрограми-процедури і підпрограми-функції. В даній задачі можна використовувати процедуру. Ця задача може бути використана як опорна при поясненні цього матеріалу.

Program Sort

var A, B, С: real;

 

Procedure Sort_2 (var X,Y : real);

  var Z: real;

   begin

             Z:=Х;  X:=Y;  Y:=Z

    end;

Begin

           read ( А, В. С);

           Sort_2 (A, В);

           Sort_2 (B, C);

           Sort_2 (A, В);

           write (A, B, C);

end.

 

Приклад 3.

Дано дійсне число Х и натуральне N. Скласти алгоритм обчислення ХN.

Зауваження. Зведення в ступінь заміняється багаторазовим множенням основи на саму себе.

i:=1; Y:=1;

while i<= N do

            begin

                        Y:=Y*X;

                        i:=i+1;

            end;

При виконанні трасування алгоритму обов’язково потрібно перевірити при N=0.

 

Приклад 4.

Знайти найбільший загальний дільник послідовності цілих чисел. Використовувати підпрограму знаходження НОД 2-х чисел. Можна використовувати алгоритм Евкліда.

 

Приклад 5.

Послідовно вводяться N цілих чисел. Знайти максимальне з них.

Зауваження. Цю задачу можна вирішити без введення поняття масиву. Для цього введення чисел і їх обробку треба сполучити в одному циклі.

 

Приклад 6.

Скільки різних N-буквених слів можна скласти шляхом перестановок даних N букв?