Снос зданий:
ecosnos.ru
Главная  Микроустройства: номенклатура изделий электронной промышленности 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 [ 82 ] 83 84 85 86 87 88 89 90 91 92 93 94 95

Цикл с параметром for содержит параметр цикла, значение которого перед каждым повторением цикла сравнивается с заранее указанным конечным значением. Имеются две основные формы утверждения:

for (параметр цикла) := (начальное значение) to (конечное значение) do (утверждение)

или

for (параметр цикла) := (начальное значение) downto (конечное значение) do (утверждение)

Параметр цикла, начальное значение и конечное должны быть одного и того же скалярного типа (исключая тип real). В случае, если для конструкции to (downto) начальное значение больше (меньше), чем конечное значение, то оператор for не выполняется. Оператор for формы: for V : = el to е2 do s эквивалентен последовательности утверждений:

if el <= е2 then bedin V : = el; s; V : = succ (v); s; . ..; v: = e2; s end

и оператор for формы: for v: = el downto e 2 do s эквивалентен последовательности утверждений:

if el > = e2 then begin v : = el; s; v : = pred (v); s; .. . ; v : = e2; s end

Здесь функции succ (v) и pred (v) определяют преемника и предшественника скалярной переменной v, соответственно. Оператор if указывает, что составное утверждение после символа then выполняется, если значение выражения el < = е2 (el > = е2 для второго случая) true. Приведем пример:

for i : = 1 to 5000 do begin

tk: = tk-- 1/(2 i-1); zk: = zk- 1/2 i end

Если переменная i скалярного типа integer, то оператор for записано корректно и значение i после каждого очередного выполнения составного утверждения увеличивается па 1. Таким образом будет вычислено:

tk: = tk + 1/(2 jl 1) + 1 /(2 2 - 1) Н----+ 1/(2 5000 - 1)

zk: = zk - 1/2 - 1/2 2 - . . . - 1/25000.

Условные операторы выделяют единственное из входящих утверждений для выполнения.

Оператор if имеет следующие две формы: if (выражение) then (утверждение) или if (выражение) then (утверждение) else (утверждение). Выражение должно быть булевым. Первая форма эквивалентна второй в случае, если альтернативным утверждением является пустое утверждение. Если значение выражения true,



то выполняетсяутверждение, расположенное после символа then, иначе - после символа else (или следующее утверждение для первой формы if)

if i = j then к: = true else к : = false к; = i = j

Два приведенных утверждения эквивалентны. Предпочтительнее запись в программе второго из них, так как оно короче и выполняется быстрее. Оператор варианта case состоит из выражения, играющего роль селектора, н списка утверждений, помеченных константами, имеющими тот же тип, что и селектор:

case (выражение) of

(список меток) : (утверждение); (список меток): (утверждение);

Оператор case выбирает для выполнения то утверждение из списка, расположенного между символами of н end, перед которым (летка совпадает со значением, представляющим результат вычисления выражения, например;

case ch of

, а', b, с' : ch : = succ (eh); d, e : ch : = pred (ch); f, g : {null case}

Если переменная ch типа integer и ее значением является литераb, то результатом выполнения утверждения case будет присваивание переменной ch значения с', так как succ (b) = с'.

Процедуры и функции. Любая процедура илн функция должна быть объявлена до ее вызова. Процедуры получают управление в результате выполнения операторов вызова процедур. Функции получают управление в результате появления в программе указателей функции и возвращают значение в точку вызова.

Объявление процедур. Головная часть объявления имеет следующую форму:

procedure (идентификатор) ((секция формальных параметров) {; (секция формальных параметров)});

Секция формальных параметров содержит имена формальных параметров, за которыми указан их тнп. Вслед за списком секций располагается декларативная часть, которая объявляет объекты, локальные к процедуре (т. е. объекты, недоступные другим процеду-.рам, ие объявленным в данной процедуре н недоступные программе). Приведем пример:

procedure minmax(varg: list; varj, к: integer)} var i : 1 . . n; u, V : integer; begin i:=g[l]; k: = j; i:=2;

while 1 < n do begin u: = g[t]; v: = g[i+ l]; If u > V then begin if u>k fhenk: = u; if V < ] then j: = V end else



begin If V > к then к : = v; if u < j then j; = u

end;

i: = i + 2 end

if i: = n then if g[n]> к then k: = g [n] else if g [n] < j then ]: = g [n] end; {minmax}

В данном примере переменные i, u, v являются локальными в процедуре minmax. Переменные g, ], к являются параметрами. Конкретные значения параметров (действительные параметры) передаются процедуре оператором вызова процедуры, например, minmax (а, min 1, max 1).

Формальные и действительные параметры должны быть одного типа. Соответствие между формальными и действительными параметрами достигается в результате нх правильного расположения в соответствующих списках. Может быть указано 4 типа параметров: параметры-значения, параметры-переменные, параметры-процедуры (действительный параметр является идентификатором процедуры) и параметры-функции (действительный параметр является Идентификатором функции). Для указания формальных параметров-переменных используется символ var,- параметров-процедур- символ procedure, - параметров-функций -символ function. Если эти символы отсутствуют, то формальный параметр является параметром-значением и соответствующий действительный параметр в вызове может быть произвольным выражением. Например;

program Z (output); var а, b : integer;

procedure h (x: integer; var у : integer); begin x: = x--l; y: = y+l;

writeln (x, y) end;

begin a : = 0; b : = 0; h (a, b); writeln (a, b)

end.

В данном примере параметр х объявлен как параметр-значение. Вычисленное значение не возвращается в вызывающую программу. Поэтому результатом выполнения программы являются следующие две строки;

1 1 О 1

Объявление функций ничем не отличается от объявления процедур за исключением того, что за списком секций располагается указатель типа возвращаемого значения:

1ипс1!оп(ндентификатор) ((секция формальных параметров) {; (секция формальных пара.метров)}) :(тип результата);



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 [ 82 ] 83 84 85 86 87 88 89 90 91 92 93 94 95