Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

While n div 10>0 do



Begin

k:=k+1;

n:=n div 10;

end;

write(‘Количество цифр:’,k);

End.

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

write(‘введите положительное n’);

readln(n);

While n < 0 do

Begin

write(‘введите n’);

readln(n);

end;

Это простой пример так называемой “защиты от дурака”. Теперь пользователь не получит результат, пока не введет положительное число. Однако нам пришлось написать один и тот же фрагмент ввода числа дважды: перед циклом и в теле цикла. Поэтому здесь лучше воспользоваться другим оператором цикла, а именно оператором цикла с постусловием.

Оператор цикла с постусловием имеет следующую синтаксическую форму:

Repeat

оператор1;

оператор2;

......

операторN;

until <условие>;

Этот оператор аналогичен предыдущему. Отличие заключается в том, что условие окончания цикла проверяется после выполнения очередной итерации (таким образом гарантируется хотя бы однократное выполнение цикла). Кроме того, критерием окончания цикла является равенство выражения, описывающего <условие>, константе true. Если выражение имеет значение false, то цикл выполняется.

Перепишем теперь фрагмент ввода, используя цикл repeat.

Repeat

write(‘введите положительное n’);

readln(n);

until n>=0;

Классическим примером задачи на применение цикла с условием является вычисление суммы членов степенного ряда. Пусть необходимо вычислить

.

Для любого k было бы нерационально считать входящие в выражения для общего члена степень и факториал с самого начала, имея их значения при предыдущем k. Как степень, так и факториал будут возрастать с ростом k, что может привести к потере точности и/или переполнению разрядной сетки при раздельном их вычислении. Удобнее найти так называемое рекуррентное соотношение, которое устанавливает зависимость между двумя соседними членами ряда в виде коэффициента рекуррентности q и в дальнейшем вычислять рекуррентно bk = bk–1q для k = 1, 2,... при очевидном начальном условии b0 = x. Для нашего случая

.

Пример

1) n = 9, x = 0.6;

2) x = 0.1…1.0,





Дата публикования: 2014-12-08; Прочитано: 489 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...