какие типы задач нужно рассматривать с учениками для наиболее полного осознания ими понятия
11.6. требования к знаниям и умениям учащихся по линии алгоритмизации и программирования
11.6. требования к знаниям и умениям учащихся по линии алгоритмизации и программирования
Учащиеся должны знать:
• что такое алгоритм; какова роль алгоритма в системах управления;
• в чем состоят основные свойства алгоритма;
• способы записи алгоритмов: блок-схемы, учебный алгоритмический язык;
• основные алгоритмические конструкции: следование, ветвление, цикл; структуры алгоритмов;
• назначение вспомогательных алгоритмов; технологии построения сложных алгоритмов: метод последовательной детализации и сборочный (библиотечный) метод;
• основные свойства величин в алгоритмах обработки информации: что такое имя, тип, значение величины; смысл присваивания;
• назначение языков программирования;
• *в чем различие между языками программирования высокого уровня и машинно-ориентированными языками;
• правила представления данных на одном из языков программирования высокого уровня (например, на Паскале);
• правила записи основных операторов: ввода, вывода, присваивания, цикла, ветвления;
• правила записи программы;
• *что такое трансляция;
• назначение систем программирования;
• содержание этапов разработки программы: алгоритмизация — кодирование — отладка — тестирование.
Учащиеся должны уметь:
• пользоваться языком блок-схем, понимать описания алгоритмов на учебном алгоритмическом языке;
• выполнять трассировку алгоритма для известного исполнителя;
• составлять несложные линейные, ветвящиеся и циклические алгоритмы управления одним из учебных исполнителей;
• выделять подзадачи; определять и использовать вспомогательные алгоритмы;
• составлять несложные программы решения вычислительных задач с целыми числами;
• программировать простой диалог;
• работать в среде одной из систем программирования (например, Турбо Паскаль);
• осуществлять отладку и тестирование программы.
Вопросы для самоконтроля и обсуждения к главе 11
1. Как менялось со временем место и значение темы алгоритмизации в курсе информатики?
2. Какие основные понятия, дидактические средства и методические подходы, введенные в учебнике А.П.Ершова и др., сохранились в последующих учебниках?
3. Можно ли говорить, что структурный подход был и остается методической основой при изучении алгоритмизации и программирования? Обоснуйте ответ.
4. В чем методический смысл деления исполнителей алгоритмов на исполнителей, работающих «в обстановке», и исполнителей, работающих «с величинами»?
5. Дайте характеристику использования учебных исполнителей алгоритмов в различных учебниках информатики.
6. Не во всех учебниках информатики дается строгое определение алгоритма и обсуждаются его свойства. Как вы думаете, почему? Являются ли эти вопросы необходимыми в базовом курсе?
7. Нужно ли играть с детьми на уроке в «в алгоритмические игры» (типа игры Ваше)? Какие еще алгоритмические игры вы можете предложить?
8. Какие типы задач нужно рассматривать с учениками для наиболее полного осознания ими понятия алгоритма?
9. Что включается в понятие «архитектура учебного исполнителя»?
10. Какие основные положения составляют методику структурного подхода к алгоритмизации и программированию? Каким требованиям должен удовлетворять учебный исполнитель для пригодности его использования в обучении этой методике?
11. По каким методическим принципам должна строиться последовательность рассматриваемых на уроках задач при изучении алгоритмизации?
12. Почему не следует отказываться от использования на уроках информатики блок-схем и как их надо изображать? ;
13. На какого исполнителя ориентированы алгоритмы работы с величинами?
14. В какой методической последовательности следует раскрывать по-: нятие величины и ее свойств?
15. Какие методические проблемы возникают при изучении понятий «переменная», «присваивание»? Как их решать?
16. Почему для успешного освоения программирования ученику необходимо иметь представление об архитектуре ЭВМ?
17. В каком объеме, по вашему мнению, должно изучаться программирование в базовом курсе информатики?
18. Какие языки программирования наиболее подходят для вводного курса и почему?
19. Как наиболее эффективно связать освоение методов построения алгоритмов с освоением языка программирования?
20. Как объяснить ученикам, в чем заключается разница между языками программирования и системами программирования?
21. Какой методический подход следует применять при ознакомлении учеников с системой программирования?
Лабораторная работа по информатике «Формирование базовых понятий алгоритмизации в курсе информатики. Алгоритмы и исполнители»
Описание разработки
Цель:
сформировать и проверить у студентов методическое представление о построении логико – структурной схемы изучения раздела «Алгоритмизация и программирование».
Отчет по лабораторной работе оформляется в электронном виде в программе MS PowerPoint (с помощью гиперссылок или в виде интерактивного плаката), а также в программе MS Word.
1. Основные понятия для составления тезауруса:
свойства алгоритма (понятность, точность, конечность, дискретность, массовость) ;
СКИ, среда исполнителя;
величина – имя, тип, значение;
алгоритмические конструкции – следование, ветвление, цикл;
формальное исполнение алгоритмов;
2. Ответьте на следующие методические вопросы:
1. В чем методический смысл деления исполнителей алгоритмов на исполнителей, работающих «в обстановке», и исполнителей, работающих «с величинами»?
2. Какие типы задач нужно рассматривать с учениками для наиболее полного осознания ими понятия алгоритма?
4. Какие основные положения составляют методику структурного подхода к алгоритмизации и программированию?
5. Почему не следует отказываться от использования на уроках информатики блок-схем и как их надо изображать?
6. Какие методические проблемы возникают при изучении понятия «переменная», «присваивание»? Как их решать?
3. Ответьте на следующие содержательные вопросы:
1. В чем смысл формального исполнителя?
2. Чем отличается режим непосредственного управления от программного управления?
3. Можно ли утверждать, что любая последовательность действий является алгоритмом? Обоснуйте ответ, приведите пример.
4. Можно ли утверждать, что для любой задачи может быть разработан алгоритм? Обоснуйте ответ, приведите пример.
5. По приведенным ключевым словам сформулируйте определение алгоритма.
Ключевые слова: детерминированная, исполнитель, последовательность, преобразование, вычислительный, действие, процесс, результат.
6. Можно ли считать приведенную последовательность действий алгоритмом: «Пойди туда, не знаю, куда. Принеси то, не знаю, что»? Ответ обоснуйте с точки зрения свойств алгоритма.
4. Решите следующие задачи:
1. Фрагмент алгоритма изображен в виде блок-схемы (рис. 1). Определите, какое значение переменной S будет напечатано в результате выполнения алгоритма.
2. Запишите алгоритм поиска решения уравнения cos(x) =x методом
половинного деления в виде блок-схемы.
При записи используйте следующие переменные: A и B – границы поиска, LK и PK – соответственно левая И правая координаты уменьшающихся интервалов поиска, E – точность.
3. Имеется исполнитель Кузнечик, который живет на числовой оси. Система команд Кузнечика: “Вперед N” (Кузнечик прыгает вперед на N единиц) ; “Назад M” (Кузнечик прыгает назад на M единиц). Переменные N и M могут принимать любые целые положительные значения. Известно, что Кузнечик выполнил программу из 50 команд, в которой команд “Назад 2” на 12 больше, чем команд “Вперед 3”. Других команд в программе не было. На какую одну команду можно заменить эту программу, чтобы Кузнечик оказался в той же точке, что и после выполнения программы?
4. Придумайте своего исполнителя и опишите его по схеме: среда, СКИ (как отдаются, как выполняются, «Не могу»). Составьте не менее трех задач для конкретного исполнителя.
5. Приведите пример поурочного планирования учебного материала (Информатика и информационные технологии 10-11 классы )
На изучение 4 главы отводится 25 часов
Лабораторная работа по информатике «Формирование базовых понятий алгоритмизации в курсе информатики. Алгоритмы и исполнители»
Описание разработки
Цель:
сформировать и проверить у студентов методическое представление о построении логико – структурной схемы изучения раздела «Алгоритмизация и программирование».
Отчет по лабораторной работе оформляется в электронном виде в программе MS PowerPoint (с помощью гиперссылок или в виде интерактивного плаката), а также в программе MS Word.
1. Основные понятия для составления тезауруса:
свойства алгоритма (понятность, точность, конечность, дискретность, массовость) ;
СКИ, среда исполнителя;
величина – имя, тип, значение;
алгоритмические конструкции – следование, ветвление, цикл;
формальное исполнение алгоритмов;
2. Ответьте на следующие методические вопросы:
1. В чем методический смысл деления исполнителей алгоритмов на исполнителей, работающих «в обстановке», и исполнителей, работающих «с величинами»?
2. Какие типы задач нужно рассматривать с учениками для наиболее полного осознания ими понятия алгоритма?
4. Какие основные положения составляют методику структурного подхода к алгоритмизации и программированию?
5. Почему не следует отказываться от использования на уроках информатики блок-схем и как их надо изображать?
6. Какие методические проблемы возникают при изучении понятия «переменная», «присваивание»? Как их решать?
3. Ответьте на следующие содержательные вопросы:
1. В чем смысл формального исполнителя?
2. Чем отличается режим непосредственного управления от программного управления?
3. Можно ли утверждать, что любая последовательность действий является алгоритмом? Обоснуйте ответ, приведите пример.
4. Можно ли утверждать, что для любой задачи может быть разработан алгоритм? Обоснуйте ответ, приведите пример.
5. По приведенным ключевым словам сформулируйте определение алгоритма.
Ключевые слова: детерминированная, исполнитель, последовательность, преобразование, вычислительный, действие, процесс, результат.
6. Можно ли считать приведенную последовательность действий алгоритмом: «Пойди туда, не знаю, куда. Принеси то, не знаю, что»? Ответ обоснуйте с точки зрения свойств алгоритма.
4. Решите следующие задачи:
1. Фрагмент алгоритма изображен в виде блок-схемы (рис. 1). Определите, какое значение переменной S будет напечатано в результате выполнения алгоритма.
2. Запишите алгоритм поиска решения уравнения cos(x) =x методом
половинного деления в виде блок-схемы.
При записи используйте следующие переменные: A и B – границы поиска, LK и PK – соответственно левая И правая координаты уменьшающихся интервалов поиска, E – точность.
3. Имеется исполнитель Кузнечик, который живет на числовой оси. Система команд Кузнечика: “Вперед N” (Кузнечик прыгает вперед на N единиц) ; “Назад M” (Кузнечик прыгает назад на M единиц). Переменные N и M могут принимать любые целые положительные значения. Известно, что Кузнечик выполнил программу из 50 команд, в которой команд “Назад 2” на 12 больше, чем команд “Вперед 3”. Других команд в программе не было. На какую одну команду можно заменить эту программу, чтобы Кузнечик оказался в той же точке, что и после выполнения программы?
4. Придумайте своего исполнителя и опишите его по схеме: среда, СКИ (как отдаются, как выполняются, «Не могу»). Составьте не менее трех задач для конкретного исполнителя.
5. Приведите пример поурочного планирования учебного материала (Информатика и информационные технологии 10-11 классы )
На изучение 4 главы отводится 25 часов
Лекция 12. Методика изучения содержательной алгоритмической линии
Лекция 1. Методика изучения содержательной алгоритмической линии
Определение и свойства алгоритма.
Методика обучения алгоритмизации на учебных исполнителях, работающих «в обстановке»
Методические проблемы изучения алгоритмов работы с величинами
Методические рекомендации по изучению языков программирования
Язык логики и его место в базовом курсе
В проекте стандарта и обязательном минимуме по информатике содержание алгоритмической линии определяется через следующий перечень понятий: алгоритм, свойства алгоритмов, исполнители алгоритмов, система команд исполнителя; формальное исполнение алгоритмов; основные алгоритмические конструкции; вспомогательные алгоритмы.
Изучение алгоритмизации в школьной информатике может иметь два целевых аспекта: первый — развивающий аспект, под которым понимается развитие алгоритмического (еще говорят — операционного) мышления учащихся; второй — программистский аспект. Составление программы для ЭВМ начинается с построения алгоритма; важнейшим качеством профессионального программиста является развитое алгоритмическое мышление. Если в первом школьном учебнике информатики [15] в изучении алгоритмизации превалировал второй, программистский, аспект, то в дальнейшем стала больше подчеркиваться развивающая роль данной темы.
Вопрос о месте и объеме темы программирования в базовом курсе остается дискуссионным. В различных версиях обязательного минимума этот вопрос решался по-разному. Здесь также можно говорить о двух целевых аспектах, с которыми связано изучение программирования в школе. Первый аспект связан с усилением фундаментальной компоненты курса информатики. Ученикам дается представление о том, что такое языки программирования, что представляет собой программа на языках программирования высокого уровня, как создается программа в среде современной системы программирования. Получив представление о языке машинных команд на материале учебных компьютеров и о языках высокого уровня, ученики будут осознанно воспринимать понятие «трансляция».
Второй аспект носит профориентационный характер. Профессия программиста в наше время является достаточно распространенной и престижной. Изучение программирования в рамках школьного курса позволяет ученикам испытать свои способности к такого рода деятельности. Безусловно, в большей степени эту задачу может решать профильный курс информатики в старших классах.
Определение и свойства алгоритма. В учебнике [6] дано следующее определение алгоритма: «Алгоритм — понятное и точное предписание исполнителю выполнить конечную последовательность команд, приводящих от исходных данных к искомому результату».
В этом определении содержатся основные понятия, связанные с алгоритмом и его главные свойства. Взаимосвязь понятий отражена на рис 20.1.
Рис. 20.1. Схема функционирования исполнителя алгоритмов
Центральным объектом в этой системе является ИСПОЛНИТЕЛЬ алгоритмов. Исполнитель — это тот объект (или субъект), для управления которым составляется алгоритм. Основной характеристикой исполнителя, с точки зрения управления, является система команд исполнителя (СКИ). Это конечное множество команд, которые понимает исполнитель, т.е. умеет их выполнять.
Для выполнения всякой работы, решения поставленной задачи исполнитель на входе получает алгоритм и исходные данные, а на выходе получаются требуемые результаты. Алгоритм может включать в себя только команды, входящие в СКИ. Это требование к алгоритму называется свойством понятности.
Другое свойство алгоритма — точность. Всякая команда должна быть сформулирована так, чтобы определить однозначное действие исполнителя. Например, кулинарный рецепт можно рассматривать как алгоритм для исполнителя-повара по приготовлению блюда. Но если одним из пунктов в нем будет написано: «Положить несколько ложек сахара», то это пример неточной команды. Сколько ложек? каких ложек (чайных, столовых)? Каждый повар может это понимать по-своему, и результаты будут разными. Пример точной команды: «Положить 2 столовые ложки сахара».
Работа исполнителя состоит в последовательном формальном выполнении команд алгоритма. Отсюда следует вывод о возможности создания автоматических исполнителей. В частности, таким автоматическим исполнителем алгоритмов по обработке информации является компьютер.
Еще одно свойство, которое отражено в определении алгоритма — конечность. Оно формулируется так: исполнение алгоритма и, следовательно, получение искомого результата должно завершиться за конечное число шагов. Здесь под шагом подразумевается выполнение отдельной команды. Это свойство является предупреждением ситуации, которую программисты называют зацикливанием. Бесконечно исполняемый алгоритм безрезультатен. Поэтому свойство конечности называют еще результативностью алгоритма.
В учебной литературе встречается описание еще двух свойств алгоритмов: дискретности и массовости. «Дискретность состоит в том, что команды алгоритма выполняются последовательно, с точной фиксацией моментов окончания выполнения одной команды и начала выполнения следующей». Однако (с нашей точки зрения) это свойство можно не выделять, поскольку требование последовательного выполнения команд заложено в определении алгоритма.
«Свойство массовости выражается в том, что алгоритм единым образом применяется к любой конкретной формулировке задачи, для решения которой он разработан». Другими словами, это можно назвать универсальностью алгоритма по отношению к исходным данным решаемой задачи. Заметим, что данное свойство не является необходимым свойством алгоритма, а скорее определяет качество алгоритма: универсальный алгоритм лучше неуниверсального (алгоритм решения частной задачи — тоже алгоритм!).
Основные типы учебных алгоритмических задач. Для закрепления основных понятий, связанных с определением алгоритма, полезно рассмотреть с учениками несколько заданий следующего содержания:
1) выполнить роль исполнителя: дан алгоритм, формально исполнить его;
2) определить исполнителя и систему команд для данного вида работы;
3) в рамках данной системы команд построить алгоритм;
4) определить необходимый набор исходных данных для решения задачи.
О способах описания алгоритмов. Традиционно в школьной информатике используются два способа описания алгоритмов: блок-схемы и учебный алгоритмический язык. В базовом курсе информатики необходимо использовать обе эти формы. Основное достоинство блок-схем — наглядность алгоритмической структуры. Однако это качество проявляется лишь в том случае, если изображение блок-схемы происходит стандартным способом. Основным следствием освоения учениками структурной методики должно стать умение при построении алгоритмов «мыслить структурами». Например, исходя из условия задачи, делать следующие выводы: «Алгоритм решения данной задачи будет представлять собой два вложенных цикла: или — цикл с вложенным ветвлением, или — два последовательных цикла» и т.п. Структурно изображенные блок-схемы (рис. 9.1) помогают такому видению алгоритма.
Вот, например, две блок-схемы: а — пример структурного изображения алгоритма; б — пример неструктурного изображения алгоритма
На первый взгляд трудно понять, что на двух этих блок-схемах изображен один и тот же алгоритм. Из схемы а четко видна его структура: цикл-пока с вложенным ветвлением. В схеме б довольно сложно усмотреть эту же структуру. Блок-схема а нарисована стандартно, блок-схема б — произвольно.
Алгоритмический язык — это текстовая форма описания алгоритма. Она ближе к языкам программирования, чем блок-схемы. Однако это еще не язык программирования. Поэтому строгого синтаксиса в алгоритмическом языке нет. Для структурирования текста алгоритма на АЯ используются строчные отступы. При этом соблюдается следующий принцип: все конструкции одного уровня вложенности записываются на одном вертикальном уровне; вложенные конструкции смещаются относительно внешней вправо. Соблюдение этих правил улучшает наглядность структуры алгоритма, однако не дает такой степени наглядности, как блок-схемы.
Методические проблемы изучения алгоритмов работы с величинами
Есть две стороны в обучении алгоритмизации:
— обучение структурной методике построения алгоритмов;
— обучение методам работы с величинами.
Решение первой задачи обсуждалось выше. Знакомясь с программным управлением исполнителями, работающими «в обстановке», ученики осваивали методику структурного программирования. При этом понятие «величина» могло быть не затронуто вовсе. Однако с величинами ученики уже встречались в других темах базового курса: в частности, при изучении баз данных, электронных таблиц. Теперь требуется объединить навыки структурной алгоритмизации и навыки работы с величинами.
ЭВМ — исполнитель алгоритмов. Обсуждение методических вопросов изучения темы «Алгоритмы работы с величинами» будем проводить в программистском аспекте. Составление любой программы для ЭВМ начинается с построения алгоритма. Как известно, всякий алгоритм (программа) составляется для конкретного исполнителя, в рамках его системы команд. О каком же исполнителе идет речь в теме «программирование для ЭВМ»? Ответ очевиден: исполнителем является компьютер. Точнее говоря, исполнителем является комплекс «ЭВМ + система программирования (СП)». Программист составляет программу на том языке, на который ориентирована СП. Иногда в литературе по программированию такой комплекс называют «виртуальной ЭВМ». Например, компьютер с работающей системой программирования на Бейсике называют «Бейсик-машина»; компьютер с работающей системой программирования на Паскале называют «Паскаль-машина» и т.п. Схематически это изображено на рис. 20.2.
Рис. 20.2. Взаимодействие программиста с компьютером
Входным языком такого исполнителя является язык программирования Паскаль.
При изучении элементов программирования в базовом курсе необходимо продолжать ту же структурную линию, которая была заложена в алгоритмическом разделе. Поэтому при выборе языка программирования следует отдавать предпочтение языкам структурного программирования. Наиболее подходящим из них для обучения является Паскаль.
Процесс программирования делится на три этапа:
1) составление алгоритма решения задачи;
2) составление программы на языке программирования;
3) отладка и тестирование программы.
Для описания алгоритмов работы с величинами следует, как и раньше, использовать блок-схемы и учебный алгоритмический язык. Описание алгоритмов должно быть ориентировано на исполнителя со структурным входным языком, независимо от того, какой язык программирования будет использоваться на следующем этапе,
Характеристики величин. Теперь обсудим специфику понятия величины и методические проблемы раскрытия этого понятия.
Компьютер работает с информацией. Информация, обрабатываемая компьютерной программой, называется данными. Величина — это отдельный информационный объект, отдельная единица данных. Команды в компьютерной программе определяют действия, выполняемые над величинами. По отношению к программе данные делятся на исходные, результаты (окончательные данные) и промежуточные данные, которые получаются в процессе вычислений (рис. 20.3).
Рис. 20.3. Уровни данных относительно программы
Например, при решении квадратного уравнения: ах 2 + b х + с = = 0, исходными данными являются коэффициенты а, b , с; результатами — корни уравнения: х1, х2;промежуточным данным — дискриминант уравнения: D = b 2 — 4ас.
Важнейшим понятием, которое должны усвоить ученики, является следующее: всякая величина занимает свое определенное место в памяти ЭВМ — ячейку памяти. В результате в сознании учеников должен закрепиться образ ячейки памяти, сохраняющей величину. Термин «ячейка памяти» рекомендуется употреблять и в дальнейшем для обозначения места хранения величины.
У всякой величины имеются три основных характеристики: имя, значение и тип. На уровне машинных команд всякая величина идентифицируется адресом ячейки памяти, в которой она хранится, а ее значение — двоичный код в этой ячейке. В алгоритмах и языках программирования величины делятся на константы и переменные.
Теперь о типах величин — типа данных. С понятием типа данных ученики уже могли встречаться, изучая базы данных и электронные таблицы. Это понятие является фундаментальным для программирования. Поэтому в данном разделе базового курса происходит возврат к знакомому разговору о типах, но на новом уровне.
В каждом языке программирования существует своя концепция типов данных, своя система типов. Однако в любой язык входит минимально-необходимый набор основных типов данных, к которому относятся следующие: целый, вещественный, логический и символьный. С типом величины связаны три ее свойства: множество допустимых значений, множество допустимых операций, форма внутреннего представления (табл. 9.1).
Типы констант определяются по контексту (т.е. по форме записи в тексте), а типы переменных устанавливаются в описании переменных.
Есть еще один вариант классификации данных: классификация по структуре. Данные делятся на простые и структурированные. Для простых величин (их еще называют скалярными) справедливо утверждение: одна величина — одно значение. Для структурированных: одна величина — множество значений. К структурированным величинам относятся массивы, строки, множества и др. В разделе базового курса «Введение в программирование» структурированные величины могут не рассматриваться.