Оператор выбора CASE может быть использован вместо условного оператора, если требуется сделать выбор более, чем из двух возможностей.
Простейший вариант оператора CASE :
CASE<селекторное выражение> OF
Метка1 :оператор 1 ;
Метка2:оператор 2 ;
. . . . .
[ ELSEоператор К];
оператор 1, оператор 2 , оператор К - простой или составной оператор.
Селекторное выражение (селектор, переключатель) и метки-константы (метки варианта, метки выбора) должны иметь один и тот же простой тип (кроме вещественного). Метки-константы в отличие от меток программы не требуется описывать в разделе описания меток. Но на них нельзя ссылаться в операторе GOTO. Метки варианта могут быть перечисляемого и интервального типа.
Оператор выбора выполняется следующим образом. Сначала вычисляется селекторное выражение; затем выполняется оператор, метка варианта которого равна текущему значению селектора; после этого происходит выход из оператора CASE на следующий оператор. Если значение селектора не совпадает ни с одной из меток варианта, будет выполнен оператор после ELSE. Если ветвьELSEотсутствует, то управление передается следующему за CASE оператору.
Например,
…
0: Z := LN(X) ;
1: Z := EXP(X) ;
2: Z := SIN(X) ;
3: Z := COS(X)
ELSE Z := 0
END ; …
В этом примере результат вычисляется по одной из стандартных функций в зависимости от параметра К, который получает свое значение перед выполнением этого оператора.
В следующем примере переменная OTVET получает значение YES или NO в зависимости от введенного значения символьной переменной V.Здесь метки варианта задаются перечислением.
…
VAR V : CHAR;
OTVET : STRING;
…
CASE V OF 1: OTVET := ‘YES’;
2 : OTVET := ‘NO’
OTVET := ‘ ‘;
END; …
Операторы цикла используются для многократного повторения входящих в их состав операторов. В языке Турбо Паскаль различают операторы цикла типа арифметической прогрессии (оператор цикла со счетчиком – FOR) и операторы цикла итерационного типа (WHILE и REPEAT).
Оператор цикла типа арифметической прогрессии используется, если заранее известно количество повторений цикла и шаг изменения параметра цикла +1 или –1.
Упр_перем - это управляющая переменная, параметр цикла, как правило, целого типа; это счётчик, который отмечает номер повторения цикла. Он же может применяться в качестве номера элемента массива .
Если в операторе употребляется TO,тогда шаг изменения Упр_перем равен +1;
Если DOWNTO- то шаг изменения Упр_перем равен -1;
НачЗнач - начальное значение параметра цикла, выражение целого типа;
КонЗнач -конечное значение параметра цикла, выражение целого типа;
Оператор, тело цикла, - простой или составной оператор.
При выполнении оператора FOR выполняются следующие действия:
· вычисляется НачЗнач, которое присваивается параметру цикла;
· проверяется условие окончания цикла: значение параметра цикла больше КонЗнач при использовании конструкцииTO и параметр цикла меньше КонЗнач при использовании конструкцииDOWNTO;
· выполняется тело цикла;
· параметр цикла наращивается (если TO) или уменьшается (еслиDOWNTO) на единицу;
· все этапы, кроме первого, циклически повторяются.
При использовании оператора необходимо помнить:
o Внутри цикла FOR нельзя изменять начальное, текущее или конечное значения параметра цикла.
o Если в цикле с шагом +1 начальное значение больше конечного, то цикл не выполнится ни разу. Аналогично для шага -1, если начальное значение меньше конечного.
o После завершения цикла значение параметр цикла считается неопределенным, за исключением тех случаев, когда выход из цикла осуществляется оператором GOTO или с помощью процедуры BREAK.
o Телом цикла может быть другой оператор цикла.
Например, для того, чтобы вычислить значение факториала F=N!можно воспользоваться следующими операторами: