|
Линейная структура алгоритмов
За основу берем общую структуру алгоритма, определяемся с исходными данными и результатами работы алгоритма. Для этого выражения исходные данные имеют символическое представление A и В, а результатом его работы будет сумма, имеющая символическое представление C. Следующим этапом необходимо определиться с процессом, который будет описывать алгоритм. В нашем случае, это вычисление суммы. Поставляем в общую структуру алгоритма наши выводы и получаем алгоритм вычисления суммы. Рассмотренный пример содержит всего одно действие, по этому структура этого алгоритма получилась идентичной общей структуре алгоритмов. Для более детального понимания шага, классифицируемого как действие, рассмотрим структуру алгоритма, состоящую не из одного, а из двух последовательных действий. Для примера возьмем следующую последовательность вычислений: C=A+B, E=C*D, графическое представление алгоритма которой
Структура развилки
В реальной жизни линейные или по другому безусловные алгоритмы встречаются крайне редко, поэтому в процесс алгоритмизации был введен второй вид шага, это шаг типа развилка. Шаг типа развилка предусматривает возможность внедрение в алгоритмы различные пути решения при различных исходных данных и ситуациях связанных с их обработкой. Другими словами шаг развилка это шаг проверки какого либо условия, если условие выполняется (то есть результат сравнения равен истине), то алгоритм идет по одному пути, если нет, то по другому. Рассмотрим этот вид алгоритмов на простом примере: Как и в случае с линейным алгоритмом, сначала определимся с исходными данными. Из математического выражения видно, что исходные данных имеют символическое название A и B, и с результатами вычисления, исходя из того же выражения, это объект с именем C. Как и в предыдущем примере мы имеем два математически выражения, это C=A и C=B, однако исходное выражение содержит условие, то есть, в зависимости от исходных данным, в процессе выполнения алгоритма, должно быть выполнено только одно выражение. Если значение объекта A меньше значения объекта B, то выполнится первое выражение C=A, а если нет, то второе C=B. Получается, что в зависимости от исходных данных, алгоритм должен иметь два пути решения, либо выполняется первое выражение, либо второе.
Общая структура алгоритма, использующего условное определение пути решения приведена на рисунке 20.
Структура цикла
Очень часто в жизни встречаются повторяющиеся процессы, тое есть процессы, состоящие из определенных шагов, повторяющиеся до тех пор, пока не выполнится какое либо условие. Так например, повторять набор номера телефона, до тех пор, пока не будет установлено соединение. Различаются три основных вида циклических процессов. Первое, это циклический процесс со счетчиком.. Этот вид циклического процесса подразумевает повторение одних и тех же операций, определенное число раз. Например, телефонный номер состоит из 10 цифр, то есть для набора телефонного номера, нам необходимо ввести последовательность из 10 цифр. Получается, что для набора номера телефона, мы используем цикл со счетчиком, то есть по очереди набираем цифры с первой по десятую. Рассмотрим простой арифметический пример, вычисление суммы чисел последовательности M размерности N, рисунок 21. Как и в предыдущих примерах сначала определяемся с исходными данными. В данной задаче первым делом определяемся с исходными данными. В данном случае, это размерность N и сама последовательность M. И с результатами работы алгоритма. В данном случае это сумма S. Далее непосредственно с процессом, выполняемым внутри алгоритма. Для определения суммы всех элементов какой либо последовательности нам необходимо их всех сложить. Для складывания всех элементов любой последовательности M необходимо перебрать их всех. Для перебора всех элементов любой последовательности необходимо организовать цикл со счетчиком. Счетчик в данном случае необходим для определения текущего номера элемента, а так же определения конца последовательности, и при каждом повторении цикла прибавлять значение элемента к символическому объекту, определяющему сумму. Кроме того, поскольку мы определяем сумму элементов, необходимо начальное значение символического объекта S приравнять нулю, поскольку при определении суммы цифра «0» не меняет результата. Общая структура цикла со счетчиком приведена на рисунке 22. Второй вид циклического процесса, это циклический процесс с предусловием. Этот вид циклического процесса применяется в ситуациях, когда процесс, повторяемый в цикле выполняется только в случае выполнения условия, причем перед началом цикла проверяется истинность этого условия. Цикл со счетчиком является частным случаем цикла с предусловием, однако в структуре цикла со счетчиком, за ранее известно сколько раз будет повторен процесс, а в общем случае цикла с предусловием нет. Цикл с предусловием, может не выполнится ни одного раза, если заранее заданы параметры невыполнимого условия, например, если телефон работает, то набирать номер пока не произойдет соединение. В этом примере видно, что для выполнения цикла должны выполниться условия «телефон работает» и «нет соединения», то есть если телефон не работает или соединение уже установлено цикл не выполниться ни одного раза. Рассмотрим алгоритм включающий в себя цикл с предусловием на примере. Найти сумму цифр от Aнач до Aкон с шагом dA, рисунок 23. Исходными данными для построения алгоритма решения задачи являются Aнач, Aкон и dA. Результатом работы алгоритма будет являться сумма, придадим ей символическое название S. Для решения этой задачи нам необходимо сложить все числа, которые входят в промежуток от Aнач до Aкон с шагом dA, то есть на первом шаге мы присвоим символическому объекту значение ноль S=0, на втором шаге мы прибавим к S=Aнач, далее S=S+dA,…, S=S+dA до тех пор, пока Aнач+n*A будет меньше или равно Aкон. Для того, чтобы не повторять одну и туже операцию некоторое количество раз и организуется цикл с предусловием, который будет выполнять этот процесс автоматически. При выполнении циклического процесса, сначала проверяется условие, и если исходные данные заданы таким образом, что Aнач заранее больше Aкон, то при таких исходных данных процесс внутри цикла не выполнится ни разу. Общая структура алгоритма организации цикла с предусловием приведена на рисунке 24. И последним вариантом циклического процесса является цикл с постусловием, единственным отличие данного вида цикла является то, что сначала выполняется какое либо действие, а затем проверяется, требуется повторить или нет. В примере с набором номера телефона, формулировка будет звучать так: набирать номер телефона и если нет соединения, то повторить. Общая структура алгоритма организации цикла с постусловием приведена на рисунке 25.
Приближенные вычисления.
При решении задач вычислительного характера, редко удается получить абсолютно точные результаты. Причинами этого являются участвующие в вычислениях операции деления. Если исходные числа были иррациональными, то точно представить их в виде конечных десятичных дробей невозможно, так как их запись содержит бесконечное число цифр. Поэтому, приходиться вместо исходных иррациональных чисел, оперировать рациональными числами, полученными из данных иррациональных чисел путем записи их в рациональном виде, путем записи их с конечным числом знаков, то есть округлении. Возникают подобные ситуации, и в случае когда исходные числа были рациональными, а в результате операций над ними получились иррациональные, например при делении единицы на три получим 1/3=0,333…, в результате выполнения операций подобные числа так же округляются до конечного числа знаков. Кроме того, одним из самых важных источников погрешности, является неточность самих исходных данных. Обычно исходные данные для большинства задач моделирования получают на основе физических экспериментов и опытов. Любой эксперимент связан с измерениями и наблюдениями, которые сами по себе не могут оказаться абсолютно точными в связи с возможностями измерительной аппаратуры. Даже при определении площади комнаты, когда необходимо знать только ее длину и ширину, как бы мы не старались, мы не сможем измерить абсолютно точно, даже сам измерительный прибор, заранее содержит какую то погрешность измерений. И естественно, при решении задач мы идеализируем их исходные данные, то есть вместо реальных задач решаем приближенную к реальности идеальную задачу, даже с измерением площади комнаты, углы не могут быть абсолютно прямыми, то есть комната заранее не является прямоугольником. Пусть для величины, точное значение которой есть X, мы получили некоторое приближенное значение X*. Абсолютная величина разности между точным значением X и его приближенное величиной X*, называется абсолютной погрешностью. Приближенного числа X*, и обозначается Абсолютная погрешность далеко не всегда точно характеризует погрешность вычислений. Так например, пусть погрешность взвешивания предмета равна 100 г, если взвешивался например автомобиль, то эта погрешность очень мала, а если взвешивался например телефон, то эта погрешность очень велика. Поэтому было введено еще одно важное, с точки зрения точности вычислений понятие – это относительная погрешность. Относительной погрешностью приближенного значения X* называют отношение абсолютной погрешности Для примера возьмем измерения длин радиоволн с абсолютной погрешностью равной одному метру. Если после измерений получим, что длина волны равна 1000 метров, то относительная погрешность равна 1/1000=0,001, а если длина волны равна 4 метрам, то относительная погрешность равна 1/4=0,25. Для удобства анализа относительной погрешности очень часто ее представляют в виде процентов к значению измерений: тогда, в результате решения задачи измерения длины волны, в случае если это километровый диапазон, то относительная погрешность составляет всего 0,1%, то есть очень мало, а если метровый, то 25%, то есть очень много. Как говорилось ранее, очень часто в процессе вычислений приходиться иметь дело с бесконечными дробями. Такие числа приходиться округлять. Обычно округление производят по следующему правилу (иногда бывает необходимость использования и других правил). Пусть какое то число имеет в своей записи более чем k цифровых знаков и мы хотим округлить его, оставив ровно k знаков. Тогда, если (k+1)-я цифра числа меньше чем 5, то все ее цифры, начиная с (k+1)-ой просто отбрасываются, а если (k+1)-я цифра больше чем 5, то все цифры, начиная с (k+1)-ой тоже отбрасываются, при этом k-я цифра увеличивается на единицу. Если (k+1)-я цифра есть 5, а за ней найдется хоть одна отличная от нуля цифра, то поступают, как в случае, если (k+1)-я цифра больше пяти, если за ней нет цифр отличных от нуля, тогда отбрасывают «хвост», начиная с (k+1)-ой цифры, и если k-я цифра четная, то оставляют ее без изменений, если нечетная, увеличивают на единицу. Например, оставив три знака после запятой в числе 5,6785 поучим 5,678, а если оставим три знака после запятой в числе 4,5675, то получим 4,568. Принято считать, что в приближенном значении величины все цифры верные, если его абсолютная погрешность не превосходит единицы последнего разряда. При выполнении этого условия можно по записи приближенного значения определить его абсолютную погрешность. И наоборот, по абсолютной погрешности числа, можно определить число верных знаков в его записи. Например, если известно, что все цифры записи числа X=15 верны, то его абсолютная погрешность В процессе алгоритмизации, то есть разработки алгоритмов решения различных задач следует обратить должное внимание на качество вычислительных и измерительных операций и анализу погрешности результатов.
![]() ![]() Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)... ![]() Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... ![]() ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... ![]() Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|