Практикум по программированию Обработка числовых данных
.pdf3. ПРОГРАММЫ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ |
51 |
|
|
if (Sqr(X)+Sqr(Y)<=Sqr(R)) and (X>=0) then // если точка принадлежит области 1, то Z2:=1 //переменной Z2 присвоить значение 1,
else //иначе (то есть точка вне областей 1, 3 и 4), Z2:=2; //переменной Z2 присвоить значение 2.
WriteLn('Z2 = ', Z2); ReadLn;
end.
3.3.Задания для самостоятельной работы
Âзаданиях от 1 до 25 требуется для зависимости Y(X), заданной аналитически или графически, составить программу выч исления для вводимого X:
• Y1 = Y(X) — с помощью минимального числа операторов if then else, без применения булевых операций (not, and, or, xor),
• Y2 = Y(X) — с помощью минимального числа операторов if then (без else), с применением булевых операций,
èвывести с поясняющими текстами вычисленные значения Y1
èY2.
Для значений аргумента, при которых функция не определена, выводить соответствующие сообщения.
В заданиях с графиками функций (см. пример 1 выполнения задания):
–стрелка на линии графика указывает открытую границу интервала, в котором функция имеет заданное положением ли - нии значение,
–в точках отсутствия линии графика функция не определена.
ì1 ïðè X < -2,
= ïX/2 ïðè - 2 £ X < 0,
1. Y (X ) í = ïне определена при X 0,
по2 - в остальных случаях.
ì0 ïðè -1 > X ,
= ï1 ïðè -1 £ X < 0,
2. Y (X ) í- £ < ï 1 ïðè 0 X 2,
ïî1 ïðè 2 £ X .
ìX ïðè 0 > X + X 2 > -0,2,
3. Y (X ) = ïíX 2 ïðè 0 < X + X 2,
ïîиначе - не определена.
52 |
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ |
|
|
ì1 ïðè -1 > X , |
|
ï0 ïðè -1 £ X < 0, |
|
4. Y (X ) = í |
|
ï-1 ïðè 0 £ X |
<1, |
î |
|
ï0 ïðè 1 £ X . |
|
|
ì-1 ïðè - 2 > X , |
|
5. |
ïX +1 ïðè - 2 £ X < 0, |
|
Y (X ) = í |
£ X <1, |
|
|
1 ïðè 0 |
|
|
ï |
£ X . |
|
î |
|
|
ï0 ïðè 1 |
|
|
ì0 ïðè X < -2, |
|
|
ï1 ïðè - |
2 £ X < -1, |
6. Y (X ) = í |
|
|
|
ï0 ïðè -1 £ X < 0, |
|
|
î |
£ X . |
|
ï1 ïðè 0 |
|
|
ì0 ïðè X < -1, |
|
|
ïX +1 ïðè -1 < X < 0, |
|
7. Y (X ) = í |
|
|
|
ïX ïðè 0 £ X <1, |
|
|
î |
£ X . |
|
ï0 ïðè 1 |
ì-1 ïðè X < -1, |
|||
ïX ïðè -1 £ X <1, |
|||
8. Y (X ) = í |
|
|
|
ï-X + 2 ïðè 1 £ X < 2, |
|||
ï0 ïðè 2 £ X . |
|||
î |
|
|
|
ì-1/X ïðè X < -3, |
|||
ï |
|
-X ïðè - 3 £ X < 0, |
|
ï |
|
||
9. Y (X ) = í |
|
2 |
ïðè 0 £ X <1, |
ïX |
|
||
ï |
|
X ïðè 1 £ X . |
|
î |
|
||
|
ì-2 - X ïðè X £ 0, |
||
10. Y (X ) = |
ï0 ïðè 0 < X <1, |
||
í |
|
|
|
|
ïX ïðè 1 £ X < 3, |
ïî1- X ïðè 3 £ X .
11.
12.
3. ПРОГРАММЫ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ |
53 |
|
|
13.
14.
15.
16.
17.
18.
19.
54 |
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ |
|
|
м 0, если | X | < 3, иначе
20.Y (X ) = ïн 1, если й| X |щ Е 2 четное, иначе ïî -1, если й| X |щ Е 2 нечетное,
где скобки й щ обозначают целую часть числа, а знак Е — остаток от деления целого числа на 2.
21.
22.
23.
24.
25.
3. ПРОГРАММЫ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ |
55 |
|
|
В заданиях 26—30 для рисунков, на которых области обозна- чены римскими цифрами, требуется составить программу выч исления для вводимых X и Y :
•Z1 — номера области с помощью минимального числа операторов if then else, без применения булевых операций (not, and, or, xor),
•Z2 — номера области с помощью минимального числа операторов if then (без else), с применением булевых операций
èвывода с поясняющими текстами вычисленных значений Z1 и Z2. Точку, лежащую на границе областей, можно считать принадлежащей любой из них.
26.
27.
28.
56 |
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ |
|
|
29.
30.
57
4. Программы циклической структуры
4.1. Средства разработки программ циклической структуры
Программой циклической структуры называют такую, в которой операторы могут повторно, при изменяющихся значениях переменных выполняться несколько раз, образуя цикл. Различают следующие виды циклов (для их организации используют спе - циальные сложные операторы — операторы циклов):
–цикл с заданным числом повторений или цикл с параметром
(операторы цикла for: for to и for downto),
–цикл с предусловием (оператор цикла while),
–цикл с постусловием (оператор цикла repeat until).
В циклах можно выделить управляющие части, определяющие начало и условия выполнения, и части из одного или нескольких операторов (тело), выполняющие необходимые преобразования данных. Цикл называют простым, если в его теле нет других циклов.
Цикл с параметром
Структура оператора цикла for to описывается синтакси- ческой диаграммой (рис. 4.1), где используют следующие обозначения: I — параметр цикла — переменная ординального (порядкового), в частности целого, типа; В1 и В2 — выражения того же типа, что и параметр цикла, или совместимые с ним; Oп — оператор, выполняемый внутри цикла.
Ðèñ. 4.1
Часть, предшествующая оператору Оп, — заголовок цикла — является управляющей, а сам оператор Оп — телом цикла. Оператор Oп будет последовательно выполняться при автоматич еском увеличении с минимальным шагом значения параметра ци кла I от В1 до В2 включительно (для целых типов шаг равен 1). При В1 > В2 оператор Oп не будет выполняться вообще.
58 |
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ |
|
|
Например, в цикле
for I:=0 to 6 do WriteLn(I*10:2,Sin(I/18*Pi):8:2);
оператор WriteLn будет выполняться 7 раз при I, изменяющемся от 0 до 6 с шагом 1.
На экран будет выведена таблица, в первом столбце которой целые числа 0, 10, 20, …..., 60, представляющие углы в градусах, а во втором — соответствующие им значения синуса:
0 0.00
10 0.17
20 0.34
30 0.50
40 0.64
50 0.77
60 0.87
Структура оператора цикла for downto описывается синтаксической диаграммой (рис. 4.2), а его работа отличается от опе - ратора for to тем, что параметр цикла I не увеличивается, а уменьшается от В1 до В2, а оператор Oп не будет выполняться вообще при В1 < В2.
Ðèñ. 4.2
Цикл с предусловием
Структура оператора цикла while описывается синтаксической диаграммой (рис. 4.3), где БВ — булево выражение, Oп — оператор, выполняемый внутри цикла (тело цикла).
Ðèñ. 4.3
Заголовок цикла — конструкция, предшествующая оператору Оп, управляет выполнением цикла следующим образом: оператор Oп будет последовательно выполняться, пока выражение БВ имеет значение True, или не будет выполняться вообще, если до выполнения оператора while БВ имеет значение False.
4. ПРОГРАММЫ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ |
59 |
|
|
Например, фрагмент программы
N:=0;
while N<=60 do begin
WriteLn(N:2,Sin(N/180*Pi):8:2);
N:=N+10 end
будет выполнять ту же работу, что и оператор for to в предыдущем примере.
Цикл с постусловием
Структура оператора цикла repeat until описывается синтаксической диаграммой (рис. 4.4).
Ðèñ. 4.4
Внутри такого цикла может находиться произвольное число операторов Оп, которые будут выполняться один или более р аз до получения булевым выражением БВ значения True. Например, такую же таблицу, что и в первом примере с применением оператора for to, будет выводить следующий фрагмент программы:
N:=0; repeat
WriteLn(N:2,Sin(N/180*Pi):8:2);
N:=N+10 until N>60;
Âприведенных примерах переменные I и N изменялись по закону арифметической прогрессии. Нередко возникает нео бходимость иметь в цикле переменную — дополнительный параметр цикла, изменяющуюся по требуемому закону. Сделать это можно так: до входа в цикл этой переменной дается начальное знач е- ние, а внутри цикла значение переменной изменяется нужным образом с помощью оператора присваивания.
Âфрагменте программы
R:=5;
for K:=1 to N do
60 |
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ |
|
|
begin
. . . . . .
R:=R*1.2;
. . . . . .
end;
R — дополнительный параметр, который в цикле при N = 4 будет последовательно получать значения 5; 6; 7,2; 8,64, изменяясь по закону геометрической прогрессии умножением предыдущег о зна- чения на 1,2.
Выход из цикла по условию, объявленному в его управляющей части, будем называть естественным. При этом для циклов с параметром (организованным операторами for) рекомендуется считать, что значение параметра становится неопределенн ым.
Существует возможность и досрочного выхода из любого цик ла, организованного рассмотренными операторами, либо с помо щью оператора безусловного перехода goto (их мы не будем использовать), либо с помощью оператора Break. В этом случае текущее значение параметра цикла for сохраняется (считается определенным), и его можно использовать в дальнейших вычислениях.
В теле любого из рассмотренных циклов допускается исполь - зовать оператор Сontinue. Его действие сводится к тому, что сразу происходит переход к очередному выполнению тела цикла (в циклах for с очередным значением параметра) или выход из цикла, если выполнено условие его завершения.
4.2. Вычисление и вывод данных в виде таблицы
Простейшими примерами применения операторов цикла на практике являются программы вычисления значений функци й при изменяющихся значениях аргумента и вывода данных в ви де таблиц с заголовками. В качестве аргумента обычно выступа ет переменная — дополнительный параметр, изменяющаяся в цик - ле по требуемому закону. В циклах while и repeat эта переменная используется в условиях завершения цикла.
При работе с вещественными данными необходимо иметь в виду, что их значения могут представляться с ошибкой, что э ти ошибки могут зависеть от типа переменных, накапливаться п ри выполнении арифметических операций и приводить к непред у- смотренному программистом выполнению программы. Рассмо т- рим два фрагмента программы вывода таблицы значений аргу - мента и функции, где аргумент — дополнительный параметр в цикле — является вещественной переменной с именем Х: