Выбрать главу

Интересных эффектов можно добиться, используя так называемый «генератор случайных чисел». Встроенная функция random (N) возвращает случайное число в диапазоне от 0 до N– 1. Посмотрите, как эта возможность применяется в следующей программе.

Program RandomLines;

uses graphABC;

var i : integer;

begin

SetWindowSize (400,400);

for i:=1 to 200 do

Line(Random(400),Random(400),Random(400),Random(400));

end.

Задание №5. Дополните вашу графическую программу узором, получаемым с помощью цикла for.

- 16 -

Тема №5 Оператор if

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

Их можно разделить на две группы: развилки и циклы.

Развилки Циклы if ... then ... else ... while if ... then repeat ... until case for

Развилки

Оператор if

Синтаксис[7] оператора:

if логическое условие then оператор-1 else оператор-2;

Пример: if x>0 then z:=1 else z:=–1;

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

Пример:

if x>0 then

begin

z:=1;

x:=2*x;

end

else

begin

z:=-1;

x:=-x;

end;

Обратите внимание, что перед else точка с запятой не ставится. Точка с запятой используется только для разделения операторов друг от друга. Можно было бы и не ставить запятую после операторов x:=2*x и x:=-x, поскольку begin и end не являются операторами, а являются скобками. Паскаль будет интерпретировать[8] точку с запятой перед end, как наличие пустого оператора между ней и end.

Обратите внимание на запись “лесенкой”, она не обязательна, но весьма желательна, поскольку помогает наглядно увидеть алгоритмическую структуру программы. Правило такое: end пишем под begin.

- 17 -

Оператор if (сокращенная форма)

Часто встречается ситуация, когда ветвь else не нужна. В этом случае ее можно опустить.

Например: if x<0 then x:=-x; Обратите внимание, что точка с запятой ставится после оператора x:=-x в отличие от полной формы.

Пример программы с оператором if

Program OddEven;

{ Определение четного или нечетного числа }

var n : integer;

begin

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

if odd(n)

then

writeln('Число нечетное')

else

writeln('Число четное ');

end.

Вложенные операторы if

Иногда возникает необходимость устроить развилку на более чем две ветви. В этом случае операторы if можно вкладывать один в другой. С точки зрения алгоритмической корректности лучше, если вложенный оператор находится в ветви else. Приведем сразу пример программы

Program Sign;

{ Определение знака числа }

var n : integer;

begin

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

if n>0

then

writeln ('Число положительное')

else

if n=0

then

writeln('Число ноль')

else

writeln ('Число отрицательное')

end.

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

Если имеются вложенные операторы if, один из которых неполный, например:

if n>0

then

if n=0

then

writeln('У вас ноль')

else

writeln ('Число положительное')

возникает неоднозначность: к какому if относится else. Принято, что else относится к ближайшему if, т.е. таки образом, как отражает запись данного примера. Если следовать правилу, помещая, по возможности, вложенные операторы в ветвь else, то таких ситуаций не будет.

- 18 -

Логические выражения. В операторе if используются логические выражения, имеющие тип boolean[9]. Про такие выражения можно сказать только являются ли они истинными (true) или ложными (false). Простейший случай логического выражения – логическая переменная.

Пример: var b : boolean; . . . . . .

b :=true; . . . . . .

if b then writeln ('Все в порядке');

Такие логические переменные называют флагами, иногда их использование оказывается очень эффективным решением.

Операции сравнения. Существует шесть бинарных[10] операций сравнения, у которых операнды могут быть самых разных типов (целые, вещественные, символьные строковые).

< меньше <= меньше или равно > больше >= больше или равно = равно <> не равно

Эти операции весьма часто используются для построения различных логических условий.

Например: if a>0 then a:=1 else a:=-1. С точки зрения языка Pascal a>0 представляет собой логическое выражение (можно написать даже так: b :=a>0, если b – переменная булевского типа).

Логические операции. Для составления сложных логических выражений могут использоваться две бинарные логические операции AND, OR и одна унарная[11] NOT .

and – результат операции истинен тогда и только тогда, когда истины оба операнда.

or – результат операции истинен тогда, когда истинен хотя бы один операнд.

вернуться

7

Синтаксис оператора – правила его записи.

вернуться

8

Интерпретировать – толковать.

вернуться

9

Назван в честь Дж. Буля – основателя математической логики.

вернуться

10

Бинарные операции – имеющие два операнда, на которые действует эта операция.

вернуться

11

Унарная операция – имеющая только один операнд.