Алгоритмизация и программирование

Автор работы: Пользователь скрыл имя, 12 Марта 2014 в 17:56, лекция

Краткое описание

Изучение алгоритмизации в школьной информатике может иметь два целевых аспекта: первый — развивающий аспект, под которым понимается развитие алгоритмического (еще говорят — операционного) мышления учащихся; второй — программистский аспект. Составление программы для ЭВМ начинается с построения алгоритма; важнейшим качеством профессионального программиста является развитое алгоритмическое мышление. Если в первом школьном учебнике информатики [15] в изучении алгоритмизации превалировал второй, программистский, аспект, то в дальнейшем стала больше подчеркиваться развивающая роль данной темы.

Прикрепленные файлы: 1 файл

Лекции по теме Алгоритмизация и программирование.docx

— 132.66 Кб (Скачать документ)

Важнейшим оператором является оператор присваивания. В ЯПВУ оператор присваивания записывается практически так же, как в алгоритмическом языке команда присваивания.

В ЯПВУ одним оператором представляются целые алгоритмические структуры: ветвление, цикл. Правда, такое есть не во всех языках (например, нет в стандартном Бейсике). Языки, в которых имеются структурные операторы, принято называть структурными языками. К их числу относятся Паскаль и Си.

Изучение языков программирования высокого уровня в базовом курсе должно носить только ознакомительный характер. Но использовать для этого какой-то учебный язык, учебную систему программирования, совсем не обязательно. Реальные ЯПВУ можно изучать с разной степенью подробности. Освоение же работы в современных системах программирования на таких языках не вызывает больших затруднений.

Наиболее целесообразно для начального знакомства с языками программирования использовать язык Паскаль. Язык Паскаль был создан в 1971 г. Никлаусом Виртом как учебный язык. Основной принцип, заложенный в нем, — это поддержка структурной методики программирования. Этот же принцип лежит в основе учебного алгоритмического языка (АЯ). По сути дела, расхождение между АЯ и Паскалем состоит в следующем: АЯ — русскоязычный, Паскаль — англоязычный; синтаксис Паскаля определен строго и однозначно в отличие от сравнительно свободного синтаксиса АЯ.

Конечно, учитель может выбрать и язык Бейсик из-за привычки к нему или при отсутствии системы программирования на Паскале. Но в этом случае возникают серьезные методические проблемы: как аккуратно отразить концепцию типов данных и структурную методику программирования на Бейсике? В принципе, известно, как это делать, но для неопытного учителя это может оказаться проблемой.

Поскольку в базовом курсе ставится только лишь цель первоначального знакомства с программированием, то строгого описания языка программирования не требуется. Основной используемый метод — демонстрация языка на примерах простых программ с краткими комментариями. Некоторые понятия достаточно воспринять ученикам на «интуитивном» уровне. Наглядность такого языка, как Паскаль, облегчает это восприятие. Кроме того, пониманию помогает аналогия между Паскалем и русскоязычным алгоритмическим языком. Для выполнения учениками несложных самостоятельных заданий достаточно действовать методом «по образцу».

Учитель может задуматься над проблемой: как лучше связать изучение методов построения алгоритмов работы с величинами и языка программирования. Здесь возможны два варианта:

1) сначала  рассматриваются всевозможные алгоритмы, для описания которых используются  блок-схемы и АЯ, а затем —  правила языка программирования, способы перевода уже построенных  алгоритмов в программу на  этом языке;

2) алгоритмизация  и язык программирования осваиваются  параллельно.

В учебнике [15] используется первый подход, в учебниках [6, 12] использован второй подход. В курсе А.Г.Кушниренко [14] учебный алгоритмический язык доведен до уровня языка программирования, реализованного в системе КуМир. В этом случае алгоритмизация и программирование осуществляются в единой языковой среде.

Опыт показывает, что теоретическое изучение алгоритмизации и программирования, оторванное от практики, малоэффективно. Желательно, чтобы ученики как можно раньше получили возможность проверять правильность своих алгоритмов, работая на компьютере. А для этого им нужно знакомиться с языком программирования, осваивать приемы работы в системе программирования. Метод последовательного изучения алгоритмизации и языка программирования приемлем лишь в «безмашинном» варианте.

Даже при использовании компьютера, на первом этапе рекомендуется не отказываться от ручной трассировки алгоритма. Этот прием помогает ученикам «почувствовать» процесс исполнения, увидеть свои ошибки, допущенные в алгоритме. Когда же они станут более опытными программистами, например осваивая профильный курс программирования в старших классах, тогда можно будет отказаться от ручной трассировки.

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

• линейные алгоритмы: вычисления по формулам, всевозможные пересылки значений переменных;

• ветвящиеся алгоритмы: поиск наибольшего или наименьшего значений из нескольких данных; сортировка двух-трех значений; диалог с ветвлениями;

• циклические алгоритмы: вычисление сумм и произведений числовых последовательностей, циклический ввод данных с последовательной обработкой.

Такая последовательность задач рассматривается в учебнике [6] и предлагается в списке заданий для самостоятельного выполнения.

 

Примеры решения задач

Изучение языка программирования происходит в контексте решаемых задач, т.е. новые средства языка вводятся по мере необходимости для решения очередного типа задач. Рассмотрим решение некоторых задач с использованием языка Паскаль, предлагаемых в учебнике [6]. Эти примеры иллюстрируют использование метода аналогии между учебным алгоритмическим языком и Паскалем.

 

Пример 1. Составить алгоритм, по которому на компьютере будет происходить следующее: в переменную S вводится возраст Саши, в переменную М вводится возраст Маши. В качестве результата на экран выводится фраза «Саша старше Маши», или «Маша старше Саши», или «Саша и Маша ровесники». Написать программу на Паскале по этому алгоритму.

