
- •Где же описывается процедура ?
- •1. Вызов с диска готовых программ и их анализ.
- •( Повторить команды вызова готовой программы с диска на компьютерах типа укнц или ibm pc).
- •Задача 1.
- •Задача 2.
- •Задача 3.
- •О писание данных
- •(* Функция пользователя *)
- •Вспомогательные алгоритмы и их реализация на Бейсике.
« Процедуры и функции », учитель высшей категории Федорова И.Е.
Тема урока: Процедуры и функции.
Цель урока: дать понятие процедуры, ее назначение, глобальные и локальные параметры, вызов процедуры,
Тип урока : комбинированный.
Оборудование : компилятор языка программирования Паскаль.
Ход урока:
1. Лекция.
Если какая-то часть программы многократно повторяется с разными исходными данными, то её оформляют отдельно от основной программы и называют процедурой ( подпрограммой). К ней обращаются по мере необходимости использования.
Большую программу разбивают на отдельные части (процедуры), программируют их отдельно, а затем на этапе редактирования связей объединяют в единую программу. Процедуры располагаются в разделе описаний основной программы. Можно создать библиотеку процедур и вызывать их по мере необходимости.
Основная программа
pp1;
pр1;
end;
pр2;
pp2;
end;
end;
Подпрограмма (процедура) вызывается по имени.
Данные из основной программы передаются в процедуру, которая начинает выполняться, а затем результаты процедуры передаются в основную программу, в то место, откуда был сделан вызов программы и продолжает выполняться основная программа.
Процедура состоит из заголовка, раздела описаний и раздела операторов.
Все имена переменных, используемые в основной программе, называются глобальными, они действуют и в основной программе и в любой подпрограмме.
Имена переменных, используемые в процедуре, называются локальными, они действуют только в процедуре и недоступны операторам основной программы.
Где же описывается процедура ?
Процедура находится в разделе описаний основной программы с учетом принятого порядка объявления данных.
PROGRAM PRIMER;
{ раздел описаний основной программы }
LABEL
CONST
TYPE
VAR
ПРОЦЕДУРА PP1;
ПРОЦЕДУРА PP2;
{ раздел описаний основной программы }
BEGIN
PP1; { вызов процедуры РР1 }
PP2; { вызов процедуры РР2 }
END.
Например:
PROCEDURE KRUG ( формальные параметры);
блок описаний
процедуры
BEGIN
раздел операторов
процедуры
END;
Вызов процедуры осуществляется по имени, в скобках указываются ( если требуется ) фактические параметры.
ВЫЗОВ ПРОЦЕДУРЫ:
KRUG ( фактические параметры);
С помощью формальных и фактических параметров данные передаются из программы в процедуру и обратно.
В качестве формальных параметров могут быть использованы только переменные с указанием их типа.
В качестве фактических параметров могут быть переменные, константы, массивы без указания типа.
Процедура может содержать несколько исходных данных и несколько результатов. Каждый результат имеет имя. В основной программе после выполнения процедуры мы можем пользоваться этими результатами, сохраняя те же имена или давая другие.
Урок 2.
Тема урока: практическая работа.
Цель урока: обучить написанию программ с использованием процедур, рассмотреть примеры с использованием процедур.
Ход урока:
1. Вызов с диска готовых программ и их анализ.
( Повторить команды вызова готовой программы с диска на компьютерах типа укнц или ibm pc).
Пример 1.
PROGRAM PODPR;
USES CRT; (* ДЛЯ IBM PC *)
PROCEDURE PRIPEV;
BEGIN
WRITELN (ТУМ-БА-ЛА-ЛА !');
END;
BEGIN (* начало основной программы *)
CLRSCR; (* ДЛЯ IBM PC *)
WRITELN (' МЫ ИДЕМ И ПОЕМ ’);
PRIPEV;
WRITELN (‘ ТАМ ЗА ГОРАМИ СИНИЙ ЛЕС’ );
PRIPEV;
WRITELN (' СКОРО МЫ ТУДА ДОЙДЕМ ?' );
PRIPEV;
WRITELN (' МНОГО ЯГОД МЫ НАЙДЕМ ?' );
PRIPEV;
REPEAT UNTIL KEYPRESSED; (* ДЛЯ IBM PC *)
END.
Пример 2.
PROGRAM PTS1;
USES CRT;
VAR A, B, S1, S2 : REAL;
PROCEDURE PLACE ( X,Y:REAL; VAR SK, SP:REAL);
{ X и Y принимаются значения,
SK и SP передаются о основную программы и
являются результатами работы процедуры }
BEGIN
SK:=SQR(X); { КВАДРАТ }
SP:=X*Y; { ПРЯМОУГОЛЬНИК }
END;
{ОСНОВНАЯ ПРОГРАММА}
BEGIN
CLRSCR;
WRITELN ('ВВЕДИТЕ ЗНАЧЕНИЯ А, В:');
READ (A,B);
WRITELN;
PLACE (A,B,S1,S2); { ВЫ ЗОВ PLACE }
{А,В- передаются в процедуру ,
S1,S2- принимаются в качестве
результатов работы процедуры }
WRITELN (' Sl= ',S1:5:2; S2=',S2:5:2);
REPEAT UNTIL KEYPRESSED;
END.
Пример 3.
(*-----------------------------------------------------------------!
Фигурное катание !
------------------------------------------------------------------------------*)
PROGRAM MINMAX;
USES CRT;
CONST N=6; { ЧИСЛО СУДЕЙ }
TYPE MASSIV=ARRAY[1..N] OF REAL;
VAR
A : MASSIV; { МАССИВ ОЦЕНОК }
I : INTEGER; { ПАРАМЕТР ЦИКЛА }
MAX : REAL; { МАКСИМАЛЬНАЯ ОЦЕНКА }
MIN : REAL; { МИНИМАЛЬНАЯ ОЦЕНКА }
{ ПРОЦЕДУРА MAXMIN }
PROCEDURE MAXMIN ( K: INTEGER; VAR X : MASSIV;
VAR MAX,MIN : REAL );
VAR J : INTEGER;
BEGIN
MAX:=X[1];
MIN:=X[1];
FOR J:=l TO К DO
BEGIN
IF X[J]>MAX THEN MAX:=X[J];
IF X[J]<MIN THEN MIN:=X[J];
END; { конец цикла }
END; { конец процедуры }
{ Основная программа }
BEGIN
CLRSCR;
WRITELN ( 'КАКИЕ ОЦЕНКИ ДАЛИ СУДЬИ? ');
FOR I:=I TO N DO READ(A[I]);
MAXMIN (N,A,MAX,MIN); {ВЫЗОВ ПРОЦЕДУРЫ}
{ N, A – передаются в процедуру,
MAX, MIN - принимаются основной программой
как результаты работы процедуры }
WRITELN;
WRITELN;
WRITELN(' Максимальная оценка =’, МАХ:4:1);
WRITELN(‘Минимальная оценка = ', MIN :4:1);
REPEAT UNTIL KEYPRESSED;
END. { конец основной программы }
Задачи для самостоятельного решения.
Заменить отрицательные элементы линейной таблицы вычисления их
модулями, не пользуясь стандартной функцией вычисления модуля числа,
2) Написать программу вычисления значения выражения
(А!+М!)/С! где А, М и С - вводятся с клавиатуры,
Найти максимум из 4 чисел, в качестве процедуры используйте поиск максимальных из двух чисел.
Задачи должны решаться самостоятельно.
Примечание: ввиду сложности материала для слабых учащихся можно предложить готовый вариант программ с объяснением особенностей передачи параметров из основной программы в процедуру и обратно.
Возможные варианты задач.