Навчання рішенню завдань з розділу Основи алгоритмізації та програмування

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Установа освіти
«Брестський державний університет імені А.С. Пушкіна »
Математичний факультет
Кафедра інформатики та прикладної математики
Курсова робота
Навчання рішенню завдань з розділу «Основи алгоритмізації та програмування»
Брест 2010

Зміст
Введення
1. Вибір технології програмування для навчального процесу
2. Можливості методичного забезпечення структурного програмування в школі
2.1 Принципи структурної алгоритмізації
2.2 Вибір підходу до викладання структурного програмування
2.3 Базовий набір структур і побудова алгоритмів на їх основі
3. Особливості мови програмування Pascal ABC
3.2 Типи даних у мові Pascal ABC
3.3 Структурний тип даних масив
4. Розробка методичного забезпечення для роботи зі структурним типом даних масив
3.1 Основні етапи розробки рішення задачі
3.2 Реалізація навчальних завдань по роботі з масивами
3.3 Опис ігрових моментів при вирішенні завдань
Висновок
Список використаних джерел
Додаток

Введення
Рішення завдання на комп'ютері неможливо без створення алгоритму. Вміння виконувати завдання, розробляти стратегію її вирішення, висувати і доводити гіпотези досвідченим шляхом, прогнозувати результати своєї діяльності, аналізувати і знаходити раціональні способи вирішення завдання шляхом оптимізації, деталізації створеного алгоритму дозволяють судити про рівень розвитку алгоритмічного мислення школярів. Тому необхідно особливу увагу приділяти алгоритмическому мислення підростаючого покоління.
Оскільки алгоритмічне мислення протягом життя розвивається під впливом зовнішніх чинників, то в процесі додаткового впливу можливо підвищення рівня його розвитку. Необхідність пошуку нових ефективних засобів розвитку алгоритмічного мислення у школярів зумовлена ​​його значущістю для подальшої самореалізації особистості в інформаційному суспільстві.
У методичній літературі з інформатики відзначені різні способи формування алгоритмічного мислення школярів: проведення систематичного і цілеспрямованого застосування ідей структурного підходу, підвищення рівня мотивованості завдань, постійна розумова робота.
Ефективним способом формування алгоритмічного мислення школярів старших класів у курсі «Основи алгоритмізації та програмування» є навчання побудові алгоритмів та їх використання при вирішенні великого класу задач.
Метою роботи є розробка елементів методичного забезпечення для навчання вирішення завдань з розділу «Основи алгоритмізації та програмування», зокрема створення цікавих методів побудови та використання алгоритмів на прикладі навчальних завдань по роботі зі структурного типом даних масив.
Об'єктом дослідження є процес навчання рішенню завдань.
Предметом дослідження є формування алгоритмічного мислення школярів під час навчання вирішення завдань з розділу «Основи алгоритмізації та програмування».
Курсова робота умовно складається з двох частин. У першій частині розкриваються теоретичні відомості про технології програмування в школі, принципах структурної алгоритмізації та виборі підходу до викладання програмування. Друга частина даної роботи присвячена розробці різних ігрових моментів, які можна використовувати при вивченні структурного типу даних масив.
Таким чином, різні форми роботи і підготовлене методичне забезпечення дозволить підвищити ефективність роботи учнів і рівень вмінь при вирішенні алгоритмічних задач. При цьому поєднання традиційних форм роботи та нових підходів у використанні стандартних завдань розширює цілеспрямованість і ефективність уроку.

1. Вибір технології програмування для навчального процесу
Вибираючи стратегію викладання інформатики в школі, необхідно враховувати, що завдання загальноосвітнього курсу - це у великій мірі вироблення певного стилю мислення, формування найбільш загальних навичок, умінь та уявлень, ніж освоєння тих чи інших конкретних мов і технічних засобів програмування.
У той же час такий курс повинен служити базою для подальшого професійного вивчення програмування у вищій школі або старших класах середньої школи (в рамках професійного навчання).
В даний час існують три найбільш поширених підходу до викладання програмування [10]:
1) викладання програмування як теоретичної дисципліни взагалі, без освоєння конкретних мов і систем;
2) викладання на основі спеціально розробленої мови, орієнтованого на навчання основним навичкам програмування;
3) вивчення одного або декількох мов програмування, широко використовуються при вирішенні наукових і господарських завдань.
Перший підхід видається найбільш логічним. Однак його практична реалізація наштовхується на серйозні труднощі, так як з відмовою від мови програмування не тільки втрачається можливість використовувати відповідний інструментарій, а й часто стає важко обгрунтувати необхідність його використання.
Другий підхід часто використовується при викладанні основ програмування в молодших класах середньої школи. Розроблені та спеціалізовані мови для цих цілей. У їх числі можна назвати Школяр, Рапіра (СРСР), SMR (Великобританія), LOGO (США). Вони гранично спрощені і розраховані на можливості молодшого школяра в області програмування. Такий підхід гарний при поглибленому вивченні інформатики в спеціалізованих класах при початковому етапі навчання.
Супротивники третього підходу стверджують, що він непридатний перш за все тому, що жоден з існуючих стандартних мов не відображає в досить чистому вигляді сучасний концептуальний запас програмування. Таке становище, взагалі кажучи, природно, так як всі ці мови розроблялися зі своїми цілями і кожен з них орієнтований на певну, більш-менш вузьку сферу застосування. Крім того, більшість реалізацій стандартних мов додано великою кількістю технічних деталей і складні у вивченні.
Найбільш прийнятним для загальноосвітньої школи є поєднання першого і третього підходів - навчання теоретичним основам програмування на базі стандартної мови. При цьому не обов'язково вдаватися в глибини мови. Учні, яких він зацікавить, можуть зробити це і самі. Найбільшу увагу слід приділити переходу від алгоритмічних структур до їх програмної реалізації на мові програмування.
У кожної мови є свої прихильники і противники, і кінцевий вибір визначається наявністю апаратних засобів і особистими нахилами викладача. Варто відзначити, що Паскаль спочатку створювався як навчальний мову, але з часом набув широкого поширення в якості стандартної мови.
З існуючих технологій програмування найбільш популярною і широко використовуваною є технологія структурного програмування "зверху - вниз". Її перевагою є те, що вона дозволяє сформувати в учнів алгоритмічний стиль мислення, необхідний при вивченні практично всього курсу інформатики. Отже, вибираючи мову програмування для шкільного курсу, потрібно орієнтуватися на один із структурних мов.

