Лекция 12. Методика изучения содержательной алгоритмической линии
Лекция 1. Методика изучения содержательной алгоритмической линии
Определение и свойства алгоритма.
Методика обучения алгоритмизации на учебных исполнителях, работающих «в обстановке»
Методические проблемы изучения алгоритмов работы с величинами
Элементы программирования в базовом курсе информатики
Методические рекомендации по изучению языков программирования
Язык логики и его место в базовом курсе
В проекте стандарта и обязательном минимуме по информатике содержание алгоритмической линии определяется через следующий перечень понятий: алгоритм, свойства алгоритмов, исполнители алгоритмов, система команд исполнителя; формальное исполнение алгоритмов; основные алгоритмические конструкции; вспомогательные алгоритмы.
Изучение алгоритмизации в школьной информатике может иметь два целевых аспекта: первый — развивающий аспект, под которым понимается развитие алгоритмического (еще говорят — операционного) мышления учащихся; второй — программистский аспект. Составление программы для ЭВМ начинается с построения алгоритма; важнейшим качеством профессионального программиста является развитое алгоритмическое мышление. Если в первом школьном учебнике информатики [15] в изучении алгоритмизации превалировал второй, программистский, аспект, то в дальнейшем стала больше подчеркиваться развивающая роль данной темы.
Вопрос о месте и объеме темы программирования в базовом курсе остается дискуссионным. В различных версиях обязательного минимума этот вопрос решался по-разному. Здесь также можно говорить о двух целевых аспектах, с которыми связано изучение программирования в школе. Первый аспект связан с усилением фундаментальной компоненты курса информатики. Ученикам дается представление о том, что такое языки программирования, что представляет собой программа на языках программирования высокого уровня, как создается программа в среде современной системы программирования. Получив представление о языке машинных команд на материале учебных компьютеров и о языках высокого уровня, ученики будут осознанно воспринимать понятие «трансляция».
Второй аспект носит профориентационный характер. Профессия программиста в наше время является достаточно распространенной и престижной. Изучение программирования в рамках школьного курса позволяет ученикам испытать свои способности к такого рода деятельности. Безусловно, в большей степени эту задачу может решать профильный курс информатики в старших классах.
Определение и свойства алгоритма. В учебнике [6] дано следующее определение алгоритма: «Алгоритм — понятное и точное предписание исполнителю выполнить конечную последовательность команд, приводящих от исходных данных к искомому результату».
В этом определении содержатся основные понятия, связанные с алгоритмом и его главные свойства. Взаимосвязь понятий отражена на рис 20.1.
Рис. 20.1. Схема функционирования исполнителя алгоритмов
Центральным объектом в этой системе является ИСПОЛНИТЕЛЬ алгоритмов. Исполнитель — это тот объект (или субъект), для управления которым составляется алгоритм. Основной характеристикой исполнителя, с точки зрения управления, является система команд исполнителя (СКИ). Это конечное множество команд, которые понимает исполнитель, т.е. умеет их выполнять.
Для выполнения всякой работы, решения поставленной задачи исполнитель на входе получает алгоритм и исходные данные, а на выходе получаются требуемые результаты. Алгоритм может включать в себя только команды, входящие в СКИ. Это требование к алгоритму называется свойством понятности.
Другое свойство алгоритма — точность. Всякая команда должна быть сформулирована так, чтобы определить однозначное действие исполнителя. Например, кулинарный рецепт можно рассматривать как алгоритм для исполнителя-повара по приготовлению блюда. Но если одним из пунктов в нем будет написано: «Положить несколько ложек сахара», то это пример неточной команды. Сколько ложек? каких ложек (чайных, столовых)? Каждый повар может это понимать по-своему, и результаты будут разными. Пример точной команды: «Положить 2 столовые ложки сахара».
Работа исполнителя состоит в последовательном формальном выполнении команд алгоритма. Отсюда следует вывод о возможности создания автоматических исполнителей. В частности, таким автоматическим исполнителем алгоритмов по обработке информации является компьютер.
Еще одно свойство, которое отражено в определении алгоритма — конечность. Оно формулируется так: исполнение алгоритма и, следовательно, получение искомого результата должно завершиться за конечное число шагов. Здесь под шагом подразумевается выполнение отдельной команды. Это свойство является предупреждением ситуации, которую программисты называют зацикливанием. Бесконечно исполняемый алгоритм безрезультатен. Поэтому свойство конечности называют еще результативностью алгоритма.
В учебной литературе встречается описание еще двух свойств алгоритмов: дискретности и массовости. «Дискретность состоит в том, что команды алгоритма выполняются последовательно, с точной фиксацией моментов окончания выполнения одной команды и начала выполнения следующей». Однако (с нашей точки зрения) это свойство можно не выделять, поскольку требование последовательного выполнения команд заложено в определении алгоритма.
«Свойство массовости выражается в том, что алгоритм единым образом применяется к любой конкретной формулировке задачи, для решения которой он разработан». Другими словами, это можно назвать универсальностью алгоритма по отношению к исходным данным решаемой задачи. Заметим, что данное свойство не является необходимым свойством алгоритма, а скорее определяет качество алгоритма: универсальный алгоритм лучше неуниверсального (алгоритм решения частной задачи — тоже алгоритм!).
Основные типы учебных алгоритмических задач. Для закрепления основных понятий, связанных с определением алгоритма, полезно рассмотреть с учениками несколько заданий следующего содержания:
1) выполнить роль исполнителя: дан алгоритм, формально исполнить его;
2) определить исполнителя и систему команд для данного вида работы;
3) в рамках данной системы команд построить алгоритм;
4) определить необходимый набор исходных данных для решения задачи.
О способах описания алгоритмов. Традиционно в школьной информатике используются два способа описания алгоритмов: блок-схемы и учебный алгоритмический язык. В базовом курсе информатики необходимо использовать обе эти формы. Основное достоинство блок-схем — наглядность алгоритмической структуры. Однако это качество проявляется лишь в том случае, если изображение блок-схемы происходит стандартным способом. Основным следствием освоения учениками структурной методики должно стать умение при построении алгоритмов «мыслить структурами». Например, исходя из условия задачи, делать следующие выводы: «Алгоритм решения данной задачи будет представлять собой два вложенных цикла: или — цикл с вложенным ветвлением, или — два последовательных цикла» и т.п. Структурно изображенные блок-схемы (рис. 9.1) помогают такому видению алгоритма.
Вот, например, две блок-схемы: а — пример структурного изображения алгоритма; б — пример неструктурного изображения алгоритма
На первый взгляд трудно понять, что на двух этих блок-схемах изображен один и тот же алгоритм. Из схемы а четко видна его структура: цикл-пока с вложенным ветвлением. В схеме б довольно сложно усмотреть эту же структуру. Блок-схема а нарисована стандартно, блок-схема б — произвольно.
Рис. 20.1. Блок-схемы:
Алгоритмический язык — это текстовая форма описания алгоритма. Она ближе к языкам программирования, чем блок-схемы. Однако это еще не язык программирования. Поэтому строгого синтаксиса в алгоритмическом языке нет. Для структурирования текста алгоритма на АЯ используются строчные отступы. При этом соблюдается следующий принцип: все конструкции одного уровня вложенности записываются на одном вертикальном уровне; вложенные конструкции смещаются относительно внешней вправо. Соблюдение этих правил улучшает наглядность структуры алгоритма, однако не дает такой степени наглядности, как блок-схемы.
Методические проблемы изучения алгоритмов работы с величинами
Есть две стороны в обучении алгоритмизации:
- обучение структурной методике построения алгоритмов;
- обучение методам работы с величинами.
Решение первой задачи обсуждалось выше. Знакомясь с программным управлением исполнителями, работающими «в обстановке», ученики осваивали методику структурного программирования. При этом понятие «величина» могло быть не затронуто вовсе. Однако с величинами ученики уже встречались в других темах базового курса: в частности, при изучении баз данных, электронных таблиц. Теперь требуется объединить навыки структурной алгоритмизации и навыки работы с величинами.
ЭВМ — исполнитель алгоритмов. Обсуждение методических вопросов изучения темы «Алгоритмы работы с величинами» будем проводить в программистском аспекте. Составление любой программы для ЭВМ начинается с построения алгоритма. Как известно, всякий алгоритм (программа) составляется для конкретного исполнителя, в рамках его системы команд. О каком же исполнителе идет речь в теме «программирование для ЭВМ»? Ответ очевиден: исполнителем является компьютер. Точнее говоря, исполнителем является комплекс «ЭВМ + система программирования (СП)». Программист составляет программу на том языке, на который ориентирована СП. Иногда в литературе по программированию такой комплекс называют «виртуальной ЭВМ». Например, компьютер с работающей системой программирования на Бейсике называют «Бейсик-машина»; компьютер с работающей системой программирования на Паскале называют «Паскаль-машина» и т.п. Схематически это изображено на рис. 20.2.
Рис. 20.2. Взаимодействие программиста с компьютером
Входным языком такого исполнителя является язык программирования Паскаль.
При изучении элементов программирования в базовом курсе необходимо продолжать ту же структурную линию, которая была заложена в алгоритмическом разделе. Поэтому при выборе языка программирования следует отдавать предпочтение языкам структурного программирования. Наиболее подходящим из них для обучения является Паскаль.
Процесс программирования делится на три этапа:
1) составление алгоритма решения задачи;
2) составление программы на языке программирования;
3) отладка и тестирование программы.
Для описания алгоритмов работы с величинами следует, как и раньше, использовать блок-схемы и учебный алгоритмический язык. Описание алгоритмов должно быть ориентировано на исполнителя со структурным входным языком, независимо от того, какой язык программирования будет использоваться на следующем этапе,
Характеристики величин. Теперь обсудим специфику понятия величины и методические проблемы раскрытия этого понятия.
Компьютер работает с информацией. Информация, обрабатываемая компьютерной программой, называется данными. Величина — это отдельный информационный объект, отдельная единица данных. Команды в компьютерной программе определяют действия, выполняемые над величинами. По отношению к программе данные делятся на исходные, результаты (окончательные данные) и промежуточные данные, которые получаются в процессе вычислений (рис. 20.3).
Рис. 20.3. Уровни данных относительно программы
Например, при решении квадратного уравнения: ах2 + bх + с = = 0, исходными данными являются коэффициенты а, b, с; результатами — корни уравнения: х1, х2;промежуточным данным — дискриминант уравнения: D = b2 — 4ас.
Важнейшим понятием, которое должны усвоить ученики, является следующее: всякая величина занимает свое определенное место в памяти ЭВМ — ячейку памяти. В результате в сознании учеников должен закрепиться образ ячейки памяти, сохраняющей величину. Термин «ячейка памяти» рекомендуется употреблять и в дальнейшем для обозначения места хранения величины.
У всякой величины имеются три основных характеристики: имя, значение и тип. На уровне машинных команд всякая величина идентифицируется адресом ячейки памяти, в которой она хранится, а ее значение — двоичный код в этой ячейке. В алгоритмах и языках программирования величины делятся на константы и переменные.
Константа — неизменная величина и в алгоритме она представляется собственным значением, например: 15, 34.7, 'к', true и пр. Переменные величины могут изменять свои значения в ходе выполнения программы и представляются символическими именами — идентификаторами, например: X, S2, cod!5 и пр. Однако ученики должны знать, что и константа, и переменная занимают ячейку памяти, а значение этих величин определяется двоичным кодом в этой ячейке.
Теперь о типах величин — типа данных. С понятием типа данных ученики уже могли встречаться, изучая базы данных и электронные таблицы. Это понятие является фундаментальным для программирования. Поэтому в данном разделе базового курса происходит возврат к знакомому разговору о типах, но на новом уровне.
В каждом языке программирования существует своя концепция типов данных, своя система типов. Однако в любой язык входит минимально-необходимый набор основных типов данных, к которому относятся следующие: целый, вещественный, логический и символьный. С типом величины связаны три ее свойства: множество допустимых значений, множество допустимых операций, форма внутреннего представления (табл. 9.1).
Типы констант определяются по контексту (т.е. по форме записи в тексте), а типы переменных устанавливаются в описании переменных.
Есть еще один вариант классификации данных: классификация по структуре. Данные делятся на простые и структурированные. Для простых величин (их еще называют скалярными) справедливо утверждение: одна величина — одно значение. Для структурированных: одна величина — множество значений. К структурированным величинам относятся массивы, строки, множества и др. В разделе базового курса «Введение в программирование» структурированные величины могут не рассматриваться.
Таблица 20.1 - Свойства основных типов данных
Тип |
Значения |
Операции |
Внутреннее представление |
Целый |
Целые положительные и отрицательные числа в некотором диапазоне. Примеры: 23, -12, 387 |
Арифметические операции с целыми числами: +, — , х, целое деление и остаток от деления. Операции отношений (<, >, = и др.) |
Формат c фиксированной точкой |
Вещественный |
Любые (целые и дробные) числа в некотором диапазоне. Примеры: 2,5, -0,01, 45,0, 3,6х109 |
Арифметические операции: +, -, х, /. Операции отношений |
Формат с плавающей точкой |
Логический |
True (истина), False (ложь) |
Логические операции: И (and), ИЛИ (or), HE (not). Операции отношений |
1 бит: 1 — true; 0 - false |
Символьный |
Любые символы компьютерного алфавита. Примеры: V, '5', '+', '$' |
Операции отношений |
Коды таблицы символьной кодировки. 1 символ — 1 байт |
Действия над величинами, определяемые алгоритмом (программой), основываются на следующей иерархии понятий: операция — выражение — команда, или оператор — система команд (рис. 20,4).
Рис. 20.4. Средства выполнения действий над величинами
Операция — простейшее законченное действие над данными. Операции для основных типов данных перечислены в приведенной выше таблице.
Выражение — запись в алгоритме (программе), определяющая последовательность операций для вычисления некоторой величины.
Команда — входящее в запись алгоритма типовое предписание исполнителю выполнить некоторое законченное действие. Команды присваивания, ввода, вывода называются простыми командами; команды цикла и ветвления — составными, или структурными, командами.
В языках программирования строго определены правила записи операций, выражений, команд. Эти правила составляют синтаксис языка. При описании алгоритма в виде блок-схемы или на алгоритмическом языке строгое соблюдение синтаксических правил не является обязательным. Программист пишет алгоритм для себя как предварительный этап работы перед последующим составлением программы. Поэтому достаточно, чтобы смысл алгоритма был понятен его автору. В то же время в учебном процессе требуется некоторая унификация способа описания алгоритма для взаимопонимания. Однако еще раз подчеркнем, что эта унификация не так жестко формализована, как в языках программирования.
Узловыми понятиями в программировании являются понятия переменной и присваивания. О переменной уже говорилось выше. Процесс решения вычислительной задачи — это процесс последовательного изменения значений переменных. В итоге в определенных переменных получается искомый результат. Переменная получает определенное значение в результате присваивания. Из числа команд, входящих в представленную выше СКИ, присваивание выполняют команда ввода и команда присваивания. Есть еще третий способ присваивания — передача значений через параметры подпрограмм. Но о нем мы здесь говорить не будем.
Вопросы для самоконтроля:
1. Какие типы задач нужно рассматривать с учениками для наиболее полного осознания ими понятия алгоритма?
2. Что включается в понятие «архитектура учебного исполнителя»?
3. Какие основные положения составляют методику структурного подхода к алгоритмизации и программированию? Каким требованиям должен удовлетворять учебный исполнитель для пригодности его использования в обучении этой методике?
4. По каким методическим принципам должна строиться последовательность рассматриваемых на уроках задач при изучении алгоритмизации?
5. Почему не следует отказываться от использования на уроках информатики блок-схем и как их надо изображать?
6. На какого исполнителя ориентированы алгоритмы работы с величинами?
7. В какой методической последовательности следует раскрывать понятие величины и ее свойств?
8. Почему для успешного освоения программирования ученику необходимо иметь представление об архитектуре ЭВМ?
9. В каком объеме, по вашему мнению, должно изучаться программирование в базовом курсе информатики?
10. Какие языки программирования наиболее подходят для вводного курса и почему?
11. Как наиболее эффективно связать освоение методов построения алгоритмов с освоением языка программирования?
12. Как объяснить учащимся различие между естественными и формальными языками? Предложите серию примеров.
13. Опишите методическую последовательность вопросов, ответами на которые раскрывается тема «Системы счисления».
14. Обоснуйте связь между информатикой и математической логикой. Укажите разделы информатики, где используется аппарат математической логики.
15. Как менялось со временем место и значение темы алгоритмизации в курсе информатики?
16. Какие основные понятия, дидактические средства и методические подходы, введенные в учебнике А.П.Ершова и др., сохранились в последующих учебниках?
17. Можно ли говорить, что структурный подход был и остается методической основой при изучении алгоритмизации и программирования? Обоснуйте ответ.
18. В чем методический смысл деления исполнителей алгоритмов на исполнителей, работающих «в обстановке», и исполнителей, работающих «с величинами»?
19. Дайте характеристику использования учебных исполнителей алгоритмов в различных учебниках информатики.
Литература :
- Методика преподавания информатики: Учебное пособие для студентов педвузов/ М.П.Лапчик и др. Москва «Академия», 2001. – 624 с.
- БочкинА.И. Методика преподавания информатики: Учебное пособие. - М.: Высш. шк., 1998.
- Лапчик М.П., Семакин И., Хеннер Е.К. Методика преподавания информатики: Учеб-ное пособие. - М.: Академия, 2005. 622 с.
- Малев В.В., Малева А.А. Частная методика преподавания информатики. – Воронеж: ВГПУ, 2007.
- Журнал «Информатика и образование».Веб-сайт: http://www.infojournal.ru.
Жаһандану жағдайында болашақ бастауыш мектеп мұғалімін кәсіби іс - әрекетке даярлаудың педагогикалық негіздері
Ғылыми-педагогикалық зерттеу әдіснамасы мен әдістемесі пәні. Лекция тезистері
Елтірілер
Шетел тілін оқыту барысында лингоелтанымдық аспектісінің рөлі
Ғылыми іс- әрекет (ғылыми процесс ретінде) туралы ақпарат
Ашық интерактивті тапсырмалардың компьютерлік бағдарламаларын жасаудың әдістемесі (алгебраны оқыту мысалында)
ҚҰҚЫҚТЫҚ ТӘРБИЕ АДАМ ҚҰҚЫҒЫ ЖӘНЕ ҚҰҚЫҚТЫҚ МӘДЕНИЕТ
Тіл мәдениетінің сипаты
Химиялық кинетика және катализ пәнінен ДӘРІСТЕР ЖИНАҒЫ
Болашақ мұғалімдерге технологиялық білім берудің тарихи-педагоги- калық алғышарттарын айқындау