Автор работы: Пользователь скрыл имя, 16 Января 2011 в 18:33, лабораторная работа
Цель работы: изучить работу процедуры и функции и обрести навык написания программ с применением процедур и функций
а)
В программе оператор процедуры использован
дважды, и каждый раз он вызывает из описательной
части программы процедуру STEP1. В теле
процедуры произойдет замена формальных
параметров N,X,Y на фактические M,A,Z
первый раз и на M,1/A,Z второй раз. Затем
выполняется совокупность действий, предусмотренных
операторами процедуры, и в программу
будет возвращен результат Z. Возврат
осуществляется к оператору программы
STEP4, следующему за оператором вызова
процедуры. Очень важно понимать суть
и механизм замены формальных параметров
фактическими.
Формальные параметры – это переменные, фиктивно (формально) присутствующие в процедуре и определяющие тип и место подстановки фактических параметров.
Фактические параметры – это реальные объекты (программы, заменяющие в теле процедуры при ее вызове формальные параметры). Над этими объектами и производятся действия, предусмотренные операторами тела процедуры.
Имена формальных и фактических параметров целесообразно выбирать различными, что сделает программу более наглядной.
Обращение к функции осуществляется аналогично
обращению к стандартным функциям (sin,
cos, tan и т.д.) и является разновидностью
операнда в выражениях в отличие от вызова
процедуры, являющегося разновидностью
оператора. В этом месте выражения, где
это необходимо, записывается имя функции,
вслед за которым в скобках перечисляются
фактические параметры. Если вызывается
функция без параметров, то указывается
только ее имя.
Пример:
Составить программу вычисления
,
используя
функцию STEP3, описанную в п. 1.2., (A
– действительное, n -
целое).
{
Пример вычисления
функции }
PROGRAM STEP6;
VAR M: INTEGER;
A, Z, R: REAL;
{
Функция вычисления
степени }
FUNCTION STEP3(N: INTEGER; X: REAL): REAL;
VAR M: INTEGER;
Y: REAL;
BEGIN {STEP3}
Y:=1;
FOR I:=1 TO N DO
Y:=Y*N;
SYEP3:=Y
END;
{STEP3}
BEGIN
READ (A,M);
WRITELN (‘A=’, A, ‘M=’, M);
Z:=STEP3(5,A)+STEP3(5, 1/A);
IF M=0 THEN R:=1
ELSE IF M>0 THEN R:=STEP3(M,A)
ELSE R:=STEP3(M,1/A);
Z:=Z/(2*R);
WRITELN(‘Z=’, Z)
END.
Функция STEP3 вызывается четыре раза для различных значений фактических параметров. Определение фактических и формальных параметров, локальных и глобальных переменных для функций и процедур совершенно идентично.
Процедуры могут работать не только с простыми переменными, но и с массивами. В качестве примера рассмотрим следующую задачу.
Даны два вектора: А, состоящий из трех элементов, и В, состоящий из четырех элементов. Возвести каждый элемент вектора в квадрат и найти сумму элементов. Действия над векторами оформить в виде процедуры.
PROGRAM SUMMA;
TYPE MAX=ARRAY[1..4] OF REAL;
VAR S1, S2: REAL;I: INTEGER;
A,B: MAX;
PROCEDURE PR(N: INTEGER;VAR S: REAL;VAR C: MAX );
VAR I: INTEGER;
BEGIN
S:=0;
FOR I:=1 TO N DO
BEGIN
C[I]:=SQR(C[I]);
S:=S+C[I]
END;
BEGIN
FOR I:=1 TO 3 DO
READLN(A[I]);
FOR I:=1 TO 4 DO
PR(3,S1,A);
PR(4,S2,B);
WRITELN(S1,S);
FOR I:=1 TO 3 DO
WRITE(A[I]);
FOR I:=1 TO 3 DO
WRITE(B[I]);
END.
2.
Задание
2.1 Из таблицы 1. По номеру компьютера взять задание и составить программу,
иcпользуя подпрограмму- процедуру.
2.2 Из таблицы 2 по номеру компьютера взять задание и составить программу, ис
пользуя подпрограмму FUNCTION.
2.3 Из таблицы 3 по номеру компьютера взять задание и составить программу, ис
пользуя подпрограмму FUNCTION.
2.4 Из таблицы 4. По номеру компьютера взять задание и составить программу, ис
пользуя подпрограмму- процедуру
3.
Содержание Отчёта
ОТЧЁТ ДОЛЖЕН СОДЕРЖАТЬ:
1) Задание к работе;
2) Программу;
3) Блок- схему алгоритма;
4) Результаты
расчётов;
4.
Контрольные вопросы:
Здесь
использованы следующие
процедуры:
GoToXY (X,
Y:Byte) - перемещает курсор к элементу экрана
с заданными координатами, учитывая, что
размер экрана в текстовом режиме 25 строк
по 80 символов.
TextBackGround (Color : Byte) – задает цвет фона.
TextColor (Color
: Byte) – задает цвет символов.
uses crt;
var s1,s2,s3:string;
c1,c2,c3:byte;
procedure pr(s:string;x,y,c:byte);
begin
textcolor(c);
gotoxy(x,y);writeln(s);
end;
begin
writeln('введите оценку по математике');readln(s1);
writeln('введите оценку по физике');readln(s2);
writeln('введите оценку по истории');readln(s3);
clrscr;
pr('матемаитка'+s1,1,1,5);{на первом месте текст, столбец, строка, цвет печати}
pr('физика'+s2,40,10,8); {физика+ оценка, столбец 40, строка 10, цвет 8(серый)}
pr('история'+s3,70,23,12); {история+, столбец 70, строка 23, цвет 12(св крас)}
repeat until keypressed;
end.
N вар. | Содержание задания |
1. | Процедура запрашивает три фамилии и выводит текст в заданном месте экрана.(использовать модуль crt) |
2. | Процедура запрашивает имена трёх человек и выводит их разным цветом.(использовать модуль crt) красный синий голубой) |
3. | Процедура запрашивает оценки по трём предметам и цвет и выводит данным цветом.(использовать модуль crt)(красный синий голубой) |
4. | Процедура запрашивает частоту обновления трёх марок мониторов и выводит их мерцающим цветом. (использовать модуль crt) |
5. | Процедура запрашивает частоту трёх марок процессора и выводит их по главной диагонали. (использовать модуль crt) |
6. | Процедура запрашивает три объёма памяти различных марок видео карт и выводит их по побочной диагонали. (использовать модуль crt) |
7. | Процедура запрашивает частоты трёх марок материнских плат процессора и выводит их сверху, посередине, внизу средней части экрана. (использовать модуль crt) |
8. | Процедура запрашивает скорость трёх марок машин и выводит их в центре экрана в начале в середине и в конце строки. (использовать модуль crt) |
9. | Процедура запрашивает массу подъёмную трёх марок грузовых авто и выводит их в конце строки в на 1 , посередине, в конце строки. (использовать модуль crt) |
10. | Процедура запрашивает количество мест трёх марок автобуса и выводит красным цветом в нижней строке экрана по очереди. (использовать модуль crt) |
N вар. | Содержание задания |
1. | при а=4,5; b=0,7; c=6,2; А x принимает значения 0,2; 0,56; 0,83 |
2. |
, при a=0,8; b=0,16; c=0,4;
|
3 |
, при a=0,15; b=1,5;
|
4. |
, при x=1,4; y=0,8;
x=0,9; y=0,6; x=2,9; y=0,4; a d=5,3, при всех значениях x,y. |
5. |
, при x=0,4; y=1,2;
a=0,54; b=1 при всех значениях x, y |
6. | , при a=10,7; b=6,3; y=0,35; a x принимает значения 0,6; 0,51; 0,42. |
7. |
, при x=3; y=4;
|
8. |
, при x=0,1; y=0,7;
|
9. | , при a=9,7; b=2,7, a x принимает значения 4,8; 9,6; 0,44. |
10. |
, при x=0,35; y=0,1;
b=4,9 при всех значениях x, y. |