2. Можливості методичного забезпечення структурного програмування в школі
2.1 Принципи структурної алгоритмізації
На сьогоднішній день найпопулярнішою методикою програмування є структурне програмування "зверху - вниз". Ця технологія програмування являє собою процес покроково розбиття алгоритму на все більш дрібні частини з метою отримати такі елементи, для яких можна легко написати конкретні приписи [5].
Структурна алгоритмізація грунтується на двох принципах:
1) послідовна деталізація "зверху - вниз";
2) обмеженість базового набору структур для побудови алгоритмів будь-якого ступеня складності.
З принципів випливають вимоги структурного програмування:
1) програма повинна складатися дрібними кроками, таким чином, складне завдання розбивається на досить прості, легко сприймаються частини;
2) логіка програми повинна спиратися на мінімальну кількість досить простих базових керуючих структур.
Базовий набір структурної алгоритмізації містить лінійні, розгалужуються і циклічні структури.
Можна перерахувати основні властивості та гідності структурного програмування:
1) можливість подолання бар'єру складності програм;
2) можливість демонстрації правильності програм на різних етапах виконання завдання;
3) наочність програм;
4) простота модифікації програм.

2.2 Вибір підходу до викладання структурного програмування
При вирішенні завдань з використанням структурного програмування можна виділити два основних напрями [7, c. 78]:
1) "алгоритмічний" підхід полягає в наступному: схема розв'язання задачі описується на алгоритмічній мові (мові блок-схем алгоритмів) і потім переводиться в програмну реалізацію на конкретній мові програмування;
2) "програмний" підхід - опис рішення задачі відразу на конкретній мові програмування.
Відповідно з цими напрямами найчастіше і викладається програмування. Рівень розвитку сучасних систем програмування, завдяки добре організованим засобів налагодження, дозволяє створювати програми без використання першого підходу. Однак, програмний підхід вимагає від людини наявність певного стилю мислення і навичок роботи з мовою програмування. Очевидно, що фахівці, що мають нехай навіть невеликий досвід у програмуванні, користуються програмним підходом. Їм не обов'язково описувати рішення задачі на алгоритмічній мові, вони розробляють її в "думці". У викладанні такий підхід хороший при вивченні другої мови програмування, коли учні вже мають певну підготовку.
При вивченні структурного програмування на початковому етапі більше підходить "алгоритмічний" підхід. Він більш повно і послідовно дозволяє розкрити перехід від математичної форми опису завдання до її програмної реалізації і допомагає формувати у учнів алгоритмічний стиль мислення, необхідний при вирішенні завдань з використанням мов програмування та вивченні багатьох технічних і загальноінженерних дисциплін. Крім того, на основі алгоритмічного підходу можна вивчати відразу декілька мов програмування.
У силу перерахованих достоїнств найбільш вірним і методично правильним для викладання програмування на початковому етапі навчання є алгоритмічний підхід.
При вивченні програмування з використанням алгоритмічного підходу учні стикаються з двома проблемами [6, c. 86]:
1) опис і деталізація виконання завдання на алгоритмічній мові;
2) перехід від алгоритмічних конструкцій до конкретної мови програмування.
На розв'язання цих труднощів повинно бути направлено методичне забезпечення. У першому випадку це можуть бути схеми основних базових структур з описом їх роботи та особливостей використання при побудові алгоритмів. По-друге - таблиці переведення алгоритмічних конструкцій у конструкції мови програмування.
2.3 Базовий набір структур і побудова алгоритмів на їх основі
Теорія структурного програмування доводить, що алгоритм будь-якого ступеня складності можна побудувати за допомогою основного базового набору структур:
1) послідовна (лінійна) структура;
2) гілкуюються;
3) циклічна структура.
Найбільш простими для розуміння і використання є лінійні структури. Лінійним називається алгоритм (фрагмент алгоритму), в якому окремі приписи виконуються в природному порядку (в порядку запису) незалежно від значень вихідних даних і проміжних результатів [3, c. 9].
Алгоритм може бути реалізований в ЕОМ, якщо він містить тільки елементарні приписи. Такими елементарними, тобто не вимагають деталізації, можна вважати такі інструкції чи операції:
1) початок, кінець;
2) список даних;
3) введення, висновок;
4) обчислювальні операції, що реалізуються оператором присвоєння.
Не всякий алгоритм можна описати лише лінійними структурами. Часто для подальшої деталізації використовуються розгалужені структури, тобто такі, в яких у залежності від вихідних даних або проміжних результатів алгоритм реалізується по одному з декількох, заздалегідь обумовлених. Такі напрями часто називаються гілками.
Кожна гілка може бути будь-якого ступеня складності, а може взагалі не містити приписів, тобто бути виродженою. Вибір тієї чи іншої гілки здійснюється в залежності від результату перевірки умови з конкретними даними. У кожному випадку алгоритм реалізується тільки за однієї гілки, а виконання інших виключається.
Реалізація на ЕОМ лінійних і розгалужених програм не дає великого виграшу в часі в порівнянні, наприклад, з використанням простого калькулятора. Ця перевага обчислювальної машини стає очевидним лише при вирішенні тих завдань, де виникає необхідність багаторазового повторення одних і тих самих фрагментів алгоритмів [2].
У циклічних алгоритмах виконання деяких операторів (груп операторів) здійснюється багаторазово з одними і тими ж або модифікованими даними.
Циклічні алгоритми часто називають циклами. Залежно від способу організації числа повторень розрізняють три типи циклів:
1) цикл з заданим умовою продовження роботи (цикл-поки що);
2) цикл із заданим умовою закінчення роботи (цикл-до);
3) цикл із заданим умовою повторень роботи (цикл з параметром).
Тіло циклу з заданим умовою продовження роботи може включати в себе групу операторів будь-якого ступеня складності. При виконанні умови продовження роботи виконується тіло циклу, якщо ж умова не виконується, то робота циклічної структури закінчується і починається виконання наступної структури.
Структура цикл-поки передбачає варіант, коли тіло циклу не виконується жодного разу. Таке можливо, якщо умова, що стоїть на початку циклу, відразу ж не виконується. Коли на практиці виникає необхідність використовувати структуру, в якої тіло циклу виконується хоча б один раз, то в цьому випадку застосовується структура циклу-до.
За допомогою такої структури зазвичай складають алгоритми ітераційних обчислювальних процесів, тобто таких, в яких для визначення подальшого значення змінної використовується її попереднє значення. Вихід з конструкції цикл-до здійснюється після досягнення параметром необхідного значення.
Розглянуті типи циклічних структур мають один недолік: при помилковому завданні вихідних даних може відбутися зациклення, тобто виникає ситуація, коли відбувається нескінченне повторення тіла циклу.
У практичних інженерних задачах зазвичай відомі початкові значення змінних величин, закон зміни і кінцеве число повторень. Змінна, зміна якої організується в ході реалізації циклу, називається параметром циклу або керуючої змінної. Алгоритм роботи циклу із заданим числом повторень є з'єднання лінійної структури (початок циклу), структури цикл-поки (умова в ньому замінено на протилежне) і знову лінійної (послідовної) структури в тілі циклу.
Таким чином, за допомогою базового набору структур можна побудувати алгоритм будь-якого ступеня складності. Освоївши принципи та засоби структурної алгоритмізації, яких навчають, повинні вміти реалізувати їх на конкретній мові програмування. Отже, основною концепцією у вивченні ними будь-якої мови програмування буде методика перекладу основних базових структур в конструкції цієї мови.

3. Особливості мови програмування Pascal ABC
3.1 Типи даних у мові Pascal ABC
У мові Pascal ABC будь-яка змінна характеризується своїм типом. Під типом в даному випадку розуміється безліч значень, які може приймати змінна і, як наслідок, безліч операцій, допустимих над змінної.
Паскаль є мовою жорсткої типізації. Це означає, що тип змінної визначається при її описі і не може бути змінений. Змінна може брати участь тільки в операціях, визначених її типом. Такий підхід сприяє більшій акуратності і відповідальності при складанні програми, робить їх непідвладними автоматичної (при компіляції) перевірці на коректність і в кінцевому підсумку призводить до більш високої надійності створюваних програм [1, c. 237].
Паскаль має розвинену і витончену систему типів. На основі невеликого числа стандартних типів програміст може конструювати дані довільної структури і складності, адекватно відображають інформаційну природу задачі.
Паскаль успадковує систему типів еталонного мови, істотно розширюючи її як в сенсі додавання очевидних практично корисних типів (наприклад, рядкових), так і введенням принципово нових понять, які відкривають нетрадиційні можливості в програмуванні (зокрема, об'єктів).
Базовими в системі типів є прості типи. Складові типи за певними правилами будуються з простих. Посилальні типи утворюються з будь-яких інших типів. Складові і посилальні типи можна вважати деякими правилами для побудови більш складних типів з простіших. Обмежені типи формуються з простих типів шляхом звуження їх області допустимих значень. Первинними в ієрархії типів є стандартні скалярні типи, що представляють традиційні в мовах програмування безлічі значень (цілі, речові, символьні, Булевського) та їх модифікації, що враховують архітектурні особливості апаратури.
Процедурні типи в деякому відношенні розширюють традиційне поняття підпрограм, дозволяючи звертатися з підпрограмами як зі змінними [3, c. 8].
Дещо осібно стоять об'єктні типи, або об'єкти. Будучи, з формальної точки зору, узагальненням комбінованих типів (записів), вони дозволяють радикально змінити підхід до розробки програм, пропонуючи так званий об'єктно-орієнтований стиль програмування.
Прості типи: порядкові, речові, дата-час.
Порядковий тип у свою чергу ділиться на:
1. цілі типи;
2. логічний тип або булевський тип;
3. символьний тип;
4. перераховуються типи;
5. обмежені типи або тип-діапазон.
На основі стандартних скалярних типів є можливість утворювати власні скалярні типи. Є два способи породження нових скалярних типів - обмежені і перелічувані.
Будь-який скалярний тип характеризується безліччю його різних значень, серед яких встановлено лінійний порядок. Всі скалярні типи, крім речових, називаються дискретними.
Складові типи: структуровані типи, покажчики, рядки, процедурні, об'єкти, класи, варіанти.
Структуровані типи у свою чергу діляться на:
1. регулярні типи (масиви);
2. комбіновані типи (записи);
3. множинні типи;
4. файлові типи;
Прості типи, описані вище, визначають різні множини атомарних (нероздільних) значень. Складові, або структурні типи, на відміну від простих, задають безлічі «складних» значень; кожне значення з такого безлічі утворює деяку сукупність кількох значень іншого типу (або інших типів). Можна сказати, що складові типи визначають певний спосіб утворення нових типів з вже наявних, причому окремі елементи складових значень можуть мати будь-який, в тому числі складовою, тип.
Таким чином, Паскаль допускає утворення структур даних довільної складності, дозволяючи тим самим досягти адекватного уявлення у програмі тих даних, з якими вона оперує.
3.2 Структурний тип даних масив
Кожне значення регулярного типу складається з фіксованого числа елементів одного й того самого базового типу. Такий спосіб утворення нових значень (фіксоване число однотипних компонент) дозволяє позначати значення цих типів одним (груповим) ім'ям. Об'єкт регулярного типу часто називають масивом, а групове ім'я використовується в якості імені цього масиву. Доступ до окремих елементів масивів організовується за допомогою вказівки імені масиву і порядкового номера (індексу) необхідного елемента.
Для коректного визначення регулярного типу необхідно задати дві характеристики: тип елементів масиву, а також кількість і «спосіб нумерування» елементів. Останні характеристики задаються за допомогою вказівки типу індексу [1, c. 259].
Визначення масиву має наступний загальний вигляд:

Type A = array [T1] of T2;
Тут Array, of - службові слова; Т1 - тип індексу масиву; Т2 - тип компонент масиву.
Надалі ідентифікатор цього типу може бути використаний в описі змінних.
В якості типу індексу може виступати будь-який дискретний тип, крім LongInt і обмежених типів, побудованих з типу LongInt, зокрема, допустимі обмежені і перелічувані. Елементами масиву можуть бути змінні будь-якого типу.
Нижче наведені описи різних масивів:
 
Type
M1 = array [1 .. 100] of real;
M2 = array [char] of boolean;
Matrix = array [1 .. 10] of array [1 .. 20] of integer;
Database = array [1 .. MaxF] of file of Person;
Var
Vector: M1;
Sym_Table: M2;
Arr1, Arr2: Matrix;
S: array [Red, Yellow, Green] of boolean;
Число елементів у масиві завжди повинно бути фіксовано. Для завдання кількості елементів масиву використовується тип; число елементів визначається кількістю можливих значень зазначеного типу, що відрізняє мову Паскаль від багатьох інших мов, у яких розмір масиву задається або цілим числом (або виразом цілого типу), або діапазоном цілих чисел. Це надає Паскалю додаткову гнучкість, дозволяючи «нумерувати» елементи масиву не тільки цілими числами, а й значеннями довільного цілого типу.
Як елементи масиву можуть виступати значення будь-якого типу; зокрема, ними можуть бути значення будь-яких складових типів, наприклад, масиви:
 
Var
V2: array [1 .. 10] of array [1 .. 20] of byte;
Таку змінну можна трактувати двояко: як масив, що складається з декількох масивів, або як один двовимірний масив (матрицю). Для скорочення запису в подібних випадках можна використовувати еквівалентну форму визначення регулярних типів, де у квадратних дужках вказується список типів індексів, розділених комами, той же масив можна описати:
 
Var
V2: array [1 .. 10, 1 .. 20] of of byte;
Кількість індексів у визначенні (тобто розмірність масиву) у мові не обмежується.
Паскаль допускає єдине можливе дію над масивом в цілому: використання його в операторі присвоювання, наприклад, Vect1: = Vect2; причому типи обох масивів повинні бути еквівалентні.
Елемент масиву вважається змінної; він може отримувати значення (наприклад, в операторі присвоювання), а також брати участь у виразах, де він представляє значення, вміщене у відповідний елемент даного масиву [2]. Асортимент операцій над елементами масиву повністю визначається типом цих елементів (базовим типом масиву).

4. Розробка методичного забезпечення для роботи зі структурним типом даних масив
4.1 Основні етапи розробки рішення задачі
Щоб будь-яку нову задачу вирішити з застосуванням комп'ютера, необхідно попередньо створити відповідну комп'ютерну програму. Технологічний процес розробки програми вирішення задачі включає наступні етапи [5]:
1) побудова інформаційної моделі задачі;
2) розробка алгоритму рішення задачі;
3) написання програми;
4) налагодження програми.
Інформаційна модель задачі - це сукупність знань і даних, що містять всю необхідну інформацію про об'єкт або процес, щодо якого ця задача сформульована. Найважливішою складовою інформаційної моделі є метод рішення, тобто конкретні співвідношення, що зв'язують вихідні дані завдання з потрібними результатами. Окремим випадком інформаційної моделі є математична модель.
Розробка алгоритму - представлення процесу розв'язання задачі у вигляді послідовності певних команд, виконання яких забезпечує одержання потрібних результатів.
Написання програми - запис алгоритму мовою програмування.
Налагодження програми реалізується після введення її в комп'ютер і полягає у виявленні та усуненні в ній синтаксичних і семантичних помилок.
Готова налагоджена програма передається користувачеві, який в будь-який зручний для себе час може застосувати її для вирішення відповідного завдання на реальних вихідних даних.

4.2 Реалізація навчальних завдань по роботі з масивами
При вирішенні навчальних завдань учням належить навчитися виконувати раю найбільш поширених дій з масивами [9, с. 133]:
1) опис;
2) заповнення масиву випадковими числами;
3) заповнення масиву з клавіатури;
4) висновок на екран;
5) пошук максимального елемента;
6) обчислення суми всіх елементів масиву;
7) обчислення кількості позитивних елементів;
8) вилучення елементів з масиву;
9) додавання елементів в масив;
10) заміна елементів у масиві та інші.
Заповнення масиву випадковими числами і висновок масиву на екран. Розглянемо завдання, в якій потрібно за допомогою датчика випадкових чисел створити одновимірний масив і вивести його на екран.
 
Program Massiv1;
Uses Crt;
Const N = 10;
Var A: array [1 .. N] of integer; i: integer;
Begin
Randomize;
For i: = 1 to N do A [i]: = Random (100);
ClrScr;
Writeln ('Введений масив:');
For i: = 1 to N do write (A [i]: 4);
Writeln;
Readln;
End.
У даному прикладі ми заповнили масив випадковими числами від 0 до 99, що забезпечила нам функція random (100). Якщо нам потрібно отримати випадкові числа в іншому діапазоні, наприклад, не від нуля, розрахунок потрібно зробити такий: функція random (N) видасть N різних чисел від 0 до N-1. Якщо нам потрібно, щоб найменшим числом діапазону було K, необхідно додати K до random (N). Найбільше число, яке видаватиме в цьому випадку формула random (N) + K, буде найбільшим числом діапазону.
Функція random без аргументу генерує випадкові речові числа на проміжку [0; 1). Якщо випадкові речові числа повинні належати іншому проміжку, наприклад, [3, 4), то значення елементу задається виразом A [i]: = random +3 [4, с. 29].
Заповнення масиву з клавіатури. Заповнимо одновимірний масив шляхом введення з клавіатури цілих чисел і виведемо його елементи на екран з протилежним знаком.
 
