ОБРАЗОВАТЕЛЬНАЯ ЦЕЛЬ: Сформировать представление о понятиях “вспомогательный алгоритм”, “процедура”, “модуль” и научить составлять программный модуль из процедур в среде Pascal ABC.
ОБРАЗОВАТЕЛЬНЫЕ ЗАДАЧИ:
- анализ строения сложного объекта или процесса;
- понятие “вспомогательный алгоритм”;
- понятие “процедура” в среде программирования Pascal ABC;
- понятие “модуль” и способ его составления;
- программирование процедурным способом.
ТИП УРОКА: комбинированный.
ФОРМИРУЕМЫЕ УМЕНИЯ: анализировать и делать выводы, работать в среде программирования (Pascal ABC).
ОСНОВНЫЕ ПОНЯТИЯ: вспомогательный алгоритм, процедура, модуль.
ОСНАЩЕНИЕ: среда программирования Pascal ABC; готовые программы “Треугольник”, “Квадрат”, “Домик”.
АКТУАЛИЗАЦИЯ
Вспомним определения:
объект – некоторая часть окружающего мира, как единое целое;
алгоритм – описание последовательности действий, исполнение которых приводит к решению задачи за конечное число шагов;
шаг алгоритма – отдельное действие по исполнению алгоритма;
программа – упорядоченная последовательность команд (операторов), необходимых компьютеру для решения поставленной задачи
.Проверим знание программной среды
Рис. 1. Интерфейс программной среды Паскаль АВСФОРМИРОВАНИЕ НОВЫХ ПОНЯТИЙ И
СПОСОБОВ ДЕЙСТВИЙ
ОСНОВНЫЕ СВЕДЕНИЯ И ДЕМОНСТРАЦИИ:
Анализ строения сложного объекта или процесса
Анализируем ранее разработанные программы (таблица 1) для создания сложных объектов в графическом окне. {Эти программы сохраняются и могут использоваться многократно.}
Таблица 1.
Имя программы | Результат выполнения программы | Задание |
Treugolnik | Треугольник | Пример № 1 |
Kvadrat | Квадрат | Пример № 2 |
Domik | Домик | Пример № 3 |
Программы “Треугольник” и “Квадрат” отображают простые объекты, из которых могут состоять более сложные - “Домик”.
Выводы из примера, для написания программ:
Можно выделить простые объекты, из которых состоит более сложный объект, и написать программу для каждого простого объекта;
ПРИМЕР № 1
Program Kvadrat; // Объявление названия программы
Uses GraphABC;
Begin // Начало составного оператора (служебное слово)
MoveTo(50,50); //Передвигает невидимое перо к точке с координатами (50,50)
LineTo(50,100); //Рисует линию от текущего положения пера до точки с координатами (50,100)
LineTo(100,100);
LineTo(100,50);
LineTo(50,50);
End. // Конец составного оператора (служебное слово)
ПРИМЕР № 2
Program Treugolnik; // Объявление названия программы Uses GraphABC;
Var m:integer; // Объявление переменной: типа
Begin // Начало составного оператора (служебное слово)
m:=25; // Присвоение переменной значения 25
MoveTo(50,50); //Передвигает невидимое перо к точке с координатами (50,50)
LineTo(50+m,m); //Рисует линию от текущего положения пера до точки с координатами (50+25,25)
LineTo(100,50);
LineTo(50,50);
End. // Конец составного оператора (служебное слово)
Программа для отображения сложного объекта, состоящего из простых объектов, может быть создана объединением программ для отображения простых объектов.
ПРИМЕР № 3
Program Domik; // Объявление названия программы Uses GraphABC;
Var m:integer; // Объявление переменной: типа
Begin // Начало составного оператора (служебное слово)
MoveTo(50,50); //Передвигает невидимое перо к точке с координатами (50,50)
LineTo(50,100); //Рисует линию от текущего положения пера до точки с координатами (50,100)
LineTo(100,100);
LineTo(100,50);
LineTo(50,50);
LineTo(50+m,m); //Рисует линию от текущего положения пера до точки с координатами (50+25,25)
LineTo(100,50);
LineTo(50,50);
End. // Конец составного оператора (служебное слово)
Вспомогательный алгоритм
Алгоритмы для простых объектов, из которых строятся сложные, представляют как вспомогательные алгоритмы, присвоив им специальные имена. Программы для них можно написать позже.
Вспомогательный алгоритм – алгоритм, который можно использовать в других алгоритмах, указав только его имя.
Задание: нарисовать “домик”.
Выделим объекты, из которых состоит домик – квадрат и треугольник.
Изобразим алгоритм рисования домика в виде блок-схемы (рис. 2). {Для обозначения вспомогательного алгоритма используем блок в виде прямоугольника с двумя вертикальными линями.}
Рис. 2. Блок-схема алгоритма рисования домика
Напишем программу по этой блок-схеме (схематично):
Программа Домик;
Начало
Квадрат;
Треугольник;
Конец.
Процедура в среде программирования Pascal ABC
Процедура– вспомогательная программа, которая вызывается из другой программы.
Первый шаг создания домика - разработка отдельных программ вспомогательных алгоритмов (процедур) Квадрат и Треугольник.
Программа записывается в окне редактора кода. Ее название объявляется, как процедура и включается в язык Delphi Pascal как новая команда. Эту команду можно написать в составном операторе, в теле этой или другой программы. Таким образом, составленный алгоритм можно использовать для разработки других, более сложных алгоритмов.
ПРИМЕР № 4
Procedure KvadratP(x,y,x1,y1:integer); // Объявление названия процедуры и параметров
Begin // Начало составного оператора (служебное слово)
MoveTo(x,y); //Передвигает невидимое перо к точке с координатами (x,y)
LineTo(x1,y); //Рисует линию от текущего положения пера до точки с координатами (x1,y)
LineTo(x1,y1);
LineTo(x,y1);
LineTo(x,y);
End; // Конец составного оператора (служебное слово)
ПРИМЕР № 5
Procedure TreugolnikP(x,y,x1:integer); // Объявление названия процедуры и параметров Var m:integer;
Begin // Начало составного оператора (служебное слово)
m:=(x1-x) div 2;; // Присваиваем m целую часть от деления x1-x на 2
MoveTo(x,y); //Передвигает невидимое перо к точке с координатами (x,y)
LineTo(x+m,y-m); //Рисует отрезок от текущего положения пера до точки с координатами (x+m,y-m)
LineTo(x1,y);
LineTo(x,y);
End; // Конец составного оператора (служебное слово)
Второй шаг создания домика - разработаем программу “Домик”, включив в описательной части ранее разработанные процедуры “Квадрата” и “Треугольника”, а затем в составном операторе вызовем эти процедуры на исполнение.
ПРИМЕР № 6
Program Domik2; // Объявление названия программы Uses GraphABC;
Procedure KvadratP(x,y,x1,y1:integer); // Объявление названия процедуры и параметров
Begin // Начало составного оператора (служебное слово)
MoveTo(x,y); //Передвигает невидимое перо к точке с координатами (x,y)
LineTo(x1,y); //Рисует линию от текущего положения пера до точки с координатами (x1,y)
LineTo(x1,y1);
LineTo(x,y1);
LineTo(x,y);
End; // Конец составного оператора (служебное слово)
Procedure TreugolnikP(x,y,x1:integer); // Объявление названия процедуры и параметров
Var m:integer;
Begin // Начало составного оператора (служебное слово)
m:=(x1-x) div 2;; // Присваиваем m целую часть от деления x1-x на 2
MoveTo(x,y); //Передвигает невидимое перо к точке с координатами (x,y)
LineTo(x+m,y-m); //Рисует отрезок от текущего положения пера до точки с координатами (x+m,y-m)
LineTo(x1,y);
LineTo(x,y);
End; // Конец составного оператора (служебное слово)
Begin // Начало составного оператора (служебное слово)
KvadratP (50,50,100,100); // Вызов на исполнение процедуры Kvadrat
TreugolnikP (50,50,100); // Вызов на исполнение процедуры Treugolnik
end. // Конец составного оператора (служебное слово)
Модуль и способ его составления
Анализируя разработанные программы, выходим на понятие модуль.
Понять преимущество процедур можно в результате многократного решения задач, результативность которых очевидна.
Напишем программу для постоянного хранения разработанных процедур - модуль.
Модуль – совокупность процедур, связанных определенными правилами.
ПРИМЕР № 7
Unit Risunok; // Объявление названия модуля
Uses GraphABC;
Procedure KvadratP (x,y,x1,y1:integer); // Объявление названия процедуры и параметров
Begin // Начало составного оператора (служебное слово)
MoveTo(x,y); //Передвигает невидимое перо к точке с координатами (x,y)
LineTo(x1,y); //Рисует линию от текущего положения пера до точки с координатами (x1,y)
LineTo(x1,y1);
LineTo(x,y1);
LineTo(x,y);
End; // Конец составного оператора (служебное слово)
Procedure TreugolnikP (x,y,x1:integer); // Объявление названия процедуры и параметров
Var m:integer;
Begin // Начало составного оператора (служебное слово)
m:=(x1-x) div 2;; // Присваиваем m целую часть от деления x1-x на 2
MoveTo(x,y); //Передвигает невидимое перо к точке с координатами (x,y)
LineTo(x+m,y-m); //Рисует отрезок от текущего положения пера до точки с координатами (x+m,y-m)
LineTo(x1,y);
LineTo(x,y);
End; // Конец составного оператора (служебное слово)
End. // Конец модуля
Разработаем программу “Домик” включая в описательной ее части ранее разработанные процедуры.
ПРИМЕР № 8
Program DomikM; // Объявление названия программы
Uses GraphABC, Risunok; // Подключение модулей
Begin // Начало составного оператора (служебное слово)
KvadratP (50,50,100,100);
TreugolnikP (50,50,100);
End. // Конец составного оператора (служебное слово)
Рассмотрим разработанные программы пример № 6 и пример № 8, в каждой из них имеется вызов процедуры - программы вспомогательного алгоритма. Однако на разработку программы пример №8 потрачено времени в несколько раз меньше.
ПРИМЕНЕНИЕ
V. Программирование процедурным способом
Задания для самостоятельной работы:
Написать программу для рисования вертикального столбика из 8 квадратов.
Написать программу для рисования горизонтального ряда из 8 квадратов.
Написать программу для рисования поля, состоящего из 8 рядов по 8 квадратов {Матрица для шахматной доски.}.
ЗАКРЕПИТЕЛЬНЫЙ ОПРОС:
Вспомогательный алгоритм – алгоритм, который можно использовать в других алгоритмах, указав только его имя.
Процедура – вспомогательная программа, которая вызывается из другой программы.
Модуль – совокупность процедур, связанных определенными правилами.
ИТОГ УРОКА:
ЗАДАНИЕ НА ДОМ: Разработать программу с использованием процедурного подхода (геометрический ленточный орнамент)