Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kamchatgtu246.pdf
Скачиваний:
50
Добавлен:
23.02.2016
Размер:
1.2 Mб
Скачать

2.2. Сокращенная форма записи оператора IF

Допускается опускать служебное слово ELSE:

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

Альтернативная конструкция отсутствует и заменена точкой с запятой, т. е. если логическое «условие» ложно, то ничто не выполняется; если логическое «условие» истинно, то выполняется < оператор 1 >.

Схематично этот случай изображается так:

Рис. 10. Сокращенная форма оператора ветвления

Задача 2

Вычислить значение функции f(x) в зависимости от значения аргумента Х. Условие задачи представлено на рис. 11.

Рис. 11. Схематичное изображение задачи 2

Решение будет следующим: Program Lab3_2;

Uses Crt; Var X,Y: real; Begin

ClrScr; WriteLn('Введите x');

Read(x);

40

If x > 0 Then y: = x;

If x = 0 Then y: = 0;

If x < 0 Then y: = –sqr(x);

WriteLn ('значение x =', х);

WriteLn('значение f(x) =', y);

ReadLn;

End.

2.3. Cоставной оператор

Если после Then или Else необходимо выполнить действия, описанные несколькими операторами, то эти операторы должны быть заключены в операторные скобки begin – end. Такая конструкция называется составным оператором.

1)IF < условие > THEN begin

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

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

………………

<оператор n >; end

ELSE

<оператор >;

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

begin

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

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

………………

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

end;

3) IF < условие > THEN begin

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

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

………….

<оператор n >; end

ELSE begin

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

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

………….

<оператор n >; end;

41

В случае группы действий за then или else используем операторные скобки.

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

Перед словом ELSE точки с запятой не может быть, так как это один оператор, состоящий из слов IF...THEN...ELSE.

2.4. Вложенные операторы IF

Задача 3

Определить, попадает ли число Х в интервал от –2 до 13. Мы должны проверить два условия:

1)Х должно быть больше –2. Если это условие является истиной, то проверяем второе условие;

2)Х должно быть меньше 13. В том случае, когда оба условия выполняются, мы можем сказать, что данное значение Х удовлетворяет условию: –2 < x < 13.

Как это записать? Рассмотрим три программы для решения этой задачи.

Program Lab3_3_1; {Случай 1} {Попадает ли Х в интервал –2 < X < 13} Uses Crt;

Var X: Integer; Begin

ClrScr;

WriteLn('Программа вычисляет попадание Х в интервал'); WriteLn('Введи X');

Read(X);

If (X > –2) Then

If (X < 13) Then

WriteLn ('Х = ', X, 'попадает в интервал')

Else

WriteLn('Х > = 13 – не попадает в интервал', ' X = ', X)

Else

WriteLn('Х < = – 2 – не попадает в интервал', ' X = ', X);

ReadKey;

End.

Здесь мы видим, что два оператора IF вложены друг в друга. Вложенность операторов IF неограниченна.

Program Lab3_3_2; {Случай 2}

{Попадает ли Х в интервал –2 < X < 13}

Uses Crt;

Var X: Integer;

42

Begin ClrScr;

WriteLn('Программа вычисляет попадание Х в интервал') WriteLn('Введи X');

Read(X);

If (X > –2) And (X< 13) Then

WriteLn('Х = ', X,' попадает в интервал') Else

WriteLn('не попадает в интервал, т.к.', 'X = ', X);

ReadKey;

End.

Program Lab3_3_3; {Случай 3} {Попадает ли Х в интервал –2 < X < 13} Uses Crt;

Var X: Integer; Begin

ClrScr;

WriteLn ('программа вычисляет попадание Х в интервал'); WriteLn ('Введи X');

Read (X);

If (X > –2) And (X < 13) Then

Begin {2} Write ('Х = ', X);

Write (' Попадает в интервал'); End {2}

Else

Begin {3} Write ('Х = ', X);

Write (' Не попадает в интервал'); End; {3}

ReadKey;

End.

Дадим некоторые пояснения к программе (случай 3). Из-за наличия двух операторов после THEN (два оператора вывода Write) в программе стоят операторные скобки Begin – End. Фигурные скобки с номерами {2}, {3} стоят для наглядности , они не являются обязательными, их можно опустить.

Begin {2}

…………

End {2}

43

Аналогично для Else стоят операторные скобки: Begin {3}

…………

End; {3}

Приведем еще две задачи, демонстрирующие некоторые способы использования оператора IF.

Задача 4

Получить максимальное число из трех целых чисел. Составим блок-схему решения задачи (рис. 12).

max : = Y

max < Z

max : = X

max : = Z

Рис. 12. Выбор максимального числа из трех

Program Lab3_4;{Максимальное число из трех целых чисел} Var X, Y, Z: integer;

max: integer;

44

Begin

Write('Введите X,Y,Z ', X,Y,Z); Read(A,B,C);

max: = X;

If X > Y then max: = X; Else max: = Y;

If (Z > max then max: = Z; WriteLn ('max =', max : 5 : 2);

End.

Пояснения к задаче 4

Сравниваем значения переменных Х и Y, выбираем из них большее и сохраняем значение большей переменной в переменной с именем max, затем значение переменной Z со значением переменной именем max, после чего опять выбираем большее значение.

Задача 5

Программа «Исторический тренажер» предлагает историческое событие и меню с выбором дат его свершения под номерами. Проверяется правильность ответа. Пользователь должен выбрать правильный ответ и ввести его номер. Ниже представлен вид экрана во время работы программы .

Архитектор Исаакиевского собора: Доминико Трезини – > 1 Огюст Монферран – > 2 Карл Росси – > 3

Введите номер правильного ответа и нажмите «Enter» – 3

––––––––––––––––––––––––––––––––––––––––––––––––––

Вы ошиблись:

архитектор Исаакиевского собора – Огюст Монферран.

Program Lab3_5;

{Проверка знания истории архитектуры} Uses Crt;

Var otv: integer; {Номер ответа} Begin

ClrScr;

WriteLn ('Архитектор Исаакиевского собора'); WriteLn ('Доминико Трезини – > 1');

WriteLn (‘Огюст Монферран – > 2'); WriteLn ('Карл Росси – > 3'); WriteLn ;

WriteLn ('Введите номер правильного ответа и нажмите «Enter» –'); Read (otv);

If otv = 2

45

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]