Program Massiv2;
Uses Crt;
Const N = 10;
Type Mas: array [1 .. N] of integer;
Var Line: Mas; i: integer;
Begin
For i: = 1 to N do
Begin
Write ('Введіть елемент з індексом', i,':');
Readln (Line [i])
End;
For i: = 1 to N do Write (-Line [i]: 5);
Writeln;
Readln
End.
 
Пошук максимального елемента масиву. Пошук максимуму - типова задача для великої кількості даних. Наприклад, у списку успішності учнів класу знайти самого старанного. Інакше кажучи, потрібно вибрати найбільше значення середнього балу і вказати прізвище учня.
 
Program Maximum;
Const N = 10;
Type Mas = array [1 .. N] of integer;
Var A: Mas; i, Max, Imax: integer;
Begin
Randomize;
For i: = 1 to N do
Begin
A [i]: = -50 + Random (101);
Write (A [i]: 5)
End.
Writeln;
Imax: = 1; Max: = A [1];
For i: = 2 to N do
If Max <A [i] then
Max: = A [i]; Imax: = i
End;
Writeln ('Максимальний елемент у масиві =', Max: 5);
WriteLN ('Його індекс =', Imax: 5);
Readln;
End.

Зауважимо, що в процесі пошуку максимуму не обов'язково зберігати обидві величини - номер максимуму і його значення. Досить зберігати одну, в залежності від поставленої задачі. Якщо індекс максимуму не потрібно знати, достатньо буде змінної Max. Якщо потрібен тільки номер - достатньо IMax. Тонкість полягає в тому, що якщо потрібно і те і інше, все одно достатньо знайти тільки IMax, адже значення максимуму легко може бути отримано за його індексом (A [IMax]).
Обчислення кількості позитивних елементів. Підрахунок суми елементів, які задовольняють будь-то умові, здійснюється за принципом перебору всіх елементів масиву (цикл for) і перевірки для кожного елемента виконання умови (оператор if). Якщо умова виконана, додамо елемент до суми (S: = S + A [i]).
 
