RSS

2.4.2 Условный оператор

Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор — это средство ветвления вычислительного процесса.

Структура условного оператора имеет следующий вид:

IF <условие> THEN <оператор1> ELSE <оператор2>,

где IF, THEN, ELSE — зарезервированные слова (если, то, иначе); <условие> — произвольное выражение логического типа; <оператор1>, <оператор2> — любые операторы языка Турбо Паскаль.

Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <условие>. Если результат есть TRUE (истина), то выполняется <оператор1>, а <оператор2> пропускается; если результат есть FALSE (ложь), наоборот, <оператор1> пропускается, а выполняется <оператор2>. Например:

var
х, у, max: Integer;
begin
…….
if x > max then
у := max else
y := x;

При выполнении этого фрагмента переменная Y получит значение переменной X, если только это значение не превышает МАХ, в противном случае Y станет равно МАХ.

Часть ELSE <оператор2> условного оператора может быть опущена. Тогда при значении TRUE условного выражения выполняется <оператор1>, в противном случае этот оператор пропускается:

var
х, у, max: Integer; 
begin
…….
if x > max then
max := x; 
Y := x;

В этом примере переменная Y всегда будет иметь значение переменной X,а в МАХ запоминается максимальное значение X.

Поскольку любой из операторов <оператор1> и <оператор2> может быть любого типа, в том числе и условным, а в то же время не каждый из «вложенных» условных операторов может иметь часть ELSE <оператор2>, то возникает неоднозначность трактовки условий. Эта неоднозначность в Турбо Паскале решается следующим образом: любая встретившаяся часть ELSE соответствует ближайшей к ней «сверху» части THEN условного оператора. Например:

var
a,b,c,d : Integer; begin
a := 1; b := 2; c= 3; d := 4;
if a > b then
if с < d then 
if с < 0 then
с := 0 else
a := b; {а равно 1}
if a > b then 
if с then 
if с then 
с := 0
else
else 
else
a := b; {а равно 2}

Рассмотрим программу (пример 2.4), которая вводит произвольное десятичное целое число в диапазоне 0…15, преобразует его к шестнадцатеричному и выводит на экран полученный результат.

Пример 2.4 

Program Hex;

{Программа вводит с клавиатуры целое число в диапазоне от 0 до 15, преобразует его к шестнадцатеричной системе счисления и выводит результат на экран}

var
n : Integer; {Вводимое число} 
ch : Char; {Результат} 
begin
Write ( ‘,n = ‘ ) ;
ReadLn(n); { Вводим число } 
{Проверяем число на принадлежность к диапазону 0…15}
if (n >= 0) and (n <= 15) then
begin {Да, принадлежит диапазону} 
if n < 10 then
ch := chr(ord(‘0’) + n)
else
ch := chr(ord(‘A’) + n- 10);
WriteLn(‘n = ‘,ch) 
end
else {He принадлежит диапазону}
WriteLn(‘Ошибка’) 
end.

В шестнадцатеричной системе счисления используется 16 цифр в каждом разряде: цифры 0…9 обозначают первые 10 возможных значений разряда, буквы A…F — остальные шесть.

В программе учитывается непрерывность и упорядоченность множеств цифр 0…9, букв A…F и их кодов (см. гл.4).