Базовые алгоритмические структуры
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Одним из свойств алгоритма является дискретность – возможность расчленения процессов вычислений, предписанных алгоритмом, на отдельные этапы, возможность выделения участков программы с определенной структурой. Можно графически представить три простейшие структуры:

· последовательность двух и более операций;

· выбор направления;

· повторение.

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

Характерной особенностью базовых структур является наличие в них одного входа и одного выхода.

1. Базовая структура следование или линейная. Образуется из последовательности действий, следующих одно за другим, последовательно, в порядке их записи. Каждая операция является самостоятельной, независимой от каких-либо условий. Линейные вычислительные процессы применяются, например, при вычислении арифметических выражений, когда имеются конкретные числовые данные и над ними выполняются действия.

Пример:

· 2. Базовая структура ветвление. Вычислительный процесс называется ветвящимся, если для его реализации предусмотрено несколько направлений (ветвей). Каждое отдельное направление процесса обработки данных является отдельной ветвью вычислений. Выбор направления зависит от заранее определенного признака, который может относиться к исходным данным, к промежуточным или конечным результатам. Ветвящийся процесс, включающий в себя две ветви, называется простым, более двух ветвей – сложным. Направление ветвления выбирается логической проверкой, в результате которой возможны два ответа: «да» - условие выполнено, «нет» - условие не выполнено. Следует иметь в виду, что хотя на схеме алгоритма должны быть показаны все возможные направления вычислений в зависимости от определенного условия, при однократном прохождении программы процесс реализуется только по одной ветви, а остальные исключаются. Любая ветвь, осуществляются вычисления, должна приводить к завершению вычислительного процесса.

Пример:

 

3. Базовая структура цикл. Цикл – это многократно повторяемый участок программы. В организации цикла можно выделить следующие этапы:

· подготовка (инициализация) цикла (И)

· выполнение вычислений цикла (тело цикла) (Т);

· модификация параметров (М);

· проверка условия окончания цикла (У);

Порядок выполнения этих этапов может изменяться. В зависимости от расположения проверки условия окончания цикла различают циклы с нижним (а) и верхним (б) окончаниями.

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

Цикл называется детерминированным если число повторений тела цикла заранее известно. Цикл называют итерационным если число повторений заранее неизвестно, а зависит от значений параметров, участвующих в вычислениях.

На каждом шаге вычислений происходит последовательное приближение и проверка условия достижения искомого результата.

Алгоритм, в состав которого входит итерационный цикл, называется итерационным алгоритмом. Итерационные алгоритмы используются при реализации итерационных численных методов.

В итерационных алгоритмах необходимо обеспечить обязательное достижение условия выхода из цикла (сходимость итерационного процесса). В противном случае произойдет зацикливание алгоритма, т.е. не будет выполняться основное свойство алгоритма — результативность.

Возможны случаи, когда внутри тела цикла необходимо повторять некоторую последовательность операторов, т. е. организовать внутренний цикл. Такая структура получила название цикла в цикле или вложенных циклов. Глубина вложения циклов (то есть количество вложенных друг в друга циклов) может быть различной.

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

Этапы подготовки и решения задач на ЭВМ

В процессе подготовки и решения на ЭВМ научно-инженерных задач можно выделить следующие этапы:

· постановка задачи;

· математическое описание задачи;

· выбор и обоснование метода решения;

· алгоритмизация вычислительного процесса;

· составление программы;

· отладка программы;

· решение задачи на ЭВМ и анализ результатов.

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

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

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

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

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

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

Отладка программы. Заключается в поиске и устранении синтаксических и логических ошибок в программе.

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

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

В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.

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

По этому критерию можно выделить следующие уровни языков программирования:

· машинные;

· машинно-оpиентиpованные (ассемблеры);

· машинно-независимые (языки высокого уровня).

Машинные языки и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных.

Языки же высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека.

Языки высокого уровня делятся на:

· алгоритмические (Basic, Pascal, C и др.), которые предназначены для однозначного описания алгоритмов.;

· логические (Prolog, Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания.

· объектно-ориентированные (Object Pascal, C++, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами.

Структура объектно-ориентированной модели графически представима в виде дерева, узлами которого являются объекты. Свойства объектов описываются некоторым стандартным типом (например, строковым — string) или типом, конструируемым пользователем (определяется как class).

Значением Свойства типа string является строка символов. Значение свойства типа class есть объект, являющийся экземпляром соответствующего класса. Каждый объект-экземпляр класса считается потомком объекта, в котором он определен как свойство. Объект-экземпляр класса принадлежит своему классу и имеет одного родителя. Родовые отношения в представленной модели образуют связную иерархию объектов.

Для выполнения действий над данными в рассматриваемой модели применяются логические операции, усиленные объектно-ориентированными механизмами инкапсуляции, наследования и полиморфизма.

Инкапсуляция ограничивает область видимости имени свойства пределами того объекта, в котором оно определено. Смысл такого свойства будет определяться тем объектом, в который оно инкапсулировано.

Наследование, наоборот, распространяет область видимости свойства на всех потомков объекта. Если необходимо расширить действие механизма наследования на объекты, не являющиеся непосредственными родственниками (например, между двумя потомками одного родителя), то в их общем предке определяется абстрактное свойство типа abs

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

Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.

Дата: 2019-12-10, просмотров: 249.