Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Сравнительный анализ и примеры их использования

Содержание:

ВВЕДЕНИЕ

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

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

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

Стоит отметить, что владение ИТ ставится в нынешнем мире на одну ступень с такими качествами, как использование языков для сообщений и умение критически рассуждать.

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

При этом каждый пример ИТ базируется на фундаментальном понятии – понятии алгоритма.

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

Объект исследования – теория алгоритмов и структур данных.

Предмет исследования – структуры алгоритмов.

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

В соответствии с поставленной целью выделены такие задания:

– рассмотреть основные понятия об алгоритмах, их свойства;

– описать методы подачи алгоритмов;

– охарактеризовать базовые структуры алгоритмов и провести их сравнительный анализ;

– провести рассмотрение операторов для реализации основных структур алгоритмов на языке С++;

– привести примеры использования базовых структур алгоритмов.

В работе используется язык С++, так как он на данное время является одним из самых используемых.

Проблему использования базовых структур алгоритмов изучали разные ученые: Б. Страуструп, Дж.Прата, Г Шилдт. Как результат исследования ими были выпущены учебники по изучению языка программирования С++.

1.Основные понятия теории алгоритмов

1.1.Понятие алгоритма

Образование, работа, личные дела – каждодневное, ежечасное решение самых различных задач.

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

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

Оно возникло намного ранее до появления ПК, но с развитием компьютерной техники его роль возросла во много раз.

Происхождение понятия алгоритма тесно связано с именем ученого Мухамеда Муссы (Аль Хорезми). Им были впервые сформулированы правила для выполнения основных арифметических действий.

Стоит отметить, что точное математическое определение данного понятия "алгоритм" выработано только в 30-х годах 20 века.

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

Еще в начале 20 века накопилось в математике большое количество задач, что не поддавались быстрому решению, несмотря даже на то, что их изучали первоклассные ученые.

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

Утверждение о неразрешимости какого-то класса задач можно вывести, только имея точное определение алгоритма, надо знать, несуществование того, что надо доказать.

Алгоритм – это описанная на некотором ЯП точная конечная система закономерностей, определяющая содержание действий над некоторыми составными объектами, строгое выполнение для которых дает решение имеющейся задачи.

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

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

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

Алгоритм – фундаментальное понятие программирования. Ученые выделяют 3 основных класса алгоритмов:

– информационные;

– вычислительные;

– управляющие [3].

Вычислительные алгоритмы – алгоритмы, что работают со сравнительно простыми форматами данных.

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

Эффективность работы таких алгоритмов прямо зависит от организации информации в программе.

Управляющие алгоритмы характеризуются тем, что информация для них поступает от внешних источников, которыми они и управляют. Результатами выполнения этих алгоритмов является создание своевременной управляющей реакции на изменение начальных данных.[2]

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

1.2.Свойства алгоритмов

Заметим, что алгоритм характеризуется такими свойствами (рисунок 1):

Рис.1. Свойства алгоритма

Дискретность (разрывность) – это свойство для алгоритма, характеризующее непосредственно его структуру: каждый такой алгоритм состоит только из отдельных действий.

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

Определенность (точность) – это свойство алгоритма, что указывает на то, что каждый шаг в алгоритме должен строго определяться и не допускать многих толкований; также должен быть строго определен порядок выполнения его шагов.

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

Формальность – свойство указывает на тот факт, что любой исполнитель, который способен выполнять и воспринимать инструкции алгоритма, действует только формально, так как отвлекается от содержания задачи.

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

Все временные характеристики алгоритма могут определять временную сложность и длительность решения.

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

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

Рис.2. Временная сложность алгоритма

Временная сложность дает возможность определить наибольший размер задания, которое можно решить при помощи данного алгоритма на компьютере.

Каждый такой алгоритм можно охарактеризовать функцией f(n), что выражает скорость роста объема выполненных вычислений при увеличении итоговой размерности задачи – параметра n. Если такая зависимость имеет полиномиальный или линейный характер, то алгоритм является "хорошим", если же экспоненциальный, то "плохим".

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

К примеру, при зависимости, которая записывается, как f(n)= 2n увеличение уровня производительности в 10 раз может увеличить размерность задачи, только на 15 %.[19]

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

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

Объем используемого текста алгоритма (программы) может определяться количеством операторов, что применяются для записи алгоритма.

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

Заметим, что при недостатке памяти для носителей информации применяется сегментация программы.

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

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

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

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

2.Базовые структуры алгоритмов

2.1.Методы описания алгоритмов

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

Все соответствующие системы правил являются языками описаний.

К основным средствам описания алгоритмов можно отнести следующие основные методы их представления:

– словесный;

– псевдокоды;

– графический;

– программный.

Часто на практике применяется также и иной способ описания:

– таблицы автоматов;

– табличный;

– циклограммы работы.[17]

Словесный метод описания алгоритмов собой представляет последовательное описание главных этапов обработки информации и задается на естественном языке в произвольном изложении.

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

Алгоритм может задаваться так:

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

– определить максимальное число;

– заменить максимальное число разностью между большим и меньшим числом;

– реализовать алгоритм сначала.

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

Рассмотренный способ записи удобно применять на начальном этапе создания алгоритма.[13]

К недостаткам применения словесного способа записи относят следующее:

– подробное полное описание алгоритма обработки данных получается очень большим;

– естественный язык спользует неоднозначность толкования инструкций;

– при переходе непосредственно к этапу написания программ требуется дополнительная работа для формализации алгоритма, поскольку словесное описание понятно человеку, а также "непонятно" ПК.

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

Графический способ описания базируется на основании реализации блок-схем.

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

Графический метод представления алгоритмов читают более компактным по сравнению с словесным.[11]

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

Указанное графическое представление является схемой алгоритма или же блок-схемой.

На рисунке 3 приведены самые употребляемые геометрические фигуры.

Рис.3. Составные части блок-схемы

Стоит отметить, что в блок-схеме каждому классу действий (вводу начальных данных, вычислению значений, проверке основных условий, управлению повторением операторов, окончанию обработки и других) соответствует геометрическая фигура, которая представлена в виде блочных символов.[7]

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

Терминатор – этот элемент отображает вход с внешней среды или же выход из нее (его частое применение − конец и начало программы). Внутри фигуры часто записывают соответствующее действие.

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

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

Вход в элемент часто обозначается линией, что входит обычно в верхнюю часть элемента. Если выходов 2 или 3, то обычно каждый из них обозначается линией, что выходит из оставшихся вершин. В программировании этот блок соответствует оператору if и case.

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

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

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

Однако вовсе не любой граф, составленный с вершин указанных типов, является корректно созданным алгоритмом. К примеру, из операторной вершины выходить более 1 дуги не может.[1]

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

2.2.Основные структуры алгоритмов

К основным структурам алгоритмов относятся такие:

– линейные

– разветвляющиеся

– циклические

Под линейным алгоритмом понимается алгоритм, в котором действия осуществляются друг за другом последовательно. Стандартная схема линейного алгоритма показана на рисунке 4:

Рис.4. Линейный алгоритм

Разветвляющимся является такой алгоритм, где действие выполняется только по одной с возможных ветвей решения заданий, в зависимости от конкретного выполнения условий. [14]

Стоит отметить, что в отличие от рассмотренных линейных алгоритмов, где команды выполняются одна за другой последовательно, в разветвляющиеся входит условие, и в зависимости от его выполнения или невыполнения будет реализована та или иная группа команд (рисунок 5).

Рис.5. Разветвленный алгоритм

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

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

Заметим, что в цикл входят структуры:

– блок условия

– тело цикла.

На рисунке 6 показаны 3 типа циклов:

Рис.6. Типы циклических алгоритмов

Самая существенная разница между видами циклов заключается в том факте, что тело цикла с послеусловием обязательно выполняется один раз – до самой первой проверки условия, цикл с предусловием может даже не выполнятся вообще, если при первой проверке условия получим результат «нет». [13]

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

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

3.Практическая реализация базовых структур алгоритмов

3.1.Операторы языка С++ для реализации базовых структур алгоритмов

Для выполнения линейных алгоритмов на языке С++ используется операция присваивания.[13]

Общий вид оператора присваивания следующий:[14]

имя_переменной = выражение;

где выражение может быть как простой одиночной константой, так и сложной комбинацией переменных, операторов и констант. 

Для реализации разветвляющих алгоритмов используются два оператора: логический оператор if и оператор выбора case.

