Методика преподавания структурного программирования и разработки алгоритмов




«Методика преподавания структурного программирования и разработки алгоритмов »





Учителя информатики
МОУ «Авсюнинская средняя
общеобразовательная школа»:
Шишковой Валентины Валерьевны


2009 г.



Содержание.
Ведение
Методика преподавания темы «Разработка алгоритма. Структурное программирование»
Учебно-тематический план темы
Использование методики «Творческое решение изобретательских задач» на уроках
Методический материал к теме «Разработка алгоритма. Структурное программирование»
Вывод
Литература















1.Введение
Школьный курс информатики включает в себя самые разнообразные темы от теории информации до использования интернет. Все это прекрасно, замечательно, но, отработав в школе учителем информатики много лет, прихожу к выводу: только учащиеся, освоившие приемы программирования, становятся настоящими пользователями, а зачастую и выбирают себе профессию программиста. Школа должна давать базовые знания по всем предметам, в том числе и по информатике. Логика, устройство процессора и компьютера, сбор, кодирование, обработка и передача информации, программирование, обзор областей применения информационных технологий должно стать содержанием информатики. Все прикладные программы – это лишь средство для достижения поставленной цели. Точно также, как в химии или физике мы используем приборы и химикаты для постановки опытов. Ни один учитель не ставит опыт ради опыта. Всем лабораторным работам предшествует серьезная теоретическая подготовка, в противном случае они теряют свой смысл. Учиться, учиться по-настоящему тяжело всегда. Часто это трудная рутинная работа. Естественно, не все дети хотят заниматься этим, они желают "работать (читай, играть) на компьютере". Но мы же решаем задачи по математике, физике, химии без всяких игровых моментов в старших классах. А познание алгоритмов и правил их написания – не самый лучший материал для “легкого” изучения.



Тем не менее, изучая программирование, ученики одновременно приобретают навыки работы в операционной системе. Это включает набор и редактирование текста, файловую систему и т.п. Работая на курсах подготовки пользователей, невольно обратила внимание на то, что если, скажем, работе в электронной таблице школьника можно обучить за 3 часа, то взрослых в лучшем случае за 10. Причина лежит на поверхности.
Выбирая стратегию преподавания информатики в школе, нужно учитывать, что задача общеобразовательного курса - это в большой степени выработка определенного стиля мышления, формирование наиболее общих навыков, умений и представлений, нежели освоение тех или иных конкретных языков и технических средств программирования. Выбранный курс должен служить базой для последующего профессионального изучения программирования в высшей школе или старших классах средней школы .

2. Методика преподавания темы «Разработка алгоритма. Программирование»
Основные понятия, которые с которыми учащиеся знакомятся в курсе изучаемого раздела это - алгоритм, исполнитель алгоритма, система команд исполнителя, способы записи алгоритма, формальное исполнение алгоритма, алгоритмический язык, блок схема, линейный, разветвляющийся, циклический, и вспомогательный алгоритмы, системы программирования.
В обыденной жизни дети не встречаются с этими понятиями дословно, но они находят применение алгоритмов в различной деятельности человека, о чем важно сообщить детям на первом же уроке и подтвердить это примерами.
Современные профессии становятся все более интеллектоёмкими, требующими развитого логического мышления. Опоздание с развитием мышления – это опоздание навсегда. Поэтому для подготовки детей к жизни в современном информационном обществе в первую очередь необходимо развивать логическое мышление, способности  к  анализу и синтезу. Наиболее доступный материал для развития мышления – это изучение темы «Алгоритмы» и обучение построению алгоритмов при решении любой задачи. Алгоритмическое мышление является необходимой частью научного взгляда на мир. В то же время оно включает и некоторые общие мыслительные навыки, полезные и в более широком контексте. К таким относится, например, разбиение задачи на подзадачи.
Обучение школьника основам алгоритмического мышления  базируется на понятии исполнителя. Основой для введения исполнителей служат задачи. Исполнители, используемые в курсе, традиционны. Единожды введенные исполнители в дальнейшем активно используются на протяжении всего курса. Общая схема подачи материала в курсе следующая: от частного к общему, от примера к понятию. Подача материала допускает шесть форм - стадий:
манипуляция с физическими предметами;
театрализация;
манипуляция с объектами на экране компьютера;
командный режим управления экранными объектами;
управление экранными объектами с помощью линейных программ;
продвинутое программирование с использованием процедур и
других универсальных конструкций.
Разнообразие форма уроков способствует повышению уровня обученности учеников. Уроки в форме игры, практических заданий, применение заданий разноуровневых, дифференцированных заданий, организация конкурсных заданий вызывает интерес к предмету. Задания для самоконтроля, взаимоконтроля, работа группами решает проблему организации работы, как со слабоуспевающими учениками, так и с одаренными. Для развития логического мышления наиболее приемлемы методики «Творческого решения изобретательских задач», «Технология модульного обучения» с применением опорных конспектов. Эти методики могут быть применены при изучении информатики в любом классе, они имеют практическую направленность. Важно для ученика владеть способами решения ключевых задач по темам, иметь библиотеку алгоритмов для решения той или иной задачи.  Проблемные уроки развивают творческую активность ученика.
Применение знаний, полученных на уроке информатики, во внеклассной деятельности позволяет углубить знания детей в этой области, проявить творчество, изобретательность, развить способности. 
Теоретический и практический объем знаний и умений, который должен приобрести ученик в процессе изучения темы «Понятие алгоритма. Программирование» настолько велик, что требует большой подготовки учителя, наличия теоретического и методического материала. Для того чтобы ученик действительно научился программировать, он должен:
уметь приводить примеры алгоритмов, перечислять свойства алгоритмов;
уметь определять возможность применения исполнителя для решения конкретной задачи по системе его команд;
знать основные алгоритмические конструкции и уметь использовать их для построения алгоритмов;
уметь строить и исполнять алгоритмы для учебных исполнителей;
уметь использовать стандартные алгоритмы для решения учебных задач;
уметь записать на учебном алгоритмическом языке (или языке программирования) алгоритм решения простой задачи;
уметь составлять простейшие алгоритмы и записывать их различными способами;
знать один из языков программирования, основные алгоритмические конструкции языка и соответствующие им операторы языка программирования, подпрограммы: функции, процедуры, рекурсии;
знать переменные величины: тип, имя, значение, уметь их описывать;
знать структурированные типы данных: массивы, записи, файлы;
уметь решать основные учебные задачи:
упорядочивание массива;
поиск минимального и максимального элементов массива с указанием их местоположения;
определение количества одинаковых и разных букв в тексте, количества слов в тексте;
уметь работать с записями и файлами;
уметь разработать программу методом последовательной детализации (сверху вниз) и сборочным методом (снизу вверх);
знать машинную графику. Уметь построить график функции, создать движущиеся  изображения, моделировать простейшие физические процессы;
уметь применять численные методы, создавать диалоговые программы. Знать различные технологии программирования;
знать объектно-ориентированное программирование: объект, свойства  объекта, операции над объектом.


Из перечисленного,  выше становится ясным, что в рамках современной программы решить задачу обучения учеников программированию, не возможно. И это объясняется несколькими причинами:
недостаточным количеством уроков, отведенных на изучение этого раздела;
изучение базового курса в среднем звене, когда дети еще недостаточно подготовлены (отсутствует необходимая теоретическая подготовка детей по математике и физике и др.);
ученики еще не сделали для себя выбор в профессиональной подготовке и не уверены, что занятия программированием им необходимы.
Поэтому и остается основной задачей обучения программированию – знакомство с одним из языков программирования, что можно объяснить процентным соотношением тех, кто применяет компьютер в учебной и профессиональной деятельности, и программистов от числа всех пользователей компьютера.
Изучение темы «Основы алгоритмизации и объектно-ориентированного  визуального программирования» в 11 классе позволяет усложнить изучение темы и приложить практическое применение программирования уже в школьном курсе информатики.  Особое внимание следует обратить на программирование в Visual Basic Applications для создания приложений в среде Windows& Office.
2.1.   Учебно-тематический план
6 класс

№ урока
тема
Коли
чество часов
В том числе на:
Кол-во часов на самостоятельные работы




уроки
Самосто
ятельные
Лабора
торные
Практи
ческая


1
Понятие алгоритма
16


 
 
8

2
Знакомство с понятием исполнителя.
Примеры исполнителей. Игра в исполнителя.

0.5

 
0.5
 

3
Программирование Паркетчика. Знакомство.
 
0.5

 
0.5
 

4
Процедуры и конструкции.
 
0.5

 
0.5
 

5
Конструкция повторения (цикл).
 
0.5

 
0.5
 

6
Условия. Использование условий.
 
0.5

 
0.5
 

7
Значения истинности. Блок-схемы.
 
0.5

0.5
 
 

8
Конструкция повторения «пока – делать».
 
0.5

 
0.5
 

9
Написание программ с использованием процедур, циклов и условий.
 
