Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Вычисление и вывод данных в виде таблицы

Циклы с параметром | Цикл с предусловием | Пример 3.1.2 выполнения задания с использованием цикла for | Задания 3.1 для самостоятельной проработки |


Читайте также:
  1. Decide which answer А, В, С or D best fits each space. Подумайте, какие из предложенных ответов лучше подходят для данных выражений.
  2. Decide which answer А, В, С or D best fits each space. Подумайте, какие из предложенных ответов лучше подходят для данных выражений.
  3. Hand-тест и его теоретический конструкт. Процедура обследования и интерпретация данных.
  4. II. Мышление и логика, логические законы, последовательность, долженствование, умозаключения и вывод
  5. III. Выводы
  6. III. Выводы
  7. III. Работа с внешней памятью данных (ВПД).

Простейшими примерами применения операторов цикла на практике являются программы вычисления значений функций при изменяющихся значениях аргумента и вывода данных в виде таблиц с заголовками. В качестве аргумента обычно выступает переменная – дополнительный параметр, изменяющаяся в цикле по требуемому закону. В циклах while и repeat эта переменная используется в условиях завершения цикла.

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

1)

X:=0; H:=1/3; Xk:=5/3;//Все переменные типа Extended

while X<=Xk do

begin

WriteLn(X:6:2,Sin(X):8:2);

X:=X+H;

end;

 

2)

H:=1/3;X:=-H; Xk:=5/3;

repeat

X:=X+H;

WriteLn(X:6:2,Sin(X):8:2);

until X=Xk;

 

Казалось бы, оба фрагмента выведут на экран таблицы значений синуса для аргумента Х, изменяющегося от 0 до 5/3 включительно с шагом 1/3. Но в действительности первый фрагмент не выведет значения 5/3 и sin(5/3), а второй не обеспечит завершение выполнения цикла при Х=5/3, так что цикл продолжит выполняться и при больших значениях Х.

Во избежание подобных ситуаций следует вместо проверок вещественных данных на равенство использовать проверки на < (меньше) и/или > (больше) с некоторым достаточно малым запасом, превышающим точность представления чисел данного типа и не нарушающим логику работы программы. Например, в рассмотренные фрагменты программы можно изменить так

1)

X:=0; H:=1/3;

//Запас в H/2=1/6 больше ошибки представления вещественных чисел

Xk:=5/3+H/2;

while X<Xk do //и при Х=5/3 цикл будет выполнен.

begin

WriteLn(X:6:2,Sin(X):8:2);

X:=X+H;

end;

 

2)

H:=1/3;X:=-H;

//Запас в H/2 больше ошибки представления вещественных чисел

Xk:=5/3-H/2;

repeat

X:=X+H;

WriteLn(X:6:2,Sin(X):8:2);

until X>Xk; //и выход из цикла будет, и будет только при Х,

//равном 5/3, что больше Xk.

 

Рассмотрим решение этой же задачи вывода таблицы значений синуса, но при использовании оператора цикла for. Для этого потребуется заранее вычислить, сколько раз цикл должен выполняться, воспользовавшись формулой

,

где скобки обозначают округление,

N – искомое число повторений цикла,

X0 и X1 – начальное и конечное значения аргумента,

H – шаг изменения аргумента.

Так как в нашем случае Х0=0, Х1=5/3 и H =1/3, фрагмент программы с циклом for будет следующим

 

H:=1/3; X:=0;

N:=Round(5/3/H)+1;

for i:=1 to N do

begin

WriteLn(X:6:2,Sin(X):8:2);

X:=X+H;

end;


Дата добавления: 2015-07-12; просмотров: 140 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Цикл с постусловием| Пример 3.1.1 выполнения задания с использованием цикла while

mybiblioteka.su - 2015-2024 год. (0.006 сек.)