Program PositivSumm;
Const N = 10;
Type Mas = array [1 .. N] of integer;
Var A: Mas; i, S: integer;
Begin
Randomize;
For i: = 1 to N do
Begin
A [i]: = -100 + random (201);
Write (A [i]: 5)
End;
Writeln;
S = 0;
For i: = 1 to N do
If A [i]> 0 then S: = S + A [i];
Writeln ('Сума позитивних елементів =', S);
Readln
End.
 
Видалення кількох елементів. Дано число n, ряд з n чисел та число х. Необхідно знайти і видалити всі елементи зі значенням х, якщо такі є в ряду. Частина, що залишилася зсувається вліво, зберігаючи порядок чисел.
 
Program Udalenie;
Var n, i, Sdv, x: integer;
Var A: array [1 .. 100] of integer;
Begin
Writeln ('Видалити числа:');
Readln (n);
(* Введення масиву A *)
Readln (x);
Sdv: = 0; i: = 1;
While i <= n do
Begin
If A [i] = x then Sdv: = Sdv +1
Else A [i-Sdv]: = A [i];
i: = i +1
End;
n: = n-Sdv;
(* Виведення масиву А *)
End.
В алгоритмі по черзі проглядаються всі елементи масиву, починаючи з першого. Елементи масиву діляться на два види: видаляються і не видаляється. Якщо в черговий клітці масиву видаляється елемент, тоді значення змінної Sdv збільшується на одиницю. Таким чином у змінній Sdv підраховується число видаляються елементів.
Якщо в розглянутій клітці знаходиться не видаляється елемент, то він зсувається на Sdv позицій вліво, як і визначено правилом.
Приєднання масиву до масиву. Дано число m й один ряд з m чисел. Потім дано число n і два ряди по n чисел. Потрібно сформувати єдиний ряд чисел. Новий ряд виходить при дописування першого ряду в кінець другого. Довжина ряду збільшується однією командою відразу на m.
 
