
8945
.pdf131
Составной оператор играет большую роль при написании других сложных операторов, таких как условный оператор, опера торы цикла,
присоединения.
Пример составного оператора.
Begin
D := Sqrt(B*B–4*A*C);
X1 := (–B + D)/(2*A);
X2 := (B+D)/(2*A);
End;
6.6.2.2. Управляющие операторы
Набор управляющих операторов делает честь любому хорошо структурированному языку программирования. Цик лы с возможной про-
веркой условия в начале, в конце и в середине работы оператора, обы ч-
ный оператор If и оператор разбора случаев Case — все эти средства по-
зволяют организовать процесс вычислений надежно и эффективно в с о-
ответствии с лучшими традициями программирования.
Условный оператор (If Then Else)
Этот общепринятый в языках программирования оператор упра в-
ления вычислениями позволяет выбирать и выполнять действия в зав и-
симости от истинности некоторого условия.
Имеется два варианта синтаксиса.
If <условие> Then <оператор>;
If <условиие > Then
<оператор1>
Else <oператор2>;
132
Здесь условие обязательно в обоих вариантах. Условие — это вы-
ражение, принимающее значение True или False. Если условие истинно(True), то выполняется оператор1, если условие ложно(False),
то выполняется оператор2. Оператор1 и оператор2 — любые операто-
ры языка Паскаль. Обратите внимание, что после оператора, стоящего перед ключевым словом Else, символ точки с запятой не ставится!
Примеры:
1.Найти максимальное и минимальное значение из двух веще-
ственных переменных.
Решение представлено следующим фрагментом программы.
Var
X, Y : Real; {исходные данные}
Max, Min |
: Real; {переменные результата} |
............................. |
If X > Y Then {сравнение значений двух переменных}
Begin
Max := X; Min := Y; {если X > Y, то переменной Max при-
сваивается значение переменной X, а переменной Min при-
сваивается значение переменной Y}
End
Else
Begin
Max := Y; Min := X; {если X < Y, то переменной Max
присваивается значение переменной Y, а переменной Min
присваивается значение переменной X}
End;
.............................
Обратите внимание, что по каждой ветке оператора условия в ы-
полняется по два оператора присваивания. Но синтаксис данного опер а-
133
тора позволяет записать только один оператор после клю чевого слова
Then и один оператор после ключевого слова Else. Чтобы выполнить данное правило записи условного оператора, операторы присваивания группируются в один составной оператор, записанный межу ключевыми словами Begin …End.
2. Написать программу вычисления площади треугольника, если заданы длины его сторон.
Program SQ;
Var
A, B, C : Real; {длины сторон}
P, S : Real; {полупериметр и площадь}
R : Boolean; {переменная условия}
Begin
Write('Введите длины сторон треугольника ');
Readln (A, B, C);
R := (A+B > C) And (A+C > B) And (C+B > A);
If R Then {если треугольник можно построить}
Begin
P := 0.5 *(A+B+C);
S :=Sqrt(P * (P–A)*(P–B)*(P–C));
Writeln ('Площадь треугольника равна ', S:6;2);
End
Else Writeln('Треугольник построить нельзя');
End.
В программе введена переменная R логического типа (Boolean).
Данная переменная примет значение равное TRUE, если для введенных значений переменных A, B, C одновременно выполнятся три условия:
A+B > C , A+C > B и C+B > A. Если нарушится хотя бы одно из условий переменная R примет значение FALSE. Обратите внимание, что в каж-
дой программе
134
Оператор варианта Case
Этот оператор производит разбор случаев и в зависимости от зн а-
чения анализируемого выражения выбирает и исполняет один из опер а-
торов. Имеет два варианта записи.
Вариант1:
Case <Выражение> of
Список_констант1 : < оператор1>;
Список_констант2 : < оператор2>;
Список_констант3 : < оператор3>;
End;
Вариант 2:
Case <Выражение> of
Список_констант1 : < оператор1>;
Список_констант2 : < оператор2>;
Список_констант3 : < оператор3>; Else < оператор4>;
End;
Выражение должно присутствовать обязательно. Оно может быть произвольным выражением со значением любого перечислимого типа.
Список_констант — одно либо несколько значений констант того же типа, что и выражение. Список констант можно определять перечисле-
нием значений (6, 8, 12) и указанием диапазона значений (2..23).
Пример:
Var
Before : Integer;
CurrentYear : Integer;
135
Str : String;
Begin
{Инициализация переменных:}
CurrentYear := 1999;
Write (′Сколько лет тому назад?′); Readln( Before);
Case CurrentYear – Before of
1954..1969, 1971..1974, 1982 : Str := 'Годы учебы';
1972..1989 : Str := 'Годы воспитания';
Else
Str := 'Прочие годы'
End;
Writeln( Str);
End.
Здесь, если Before = 20, значением выражения будет 1979, и вы-
полнится работать вариант ('Годы воспитания '). При Before = 25 значе-
ние 1974 входит в оба списками, но для исполнения будет выбран лишь первый вариант ('Годы учебы ').
6.6.2.2.1.Контрольные вопросы.
1.Какие формы записи имеет оператор условия?
2.В чем отличие условного оператора и оператора варианта?
3.Может ли символ «;» быть прописанным перед ключевым словом Else?
4.Что такое условие? Приведите примеры записи условия.
5.Может ли выражение в операторе варианта относится к вещ е-
ственному типу данных?
6.Как оформит оператор условия, если после ключевого слова
Then требуется выполнить несколько действий (операторов)?