0.5
0.5
 
 
 

10
Программирование  Паркетчика с повторением.
 
0.5

 
0.5
 

11
Стены и условия. Обратная связь.
 
0.5
 
 
0.5
 

12
Логические операции и составные условия.
 
0.5
0.5
 
 
 

13
Замена вложенных условных конструкций составными условиями.
 
0.5
 
 
0.5
 

14
Вспомогательный алгоритм. Подпрограмма.
 
0.5
 
 
0.5
 

15
Рисование узоров с помощью циклов и процедур.
 
0.5
 
0.5
 
 

16
Логические игры.
 
0.5
 
 
0.5
 

17
Ханойские башни. Игра с башнями в 3,4,5 колец.
 
0.5
0.5
 
 
 

 
Всего
16
 
 
 
 
 

 
9 класс

№ урока
тема
Коли
чество часов
В том числе на:
Кол-во часов на самостоя
тельные работы
дата




уроки
Конт
рольные
Самосто
ятельные
Лабора
торные
тест
Практ
ические



 
8
9
10
 
11
 
12
13
14
15
16
17
18

19
Алгоритмизация и программирование
Понятие алгоритма, примеры алгоритмов.
Исполнители алгоритмов. Системы команд
Свойства алгоритмов. Формальное исполнение.
Возможность автоматизации деятельности человека на основе алгоритмов. Средства представления и записи алгоритмов. Системы.
Знакомство с программирования Pascal. Переменная: имя, тип, значение.
Основные алгоритмические конструкции. Линейный алгоритм.
Циклический алгоритм.
Ветвление. Логические условия.
Использование конструкций для построения алгоритмов.
Массив: имя, тип данных, размерность.
Функции. Подпрограммы.
Контрольная работа 1.
14
  0.5

0.5

0.5
 
0.5
 
0.5

0.5
0.5
0.5
0.5
0.5
0.5
0.5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0.5
 
 
 
 
 
 
 
 
 
 
 
 
 
0.5
 
 
 
 
 
 
 
 
 
 












0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.5
 
 
 
 
 
 
 
 
 
 
 
 
0.5
 
0.5
0.5
0.5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0.5
7


 
Всего
16









 
11 класс

№ урока
 
тема
количество часов
В том числе
Количество часов на самостоятельные работы





уроки
Конт
рольная работа
зачет
тест
Лаборат
орная работа
Практи
ческая работа



 


10
 
11


12

13
14
15
16

17
Алгоритмизация и программирование
Представление о системах программирования: состав, назначение компонентов.
Основные алгоритмические конструкции (цикл, ветвление, процедура) и их использование для построения алгоритмов.
Типы данных. Символьный тип.
Функции.
 Подпрограммы.
Библиотеки алгоритмов
Объектно-ориентированное программирование на Visio Basic
Программа «Калькулятор»
8
 


0.5
 
0.5


0.5

0.5

0.5
0.5


0.5

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0.5
 
 
 
 
0.5
 
 

0.5

0.5



0.5
 
0.5
 
 
 
 
 
0.5

0.5
 
0.5
4



Всего
8









