Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

2.1.7. Оператор присваивания

Оператор присваивания придаёт переменной конкретное значение, например:

Х:=2; В:=4; С:=-1;

Присваивать можно значение другой переменной или результат вычисления арифметического выражения

А:=В;

Y:=5+3*X;

Z:=B+C;

X:=Y+2-SQR(Z);

Х:=Х+1;

Можно преобразовать целое значение в вещественное, присвоив вещественной переменной целое выражение. Например (если А является вещественной переменной):

А:= 3+5;

Общая форма оператора присваивания такова:

имя переменной := выражение

Оператор присваивания вычисляет значение выражения справа и присваивает его переменной слева. Старое значение переменной теряется.

2.2. Операторы языка паскаль

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

С самим оператором не связывается никакое значение. Разделителем операторов служит точка с запятой (;).

С простейшим и в то же время самым важным оператором присваивания мы уже познакомились. Кроме него в Паскале имеются следующие операторы:

• составной оператор;

  • условный оператор;

  • оператор выбора;

  • три оператора цикла;

  • оператор перехода;

  • пустой оператор;

  • оператор вызова процедуры.

2.2.1. Составной оператор

Составной оператор объединяет несколько операторов в один.

Его схема:

BEGIN

оператор_1;

оператор_2;

оператор_3;

оператор_М;

END

Составной оператор позволяет объединить несколько операторов и рассматривать их как единый оператор. Операторы выполняются последовательно в том порядке, в каком они записаны в тексте программы. Например:

begin

R:=A;

А:=В;

B:=R;

end

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

begin R:=A; A:=B; B:=R; end

и

begin

R=A. A:=B;

B:=R

end

эквивалентны между собой, а также эквивалентны первой записи.

Вместе с тем для удобства чтения рекомендуетcя то, что располагается внутри слов begin и end, размещать с отступом относительно этих слов - так называемой "лесенкой".

Например

begin R=A;

A:=B+R;

begin

C:=SQRT(A); A:=2*B+SIN(R); R:=R+C;

end;

X:=R/A;

end;

Это существенно упростит чтение и понимание программ, особенно больших размеров.

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

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

Условный оператор позволяет выполнять или пропускать операторы программы в зависимости от некоторого условия, которое представляет собой выражение логического типа. Схема условного оператора такова:

IF условие (* проверяется истинность ложность этого условия*)

THEN

оператор_1 (*этот оператор выполняется, если условие истинно*)

ELSE (* перед else точка с запятой никогда не ставится *)

оператор_2; (*этот оператор выполняется, если условие ложно*)

Если условие истинно, выполняется оператор_1, иначе выполняется оператор_2.

Типичный пример условия - выражения с операцией сравнения:

=,<>,<=, >=, >,<.

Слева и справа от знака сравнения записывают арифметические выражения. Например, оператор

ifX<>0

then

Z:=Y/X

else

write('Ошибка ! Деление на О');

присвоит переменной Z значение частного Y/X, если Х<>0, в противном случае высветит на экране слово «Ошибка. Деление на О».

В качестве операторов оператор_1 и оператор_2 может выступать составной оператор.

Это дает возможность делать выбор между двумя сколь угодно сложными последовательностями операторов.

IF условие (* проверяется истинность или ложность этого условия*)

THEN

BEGIN

Оператор1; (*эти операторы выполняются, если условие истинно*)

оператор2;

операторN. END

ELSE (* перед else точка с запятой никогда не ставится *) BEGIN

Оператор1; (*эти операторы выполняются, если выражение ложно*)

Оператор2;

ОператорN; END;

Условный оператор может быть записан в односторонней форме:

IF условие

THEN

оператор;

оператор выполняется, если условие истинно, иначе - пропускается. Например

if Х+2 >= Y-3

then

Z :=Y+X;

При записи условия скобки не нужны, так как приоритет арифметических операций выше, чем приоритет операций сравнения.

В качестве операторов оператор_1 и оператор_2 может выступать другой логический оператор. Это позволяет получать вложенные логические операторы

IF условие_1 THEN

IF условие_2 THEN

оператор_1 (*оператор_1 выполняется. если условие_1 и условие_2 истинны*)

ELSE

оператор_2 (*оператор_2 выполняется, если условие_1 истинно, а условие_2 ложно*)

ELSE

IF условие_3 THEN

оператор_3 (*оператор_3 выполняется, если условие_1 ложно, а условие_3 истинно *)

ELSE

оператор_4; (*оператор_4 выполняется, если условие_1 и условие_3 ложны *)

Следует избегать такой записи вложенных условных операторов, при которой возможно неоднозначное понимание смысла записи. Например,

IF условие_1 THEN

IF условие_2 THEN

оператор_1 (*оператор_1 выполняется, если условие_1 и условие_2 истинны*)

ELSE

оператор_2 (* когда должен выполняется оператор_2, непонятно *)

При такой записи непонятно, к чему относится ключевое слово ELSE - к первому IF или ко второму.

Для устранения неоднозначности следует использовать составной оператор

IF условие_1 THEN BEGIN

IF условие_2 THEN

оператор_1; (*оператор_1 выполняется, если условие_1 и условие_2 истинны*)

END

ELSE

оператор_2; (*оператор_2 выполняется, если условие_1 ложно*)

или

IF условие_1

THEN

BEGIN

IF условие_2

THEN

оператор_1 (*оператор_1 выполняется, если условие_1 и условие_2 истинны*)

ELSE

оператор_2; (*оператор_1 выполняется, если условие_1 истинно и условие_2 ложно*)

END;

Пример применения условного оператора.

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

program rearrangement; (* программа перестановки чисел*) var

x,xl,x2,x3:real;

begin

Write ('Введите три числа ');

read(xl,x2,x3); (* ввод чисел*)

if xl > х2

then

begin (* обмениваем значения x1 и х2*)

x:=x1;

xl:=x2;

х2:=х;

end;

if x2 > x3

then

begin (* обмениваем значения х2 и х3*)

x:=x2; х2:=хЗ; x3:=x; end;

if xl >x2 then

begin (* обмениваем значения xl и х2*)

x:=xl;

xl:=x2;

x2:=x;

end;

writeln(xl,x2,x3); (* вывод чисел по возрастанию*)

end.