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

Практикум по программированию Обработка числовых данных

.pdf
Скачиваний:
539
Добавлен:
23.03.2016
Размер:
3.15 Mб
Скачать

3. ПРОГРАММЫ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ

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 эта переменная используется в условиях завершения цикла.

При работе с вещественными данными необходимо иметь в виду, что их значения могут представляться с ошибкой, что э ти ошибки могут зависеть от типа переменных, накапливаться п ри выполнении арифметических операций и приводить к непред у- смотренному программистом выполнению программы. Рассмо т- рим два фрагмента программы вывода таблицы значений аргу - мента и функции, где аргумент — дополнительный параметр в цикле — является вещественной переменной с именем Х: