С А Вернигоренко - Вивчення основ об'єктно орієнтованого програмування у класах фізико-математичного профілю - страница 1

Страницы:
1  2  3 

С.А. Вернигоренко

НПУ імені М.П. Драгоманова

Вивчення основ об'єктно орієнтованого програмування у класах фізико-математичного профілю

Питання стосовно методики навчання основ програмування у загальноосвітній школі будуть завжди актуальними. Це пов'язано перш за все з тим, що наука інформатика взагалі і теорія створення програмних засобів зокрема стрімко розвивається. З'являються не лише нові середовища програмування, але й нові мови і технології програмування. Так серед професійних програмістів найбільш поширеною є мова Сі та її об'єктне розширення - мова Сі++. На сьогоднішній день існують Сі-подібні мови програмування такі, як Java, JavaScript, ActionScript, C#, C.net. З'явилися нові технології у програмуванні такі, як COM, DCOM, COM+, використання котрих надає можливість створювати програмні засоби із реалізацією ефективного обміну даними між ними. Наприклад, можливість використання таблиці, розробленої у програмі Excel, як вбудованого об'єкта у програму Word - це, фактично, застосування COM-технології у програмуванні. Існують способи створення елементів управління користувача, які базуються на застосуванні технологій ActiveX або ATL, котрі також є реалізацією COM-технології.

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

Як відомо, загальноприйнятою концепцією навчання інформатики у середній школі є підготовка користувача сучасної обчислювальної техніки. Але після закінчення школи деякі з цих користувачів прагнуть отримати вищу освіту з кваліфікацією "програміст". Тому загальноосвітня школа має підготувати таку категорію учнів до вивчення нових дисциплін, пов'язаних з програмуванням. На жаль, ситуація стосовно підготовки кваліфікованих програмістів у переважній більшості випадків складається наступним чином: у певних класах є один-два учні, що цікавляться програмуванням. В подальшому деякі з них стають професійними програмістами. На запитання, про те, хто навчив їх програмування, досить часто доводиться чути відповідь: "Школа мені практично нічого не дала у плані мого професійного становлення. Увесь матеріал я опановував самотужки." Після навчання у ВУЗі часто доводиться чути аналогічні твердження. Саме з цих причин однією з основних задач вчителя має бути потреба у вивченні нових технологій та пошук нових методик навчання. Результатом такої роботи повинно стати збільшення кількості підготовлених учнів, виховання у них прагнення до опанування новими знаннями та вміння застосовувати їх при розв'язуванні поставлених задач.

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

Але учням, що навчаються у класах з поглибленим вивченням фізики, математики та інформатики, можна пропонувати нові шляхи вивчення основ програмування. Першим кроком при цьому може бути створення методики вивчення саме об'єктно-орієнтованого програмування, як основи усіх сучасних технологій програмування. Тут варто дати відповіді на три першочергові запитання: який матеріал обрати для вивчення, у якій послідовності здійснювати його подання, які вправи та задачі пропонувати учням для вироблення навичок написання програм.

Стосовно вибору мови програмування, з використанням якої здійснюватиметься навчання, можна наводити різні міркування "за" і "проти". Основними аргументами на користь вивчення мови Сі++ є такі. У цій мові найбільш повно реалізований об'єктно-орієнтований підхід. Існує значна кількість Сі-подібних мов програмування, тому, маючи знання з даної мови, можна значно швидше вивчити інші. Мова Сі++ за рахунок гнучкості та швидкості виконання програм, створених з її використанням, є мовою професійних програмістів.

Досить непростим є питання добору тем для вивчення учнями та порядок їх вивчення. Деякі вчителі пропонують спочатку ознайомити учнів із структурним та модульно-процедурним підходами у програмуванні (вивчити мову Сі) та лише після цього переходити до вивчення об'єктно-орієнтованого підходу (мова Сі++). Ця точка зору цілком виправдана, вона, зокрема, відображає історичний хід розвитку програмування. Але є певні зауваження стосовно такого підходу. Перш за все це кількість учбового часу. Вивчення лише одного структурного підходу потребує не менше півріччя з розрахунку від двох до чотирьох годин на тиждень. На ознайомлення з основами об'єктно-орієнтованого підходу потрібно витрати не менше двох-трьох місяців навчального часу. Інша причина - формування у учнів об'єктного підходу у програмуванні. Вважається, що такий підхід варто використовувати лише при написанні досить складних програм з великою кількістю різних структурованих типів даних. Поряд з цим необхідно пам'ятати про те, що об'єктне програмування, порівняно із структурним, краще дисциплінує програміста, зокрема, за рахунок чіткого розподілу даних та функцій їх опрацювання. Тому володіння навичками створення програм з використанням об'єктного підходу в подальшому надає можливість програмісту-практику більш ефективно організовувати дані у програмі та використовувати раніше створені структури даних при розробці нових проектів. З цих причин у нижче описаній методиці проведення уроків застосовується комбінований підхід: повідомляється як матеріал, що стосується структурного програмування, так і відомості про можливості застосування об'єктного підходу.

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

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

1.

Основні уявлення про мови програмування

1

год.

2.

Етапи розв'язування задач на ЕОМ. Алгоритм

2

год.

3.

Структура Сі-програми. Препроцесор. Поняття функції

2

год.

4.

Поняття змінної. Типи змінних мови Сі. Область дії змінної

1

год.

5.

Поняття вказівника та посилання. Причини застосування вказівників

2

год.

6.

Бібліотечні функції введення-виведення

2

год.

7.

Поняття оператора. Лінійні оператори.

 

 

 

Основні арифметичні операції та математичні функції

2

год.

8.

Створення та застосування функцій користувача

2

год.

9.

Тип даних структура

2

год.

10.

Поняття класу та об'єкта

2

год.

11.

Поняття умови. Основні логічні операції. Закони Де Моргана

1

год.

12.

Оператори розгалуження та вибору

4

год.

13.

Оператори повторення

6

год.

14.

Тип даних масив. Зв'язок між вказівником та масивом

4

год.

15.

Робота з рядковими величинами

2

год.

16.

Робота з файлами

2

год.

17.

Поняття конструктора та деструктора класу.

 

 

 

Конструктор копіювання та конструктор перетворення

2

год.

18.

Успадкування

2

год.

19.

Перевизначені функції класу. Віртуальні функції

4

год.

20.

"Дружні" функції та "дружні" класи.

 

 

 

Попереднє оголошення заголовків класів

1

год.

21.

Перевантаження стандартних операцій

4

год.

22.

Створення та використання шаблонів функцій та класів

4

год.

Всього 54 години навчального часу. Сюди варто додати чотири години на

виконання

залікових

самостійних робіт - матимемо 58 годин. Якщо за державною програмою відводиться дві години на тиждень обов'язкового часу на вивчення інформатики та використати дві години додатково, як заняття на факультативі, то з розрахунку сімнадцяти навчальних тижнів на півріччя отримуємо 68 годин. Тобто, відповідно до пропонованого плану навчання, залишається десять годин резервного часу, який можна використати на розв'язування задач.

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

Варто повідомити учнів про основні поняття, що використовуються у процесі навчання програмування. До таких понять, зокрема, відносяться "програма", "мова програмування", "алфавіт мови", "синтаксис мови", "семантика мови", "середовище розробки", "інтерпретація", "компіляція", "трансляція". Можна також познайомити учнів з деякими класифікаціями мов програмування (за структурою, типізацією і т. д.) [4, 41].

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

Наступним кроком має бути ознайомлення учнів із структурою програми, описаної мовою Сі. Тут потрібно розповісти про розділи, з яких складається опис програми, та можливості розташування цих розділів при її описуванні. Учні мають вивчити, що таке препроцесор та вміти використовувати його основні директиви. Далі можна повідомити учням суть понять "підпрограма" (функція), головна програма, навчити записувати заголовок і тіло головної програми.

На наступному уроці можна розпочати вивчення понять змінної та константи, основних атрибутів змінної (ім'я, тип, значення, адреса). Учні повинні навчитися використовувати у програмі змінні простих типів (char, int, float, double), розуміти, що таке область дії змінної.

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

Оскільки у мовах Сі та Сі++ часто доводиться оперувати таким поняттям, як вказівник, то бажано пояснити учням його смисл, починаючи з перших уроків, тобто одразу після повідомлення матеріалу про змінні та константи. При цьому учні мають навчитися використовувати операцію взяття адреси для змінних та розіменування для вказівників. Одне із застосувань вказівників - це отримання динамічної пам'яті, тому можна запропонувати учням ознайомитися із можливостями виділення та звільнення такого виду пам'яті. Для вивчення матеріалу, пов'язаного із використанням конструктора копіювання та перевантаженням операцій, потрібно оперувати таким поняттям, як "посилання", що було введено у мові С++, як альтернатива вказівникам. Тому після ознайомлення із вказівниками, можна пояснити учням, що таке посилання (див. [2, 54], [3, 23]).

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

Потрібно ознайомити учнів з певною бібліотекою, яка використовуватиметься у подальшому для реалізації команд введення-виведення. Якщо вчитель обирає для вивчення бібліотеку stdio ([3, 121], [1, 176]), то необхідно пояснити загальний синтаксис функцій для виконання вказівок введення-виведення з цієї бібліотеки, навести відповідні приклади.

На наступному етапі варто узагальнити з учнями попередній матеріал, з'ясувати, що називають оператором та лінійним оператором. Потрібно пояснити учням особливості застосування арифметичних операцій, познайомити із використанням основних математичних функцій бібліотеки math [1, 185].

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

Після ознайомлення із можливостями створення та застосування функцій користувача, можна переходити до вивчення питання про структуровані типи даних мови Сі++. Першим таким типом є структура. Учні мають засвоїти основні прийоми оголошення структур та опису їх екземплярів у головній програмі, виробити вміння здійснювати записування/читання даних із полів структур. При доборі вправ та задач стосовно даної теми варто враховувати попередньо вивчений матеріал, зокрема уміння учнів створювати функції користувача. Таким чином вивчення тем "Створення та застосування функцій користувача" та "Тип даних структура" є пропедевтичним етапом вивчення теми "Поняття класу та об'єкта".

Наступним кроком навчання може бути ознайомлення учнів з поняттями "клас" та "об'єкт". Вчитель має показати учням доцільність поєднання у одному типі даних як власне самих даних, так і функцій їх опрацювання; пояснити, з використанням відповідних аналогій, основні концепції об'єктно -орієнтованого підходу у програмуванні.

При доборі задач корисно здійснити міжпредметні зв'язки з іншими дисциплінами. Так, зокрема, можна запропонувати учням задачі на створення класів деяких математичних та фізичних об'єктів.

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

а) введення даних про матеріальну точку з клавіатури;

б) виведення даних про матеріальну точку на екран;

в) обчислення центробіжного прискорення матеріальної точки.

У головній програмі створити два об'єкти матеріальних точок psetl та pset2, заповнити їх даними. Виконати тестування функцій класу для обох об'єктів. 2.   Створити клас, у якому оголошуються відомості про довжину та ширину деякого прямокутника (дійсні числа). Крім цього описати для класу такі функції:

а) введення даних про прямокутник з клавіатури;

б) виведення даних про прямокутник на екран;

в) обчислення площі прямокутника;

г) обчислення довжини діагоналі прямокутника;

д) обчислення периметра прямокутника.

У головній програмі створити два об'єкти прямокутників prl та pr2, заповнити їх даними. Обчислити кут нахилу діагоналей прямокутників до їх сторін. Обчислити периметри та площі прямокутників, вивести на екран значення їх полів.

Після вивчення учнями основ використання простих та складених (структурованих) типів даних у процесі створення програми та застосування лінійного порядку виконання команд у ній, потрібно розпочати ознайомлювати їх із вивченням та реалізацією мовою Сі вказівок розгалуження та повторення. Існують різні методичні підходи щодо питання з якої теми розпочинати вивчення - з розгалуження чи повторення. Класичним є підхід, при якому спочатку вивчають алгоритмічну структуру розгалуження, та лише після цього повторення. Але у працях Морзе Н.В. досить аргументовано обґрунтовується думка про те, що розпочинати вивчення потрібно з вказівок повторення. Кожна точка зору має право на існування, але у реальному процесі навчання все залежить від вчителя, від того, які аналогії він застосує при поясненні матеріалу, яку систему вправ пропонує для вироблення та закріплення умінь і навичок створення програм нелінійної структури. Поряд з цим, як для вказівок повторення, так і для вказівок розгалуження, є одне спільне поняття - "умова" або "логічний вираз". Тому можна припустити доцільність розпочати вивчення розгалужень та повторень саме з пояснення учням суті поняття умови. На цьому етапі учні мають усвідомити, що під логічним виразом розуміють такий вираз, який може набувати лише двох значень: істинно або хибно (один або нуль, так або ні). Вчитель має дібрати достатню кількість прикладів із повсякденного життя та інших навчальних предметів (зокрема з математики), які допоможуть учням засвоїти це поняття. Далі потрібно ознайомити учнів з поняттям простої умови, навести відповідні приклади. Після цього пояснити необхідність використання складених умов, з'ясувати правила їх створення та записування мовою Сі. Пояснити можливість використання законів Де Моргана для перетворення логічних виразів, що містять операцію заперечення.

Для вироблення навичок записування умов різних типів можна запропонувати учням такі вправи. 1.   Нижче наведені умови записати з використанням синтаксису мов Сі/Сі++.

а) значення змінної а не перевищує числа десять;

б) значення змінної х відмінне від нуля;

в) значення змінної а не більше від числа п'ять та одночасно з цим значення змінної с менше від числа вісім;

г) значення кожної із змінних а, х, у не перевищує суми значень двох інших змінних;

д) вік людини перевищує 18 років та не більший від 65 років;

е) неправильно, що заробітна плата людини менша від 100 грн. та більша від 5000 грн.; є) область визначення функції належить відрізкам від -5 до -1 та від 1 до 5;

ж) область визначення функції - уся числова пряма, крім точок відрізка від -1 до 1;з) швидкість тіла не може бути ві2д'ємною т2а перевищувати 500км/год або прискорення тіла знаходиться у межах від 0.5м/с до 2.7м/с ;

и) деяке число ділиться на 3 або на 5, але не ділиться на 7 або на 4.

2. Відомо, що а=3, х=7 та у=-2. З'ясувати, які з нижче наведених умов будуть істинними, а які хибними.

а) (а>х); е) (x+y>0 11 a*x<100);

б) (a+x<=2*y); є) (х>100 || y<0);

в) (a*x+y!=0); ж) !(x+y==5);

г) (x*x+y*y!=a); з) (2*x>3 && 3*y>0 || a!=0);

д) (a>1 && x<100); и) (2*x>3 && (3*y>0 || a!=0));

3. Користуючись законами Де Моргана, позбутися операції заперечення перед дужками нижче вказаних умов.

а) !(x>=0); е) !(a!=b || b==3 || c<=10)

б) !(a<10); є) !(x>5 && (y<=8 || y>=10));

в) !(a>=0 && a<=10); ж) !((a<5 || a>8) && b!=0);

г) !(x>y && y!=0 && z==5); з) !((a<3 || a>12) && (b<=1 || b>5));

д) !(x<=10 || x>100); и) !(((a<=3 || a>10) && b!=0) || c>=12);

На наступному етапі навчання, можна обрати для вивчення тему "Оператори розгалуження та вибору". :На питання "Чому вивчення розпочинається не з вказівок повторення?" відповідь така. При аналізуванні задач на використання вказівок повторення, були обрані задачі, у яких передбачається використання вказівок розгалуження. Тому, щоб не відбулося порушення принципу послідовності у навчанні, обрано саме такий порядок вивчення цих тем.

Оскільки у результаті вивчення попередньої теми в учнів має бути сформоване уявлення про поняття логічного виразу, то можна очікувати, що вивчення вказівок розгалуження не викликатиме у них особливих труднощів. Завдання вчителя полягає у доборі відповідних вправ та задач, наведенні аналогій, що сприятимуть засвоєнню матеріалу. Перші вправи можуть стосуватися ситуацій повсякденного життя. Мета таких вправ - шляхом побудови блок-схем алгоритмів їх розв'язування пояснити учням суть вказівки розгалуження. Наступним кроком має бути розв'язування задач з використанням простих умов (логічних виразів). Класичними тут є задачі на визначення більшого і меншого з двох, трьох чисел з та без урахування їх рівності. На прикладі деяких з цих задач можна пояснити учням поняття повного, неповного та вкладеного розгалужень.

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

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

До задач першої категорії можна віднести наступні задачі.

1. Користувач вказує власній вік. Якщо він менший 18-ти років, то вивести повідомлення "Ви неповнолітній", інакше повідомлення "Ви повнолітній".

2. Користувач вказує власний вік. Якщо він молодший 18 -ти років або старший 27 років, то вивести повідомлення "Ви не військовозобов'язаний", інакше вивести повідомлення "Ви військовозобов'язаний".

3. Створити програму, застосовуючи, яку користувач вказує номер свого зодіакального сузір'я (0 -овен, 1 - тілець, ..., 11 - риба) і отримує повідомлення на екран про стихію, до якої відноситься це сузір'я (вогонь, вода земля, повітря).

4. Користувач здійснює депозитний внесок деякої суми у банк. Якщо сума внеску не перевищує 500 грн., то процентна ставка за рік - 14%. Якщо сума внеску більше 500, але менше 2000 грн., то - 18%. Якщо ж сума внеску неменша 2000 грн., то - 20%. Підрахувати прибуток від внеску за один рік.

5. Користувач вказує ціле трицифрове число. З'ясувати, яких цифр у ньому більше - парних чи непарних.

6. Для  трьох  різних  значень  аргументів,  вказаних  користувачем,  обчислити  значення функції

1

'(х-2)(х + 3)

7. Користувач вказує значення довжин трьох відрізків. Якщо з них можна утворити трикутник, то знайти його площу і периметр, інакше вивести на екран значення довжини найбільшого відрізка. Задачі другої категорії можуть бути такі. 1.   Створити клас, що моделює трикутник на площині, заданий довжинами своїх сторін. Передбачити у класі функцію перевірки коректності значень сторін трикутника. Використати її при описуванні функцій введення даних про сторони трикутника, обчислення його площі та периметра. Крім цього у класі мають бути описані наступні функції:

1) виведення даних про сторони трикутника;

2) обчислення довжин висот, медіан та бісектрис.

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

1) трикутник із найбільшою площею

2) трикутник із найбільшим периметром

3) для трикутника із найменшим периметром обчислити значення довжин висоти, медіани, бісектриси.

2. Створити клас з даними про постачання товару на склад із наступним властивостями: унікальний номер товару; рік, місяць, день постачання, кількість одиниць товару, ціну за одиницю. У класі мають бути описані наступні функції:

1) введення даних про постачання (реалізувати перевірку коректності);

2) виведення даних про постачання;

3) обчислення загальної вартості постачання.

Страницы:
1  2  3 


Похожие статьи

С А Вернигоренко - Вивчення основ об'єктно орієнтованого програмування у класах фізико-математичного профілю