Program Prisoedinenie;
Var n, m, i: integer;
Var A, B: array [1 .. 100] of integer;
Begin
Writeln ('Об'єднання рядів:');
Readln (m);
(* Введення масиву В з m елементів *)
Readln (n);
(* Введення масиву A *)
i: = 1;
While i <= m do
Begin
A [i + n]: = B [i];
i: = i +1
End;
n: = n + m;
(* Виведення масиву А *)
End.
Перший ряд запам'ятовується у допоміжному масиві В, а довжина ряду - у змінній m. Потім в масив А заноситися другий ряд. Тепер досить дописати ряд з масиву У елемент за елементом в продовження масиву А.
Перестановка сусідів. Нехай дано число n і два ряди по n чисел в кожному. Потрібно кожен елемент ряду, що стоїть на парному позиції, поміняти з попереднім. Виконання циклу за цим правилом має починатися з другого елементу ряду.
 
Program Perestanovka;
Var n, i, Buf: integer;
Var A: array [1 .. 100] of integer;
Begin
Writeln ('Обмін чисел:');
Readln (n);
(* Введення масиву А *)
i: = 2;
While i <= n do
Begin
Buf: = A [i];
A [i]: = A [i-1];
A [i-1]: = Buf;
i: = i +2
End;
(* Виведення масиву А *)
End.
У задачі вихідний ряд чисел запам'ятовується в масиві А. Потім числа ряду переставляються у масиві А відповідно до умовою задачі. Коли ряд повністю побудований, вміст масиву А виводиться на екран.
Злиття двох масивів. Нехай дано число n і два ряди по n чисел в кожному. Необхідно побудувати ряд, у якому перший елемент дорівнює більшій з перших елементів вихідних рядів. Другий елемент - більшим з других елементів вихідних рядів і так для всіх елементів. Вивести вийшов ряд.
Вихідні дані завдання - два ряди чисел. Розмістити ці числа можна в двох масивах: в А - перший ряд, а у В - другий ряд. Обчислюючи елемент за елементом, будемо виводити ці числа на екран [8, c. 67].
 
Program Sliyanie;
Var n, i, Max: integer;
Var A, B: array [1 .. 100] of integer;
Begin
Writeln ('Вибір на парах:');
Readln (n);
(* Введення масиву А *)
(* Введення масиву В *)
i: = 1;
While i <= n do
Begin
If A [i]> B [i] then Max: = A [i]
Else Max: = B [i];
Write (Max,''); i: = i +1
End
End.
 
Сортування вибором. Сортування вибором впорядковує ряд з n чисел за зростанням з використанням пошуку найбільшого числа ряду. Серед всіх елементів масиву від A [1] до A [n] знаходимо наіболшій і міняємо його місцями з останнім. Потім точно так само чинимо з рядом від A [1] до A [n-1]. Процес завершується, коли дійдемо до ряду з одного елемента A [1] [8, c. 73].

Program SortVibor;
Var n, i, j, Max, Pos: integer;
Var A: array [1 .. 100] of integer;
Begin
Writeln ('Сортування чисел:');
Readln (n);
(* Введення масиву А *)
j: = n;
While j> 1 do
Begin
If A [i]> Max then
Begin
Max: = A [i]; Pos: = i
End;
i: = i +1;
End;
A [Pos]: = A [j]; A [j]: = Max;
j: = j-1;
End;
(* Виведення масиву А *)
End.
У програмі мінлива j вказує на останній елемент ще невідсортованої частині ряду. У процесі пошуку найбільший елемент серед чисел від A [1] до A [j] запам'ятовується у змінній Max, а номер клітини - у змінній Pos. Потім знайдений елемент міняється місцями з елементом A [j]. Процес пошуку та обміну виконується для значень j від n до 2 послідовно, поступово зменшуючи довжину невідсортованої частині ряду.

4.3 Опис ігрових моментів при вирішенні завдань
При вивченні розділу інформатики «Алгоритмізація та програмування» написання робочої програми є кінцевою метою застосування ігрових методів. Так, вивчення структурного типу даних масив відбувається більш успішно, якщо використовувати прийом поетапного ускладнення завдання. Наприклад, послідовна розробка алгоритмів для задач на пошук максимуму (мінімуму), заміну зазначеного елемента, перестановка всіх елементів масиву в зазначеному порядку сприяє розвитку алгоритмічного мислення і правильного складання алгоритму на основі вже наявних знань. При цьому проходження кожного етапу написання програми супроводжується певним заохоченням або правом переходу до наступного етапу. У процесі роботи учні заробляють бали, очки, бонуси, які підсумовуються і знаходять своє відображення у відмітках.
Плідність праці учнів на уроці залежить від обраної форми роботи. Слід комбінувати самостійну і колективну роботу учнів для здійснення взаємодопомоги і швидкості засвоєння матеріалу. Гра повинна бути цікавою і охоплювати всіх учнів.
Гра «Група розробників». Усі учні діляться на три групи. Кожна група отримує завдання написати алгоритм знаходження максимуму (мінімуму), алгоритм, сортують елементи масиву за зростанням (за спаданням), алгоритм, суммирующий елементи масиву. Після написання алгоритмів групи учнів замінюють одного зі своїх розробників представником іншої групи і поєднують два складених алгоритму. Після другого обміну представниками в кожній групі мають вийти однакові алгоритми, що виконують три поставлені спочатку завдання.
Крім того, принцип роботи алгоритму на перестановку елементів масиву в порядку зростання, пошуку максимального (мінімального) елемента зручно продемонструвати за допомогою рольового виконання алгоритму, прикладом якого є гра «Сценка».
Гра «Сценка». Вибирається N кількість учнів в залежності від кількості змінних в алгоритмі. Кожному учневі лунає відповідна роль і його початкове значення: мінлива Лічильник (1 учень), комірки масиву (кількість учнів залежить від розмірності масиву), мінлива Максимум (1 учень), мінлива Мінімум (1 учень), мінлива Сума (1 учень), а також учень, який записує на дошці код програми. Завдання: знайти суму максимального і мінімального елементів масиву. При цьому на дошці чертится масив з N елементів, відводиться місце для запису значення змінних. Далі учні програють алгоритм за ролями: якщо змінна лічильник збільшує своє значення, то учень, який відповідає за відповідну клітинку масиву, повинен сказати значення свого осередку або порівняти його зі значенням сусідньої комірки і змінити його, якщо це відповідає алгоритму розв'язання задачі, який один з учнів записує на дошці. При цьому за кожну правильну крок нараховується бонус, а за невірний віднімається.
Важливою складовою успішного рішення алгоритмічних завдань є частково самостійна робота учнів з можливістю перевірити результати своєї діяльності.
Гра «Равлик». Заздалегідь готуватися плакат із зображенням порожнього масиву у вигляді спіралі розмірністю N. Учні по черзі кидають кубики, при цьому випали числа послідовно записують у комірки масиву. Коли масив буде заповнений, учні отримують завдання відсортувати масив в порядку зростання (зменшення) таким чином, щоб кожне число повторювалося в масиві тільки один раз. При цьому після написання кожного елемента програми один з учнів перевіряє його, вносячи при цьому потрібні корективи в малюнок на плакаті.
Залежність якісного результату спільної роботи учнів від ефективної праці кожного учня позитивно впливає на відповідальний підхід учнів до вирішення алгоритмічної завдання.
Гра «Японський малюнок». На дошці є поле, розмірністю N × M клітин. Кожен учень отримує багатовимірний масив, який містить значення тільки 1 і 0. Завдання кожного учня полягає в тому, щоб скласти вірний алгоритму підрахунку кількості нулів і одиниць у своєму масиві, і замалювати на дошці клітку, координати якої по горизонталі і по вертикалі рівні відповідно до кількості нулів і одиниць у своєму масиві. Якщо всі підрахунки будуть виконані правильно, то з замальованих клітин на дошці складеться певний малюнок.
Мотиваційну складову вирішення будь-якої алгоритмічної завдання визначає правильно поставлена ​​мета виконання роботи та її подальше застосування.
Гра «Спортлото». Учні отримують завдання написати алгоритм, який би обнуляли ті стоки багатовимірного масиву N × M, які містять вказане число. Потім кожен учень отримує свій лотерейний квиток (файл, що містить багатовимірний масив N × M). Учні по черзі витягають бочонки з номерами, які послідовно вводять в написану раніше програму. Таким чином, переможцем стане той учень, у якого раніше за інших будуть викреслені всі рядки його лотерейного квитка, тобто обнулятиметься всі рядки багатовимірного масиву.
Розроблені ігри «Група розробників», «Сценка», «Равлик», «Японський малюнок», «Спортлото» можуть застосовуватися при вивченні структурного типу даних масив (додаток A).
Таким чином, застосування ігрових форм у навчанні основам алгоритмізації і програмування сприяє підвищенню ефективності традиційних методів навчання за рахунок посилення частки дослідних, інформаційно-пошукових методів роботи з інформацією, а також стимулювання пізнавального інтересу і творчої активності учнів.

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

Список використаних джерел
1. Бочкін, А.І. Методика викладання інформатики / А.І. Бочкін. - Мінськ: Обчислюємо. школа, 1998. - 431 с.
2. Недільна комп'ютерна школа [Електронний ресурс] / Система программіованія Pascal ABC. - Режим доступу: http://sunschool.math.rsu.ru. - Дата доступу: 25.02.2010.
3. Єрьомін, О.Ф. Методичний посібник з програмування на мові Pascal ABC / О. Ф. Єрьомін. - М.: Моздок, 2009. - 49 с.
4. Заборовський, Г.А. Інформатика: уч. посібник для 9-го кл. / Г. А. Заборовський, А.І. Лапо, А.Є. Пупцев. - Мінськ: Нар. Асвета, 2009. - 191 с.
5. Інформаційний канал Sub@cribe.ru [Електронний ресурс] / Програмування на Паскалі. Нова методика навчання. - Режим доступу: http://subscribe.ru. - Дата доступу: 16.03.2010.
6. Лапчик, М.П. Методика викладання інформатики / М. П. Лапчик, І.Г. Семакін, Є.К. Хеннер. - М.: Изд. центр «Академія», 2001. - 624 с.
7. Малєв, В.В. Загальна методика викладання інформатики / В. В. Малєв. - Воронеж: ВДПУ, 2005. - 271 с.
8. Міняйлова, Є.Л. Інформатика: 9 клас: навчальний курс / Є. Л. Міняйлова, Д. А. Вербовик, Н. Р. Коледов. - Мінськ: Аверсев, 2009. - 172 с.
9. Ушаков, Д.М. Паскаль для школярів / Д.М. Ушаков, Т.А. Юркова. - СПб.: Пітер, 2010. - 256 с.
10. Фестиваль педагогічних ідей «Відкритий урок» [Електронний ресурс] / «Алгоритмізація та програмування» у базовому курсі школи. - Режим доступу: http://festival.1september.ru. - Дата доступу: 26.02.2010.
Додати в блог або на сайт

Цей текст може містити помилки.

Педагогіка | Курсова
165.3кб. | скачати


Схожі роботи:
Навчання школярів рішенню складових завдань
Методика навчання рішенню комбінаторних завдань
Основи програмування та алгоритмізації 2
Основи алгоритмізації та програмування
Програмування та основи алгоритмізації 2
Програмування та основи алгоритмізації
Навчання рішенню завдань на відсотки в курсі алгебри основної школи
Методика навчання рішенню текстових задач алгебраїчним методом
Методика навчання рішенню сюжетних задач в курсі математики 5-6 класів
© Усі права захищені
написати до нас