Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5.DOC
Скачиваний:
0
Добавлен:
09.11.2018
Размер:
102.4 Кб
Скачать

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

Составной оператор - это последовательность операторов (лю-бых), заключенных в операторные скобки BEGIN-END. Составной оператор используется в тех случаях, когда по правилам языка Паскаль должен быть записан один оператор, а необходимые действия могут быть выполнены нес-колькими операторами. С этой точки зрения раздел операторов программы - это один составной оператор.

5.2.3. Форматирование Паскаль-программ

В соответствии с принципами структурного программирования программы на языке Паскаль принято форматировать. Есть два очень простых правила форматирования:

1) парные составные символы языка пишутся один под другим:

BEGIN THEN CASE REPEAT RECORD END ELSE END UNTIL END ;

2) следование операторов изображается их записью один под другим, а вложенность - сдвигом вправо.

Редкое исключение: пара операторов, логически жестко связанных друг с другом, иногда записывается в одну строку, например: Write('Ввести число '); ReadLn(a) . Впрочем, злоупотреблять этим не следует.

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

Существует две формы этого оператора:

1) IF B THEN S1 ;

2) IF B THEN S1

ELSE S2 .

Здесь B - выражение булевского типа, S1,S2 - операторы (любые, но один). Если значение B истинно (TRUE), то выполняется оператор S1. Если B лож-но (FALSE), то в первой форме оператор IF никакого действия не произво-дит, а во второй форме выполнится оператор S2.

Обратим внимание: во второй форме после оператора S1 нельзя ста-вить точку с запятой, поскольку этот символ служит для разделения опера-торов.

Пример 5.2.1. Определить x - наибольшее из двух чисел: a,b.

IF a < b THEN x:=b

ELSE x:=a .

Mожно и так:

x:=a;

IF b>a THEN x:=b .

Пример 5.2.2. Определить, выполняется ли условие

при разных значениях a,b,x .

PROGRAM Usl ;

VAR z,a,b,x : real ;

ud : Boolean ;

BEGIN

Write('Значения a,b,x = ? '); ReadLn(a,b,x) ;

z:= Sin(x)*Exp(x)/(2.3*Sqr(x)) ;

ud:=(z >=a) AND (z<=b) ;

IF ud THEN WriteLn ('Условие выполняется')

ELSE WriteLn ('Условие не выполняется')

END.

Конечно, вместо двух последних операторов можно записать один: IF (z>=a) AND (z<=b)

THEN WriteLn('Условие выполняется') ELSE WriteLn('Условие не выполняется') .

Пример 5.2.3. Ввести 3 числа. Определить наименьшее.

VAR a,b,c,x : real ;

BEGIN

Write('3 числа: '); ReadLn(a,b,c);

IF a<=b THEN x:=a

ELSE x:=b ;

IF c<x THEN x:=c ;

WriteLn('Наименьшее = ', x)

END.

Пример 5.2.4. Вычислить

Ввод (x)

0 < x £ 5

да нет

x < 1 печать да нет "недопустимое x"

печать (y)

Рис.5.4. Схема к примеру 5.2.4.

PROGRAM Form ;

VAR x,y : real;

BEGIN

Write('x= '); ReadLn(x);

IF (x>0) AND (x<=5) THEN BEGIN IF x<1 THEN y:=Ln(x) ELSE y:=Sqrt(-(x-1)*(x-5)); WriteLn('y = ', y) END ELSE

WriteLn('Недопустимое x') END.

Обратим внимание на три момента:

1) производится проверка на принадлежность функции области существо-вания: 0<x£5;

2) имеет место вложенность структур (операторов IF);

3) после первого THEN следует составной оператор, состоящий из опера-тора IF и процедуры WriteLn.

Задачи

5.2.1. Ввести целое число, не превышающее 999. Определить коли-чество цифр, из которых оно состоит.

5.2.2. Ввести 4 числа. Вычислить сумму положительных.

5.2.3. Ввести 2 целых числа. Подсчитать:

- количество отрицательных;

- количество нечетных;

- количество чисел, у которых вторая цифра справа равна 7;

- сумму четных;

- сумму отрицательных.

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