136
6.6.2.2.2.Задания.
1. Написать программу вычисления заданной функции
Z |
|
3y 5x |
|
.....,.....если |
x |
y 2x |
|
|
|
|
|
|
|
|
|
3y 5x |
|
,.....если |
y |
2x |
|
|
|
||||
|
|
|
|
|
|
|
2. Написать программу, которая запрашивает у пользователя но-
мер дня недели и выводит одно из сообщений: «Рабочий день», «Суббо-
та» или «Воскресенье».
3. Год является високосным, если его номер кратен 4. Из кратных
100 високосными годами являются лишь те года, которые кратны также
400 (например, 1700, 1800, 1900 — не високосные года, 2000 — високос-
ный год). Дано натуральное число N. Определить, является ли високо с-
ным год с таким номером.
4. В каждый подарочный набор входит 1 ручка, 2 линейки и 4 те т-
ради. Имеется а линеек, b тетрадей и c ручек. Сколько всего получится подарочных наборов?
5. С клавиатуры вводится две даты. Выдать сообщение «правиль-
но», если первая введенная дата предшествует второй, и «неправильно»,
если наоборот.
6. Определить, принадлежит ли точка с координатами X, Y фигуре,
заданной левой полуокружностью вертикальной прямой, пр оходящей через центр окружности. Координаты центра окружности и радиус пр о-
извольны.
7. Написать программу, которая запрашивает у пользователя но-
мер дня недели и выводит одно из сообщений: «Рабочий день», «Субб о-
та», «Воскресенье».
8. Дано натуральное число N (N < 9999).
Является ли это число палиндромом (перевертышем) с уч е-
том четырех цифр, как, например числа 2222, 6116, 0440 и т.д.?

137
Верно ли, что число содержит ровно три одинаковые цифры,
как, например, числа 6676, 4544, 0006 и т.д.?
Верно ли, что все четыре цифры числа различны?
9. Дано натуральное число N (N <100), определяющее возраст че-
ловека (в годах). Дать для этого числа наименования «год», «года», «лет» и т.д.
10.Даны числа x1, x2 , x3 , y1, y2 , y3 .Принадлежит ли начало коорди-
нат треугольнику с вершинами x1, y2 , x3 , y1 , x2 , y3 ?
6.6.2.3. Цикл с параметром (For…)
Операторы цикла служат для организации многократных повтор е-
ний в программах. В Паскале имеется три вида циклов: цикл с параме т-
ром, цикл с предусловием и цикл с условием.
Цикл с параметром позволяет повторять груп пу операторов задан-
ное число раз. Существует две формы записи оператора цикла с пар а-
метром.
1.С увеличением счетчика:
For <счетчик_цикла> := <начало> To <конец> do <оператор>;
2.С уменьшением счетчика:
For <счетчик_цикла> := <начало> DownTo <конец> do <опера-
тор>;
Здесь счетчик_цикла — это переменная перечислимого типа. В на-
чале выполнения цикла она принимает значение, задаваемое числовым выражением начало. Числовое выражение конец задает заключительное значение счетчика цикла. Оно вычисляется до начала испо лнения тела цикла и не меняется. Шаг изменения значения переменой счетчик_цикла
равен 1 для первой формы, шаг равен –1 для второй формы записи цик-
ла. Оператор (тело цикла) — любой оператор языка программирования Паскаль.