Стандартная форма оператора if следующая:

if (выражение) оператор;

else оператор;

где оператор может быть или простым, или составным. [2]

Оператор else не обязателен. Стандартная форма оператора if с составными операторами следующая:

if (выражение) {

последовательность операторов

}

else {

последовательность операторов

}

Если выражение истинно (любое значение, кроме 0), выполняется блок операторов, следующий за if; иначе выполняется блок операторов, следующих за else. Всегда выполняется код ассоциированный или с if или с else, но никогда не выполняются оба кода одновременно.

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

switch (выражение) {

case константа1:

последовательность операторов

break;

case константа2:

последовательность операторов

break;

case константа3:

последовательность операторов break;

...

default:

последовательность операторов

}

Оператор default выполняется, если не найдено соответствий, default необязателен и, если его нет, то в случае отсутствия совпадений ничего не происходит. Когда обнаруживается совпадение, операторы, ассоциированные с соответствующим case, выполняются до тех пор, пока не встретится оператор break. В случае default (или последнего case, если отсутствует default), оператор switch заканчивает работу при обнаружении конца.[5]

Следует знать о трех важных моментах оператора switch:[11]

1.switch отличается от if тем, что он может выполнять только операции проверки строгого равенства, в то время как if может вычислять логические выражения и отношения.

2. не может быть двух констант в одном операторе switch, имеющих одинаковые значения. Конечно, оператор switch, включающий в себя другой оператор switch, может содержать аналогичные константы.[15]

3. если в операторе switch используются символьные константы, они автоматически преобразуются к целочисленным значениям.

Рассмотрим реализацию алгоритмов цикла на языке С++, где существуют три разновидности цикла:[19]

– цикл for;

– оператор цикла while;

– оператор цикла do ... while.

Все эти операторы цикла содержат непременно следующие составные части:

– условие продолжения цикла;

– присваивания исходных значений;

– тело цикла;

– изменение счетчика цикла.

Оператор for используется, когда есть известное заранее количество повторений.

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

Синтаксис оператора:

for (инициализация счетчика; условие выполнения; модификация)

{

тело цикла;

}

Простой пример вычисления суммы иллюстрирует использования данного оператора for:[5]

int summa = 0;

for (i = 1; i <= 15; i ++)

s = s + i;

Операторы с предусловием и постусловием используются для организации циклов и являются альтернативными к оператору for. Обычно цикл с предусловием используется, если количество повторений заранее неизвестно, а для многократного повторения тела цикла известно условие, при истинности которого цикл продолжает выполнение. Это условие следует проверять каждый раз перед очередной итерацией. Например, при считывании данных из файла условием цикла является наличие данных непосредственно в файле, то есть повторять чтение данных следует до тех пор, пока указатель не будет указывать на конец файла.[15]

Синтаксис цикла с предусловием:

while (условие выполнения)

{

тело цикла

};

Последовательность операторов выполняется пока условие истинно, а выход из цикла выполняется, когда условие будет ложным. Если условие ошибочное при вхождении в цикл – операторы ни разу не выполнятся, а управление передастся к следующему оператору.[1]

Цикл с постусловием выполняется, если есть надобность проверять истинность условий каждый раз после итерации. Как отмечали выше, отличие циклов с предусловием и с постусловием заключается в самой первой итерации.[6]

Синтаксис цикла do … while:

do

{

тело цикла

}

while (условие выполнения);

Последовательность операторов (тело цикла) выполняется один или несколько раз, пока условие станет ложным. Оператор цикла do ... while используется в тех случаях, когда есть необходимость выполнить тело цикла хотя бы один раз, поскольку проверка условия осуществляется после выполнения операторов.[7]

Если тело цикла состоит из одного оператора, то операторные скобки {} не является обязательны.[4]

Операторы цикла while и do ... while преждевременного могут завершиться при выполнении операторов break или же return внутри тела циклов.

3.2.Примеры использования основных структур алгоритмов на языке программирования С++

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

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

Каждая структура применяет свои особенности и принципы построения.

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

Такие алгоритмы состоят с 3-х основных частей:

– ввод информации;

– вычисление;

– вывод данных.

Порядок выполнения составных блоков, определяют несколько линий потока.

Для реализации линейного алгоритма приведем пример.

