Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
From Class_1 / лекции / Лекция 5.doc
Скачиваний:
65
Добавлен:
10.05.2015
Размер:
143.36 Кб
Скачать

Операторы языка TurboPascal

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

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

Простые операторы:

оператор присваивания,

обращение к процедуре,

оператор безусловного перехода GOTO,

пустой оператор.

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

С помощью этого оператора переменной или функции присваивается значение выражения. Для этого используется знак присваивания :=. Слева от него записывается имя переменной или функции, которой присваивается значение, справа – выражение, значение которого вычисляется перед присваиванием. Тип выражения и тип переменной должны быть совместимы для присваивания.

Пример.

X:=Y;

Z:=A+B;

I:=Sqr(J)+I*K;

Оператор GOTO.

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

Метки, используемые в Turbo Pascal могут быть двух типов:

  • целое число от 0 до 9999,

  • идентификатор.

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

Пример

label 1,2, Metka.

Одной меткой можно пометить только один оператор. Метка отделяется от оператора двоеточием.

Использовать оператор GOTO следует крайне осторожно. С помощью этого оператора нельзя перейти из основной программы в подпрограмму или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного оператора.

Пустой оператор.

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

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

К ним относятся:

составной оператор,

условный оператор IF,

условный оператор CASE,

оператор цикла REPEAT,

оператор цикла WHILE,

оператор цикла FOR.

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

Составной оператор - несколько последовательно выполняемых операторов, заключенных в операторы begin и end:

begin

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

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

. . .

<оператор N>

end;

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

Отдельные операторы внутри составного оператора отделяются друг от друга точкой с запятой. Перед завершающим составной оператор словом end можно не ставить точку с запятой. Тело программы также можно считать составным оператором.

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

Оператор IF реализует алгоритмический логический блок и устанавливает порядок выполнения операторов в зависимости от истинности или ложности условия. Существует два варианта оператора:

if S then A

else B;

и

if S then A;

В этих операторах:

S - условие, истинность которого проверяется (верно ли оно),

А - оператор, который выполняется, если выражение S истинно;

B - оператор, который выполняется, если выражение S ложно.

Ни перед then, ни перед else точку с запятой ставить нельзя.

Пример:

if X < 0 then X := -Y;

if X < 1.5 then Z := X + Y else Z := 1.5;

Пример1. Ввести целое число и вывести на экран это число, увеличенное в 100 раз или вывести сообщение о том, что число больше 1000.

program Example3;

var X: Integer;

begin

Write (‘Введите целое число:’);

ReadLn (X);

if (X>1000) then Writeln (‘число больше 1000’)

else

begin

X:=X*100;

Writeln (‘Число Х равно:’ X);

end;

end.

Пример2. Найти частное от деления целых чисел.

program Example4;

label Out; {описание метки}

var X, Y, Res: Integer;

begin

Write (‘Введите делимое: ’); {вывод сообщения на экран}

Readln (X); {чтение числа}

Write (‘Введите делитель: ’); {вывод сообщения на экран}

Readln (Y); {чтение числа}

if Y=0 then {структурированный оператор}

begin

Writeln (‘Деление на ноль!’); {выход при нулевом делителе}

goto Out;

end;

Res:=X div Y;

Writeln (‘Частное равно: ’, Res);

Out: {метка пустого оператора}

end.

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

С помощью этого оператора можно выбрать вариант из любого количества ва­риантов. Структура оператора:

Case S of

С1 : Instruction1;

С2 : Instruction2;

. . .

СN : InstructionN;

else Instruction

end;

В этой структуре:

S - выражение, значение которого вычисляется;

С1, С2, ..., СN - константы, с которыми сравнивается значение выражения S;

Instruction1, Instruction 2, ..., InstructionN - операторы, из которых выполняется тот, с константой которого совпадает значение выражения S;

Instruction - оператор, который выполняется, если значение выражения S не совпадает ни с одной из констант С1, ..., СN.

Слово else - необязательное. Если его нет и значе­ние выражения S не совпадет ни с одной из констант, весь опера­тор рассматривается как пустой. Перед словом else можно ставить точку с запятой.

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

Пример.

Программа, выдающая сообщение о том четная или нечетная цифра введена в диапазоне от 0 до 9, попало ли введенное число в диапазон от 10 до 100 или число не соответствует первым двум условиям.

program Example4;

var I: Integer;

begin

Write (‘Введите целое число:’);

ReadLn (I);

case I of

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

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

10..100: Writeln (‘Число от 10 до 100’);

else

Writeln (‘Отрицательное число или больше 100’);

end;

end.

Оператор цикла REPEAT

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

repeat

Instruction1;

Instruction2;

. . .

InstructionN

until S;

В этой структуре:

Instruction1, Instruction2, InstructionN – операторы, составляющие тело цикла,

S – логическое выражение, истинность которого проверяется после каждого прохождения цикла.

Точку с запятой перед словом until ставить необязательно.

Пример.

Усовершенствованная программа для вычисления суммы двух чисел:

program Example5;

var X, Y, Sum: Integer;

Ch: Char;

begin

repeat

Write (‘Введите числа X и Y:’);

ReadLn (X,Y);

Sum:=X+Y;

Writeln (‘Сумма чисел Х и Y равна:’, Sum);

Write (‘Завершить программу?’);

Readln (Ch);

until (UpCase(Ch)=’Y’) or (Ch=’Д’) or (Ch=’д’)

end.

(UpCase – получение заглавной буквы)

Оператор цикла WHILE

Оператор цикла WHILE организует выполнение одного оператора неизвестное заранее число раз. Выход из цикла осуществляется, если некоторое логическое выражение окажется ложным. Истинность логического выражения проверяется в начале цикла. Тело цикла может не выполняться ни разу.

Структура оператора цикла:

while S do

Instruction;

В этой структуре:

S – логическое выражение, истинность которого проверяется перед каждым прохождением цикла.

Instruction – оператор, который выполняется в цикле.

Пример.

Найти все делители целого положительного числа (кроме 1 и самого числа).

program Example6;

var X, Half, Divider, I: Integer;

begin

repeat

Write (‘Введите число больше нуля:’);

ReadLn (X);

if X<=0 then

Writeln(‘Неправильный ввод’)

until X>0;

Half:=X div 2;

Divider:=2;

i:=0;

while Divider<=Half do

begin

if X mod Divider =0 then

begin

i:=i+1;

Writeln (i, ‘-й делитель равен’,Divider);

end;

Divider:=Divider+1;

end;

if i=0 then

Writeln (‘Делителей нет’);

Writeln (‘Конец решения’)

end.

Оператор цикла FOR

Оператор цикла FOR организует выполнение одного оператора заранее известное число раз. Существует два варианта оператора:

for Param:=Start to Finish do Instruction;

for Param:=Start downto Finish do Instruction;

В этих операторах:

Param - параметр цикла, являющийся переменной порядкового типа;

Start - выражение, определяющее начальное значение параметра цикла;

Finish - выражение, определяющее конечное значение параметра цикла;

Instruction - выполняемый оператор.

Start и Finish должны быть совместимы для присваивания с параметром цикла.

Цикл действует таким образом. Сначала вычисляются и запоминаются начальное - Start и конечное - Finish значения параметра цикла. Далее параметру цикла Param присваивается начальное значение Start. Затем значение параметра цикла сравнивается со значением Finish. Далее, пока параметр цикла меньше или равен конечному значению (в первом варианте оператора) или больше или равен конечному значению (во втором варианте), цикл выполняется очередной раз; в противном случае происходит выход из цикла. Выполнение цикла очередной раз включает в себя сначала выполнение оператора Instruction, а затем присваивание параметру цикла следующего большего значения (в первом варианте оператора) или следующего меньшего значения (во втором варианте) .

Естественно, что, если в первом варианте значение Start больше Finish или втором варианте меньше Finish, оператор не выполняется ни разу.

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

Пример1. Вывести на экран буквы от Z до А.

program Example7;

var i: Char;

begin

for i:=’Z’ downto ‘A’ do

Write (i);

Writeln

end.

Пример2. Вычислить 101 значение sin x с заданным шагом и вывести первое отрицательное значение sin.

program Example8;

label 1;

var

Si: array[0..100] of Real; {массив вещественных чисел}

Step: Real;

X: Real;

i: Integer;

begin

Write (‘Введите шаг вычисления:’);

Readln (Step);

X:=0;

for i:=0 to 100 do

begin

Si[i]:=Sin(X);

X:=X+Step;

end;

for i:=0 to 100 do

if Si[i] < 0 then

begin

Writeln (‘Первое отрицательное значение синуса: ’, Si[i], ‘Номер элемента: ’, i);

goto 1;

end;

Writeln ()

Writeln (‘Нет отрицательного значения’);

1:

end.

Соседние файлы в папке лекции