Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8945

.pdf
Скачиваний:
2
Добавлен:
05.02.2023
Размер:
1.71 Mб
Скачать

131

Составной оператор играет большую роль при написании других сложных операторов, таких как условный оператор, опера торы цикла,

присоединения.

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

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…)

Этот цикл повторяет выполнение последовательности операторов,

пока заданное условие не станет ложным.

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