Необходимо на языке С++ реализовать алгоритм в графическом виде и на языке программирования, который по введенным параметрам:[18]

– ширина окна;

– высока окна;

– количество окон;

– цена окна,

вычисляет общую стоимость партии окон.

Рассмотрим на рисунке 7 блок-схему данного алгоритма.

Рис.7. Блок-схема линейного алгоритма

Аналогично продемонстрируем алгоритм на языке программирования С++.[9]

//модуль main

int main()

{

// объявляем переменные

float w,h,q,p,s,a;

//ввод ширины окна

cout << "Input width: ";

cin >> w;

//ввод высоты

cout << "Input heigth: ";

cin >> h;

//ввод количества окон

cout << "Input quantity: ";

cin >> q;

//ввод цены

cout << "Input price: ";

cin >> p;

//находим площадь окна

a=w*h;

//находим общую площадь

s=a*q;

//вычисляем общую стоимость

s=s*p;

//вывод результата

cout <<"Total: "<<s;

return 0;

В результате получим (рисунок 8):[6]

Рис.8. Результат выполнения линейного алгоритма

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

Разветвляющиеся алгоритмы характеризуются тем, что они в зависимости от выполнения условия могут выполнять разные ветви программы.

Стоит отметить, что на ЯП С++ используются 2 основные оператора, которые поддерживают реализацию разветвленных алгоритмов:[3]

– оператор if;

– оператор switch.

Рассмотрим синтаксис оператора if (рисунок 9):

Рис.9. Синтаксис оператора if

Оператор switch использует аналогичную структуру:

switch(x)

case 1: инструкции1;

case 2: инструкции2;

case n: инструкцииn;

default: инструкции.

Рассмотрим пример использования логического оператора для реализации разветвленного алгоритма.[16]

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

Опишем блок-схему алгоритма (рисунок 10):

Рис.10. Блок-схема разветвленного алгоритма

Код программы имеет вид:

int main()

{

// объявление переменных которые отвечают сторонам треугольника[12]

float a,b,c;

//объявление переменных для вычисления площади, полупериметра

float ar, p;

//ввод стороны а

cout<<"a = ";

cin>>a;

//ввод стороны b

cout<<"b = ";

cin>>b;

//ввод стороны c

cout<<"c = ";

cin>>c;

//проверка возможности построения треугольника

if ((a+b>c)||(a+c>b)||(b+c>a))

//вычисление площади

{

//вычисление полупериметра

p=(a+b+c)/2;

//вычисление площади

ar=sqrt(p*(p-a)*(p-b)*(p-c));

cout<<"Area: "<<ar;

}

else

//в противоположном случае

cout<<"It is impossible to build a triangle";

getch();

return 0;

Результат выполнения программы показан на рисунке 11:

Рис.11. Результат выполнения программы

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

Одним из самых основных методов для проверки корректности алгоритма считается его трассировка.

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

Стоит отметить, что в ходе выполнения этой проверки должны присутствовать 2 факта:

– при выборе исходных тестирующих данных с одной и той же самой области реализации ход алгоритма будет аналогичным;

– при выборе исходных данных для различных областей определения ход алгоритма будет разным.

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

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

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

По способу организации рассматриваемые алгоритмы делятся на такие 2 вида:

– классические циклы;

– традиционные циклы.

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

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

Для этого должны являться известными:

  • начальное значение аргумента tнач;
  • конечное значение аргумента tкон;
  • шаг параметра Δt.

Стоит отметить, что зная эти величины, легко вычисляется количество повторений циклов (формула (1)):

(1)

В этой формуле квадратные скобки будут значить, что после деления указанного числа будет браться только его целая часть (дробная – отбрасывается), поскольку численность повторений цикла – это целая величина.[20]

Отметим, что цикл использует такие 4 части:

– подготовка цикла – определенному параметру цикла будет присвоено исходное значение;

– тело цикла – главные действия, что реализуются каждый раз при выполнении витка цикла;

– изменение параметров циклов на шаг;

– условие для выхода с цикла.

Рассмотрим пример для реализации циклического алгоритма.

Необходимо для целочисленного массива найти сумму максимального и минимального значения.[15]

Рассмотрим пример блок-схемы алгоритма (рисунок 12):

Рис.12. Блок-схема циклического алгоритма

Код программы имеет следующий вид:

int main()

{

//объявление переменных

int ar[10],p,min,max,x;

//ввод размерности массива ar

cout<<"Input dimention of array:";

cin>>x;

//ввод массива ar

cout<<"Input the elements of array: ";

for (p=0;p<x;p++)

cin>>ar[p];

//присваиваем начальные значения для переменных

min=ar[0];

max=ar[0];

//нахождение минимума и максимума

for(p=0;p < x; p++)

{

if(min>ar[p])

min=ar[p];

if(max<ar[p])

max=ar[p];

}

//вывод данных

cout<<"Max + min = "<<max + min;

//задержка экрана

getch();

//возврат 0

return 0;

На рисунке 13 показана результат выполнения программы:[10]

Рис.13. Результат выполнения программы

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

ЗАКЛЮЧЕНИЕ

Благодаря бурному развитию информатики и её проникновению в самые различные отрасли хозяйствования слово "алгоритм" уже стало часто встречающимся, а также наиболее употребляемым в обычном плане понятием для широкого круга специалистов. С переходом к современному информационному обществу алгоритмы являются одним из самых важнейших факторов развития цивилизации.

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

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

Одной с самых кардинальных проблем является проблематика взаимодействия общества и информатики.

Именно информатика поставила задачу создания технологии искусственного интеллекта.

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

В работе были выполнены следующие задачи:

– рассмотрены основные понятия об алгоритмах, их свойства;

– описаны методы подачи алгоритмов;

– охарактеризованы базовые структуры алгоритмов и провести их сравнительный анализ;

– проведено рассмотрение операторов для реализации основных структур алгоритмов на языке С++;

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Айвор Хортон. Visual C++ 2010. Полный курс. Издательский дом «Вильямс». – 2014. – 300 с.
  2. Баженова И. Самоучитель программиста. - М.: КУДИЦ-ОБРАЗ, 2015.
  3. Борис Пахомов. С/С++ и MS Visual C++ 2010 для начинающих. БХВ-Петербург. – 2014. – 436 с.
  4. Брайан Керниган Язык программирования Pascal. Издательство «Невский диалект». – 2014. – 320 с.
  5. Бьерн Страуструп. Программирование. Принципы и практика использования С++. Издательский дом «Вильямс». – 2015. – 258 с.
  6. Голицына О.Л., Попов И.И. Основы алгоритмизации и программирования: Учебное пособие. - М.: Форум: Инфра-М, 2014.
  7. Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: ДМК, 2014.
  8. Джеймс Фокселл. Освой самостоятельно Visual Basic.NET за 24 часа. - М.: Вильямс, 2016.
  9. Джесс Либерти. Освой самостоятельно С++ за 21 день. Издательский дом «Вильямс». – 2015. – 230 с.
  10. Дэвид Гриффитс, Дон Гриффитс. Изучаем программирование на С. Издательство «Эксмо». – 2013. – 400 с.
  11. Дэн Кларк. Объектно-ориентированное программирование в Visual Basic.NET. - СПб.: Питер, 2013.
  12. Зак Д. Самоучитель Visual Basic.Net. - Киев: ВНV; СПб.: Питер, 2013.
  13. Кетков Ю., Кетков А. Практика программирования: Visual Basic, С++Builder. - СПб.: BHV, 2014.
  14. Немнюгин С.А. Тurbo Pascal. - CПб.: Питер, 2014.-355 c/
  15. Пономарев В. Visual Basic.NET: - Экспресс-курс. - СПб.: BHV - Санкт - Петербург, 2013.
  16. Прата С. Язык программирования С++. Издание 6. Издательский дом «Вильямс» – 2016. – 304 с.
  17. Р. Лафоре. Объектно-ориентированное программирование в Pascal. Издательство «Питер». Издание 4. – 2014. – 628 с.
  18. Семакин И.Г., Шестаков А.П. Основы программирования: Учебник. - М.: Мастерство, 2014.-450 c.
  19. Фаронов В. Delphi6: Учебный курс. - СПб: Питер, 2014.-360 c.
  20. Хусаинов Б.С. Структуры и алгоритмы обработки данных. Примеры на языке Pascal. Учеб. пособие. – Финансы и статистика, 2014. – 464с.