138
Если шаг цикла положителен, условие завершения цикла:
счетчик_цикла > конец
Если шаг цикла отрицателен, условие его завершения:
счетчик_цикла < конец
Это условие проверяется перед началом работы цикла, а затем — после каждого прибавления шага к счетчику цикла. Завершить цикл
For… можно и с помощью оператора Break. Такие операторы могут быть расположены в тех местах тела цикла, где требуется из него выйти, не дожидаясь выполнения условия завершения.
20 |
x |
|
|
|
Пример. Вычислить сумму S |
i |
, где x |
3, x |
x 0.5 . |
|
||||
|
i |
1 |
i 1 |
i |
i 1 |
|
|
|
Решение:
Var
X, S : Real;
I : Integer;
Begin
X := 3; { начальная установка значения переменной X}
S := 0; { начальная установка результата}
For I := 1 to 20 do
Begin
S := S + X / I;
X := X + 0.5; {выбор очередного элемента}
End;
Writeln('Вычисленное значение суммы равно ',S:8:2); End.
6.6.2.3.1.Задания.
1. Написать программу вычисления факториала заданного числа n.

|
|
|
|
|
|
|
|
|
|
|
139 |
||
2. |
Написать программу, которая выводит таблицу квадратов пер- |
||||||||||||
вых десяти целых положительных чисел. |
|
|
|
|
|
||||||||
3. |
Для данного N > 7 найти такие целые неотрицательные a и b, |
||||||||||||
3 a 5 b N . |
|
|
|
|
|
|
|
|
|
|
|
|
|
4. |
Дано действительное число x. Вычислить: |
||||||||||||
|
x |
x3 |
|
x5 |
|
x7 |
|
x9 |
|
x11 |
|
x13 |
|
|
3! |
5! |
7! |
9! |
11! |
13! |
|
||||||
|
|
|
|||||||||||
5. |
Написать программу, которая генерирует три последовательн о- |
сти из десяти случайных чисел в диапазоне от 1 до 10, выводит каждую последовательность на экран и вычисляет среднее арифметическое каж-
дой последовательности. Рекомендуемый вид экрана:
*** Случайные числа *** |
|
|
|
|
|
|
||||
6 |
10 |
4 |
2 |
5 |
8 |
1 |
7 |
7 |
3 |
Сред. арифм. |
|
|
|
|
|
|
|
|
|
|
5.30 |
10 |
3 |
6 |
1 |
10 |
1 |
3 |
8 |
7 |
6 |
Сред. арифм. |
|
|
|
|
|
|
|
|
|
|
5.50 |
5 |
2 |
2 |
5 |
4 |
2 |
2 |
1 |
6 |
10 |
Сред. арифм. |
|
|
|
|
|
|
|
|
|
|
3.90 |
6. Написать программу, которая преобразует введенное десятич-
ное число в двоичное.
7. Написать программу, которая преобразует введенное десятич-
ное число в шестнадцатиричное.
8. Написать программу, которая выводит на экран квадрат Пиф а-
гора — таблицу умножения.

|
|
|
|
|
|
|
|
|
|
140 |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
1 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
2 |
2 |
4 |
6 |
8 |
10 |
12 |
14 |
16 |
18 |
20 |
3 |
3 |
6 |
9 |
12 |
15 |
18 |
21 |
24 |
24 |
30 |
4 |
4 |
8 |
12 |
16 |
20 |
24 |
28 |
32 |
36 |
40 |
5 |
5 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
6 |
6 |
12 |
18 |
24 |
30 |
36 |
42 |
48 |
54 |
60 |
7 |
7 |
14 |
21 |
28 |
35 |
42 |
49 |
56 |
63 |
70 |
8 |
8 |
16 |
24 |
32 |
40 |
48 |
56 |
64 |
72 |
80 |
9 |
9 |
18 |
27 |
36 |
45 |
54 |
63 |
72 |
81 |
90 |
9. Треугольником Паскаля называют числовой треугольник, в ко- |
||||||||||
тором |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
1 |
|
1 |
|
|
|
|
|
|
|
|
1 |
2 |
1 |
|
|
|
|
|
|
|
1 |
3 |
|
3 |
1 |
|
|
|
|
|
1 |
|
4 |
6 |
4 |
|
1 |
|
|
|
|
. . . . . . . . . |
|
|
по краям стоят единицы, а каждое число внутри равно сумме двух сто я-
щих над ним в ближайшей строке сверху.
Дано натуральное число n. Получить первые n строк треугольника Паскаля.
10. Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n–ю степень равна самому числу (напри-
мер, 153 13 53 33 ) Получить все числа Армстронга, состоящие из двух, трех и четырех чисел.
6.6.2.4. Циклы с условием
Цикл с предусловием (While…)
Этот цикл повторяет выполнение последовательности операторов,
пока заданное условие не станет ложным.