пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

2 курс 2 семестр:
» Математика
2 курс 1 семестр:
» Математ
» Химия
» ИМХ
» Физика
1 семестр:
» хим
» Математика
» Физика
» Информатика

Процедуры и их реализация в языке Паскаль

Процедуры

Описание процедуры имеет вид:
Procedure <имя процедуры> [(< список формальных параметров
>)];
вид:
< раздел описаний процедуры >
Begin
< тело процедуры >
End;
Обращение к процедуре (вызов ее в основной программе) имеет
< имя процедуры > [( список фактических параметров ) ];
Формальные параметры - это имена переменных, которые исполь-
зуются при описании процедуры в ее заголовке и также в теле процеду-
ры.
Фактические параметры - это значения (константы, выражения
или имена переменных), которые подставляются на место формальных
параметров при обращении к процедуре. Количество формальных и фак-
тических параметров, их последовательность и их типы должны быть
согласованы.
Различают параметры-значения и параметры-переменные. Пе-
ред параметрами-переменными в описании процедуры ставится служеб-
ное слово Var.
67
Параметры-значения используются для передачи значений пере-
менных из основной программы в процедуру, то есть служат как бы ар-
гументами процедуры (входными параметрами).
Параметры-переменные возвращают результат работы процеду-
ры в основную программу, то есть являются как бы выходными пере-
менными для процедуры.
При изменении значения формального параметра-переменной во
время выполнения процедуры одновременно происходит изменение зна-
чения фактического параметра. А при изменении формального парамет-
ра-значения изменение соответствующего ему фактического параметра
не происходит.
Говорят, что обмен значениями между фактическими и формаль-
ными параметрами-переменными происходит по значению, а пара-
метрами-значениями по ссылке. В принципе, параметры-переменные
можно использовать и в качестве входных переменных процедур, осо-
бенно если надо сэкономить память.
При описании процедуры, в списке формальных параметров, имена
переменных одного типа указываются через запятую, после последнего
имени ставится двоеточие и указывается тип параметра. Параметры раз-
ных типов разделяются точкой с запятой, например:
Procedure pr1 (x,y:integer; z:real; var t:real);
Пример 1.Составить программу, выводящую на экран четыре гори-
зонтальных линии из символов ” * ”:
1 линия-7 символов, 2 линия-19 символов, 3 и 4 линии- любое ко-
личество символов (<80, соответствующие числа обозначим k3 и k4 и
будем вводить их с клавиатуры).
В результате работы программы на экране должны получиться сле-
дующие линии:
1. * * * * * * *
2. * * * * * * * * * * * * * * * * * * *
3. * * * * * . . . . . * * *. . . . .* * * - всего k3
4. * * * . . . . * * * - всего k4
В этой задаче четыре раза повторяются одинаковые действия, а
именно, вывод строки из “*”, но количество “*”в каждом случае раз-
лично. Вывод N звездочек на экран будет представлять собой цикл с
параметром, повторяющимся N раз, и в теле цикла на экран будет выво-
диться одна звездочка при помощи оператораWrite (‘*‘).
Для того, чтобы в программе четыре раза не повторять этот цикл
оформим его в виде подпрограммы, для которой входным значением
68
(параметром - значением ) будет одно число N. Результатом работы этой
процедуры будет вывод на экран строки звездочек.
В основной программе вызовем эту процедуру 4 раза, задавая соот-
ветствующие фактические значения n
Program pr_line;
var k3, k4 : integer ;
{Описание процедуры}
Procedure zvezd ( n : integer );
Var i : integer ;
Begin
For i : = 1 to n do
Write ( ‘ * ‘ );
Writeln; { для перевода строки}
End ; {конец процедуры}
Begin { Основная программа }
Write (‘ Введите k3 и k4 ‘ );
Readln( k3, k4 );
Zvezd( 7 ); {первый вызов процедуры}
Zvezd ( 19 ); {второй вызов процедуры }
Zvezd ( k3 ); {третий вызов процедуры}
Zvezd ( k4 ); {четвертый вызов процедуры}
End.
Пример 2.Составить программу поиска максимального из четы-
рех чисел, используя процедуру максимума из двух чисел .
В отличие от процедуры первого примера, в которой не было пара-
метра-переменной, так как никакие значения в основную программу не
передавались, в процедуре поиска максимума из двух чисел будет два
параметра-значения (аргументы процедуры), из которых ищется макси-
мальное, и один результат (параметр-переменная) - значение максимума
из двух чисел.
Формальным параметрам-значениям дадим имена x,y, а формально-
му параметру-переменной - z. То есть заголовок описания процедуры
поиска max из двух чисел будет иметь вид:
procedure max_2 ( x,y:real; var z:real );
Для поиска максимума из нескольких чисел будем последовательно
находить максимум из двух и результат помещать в переменную m; на
каждом следующем шаге сравнивать следующее число с m и хранить в
m. То есть в основной программе будем три раза обращаться к процеду-
ре max_2:
69
program max_4;
var a, b, c, d, m : real;
procedure max_2 (x, y : real; var z : real);
begin
if x >y then z:=x else z:=y;
end;
begin
write ( ‘Введите 4 числа ‘);
readln (a,b,c,d);
max_2 (a, b, m); {первый вызов, в m - max из 2-x}
max_2 (m, c, m); {второй вызов, в m - max из 3-x}
max_2 (m, d, m); {третий вызов, в m - max из 4-x}
writeln (‘max=’,m)
end.
Самостоятельно составить программу вторым способом:
находим max_2 из 1 и 2 числа, затем max_2 из 3 и 4 чисел, затем max_2
из получившихся двух максимумов

 

 


29.06.2016; 21:11
хиты: 336
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь