Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety2.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
252 Кб
Скачать
☆

Вопрос №23. Организация и использование процедур в языке Паскаль.

Процедуры и функции – это подпрограммы, которые можно многократно вызывать.

Procedure name(список параметров:<тип>);

Function name(список параметров):имя типа

Функция вызывается по своему имени, как часть выражения.

Н-р: y=sin(x);

При использовании формальных параметров(без var перед списком параметров) обращении к переменной идет по ссылке и изменение формальной переменной не влияет на фактическую переменную. а при использовании фактических параметров передача идет по адресу, то есть в процедуре меняется фактическая переменная.

Пример. Моделирование RS-триггера.

RS-триггер[10][11], или SR-триггер — триггер, который сохраняет своё предыдущее состояние при нулевых входах и меняет своё выходное состояние при подаче на один из его входов единицы. (на всякий случай)

Procedure Trigger(R,S:Boolean;var q,noq,error:Boolean);

Begin

Error:=randS;

If not error then

If r then q:=false

Else

If s then q:=true;

Noq:=notq;

End;

Var r,s,q,notq,error:Boolean;

Begin

Q:=false;

Notq:=not q;

For r:=false to true do

For s:=false to true do begin

Trigger(r,s,q,notq,error);

If error then writeln(byte(R):3,byte(s):3,’Запрещено’);

Else writeln(ord(r):3,ord(s):3,ord(q):3);

End;

End.

Генерация случайных чисел.

В языке программирования Паскаль для генерации псевдослучайных чисел в заданных диапазонах используется функция random. Перед ее использованием обычно выполняется процедура инициализации датчика случайных чисел - randomize; иначе программа всегда будет выдавать один и тот же результат. Randomize задает начальное значение последовательности, от которого вычисляются все последующие. При каждом запуске программы это значение будет разным, а значит и результат работы функции random будет различным.

Функция random генерирует случайное число в диапазоне от 0 (включительно) до единицы. Если в скобках указан аргумент, то от 0 до значения указанного в скобках (не включая само значение). Так выражение random (10), говорит о том, что будет получено любое число в диапазоне [0, 10). Если требуется получать значения в каком-либо другом диапазоне (не от нуля), то прибегают к математической хитрости. Например, чтобы получить случайное число от -100 до 100 достаточно записать такое выражение: random (200) – 100. В результате, сначала будет получено число из диапазона [0, 199], а затем из него будет вычтена сотня. И если случайное число было меньше 100, то результат выражения будет отрицательным.

Отличие процедур от функций в том, что функция – это часть выражения, процедура, часть программы.

Опережающее описание процедур и функций.

Это когда процедуры вызываются в других процедурах.

Пример.

Prodram TestForward;

Procedure Flop(N:Integer);Forward;

Procedure flip(N:Integer);

If N>0 then begin

Writeln(‘Flop’); flop(n-1);

End;

End;

Procedure flop(N:integer);

Begin

If n>0 then begin

Writeln(‘flop’);

Flip(n-1);

End;

End;

Begin

Flop(3);

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]