2.2.          Использование методики «Творческое решение изобретательских задач» на уроках.
ТРИЗ – педагогика ставит целью формирование сильного мышления и воспитание творческой личности, подготовка к решению сложных проблем в различных областях деятельности.
Под методом решения изобретательских задач подразумеваются  метод, приемы и алгоритмы, разработанные в рамках ТРИЗ: мозговой штурм, синектика, морфологический анализ, метод фокальных объектов и их разновидности.
Современная ТРИЗ – педагогика включает в себя курсы, рассчитанные на возрастные группы, выбор объектов изобретательской деятельности.
Для каждой возрастной группы разрабатываются алгоритмические процедуры, методики. Они позволяют учащимся изобретать новое, самореализоваться в творчестве. Следует различать ознакомительный и инструментальный  уровни освоения ТРИЗ – методик. Обязательным условием качественного инструментального обучения в ТРИЗ – педагогике является не только освоение соответствующих методик, но и освоение способов их создания.
Особое место занимает курс развития творческого воображения (РТВ), предназначенный для преодоления стереотипов решателя, выработки умения работать с нетривиальными идеями. Что самое страшное для педагога с точки зрения его профессионального развития? Привычка. Привычка загоняет нас в наезженную колею, заставляет изо дня в день повторять одни и те же действия, одни и те же слова,  лишенные живого смысла и действия. Привычка лишает нас возможности найти нестандартное решение в трудной ситуации, внимательно отнестись к ребенку, отреагировать на его изменяющиеся запросы, вовремя распознать его проблемы.
И потому педагогу время от времени необходимо новое энергетическое вливание, новая эмоциональная встряска, заставляющая его по-новому взглянуть на себя и на свою работу. Традиционный подход к обучению школьников, построенный на восприятии ими разнообразной информации, достигал своей цели – сообщения знаний, но не мог научить их мыслить. Это стало возможным при использовании в обучении проблемных ситуаций. В них есть цель, которую необходимо достичь, и условия, препятствующие достижению цели. Следовательно, для разрешения проблемных ситуаций детям необходимо проанализировать условия, т.е. понять, что мешает достижению цели, и найти способ ее достижения, преобразовав свой прошлый опыт или открыв для себя нечто новое.
Опыт работы с детьми старшего дошкольного возраста показал: одним из средств развития творческого познания может стать использование алгоритм решения изобретательских задач при разрешении проблемных ситуаций. Теория основана на законах диалектики и являет собой прикладную диалектику. Вот ее суть: ситуация (задача, которую необходимо решить) – модель задачи- противоречия (должен потому, что и не должен, потому, что) – идеальный конечный результат (оптимальный результат, полученный с наименьшими затратами) – вещественно-полевые ресурсы (нахождение внешних и внутренних ресурсов, при использовании которых можно получить оптимальный результат) – анализ задачи.Конечно, у вас могут появиться сомнения: а в состоянии ли маленький человек постичь столь серьезную науку? Отвечаем: да, в состоянии и с большим успехом! Но при соответствующих условиях. Творческая способность малыша велика. Выявлена зависимость развития творческого воображения человека от возраста. В раннем возрасте эта способность как жеребенок, резвый, быстроногий. Его бег – летящая рысь. Переступаем порог школы – и наш конь начинает снижать скорость: просто рысь, галоп.  К шестому, седьмому классу – пошли шагом. Аттестат о среднем образовании стреножил нашего рысака, а уж диплом о высшем – заставляет тащить на веревке уставшую клячу. Вот потому-то чем раньше начать изучать диалектику, тем легче и проще.
Способы, приемы:
Противоположности;
Противоречия;
Игровые ситуации (предметы окружающего мира, животный и растительный мир);
Погружение в мир звуков, общение.
Чрезвычайная скорость развития предмета «Информатика» делает ее сложной в изучении, но интересной. Применение новых технологий - если не обязательное условие преподавания предмета, то по крайней мере необходимое в тех случаях, когда и учитель, и ученики имеют все необходимое для изучения предмета на уровне современных требований. Очень большие объемы информации, сложная структура изучаемых тем требуют систематизации знаний, обучение учащихся новым современным приемам запоминания учебного материала и применения его на практике. Нынешняя информатика направлена на накопление информации, осмысление ее, но нет целенаправленной генерации ее на практике, недостаточна дифференциация информатики с другими предметами школьного цикла. В этом направлении могла бы помочь методика ТРИЗ, надо только суметь ею воспользоваться. Например, при решении предложенной  учителем проблемы: сформулировать этапы научного исследовании мира.
Представьте изучаемое в виде «черного ящика». Стремясь понять устройство нового правила, соберите уже известные вам факты о его проявлении, получите дополнительные знания с помощью экспериментов, опытов. После этого выдвигайте гипотезу (предположение, которая объясняет собранные факты). Далее проведите серию экспериментов, для того чтобы проверить выдвинутую гипотезу (подтвердить ее или опровергнуть). Отличие этих экспериментов от предыдущих состоит в том, что экспериментатор заранее определяет не только то, как он будет воздействовать на проект, но и как правило отреагирует на эти воздействия. То есть заранее описываются не только входные данные, но и зависимые.Если ожидания подтверждаются – правило реагирует именно так, как было предсказано (реальные выход совпадает с ожидаемым), - гипотеза объявляется теорией. Впредь, при решении проблем, возникающих в жизни, можно руководствоваться этой теорией и считать, что мы заранее можем предсказать результат применения правила. Если на практике ожидания не подтверждаются, значит гипотеза неверна и нуждается в уточнении.  В этом случае надо вернуться к одному из предыдущих шагов: либо продолжить наблюдение и сбор фактов, либо провести для сбора фактов дополнительные эксперименты, либо попытаться выдвинуть другую гипотезу, которая объясняет собранные факты.  Эта гипотеза также должна быть проверена экспериментами.
Итак, научное исследование состоит из трех этапов:
сбор фактов;
высказывание гипотезы;
проверка гипотезы.
Эти три этапа могут повторяться несколько раз, пока, наконец, гипотеза не превратится в теорию. Если экспериментов было достаточно много и все они подтвердили гипотезу, можно надеяться, что и в других случаях гипотеза будет верна. В таком случае мы найдем правило, по которому можно будет определить истинность.
Ценность любой новой методики определяется тем, что учащиеся «получат», обучаясь по этим методикам. На уроке информатики методика ТРИЗ формирует алгоритмический стиль мышления, умение грамотно организовать обработку информации, учит поиску рационального решения поставленной задачи, развивает гибкость ума. Методика ТРИЗ неразрывно связана с системологией. Именно предыдущая тема по самообразованию «Системный подход к преподаванию информатики в школьном курсе» вызвала необходимость изучения методики ТРИЗ и применения ее  на практике. Сначала отдельные элементы урока, затем поэтапно мне удалось применить технологию ТРИЗ, в различных вариантах, способах, немного отличных от предложенных в прочитанной мной литературе:
Освоение основ диалектического мышления и методов активизации творческого процесса при решении логических задач, дидактических игр, составлении алгоритмов и программ.
Работа с лексикографическим материалом, словарями, каталогами, организация текста в документах при выполнении практических, лабораторных работ. Учащиеся создают базы данных, работают с тренажерами.
Употребление инструментов структурирования информации: таблицы, диаграммы, карты, графы. Учащиеся изучают правила оформления таблиц, типизацию таблиц по их содержанию, определяют структуру таблицы, правила построения таблиц. Рассматривают основные типы диаграмм, их назначение (прагматика), правила построения. Применение карт только планируется при работе с web – страницами. Использование графов для представления информации о составе объектов, подчиненности, наследования, связях между объектами и действиями и пр. несомненно, систематизирует знания учащихся и повышает уровень знаний. Это незаменимый материал при изучении темы «Моделирование».
2.3. Методический материал к теме «Разработка алгоритма. Структурное программирование"
Разработка алгоритма это раскрытие “черного ящика”. Эта задача может быть поставлена на научную, математическую основу. За счет этого программирование превращается из искусства в науку со строгими законами.
Для создания “хорошей” программы следует придерживаться определенных принципов (дисциплины) программирования. В 70-е годы достаточно широкое распространение получила концепция структурного программирования. Впервые идея структурного программирования системно былаизложена в работах Э.Дейкстра в 1965г. До сих пор не существует достаточно простого и краткого определения этого понятия. Э.Дейкстра систематически изложил идеи структурного программирования в работе “Заметки по структурному программированию” (русский перевод 1975г.).
Основная идея структурного программирования заключалась в попытке доказательства правильности создаваемых программ. Основное внимание при этом уделялось тому, какими должны быть правильные структуры программ для нахождения таких доказательств.
В итоге понятие структурного программирования включает определенные принципы проектирования, кодирования, тестирования и документирования программ в соответствии с заранее определенной жесткой дисциплиной.
Структурное программирование облегчает создание, тестирование, модификацию программ и повышает их эффективность.
Основные методы структурного программирования: отказ от бессистемного использования операторов перехода, использование структурированных операторов, нисходящее проектирование, пошаговая детализация и так далее.
Теоретическую основу структурного программирования составляют принципы, изложенные в классической работе итальянских математиков К.Бома и Г.Джакопини (1965г.). В соответствии со “структурной теоремой”, изложенной в работе, всякая программа (алгоритм) может быть построена с использованием только трех управляющих конструкций: следования, развилки и повторения.
Для изображения конструкций на схеме введем понятие функционального блока. Функциональный блок используется для обозначения действий по обработке информации. Это может быть либо отдельный оператор (присваивания, ввода, вывода), либо любая последовательность операторов обработки информации, которую можно представить как вычисления, имеющие один вход и один выход.




