ТЕМА: "
ПРОЦЕДУРЫ И ФУНКЦИИ В ПАСКАЛЕ"
Ход
урока.
I. Актуализация
опорных знаний.
Повторить структуру Паскаль
программы:
PROGRAM имя;
раздел
описаний
BEGIN
раздел операторов
END.
Раздел описаний:
USES -
подключение библиотеки
LABEL - подраздел меток
CONST - подраздел
констант
TYPE - подраздел типов
VAR - подраздел переменных
PROCEDURE,
FUNCTION - подраздел процедур и функций.
II. Новая
тема.
- Что такое
подпрограмма?
Процедуры и функции аналогичны программам в миниатюре и
имеют общее название - подпрограммы.
Подпрограмма - это часть
программы, описывающая некоторый алгоритм, который можно многократно
использовать, обращаясь к нему из различных точек программы.
- Зачем нужны
подпрограммы?
Применение подпрограмм дает возможность уменьшать число
повторений одной и той же последовательности операторов, а также
конструировать программу как набор отдельных подпрограмм. Это позволяет
получить более логичный процесс программирования.
- Где располагаются
подпрограммы в программе?
В программе описание процедур и функций должно
располагаться между разделами переменных и операторов.
- Как работает компьютер
по программе, имеющую подпрограммы?
Выполнение программы, имеющую
подпрограмму, начинается с выполнения основной программы. Как только в
программе идет обращение к подпрограмме, данные из основной программы (входные
данные) передаются в подпрограмму, которая начинает выполняться. Затем
результаты подпрограммы (выходные данные) передаются в основную программу в то
место, откуда был сделан вызов подпрограммы, и продолжает выполняться основная
программ.
- Как оформляется
подпрограмма?
Подпрограмма оформляется подобно основной программе, т.е.
состоит из заголовка, раздела описаний, раздела операторов.
- Различие глобальных и
локальных переменных?
Все имена, представленные в разделе описаний основной
программы, называются глобальными. Они действуют как в разделе операторов
основной программы, так и в любой подпрограмме. Имена, представленные в
разделе описаний подпрограммы, называют локальными. Они действуют только в
рамках подпрограммы и недоступны операторам основной программы.
- Два вида подпрограмм в
Паскале?
В языке Паскаль имеется два вида подпрограмм:
процедура
(PROCEDURE), функция (FUNCTION)
- Оформление
процедур.
PROCEDURE имя (формальные параметры);
раздел
описаний
BEGIN
раздел операторов
END;
Вызывается процедура по
имени:
имя (фактические параметры);
- Фактические и формальные
параметры.
С помощью фактических и формальных параметров данные передаются
из программы в процедуру и из процедуры в программу. В качестве формальных
параметров могут быть только переменные с указанием типа, а в качестве
фактических параметров могут быть константы, переменные, выражения без
указания их типа.
- Примеры программ с
процедурами.
Пример 1. Вычислить:
Решение.
XN = X * X *
X* ... *X
program pr1;
var d,q,z,a,m,b:integer;
y,y1,y2,y3:
real;
procedure step(x,n:integer; var w:real);
var
i:integer;
begin
w:=1;
for i:=1 to n
do
w:=w*x;
end;
begin
read (d,q,z,a,m,b);
step
(d,q,y1);
step (z,a,y2);
step (m,b,y3);
y:=(y1+y2)/y3;
writeln
('y=',y);
end.
Пример 2. Среди трехзначных чисел найти такие,
в которых сумма факториалов цифр равнялась бы самому числу.
program
pr2;
var a,b,c,i,s1,s2,s3:integer;
procedure fak(x:integer; var
s:integer);
var i:integer;
begin
s:=1;
for i:=1 to x
do
s:=s*i;
end;
begin
for i:=100 to 999 do
begin
a:=i div
100;
b:=(i-a*100) div 10;
c:=i - a*100 - b*10;
fak (a,s1);
fak
(b,s2);
fak (c,s3);
if s1+s2+s3=i then writeln
(i);
end;
end.
- Оформление
функций.
Функция - это подпрограмма, результат выполнения
которой есть единственное скалярное значение, присваемое имени этой функции.
FUNCTION ИМЯ(список формальных параметров: тип): тип;
раздел
описаний
BEGIN
раздел операторов;
END;
Вызывается функция по ее
имени с указанием фактических параметров. При этом вызов функции можно делать
непосредственно внутри выражения, подобно тому, как используются стандартные
встроенные функции, например SIN(X).
- Пример программы с
функциями.
Пример 3. Даны действительные числа S и T. Получить:
F(T,-2*S,1.17) + F(2.2,T,S-T), где
program pr3;
var y,t,s:real;
function
form(a,b,c:real):real;
begin
form:=(2*a-sin(c))/(5+abs(c));
end;
begin
read
(t,s);
y:=form(t,-2*s,1.17)+form(2.2,t,s-t);
writeln
(y:8:2);
end.
Пример 4. Даны действительные числа a,b,c.
Получить:
program pr4;
var a,b,c,z:real;
function
max(x,y:real):real;
var m:real;
begin
if x>y then m:=x else
m:=y;
end;
begin
read
(a,b,c);
z:=(max(a,a+b)+max(a,b+c))/(1+max(a+b*c,1.5));
writeln
(z:8:2);
end.
- Различие процедур и
функций.
Функции являются частным случаем процедур и принципиально
отличаются от них тем, что:
1. результат выполнения функции - одно
значение, а процедуры - одно или несколько;
2. результат выполнения функции
передается в основную программу как значение имени этой функции, а результаты
выполнения процедуры - как значения ее параметров.
III. Практическая
работа на ЭВМ.
Вызвать с диска программы с
именами: podpr1.pas, podpr2.pas, podpr3.pas, podpr4.pas. Запустить их на
выполнение. Получить результаты.
IV. Домашнее задание.
- Выучить
конспект.
- Прочитать материал по
книге.
- Решить
задачи:
Задача № 1. Даны
координаты вершин треугольника и точки внутри него. Найти расстояние от данной
точки до ближайшей стороны треугольника.
Задача № 2. Вычислить:
Z=F(SIN A, B) + F(COS A, B) + F (SIN2 A, B-1) + F(SIN A - COS A, B2 -
1) + F(SIN2 A-1, COS A+B),
где
к оглавлению
на домашнюю