Підпрограми, Детальна інформація

Підпрограми
Тип документу: Реферат
Сторінок: 7
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 17.1
Скачувань: 790
І останнє зауваження про те, як при написанні підпрограми вибирати вид параметра – параметр-значення чи параметр-змінна.

Якщо після виклику підпрограми повинно використовуватися нове значення аргументу, одержане при виконанні виклику, то відповідний параметр слід означити як параметр-змінну. Наприклад, як параметри в остаточному варіанті процедури swap із підрозділу 3.4.

Якщо після виклику підпрограми використовується старе значення аргументу або аргументом може бути довільний вираз, то йому має відповідати параметр-значення. Як параметр функції issimple з прикладу 4.7.

З останнього правила, утім, є винятки, пов'язані з параметрами та аргументами, що є масивами. Про це йтиметься в підрозділі 12.1.

Приклад 1. Розглянемо імітацію виконання програми з викликами підпрограм. Як і в підрозділі 7.1, будемо позначати локальну змінну, наприклад, L підпрограми F, як F.L, відрізняючи її від однойменної змінної програми. Вказівку точки повернення позначимо буквами ТП. Процес виконання програми

program nested ( input, output );

var a, b : integer;

function f ( x : integer ) : integer;

begin

x := x + 1; f := x

end;

function g (var x : integer ) : integer;

begin x := x div 2; g := x end;

begin a := 12; b := f ( g ( a ) ) end.

відобразимо такою таблицею:

Що виконується Стан пам'яті

  a b

a := 12 12 ?

починається b := f(g(12)) 12 ?

виклик f(g(12)) 12 ? f. x f. f ТП

  12 ? ? ? b:=

починається f. x := g(12) 12 ? ? ? b:=

виклик g(12) g. x ? ? ? b:= g. g ТП

g. x := 12 12 ? ? ? b:= ? f. x:=

g. x := g. x div 2 6 ? ? ? b:= ? f. x:=

g. g := g. X 6 ? ? ? b:= 6 f. x:=

повернення з g 6 ? ? ? b:= 6 f. x:=

закінчення f. x := g(12) 6 ? 6 ? b:=

f. x := f. x + 1 6 ? 7 ? b:=

f. f := f. X 6 ? 7 7 b:=

The online video editor trusted by teams to make professional video in minutes