Следование. Последовательность функциональных блоков, соединенных стрелками.
Сложное действие, изображенное в виде одного функционального блока, может быть представлено как последовательность функциональных блоков, то есть как следование. И обратно: последовательность функциональных блоков может быть представлена как один функциональный блок. Это позволяет делать преобразование программы.



+








Развилка. Обеспечивает выбор одного из двух функциональных блоков в зависимости от условия.
Сначала проверяется логическое условие P, значение которого может быть либо “истина”, либо “ложь”. Если значение предиката P истинно, то выполняется блок S1 ( по стрелке “+”), иначе - S2 ( по стрелке “-” ).


+




Повторение. Обеспечивает выполнение многократно повторяющегося действия.
Сначала проверяется логическое условие P. Если оно истинно, то выполняется оператор S, после чего вновь выполняется проверка условия P и так пока P не станет ложным. В этом случае выполнение S прекращается и происходит выход из цикла.
Каждая из рассмотренных конструкций имеет один вход и один выход. Поэтому и развилка и повторение могут рассматриваться как один функциональный блок (“черный ящик” с одним входом и одним выходом). Следовательно, в развилке или повторении сами функциональные блоки могут быть развилками или повторениями. Таким образом, возможны “вложенные” конструкции (“вложенные” циклы и развилки).
Однако, при любой глубине вложенности важно, что любая конструкция в конечном итоге имеет один вход и один выход. Таким образом, при конструировании алгоритма выход первого блока будет подключаться ко входу второго и так далее, то есть алгоритм будет иметь последовательную структуру.
Структурированный алгоритм допускает преобразование, сводящее его к одному блоку (а программу к одному оператору).
Заменяя в алгоритме все развилки и повторения на обобщенные функциональные блоки, получим алгоритм, содержащий только следование, которое, в свою очередь, можно заменить одним функциональным блоком. Разрабатывая алгоритм, необходимо выполнить обратное преобразование - от одного обобщенного функционального блока перейти к последовательности блоков, содержащих только блоки трех типов. Таким образом, разработка алгоритма (переход от одного функционального блока на более низкий уровень) выполняется за несколько шагов, причем на каждом шаге задача разбивается не более чем на два функциональных блока S1 и S2. Разбиение выполняется одним из трех методов:









+
















+



При разработке алгоритма необходимо перейти от одного функционального блока, в виде которого можно представить весь алгоритм, к последовательности функциональных блоков, содержащих только блоки трех типов. Этот метод называется методом нисходящего проектирования. Он позволяет получить хорошо структурированный алгоритм. При этом разбиение на все более мелкие блоки (подзадачи) продолжается до тех пор, пока не будут получены такие блоки (подзадачи), которые легко кодируются на выбранном языке программирования.
Параллельно, на каждом шаге уточняются все новые детали (“пошаговая детализация”).
Для удобства программирования можно ввести еще две конструкции:



+







Коррекция

и


+



Цикл с постусловием

Алгоритмы могут записываться различными способами: с помощью схем алгоритмов (часто они неверно называются “блок-схемы”), словесным способом, с помощью символов специального языка проектирования программ - псевдокодов, а также другими способами.
Долгое время алгоритмы было принято записывать с помощью схем алгоритмов, однако этот способ помимо неудобств, возникавших при записи больших алгоритмов (трудно было отслеживать ссылки-линии при переходе от листа к листу - для этого были разработаны даже специальные правила), сложно было применять при разработке структурированных программ – этот способ записи не был предназначен для этого. Псевдокоды удобно применять для разработки структурированных алгоритмов. Более того, сами правила записи алгоритмов на псевдокоде предполагают структуризацию, и попытка записать неструктурированную конструкцию, приведет к нарушению правил записи псевдокодов, что сразу будет обнаружено.
Большим достоинством псевдокодов является то, что строки псевдокода появляются на листе в той же последовательности, в которой будут появляться строки программы. Это облегчает перевод алгоритма, записанного в псевдокоде, на алгоритмический или машинный язык. К достоинствам псевдокода следует отнести удобство хранения на машинных носителях алгоритма, записанного на псевдокоде. (Попробуйте сохранить на дискете схему алгоритма.)
При записи алгоритма на псевдокоде каждое отдельное предложение (шаг алгоритма) начинается со звездочки. Алгоритм обычно записывается так, что разбиение продолжается до тех пор, пока каждый шаг не станет “достаточно понятным”. Обычно это подразумевает либо вычисление (операция присвоения), либо ввод/вывод информации. Такие линейные операции на схемах алгоритмов изображаются как следование.
Пример. По известным длинам трех сторон треугольника a, b, c найти его площадь.
Алгоритм
* Ввод(a, b, c)
* Вычислить p:=13 EMBED Equation.2 1415
* Вычислить S:=13 EMBED Equation.2 1415
* Вывод (Площадь треугольника=,S)
В этом примере при написании алгоритма использовались простые команды, обозначающие один элементарный шаг переработки или отображения (ввода-вывода) информации.
Если алгоритм предполагает переход на более низкий уровень (в случае ветвления или повторения), то с момента спуска на более низкий уровень количество звездочек увеличивается на одну, а при возвращении на исходный уровень – на одну уменьшается.
Из простых команд и проверки условий (предикатов) образуются составные команды (базовые структуры).
Команда ветвления выполняет выбор одного из двух возможных вариантов.
* если P, то
* * действие_1
* иначе
* * действие_2
* конец-если
Если переменная P принимает значение “истина”, то выполняется действие_1, иначе выполняется действие_2. Здесь строки со словами «действие_1» и «действие_2» начинаются с двух звездочек, так как оба действия относятся к более низкому уровню, чем само ветвление.
Пример: вычислить значение 13 EMBED Equation.2 1415.
* Ввод(x)
* Если X13 EMBED Equation.2 14150, то
* * y:=13 EMBED Equation.2 1415
* иначе
* * y:=x+1
* конец-если
* Вывод(y=,y)

Команда ветвления может использоваться в сокращенной форме:
* y:=x
* если условие, то * если x<0, то
* * действие * * y:= - y
* конец-если * конец-если

Команда повторения (цикл) - используется для обозначения многократно повторяемых действий. Она обязательно содержит условие, которое используется для определения количества повторений. Команды повторения могут быть трех типов: с предусловием (выполнение условия проверяется до первого выполнения действия), с постусловием (выполнение условия проверяется после выполнения действия) и с параметром (вводится некоторая переменная - параметр цикла, для которой явно задаются значения и, следовательно, количество повторов, при которых должно быть выполнено действие).
Пример. Найти сумму первых десяти натуральных чисел.
А). С предусловием б). С постусловием в). С параметром
* S:=0 * S:=0 * S:=0
* I:=1 * I:=1 * Цикл по I от 1 до N с шагом 1
* Цикл-пока I13 EMBED Equation.2 1415N * Цикл-пока с постусловием * * S:=S+I
* * S:=S+I * * S:=S+I * конец цикла по I
* * I:=I+1 * * I:=I+1 * Вывод(S)
* конец-цикла * конец-цикла I>N
* Вывод(S) * Вывод(S)
В данных примерах строки, относящиеся к внутренней области (области цикла) так же как в приме ветвления начинаются с двух звездочек, поскольку они относятся к более низкому уровню, чем сам опрератор цикла.
Замечания:
1). Варианты с предусловием и с постусловием практически не отличаются (только условия). Почему?
2). Что произойдет, если строки S:=S+1 и i:=i+1 поменять местами?
3). В цикле с параметром не оговаривается где именно, в конце или в начале, происходит проверка условия и изменение параметра. В большинстве случаев для программиста это не существенно. Требуется только неукоснительно соблюдать Правило для цикла с параметром: “Значение параметра нельзя изменять в области цикла!” (Транслятор сам позаботится об этом).

Пример неправильного использования цикла с параметром:
* S:=0
* цикл по I от 1 до 10 с шагом 1
* * S:=S+i
* * i:=i+1
* конец цикла
В лучшем случае цикл выполнится для I=1, 3, 5, 7, 9 или I=2, 4, 6, 8. В худшем - произойдет зацикливание.
Для соблюдения правильности структуры алгоритма и правильного написания алгоритмов на псевдокоде надо выполнять Правила звездочек.
1. Число звездочек В ПЕРВОМ И ПОСЛЕДНЕМ предложении законченного фрагмента алгоритма должно быть ОДИНАКОВО. (Так как у каждого функционального блока один вход и один выход).
2. Количество звездочек от одного предложения к другому НЕ ИЗМЕНЯЕТСЯ, если только в них не встречаются ключевые слова “если”, “иначе”, “цикл”, “конец-если”, “конец-цикла”.
3. Число звездочек в предложениях, следующих ПОСЛЕ предложений, начинающихся со слов “если”, “иначе”, “цикл”, УВЕЛИЧИВАЕТСЯ на одну.
4. Число звездочек в предложениях, НАЧИНАЮЩИХСЯ со слов “иначе”, “конец-если”, “конец-цикла”, УМЕНЬШАЕТСЯ на одну по сравнению с предыдущим предложением.
Вспомогательные алгоритмы.
Часто в алгоритме можно использовать уже ранее разрабатывавшиеся алгоритмы.
Например, при построении “сверху-вниз” всю задачу стараются разбить на более простые подзадачи и, если для какой-либо подзадачи уже построен алгоритм, то он может быть включен в состав разрабатываемого алгоритма. Таким образом:
1. Не повторяется уже проделанная работа.
2. Экономится время.
3. Не надо повторять уже имеющийся текст.
4. Можно сэкономить на отладке и тестировании.
Определение. Готовые алгоритмы, целиком включаемые в состав разрабатываемого алгоритма, называют вспомогательными или подчиненными (вызываемыми) алгоритмами в отличие от главного или основного (вызывающего) алгоритма, в состав которого они включаются.

