русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Процедуры передачи управления

В Паскале есть несколько стандартных процедур, изменяющих последовательность выполнения операторов:

  • break— завершает выполнение цикла, внутри которого записана;
  • continue— выполняет переход к следующей итерации цикла;
  • exit— выполняет выход из программы или подпрограммы, внутри которой записана;
  • halt— немедленно завершает выполнение программы.

Кроме того, для передачи управления используется оператор перехода goto.

Рассмотрим пример применения процедуры передачи управления.

Пример. Программа вычисления значения функцииСh x (гиперболический косинус) с помощью бесконечного ряда Тейлора с точностью ε по формуле:

Этот ряд сходится при любых значениях аргумента. При увеличении номера nмодуль члена ряда Cn стремится к нулю. При некотором nнеравенство |Cn | =>ε перестает выполняться, и вычисления прекращаются.

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

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

Прямое вычисление члена ряда по приведенной выше общей формуле, когда х возводится в степень, вычисляется факториал, а затем числитель делится на знаменатель, имеет два недостатка, которые делают этот способ непригодным: большая погрешность вычислений и их низкая эффективность. При вычислении очередного члена ряда предыдущий уже известен, поэтому следует воспользоваться рекуррентной формулой получения последующего члена ряда через предыдущий Cn+1 = Cn *T, где T— некоторый множитель. Подставив в эту формулу Cn и Cn+1 , получим выражение для вычисления Т:

Текст программы с комментариями приведен в (пример 2.4)..

program ch;

const MaxIter = 500; { максимальное количество итераций }

var x, eps : double; { аргумент и точность }

c, y : double; { член ряда и его сумма }

n : integer; { номер члена ряда }

done : boolean; { признак достижения точности }

begin

writeln('Введите аргумент и точность:');

readln(x, eps);

done := true;

c := 1; y := c; { первый член ряда и нач. значение суммы }

n := 0;

while abs(c) > eps do begin

c := c * sqr(x) /(2 * n + 1)/(2 * n + 2); { очередной член ряда }

y := y + c; { добавление члена ряда к сумме }

inc(n);

if n > MaxIter then begin { аварийный выход из цикла }

writeln('Ряд расходится!');

done := false; break

end

end;

if done then

writeln('Для аргумента ', x, ' значение функции: ', y, #13#10,

'вычислено с точностью', eps, ' за ', n, ' итераций');

readln;

end.

Просмотров: 737


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.