Пустой и составной операторы

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

Составным оператором считается последовательность произвольных операторов, заключенная в операторные скобки - зарезервированные слова begin ... end. Допускается произвольная глубина вложенности составных операторов. Составной оператор применяется там, где по синтаксическим правилам языка может стоять только один оператор, а нам надо выполнить несколько действий. В этом случае набор необходимых команд должен быть оформлен как составной оператор. По сути, все тело программы представляет собой один составной оператор.

Стандартные процедуры ввода и вывода

Рассмотрим простейшие процедуры ввода и вывода. По умолчанию ввод осуществляется с клавиатуры, а вывод на экран. К операторам ввода относятся:

Read(<список переменных через запятую>);

Readln(<список переменных>);

Readln;

Второй отличается от первого тем, что после ввода переводит курсор на новую строку, точнее, в конце своей работы считывает с клавиатуры код клавиши <Enter>. Третий оператор используется для организации паузы - выполнение программы продолжится, как правило, только после нажатия на клавиатуре клавиши <Enter>. К операторам вывода относятся:

Write(<список вывода>);

Writeln(<список вывода>);

Writeln;

В списке вывода кроме имен переменных можно писать строковые константы (последовательность символов в апострофах) и даже выражения (выводятся их значения). Второй оператор отличается от первого тем, что после вывода переводит курсор на новую строку. Третий оператор просто переводит курсор на новую строку.

Существует так называемый форматированный вывод. Можно задать количество позиций, отводимых под число. Для целых - после выражения или переменной через двоеточие указывается меньше какого количества позиций не может быть выделено значению. Для вещественных - дополнительно через двоеточие можно указать количество цифр в дробной части. При этом происходит округление в ближнюю сторону.

ПРИМЕР: Простые вычисления.

program vvod_vyvod;

const n=1.5;

var y1,y2:real; x:byte;

Begin

writeln('Введите натуральное число <= 255');

readln(x);

y1:=cos(n); y2:=cos(x);

write('Зачем-то посчитали: ');

writeln('n=',n,' y1=',y1:7:4, cos(Pi/2):8:4);

{напечатается

Зачем-то посчитали: n= 1.50000000000000E+0000

y1= 0.0707 1.0000}

writeln('x=',x:3,' y2=',y2:7:4);

end.

УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ ЯЗЫКА.

Оператор ветвления

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

ОПЕРАТОР ПЕРЕХОДА

Оператор перехода имеет вид

GOTO <метка>.

Он позволяет передать управление непосредственно на нужный оператор программы. Перед этим оператором должна располагаться метка отделенная от него двоеточием. В Турбо Паскале в качестве меток выступают либо целые числа от 0 до 9999, либо идентификаторы. Все метки должны быть описаны в разделе объявления меток следующим образом:

label <список меток через запятую> ;

Каждой меткой в программе может быть помечен только один оператор. Операторов перехода с одной и той же меткой можно писать любое количество. Необходимо, чтобы раздел описания метки, сама метка и оператор перехода с ее использованием располагались в пределах одного блока программы (см. тему процедуры и функции). Кроме того, нельзя передавать управление внутрь структурированных операторов (например, if, for, while, repeat и др.).

УСЛОВНЫЙ ОПЕРАТОР

Условный оператор IF позволяет изменить порядок выполнения команд в зависимости от некоторого логического условия, т.е. он осуществляет ветвление вычислительного процесса. Условный оператор имеет вид:

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

В случае истиности логического выражения, стоящего в условии, выполняется <оператор1>, а <оператор2> пропускается. При ложном значении логического выражения пропускается <оператор1> и выполняется <оператор2>.

Оператор IF может быть полным (присутствуют обе ветви) или неполным (Else-ветви нет, при ложном условии ничего не делается). По правилам каждая из ветвей может содержать либо один выполняемый оператор, либо несколько, объединенных в составной. Точка с запятой перед Else считается ошибкой.

ПРИМЕР: Ввести целое число. Вывести соответствующий ему символ ASCII-таблицы, либо сообщить, что такого символа нет (0-31 - управляющие коды, затем до 256 - печатаемые символы).

program ascii_symbol;

var i:word;

Begin

write('Введите целое число: '); readln(i);

if (i>31) and (i<256) then

writeln('Соответствующий символ - ', Chr(i))

else writeln('Такого символа нет');

Readln

end.

ОПЕРАТОР ВЫБОРА

Если у вас не два возможных варианта выполнения программы, а больше, то может использоваться оператор выбора CASE. Структура этого оператора в Турбо Паскале:

CASE <ключ_выбора> OF

C1 : <оператор1>;

C2 : <оператор2>;

. . .

CN : <операторN>;

[ELSE <оператор0>;]

END;

Здесь <ключ_выбора> - это выражение порядкового типа, в зависимости от значения которого принимается решение; C1,...,CN - значения, с которыми сравнивается значение <ключа>; <оператор1>,..., <операторN> - оператор (возможно составные), из которых выполняется тот, с константой которого происходит первое совпадение значения <ключа>, <оператор0> выполнится, если значение ключа не совпадает ни с одной из констант C1,...,CN.

Ветвь Else не обязательна, и в отличие от оператора if, перед ней можно ставить точку с запятой. Если для нескольких значений <ключа> действия совпадают, то эти константы можно перечислить через запятую перед двоеточием или даже задать диапазон значений (нижняя граница .. верхняя граница).

ПРИМЕР: Вводится целое число, если это цифра, то определить четная она или нет, а если число, то определить попадает ли оно в диапазон от 10 до 100, если нет, то выдать соответствующее сообщение.

program chislo;

var i:integer;

Begin

write('Введите целое число: ');

readln(i);

case i of

0,2,4,6,8 : writeln('Четная цифра');

1,3,5,7,9 : writeln('Нечетная цифра');

10...100,200 : writeln('Число от 10 до 100 или 200');

else writeln('Число либо отрицательное, либо > 100, но не 200');

end;

Readln

end.

ОПЕРАТОРЫ ЦИКЛА

Рассмотрим случай, когда действие надо повторить некоторое количество раз. Например, число х необходимо возвести в целую степень n. Здесь требуется оператор цикла. Операторов цикла в Паскале три: цикл for (с известным числом повторений или цикл с параметром), цикл while (с предусловием) и цикл repeat (с постусловием).

Цикл с параметром

Оператор цикла For используется, когда число итераций цикла известно заранее. Его еще называют цикл со счетчиком. Существует две формы: for_to и for_downto.

Синтаксис

1-я форма:for параметр := нач_знач to кон_знач do оператор

2-я форма:for параметр := нач_знач downto кон_знач do оператор

параметр – счетчик цикла for, может быть переменной любого порядкового типа (напомним, что к порядковым типам относятся целый, символьный, перечисляемый и интервальный).

нач_знач и кон_знач – выражения, определяющие начальное и конечное значения счетчика.

оператор – оператор, называемый телом цикла, повторяемый определенное число раз.

Наши рекомендации