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!оп(ндентификатор) ((секция формальных параметров) {; (секция формальных пара.метров)}) :(тип результата); |