Вспомогательные алгоритмы должны быть оформлены специальным образом, чтобы ссылаться на них в основном алгоритме.
В языках программирования вспомогательные алгоритмы кодируются как подпрограммы. Подпрограммы подразделяются на процедуры и функции.
На языке псевдокодов вспомогательные алгоритмы записываются в виде заголовка и собственно алгоритма. При этом заголовки процедур и функций записываются по-разному.
Заголовок процедуры:
Процедура имя_процедуры (аргументы - список аргументов:тип; результаты - список результатов:тип)
Заголовок функции:
Функция имя_функции (аргументы - список аргументов:тип):тип результата
В заголовке после ключевого слова процедура или функция записывается имя функции или процедуры и список формальных параметров - аргументов и результатов, которого может и не быть. (Например, процедура печати строки звездочек). Так как у функции результат присваивается имени этой функции, то
- раздела “результаты” в списке формальных параметров не бывает,
- после списка формальных параметров записывается тип результата (тип имени функции),
- в описании вспомогательного алгоритма - функции имени этой функции хотя бы один раз должно быть присвоено значение.
Вспомогательный алгоритм - процедура вызывается специальным оператором процедуры, в котором записываются имя процедуры и список фактических параметров в скобках.
Вспомогательный алгоритм - функция вызывается, как и математическая функция типа Sin, при написании его имени и списка фактических параметров в скобках, причем эта запись может быть элементом выражения, и вычисленное значение функции подставляется вместо ее имени как элемент выражения.
Из этого понятно, что у функции может быть только одно значение - результат, то есть результат функции не может быть массивом или любым данным компонентного (структурированного) типа.
Пример: Даны три числа a, b, c. Найти максимальное из них.
Процедура Max_из_двух (аргументы - x,y:вещественные; результат - z:вещественный)
* если x>y, то
* * z:=x
* иначе
* * z:=y
* конец-если
Алгоритм Max_из_трех
* Ввод(x,y)
* Max_из_двух(a,b,R)
* Max_из_двух(R,c,R)
* Вывод(Max=,R)
Здесь a, b, R, и c - ФАКТИЧЕСКИЕ параметры, а x, y, и z - ФОРМАЛЬНЫЕ. ФАКТИЧЕСКИЕ параметры записываются ПРИ ВЫЗОВЕ алгоритма, а ФОРМАЛЬНЫЕ при его ОПИСАНИИ. В строке Max_из_двух(R,c,R) переменную R можно использовать два раза (на месте первого и третьего фактического параметра), так как в первом случае R - аргумент и его значение играет роль только при входе в программу, а во втором R - результат и нам важно его значение только после вызова процедуры.
Этот вспомогательный алгоритм можно оформить и как функцию:
Функция Max_из_двух(аргументы - x,y:вещественные):вещественный
* если x>y, то
* * Max_из_двух:=x
* иначе
* * Max_из_двух:=y
* конец-если
Алгоритм Max_из_трех
* Ввод(x,y)
* R:=Max_из_двух(Max_из_двух (a,b),c)
* Вывод(Max=,R)
При вызове функции Max_из_двух ее первым фактическим аргументом в свою очередь, является значение функции Max_из_двух(a,b).

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













3.Литература

1. Энциклопедия кибернетики. Киев,:1974г.
2. Г.Д. Фролов, Э.И. Кузнецов Элементы информатики, М.: Высшая школа, 1979.
3.В.Н.Пильщиков Сборник упражнений по языку Паскаль. М.:Наука,1989г.
4. С.А.Абрамов, Г.Г.Гнездилова, Е.Н.Капустина, М.И.Селюн Задачи по программированию. М.:Наука,1988г.

4.Вывод:
Таким образом, в процессе обучения мы знакомим учащихся с несколькими видами программирования, что позволяет им в дальнейшем заниматься самостоятельно, имея навык работы с различными исполнителями. Они четко понимают, что каждая система имеет свою уникальную систему команд. Они понимают суть происходящих процессов и эти знания переносят на изучение и других сред, не связанных с системами программирования.
SN

S2

S1

S1

P

S2


S

P

SN

S2

S1

на

S

на

S

S1

P

S2


на

S

S

P

S

P

P

S




Приложенные файлы


Добавить комментарий