Решение. Алгоритм имеет структуру двух вложенных полных ветвлений. При переходе от алгоритмического языка к Паскалю следует обратить особое внимание на необходимость точного соблюдения правил синтаксиса языка: точки с запятой в конце операторов, параметров ввода и вывода в круглых скобках и пр.

 

алг САША-MАША     Program Sasha&Masha;

вещ S, M       var S, M: real;

нач вывод 'Возраст Саши:' .   begin write ('Возраст

ввод S        Саши:');

вывод 'Возраст      readln(S);

Маши:'      write('Возраст

ввод М        Маши:');

если S > M       readln( М);

то вывод 'Саша      if S > М

старше Маши'     then write('Саша

иначе если S = М       старше Маши')

то вывод 'Саша    else if S = М

и Маша      then write('Саша

ровесники'     и Маша ровесники')

иначе вывод     else write('Маша

'Маша старше     старше Саши')

Саши1    end.

кв

кв

кон

 

Пример 2. Составить алгоритм упорядочения значений трех переменных по возрастанию, т.е. при любых исходных значениях А, Б, С отсортировать их так, чтобы стало А < В < С. Написать программу на Паскале по этому алгоритму.

Решение. В подразделе 12.4учебника [6] рассмотрен алгоритм упорядочения значений двух переменных. Для решения данной задачи требуется трижды применить этот алгоритм: упорядочить А и В, упорядочить В и С (после этого максимальное значение попадет в С), еще раз упорядочить Aw. В. Таким образом, алгоритм будет иметь структуру трех последовательных неполных ветвлений.

 

Алг СОРТИРОВКА-3     Program SORT_3;

вещ А, В, С, X      var A,B,C,X: real;

нач        begin

ввод А, В, С      readln (А, В, С);

если А > В       if A > В

то        then begin

X := А;       X := А;

А := В;       А := В;

В := X       В := X

kb        end;

если В > С      if В > С

то then       begin

X := В;       X := В;

В := С;       В := С;

С := X       С := X

kb        end;

если А > В       if A > В

то        then begin

X := А;       X := А;

А := В;       А := В;

В := X       В := X

kb        end;

вывод А,В,С      write(А,В,С)

кон        end.

 

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

В учебнике [6] подпрограммы не рассматриваются. Это объясняется ограниченностью учебного времени, которое можно выделить в базовом курсе на тему «Введение в программирование». При наличии дополнительного времени рекомендуется дать ученикам представление о подпрограммах. Рассмотренная здесь задача может быть использована как опорная для раскрытия этой темы. Приведем пример программы сортировки значений трех переменных с использованием процедуры (правила работы с процедурами смотрите в учебниках по Паскалю).

Program Sort_3;

var А, В, С: real;

Procedure SOR2(var X,Y: real);

var Z: real; begin

Z:=X; X:=Y; Y:=Z

end;

begin readln(А,В,С);

SOR2(A,B);

SOR2(B,C) ;

SOR2(A,B) ;

writeln(A,B,C)

end.

 

Пример З. Дано вещественное число Хк натуральное N. Составить алгоритм вычисления XN. Написать программу на Паскале.

Решение.В Паскале нет операции возведения в степень. Если показатель степени — целое положительное число, то возводить в степень нужно путем ЛГ-кратного умножения основания самого на себя. Реализуется это циклическим алгоритмом:

 

алг Степень     Program Power;

цел N,i; вещ X;     var N,i: integer;

нач ввод N       X: real;

ввод X     begin readln(N);

i:=l;       readln(X);

Y:=l;       i:=i;

пока i<=N, повторять    Y:=l;

нц       while i<=N do

Y:=Y*X     begin

i:=i+l       Y:=Y*X;

кц        i:=i+l

вывод Y      end;

кон       write(Y)

end.

 

При выполнении трассировки этого алгоритма обязательно следует проверить правильность его работы при N = 0. Как известно из математики, Х° = 1. Трассировка доказывает, что и в этом случае алгоритм будет давать правильный результат.

 

Пример 4. Последовательно вводятся N целых чисел. Найти максимальное из них.

Решение. В программировании часто приходится решать задачу поиска максимального (минимального) значения в числовом массиве. В базовом курсе могут не рассматриваться структурированные данные, в том числе массивы. Однако-эту задачу можно решить и без использования массива, ограничившись простыми переменными. Для этого ввод данных и обработку надо совместить в одном цикле. Вот как это делается:

 

Алг максимум      Program maximum;

цел N, i, X, MAX      var N, i, X, MAX: integer;

нач        begin

вывод 'введите N';      write('введите N');

ввод N       readln(N);

вывод 'введите X';      write С введите X');

ввод X       readln(X);

МАХ:=Х; i:=l       MAX:= X; i:=l;

пока i < N, повторять     while i < N do

нц        begin

вывод 'Введите X';      write('Введите X');

ввод X       readln(X);

если X > MAX      if X > MAX

то MAX:=X       then MAX: = X;

kb        i : = i + 1

i: = i + l           end;

кц            writeln(MAX)

вывод MAX       end.

кон

 

Методические рекомендации

по изучению систем программирования

 

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

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

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

Определенная стандартизация оболочек систем программирования произошла с появлением турбо-систем фирмы Borland. Для таких сред характерно наличие на экране двух компонент: окна редактора, на котором формируется текст программы, и меню команд переключения режимов работы системы.

Характерными режимами работы СП являются:

— режим редактирования текста программы;

— режим компиляции;

— режим исполнения;

— режим работы с файлами;

— режим помощи;

— режим отладки программы.

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

Информация о работе Алгоритмизация и программирование