106.50K
Category: programmingprogramming

Вспомогательные алгоритмы. Процедуры

1.

ВСПОМОГАТЕЛЬНЫЕ
АЛГОРИТМЫ. ПРОЦЕДУРЫ
Урок 1
Учитель: Н.В. Фоменко

2.

ПОНЯТИЕ ВСПОМОГАТЕЛЬНОГО
АЛГОРИТМА
Вспомогательный алгоритм – это алгоритм,
целиком используемый в составе другого
алгоритма, т.е. это алгоритм решения
некоторой задачи, являющейся подчиненной
по отношению к исходной (основной) задаче.
Изображение на блок-схемах:
Имя всп.
алгоритма

3.

ВСПОМОГАТЕЛЬНЫЙ АЛГОРИТМ ДОЛЖЕН
Иметь имя, по которому его можно вызвать из
основной программы
Иметь достаточно малые размеры
После завершения работы возвращать управление
тому алгоритму, из которого он был вызван
Основной алгоритм, вызвавший вспомогательный
алгоритм, после завершения работы последнего
должен продолжить работу с той точки, в которой
он был прерван

4.

ВСПОМОГАТЕЛЬНЫЕ АЛГОРИТМЫ В
ЯЗЫКЕ PASCAL
Называются подпрограммами
Различают два вида подпрограмм:
процедуры
• функции

5.

ПРОЦЕДУРА
Это подпрограмма, имеющая имя, которая
начинает выполняться после ее вызова по
имени из главной программы
Синтаксис:
procedure имя;
раздел описания локальных переменных
begin
тело процедуры
Заканчивается знаком ;
end;
Процедура записывается в тексте программы
перед оператором begin, начинающим
основную программу

6.

ЛОКАЛЬНЫЕ И ГЛОБАЛЬНЫЕ
ПЕРЕМЕННЫЕ
Глобальные переменные – переменные, которые
описаны в основной программе. Они действуют в
теле основной программы и в процедуре
Локальные переменные описываются в процедуре
и действуют только внутри нее
Глобальные переменные можно использовать в
любом месте программы, если их имена не
совпадают с локальными. В этом случае говорят,
что локальная переменная закрывает собой
глобальную
Правило: стараться так писать программы, чтобы
имена переменных не повторялись в основной
программе и в подпрограмме

7.

ЗАДАЧА
Заполнить массив из 10 элементов
случайными числами от -20 до +20
Вывести массив на экран
Поменять местами элементы массива
следующим образом: 1-2, 3-4,…, 9-10
Вывести измененный массив на экран
начало
ввод
вывод
обмен
Разобьем умышленно этот алгоритм на
подзадачи и каждую оформим как процедуру
Процедура Вывод будет вызвана 2 раза
вывод
конец

8.

РЕШЕНИЕ
program massiv;
procedure change;
const n=10;
Локальная
var i,t: integer;
переменная
var a: array [1..n] of integer; begin
procedure inp;
for i:=1 to n div 2 do
var i: integer;
begin
begin
t:=a[2*i-1];
randomize;
a[2*i-1]:=a[2*i];
for i:=1 to n do
a[2*i]:=t
a[i]:=-20+random(41);
end;
end;
end;
procedure out;
var i: integer;
begin
Начало
begin
inp;
основной
for i:=1 to n do
out;
программы
write((a[i]:4);
change;
writeln
out
end;
end.
!Правило: переменная счетчик цикла должна быть описана внутри
того блока, в котором этот цикл используется, т.е. является докальной
English     Русский Rules