
- •1 Введение в теорию алгоритмизации 6
- •Введение
- •1 Введение в теорию алгоритмизации
- •1.1 Понятие алгоритма
- •1.2 Свойства алгоритмов
- •1.3 Формы представления алгоритма
- •1.4 Основные алгоритмические структуры
- •1.5 Алгоритмический язык
- •2.3 Инструменты программирования Microsoft Visual Studio
- •2.5 Консольные и оконные приложения
- •2.6 Компилирование программы
- •3.2 Простые типы данных
- •3.3 Операции над числовыми данными
- •3.4 Объявление переменных
- •3.7 Директива #define
- •3.9 Библиотека математических функций
- •4 Условный оператор
- •4.1 Условный оператор if
- •4.2 Составной оператор
- •4.3 Вложенный оператор
- •4.4 Оператор выбора switch
- •5 Операторы циклов
- •5.1 Определение цикла
- •5.2 Оператор цикла for
- •5.3 Оператор цикла while
- •5.4 Оператор цикла do while
- •5.5 Табулирование функций
- •5.6 Вычисление конечных сумм и произведений
- •5.7 Управляющие конструкции break, continue, return, goto
- •6 Массивы
- •6.1 Понятие и описание массивов
- •6.2 Одномерные массивы
- •6.3 Двумерные массивы (матрицы)
- •7 Символьные массивы
- •7.1 Описание символьного массива
- •7.2 Стандартные библиотечные функции над строками
- •8 Указатели и операции над указателями
- •8.1 Описание указателей
- •8.2 Операции над указателями
- •8.3 Сравнение указателей
- •8.4 Связь между массивом и указателем
- •9 Функции
- •9.1 Модульное программирование
- •9.2 Объявление функции
- •9.3 Формальные и фактические параметры функции
- •9.4 Локальные и глобальные переменные
- •10 Элементы объектно-ориентированного программирования
- •10.1 Инструментальное программное обеспечение
- •10.2 Технологии программирования
- •10.3 Создание класса
- •11 Полиморфизм
- •12 Этапы разработки программного обеспечения
- •12.1 Идея и цель объектно-ориентированного программирования
- •12.2 Основные понятия объектно-ориентированного программирования
- •12.3 Методы тестирования программных продуктов
- •Список литературы
1.4 Основные алгоритмические структуры
Для практики программирования исключительно важной является классификация алгоритмов по способу организации управления порядком выполнения действий. По этому признаку их можно разбить на три группы:
линейные;
разветвляющиеся;
циклические.
1.4.1 Линейные алгоритмы. В алгоритме линейной структуры операции выполняются последовательно и не зависят от конкретных значений входных данных. Такой порядок принято называть естественным.
1.4.2 Разветвляющиеся алгоритмы. Однако, на практике редко удается представить схемы алгоритмов решения задачи в виде линейной структуры. Часто возникает необходимость описывать анализ исходных данных или промежуточных результатов, для того чтобы на его основе указать, дальнейшее направление вычислений.
Алгоритм с разветвляющейся структурой – это алгоритм, содержащий условие. Направления выполнения действий называются ветвями. Каждое разветвление появляется вследствие проверки некоторого логического условия, при выполнении которого выбирается одна ветвь, а при невыполнении – другая. В общем случае их количество не обязательно равно двум, в каждом конкретном случае процесс реализуется только по одной ветви, а выполнение остальных исключается.
1.4.3 Циклические алгоритмы. Характерной особенностью большинства используемых на практике алгоритмов является их цикличность, т.е. неоднократное выполнение отдельных частей вычислительного процесса.
Циклический алгоритм – алгоритм, предусматривающий многократное выполнение однотипных действий. Участок, многократно повторяемый так, что после выполнения последнего действия требуется переход к выполнению первого действия (как правило, с другими числовыми данными), называется циклом. Именно это обстоятельство позволяет задавать сложные вычисления сравнительно компактными алгоритмами.
Вычислительные процессы, содержащие циклы, называются циклическими. Циклы составляют основу алгоритмизации и программирования задач для решения на ЭВМ.
По способу определения числа повторений цикла выделяются алгоритмы с явно заданным и неизвестным числом повторений.
Циклы с известным числом повторений или арифметические циклы – это циклы, которые осуществляются заранее известное число раз. Задаются: начальное и конечное значение параметра цикла, закон изменения параметра цикла при каждом его повторении. Количество требуемых повторений при этом вытекает из первых двух пунктов.
Способы управления числом повторения арифметических циклов.
Прямой счетчик. Для подсчета числа повторений цикла выделяется переменная, которая может принимать лишь целочисленные значения, - счетчик. При каждом повторении циклической части его значение (содержимое) увеличивается на единицу, фиксируя очередное выполнение цикла. Полученное значение сравнивается с заданным числом повторений (эталонным значением), после чего происходит либо возврат к началу цикла, либо выход из него.
Обратный счетчик. В счетчик заносится эталонное значение. После очередного выполнения цикла из его содержимого вычитается единица. Полученное значение сравнивается с нулем, после чего происходит либо возврат к началу цикла, либо выход из него.
Если управление окончанием цикла осуществляется проверкой условия, которая производится после выполнения рабочей части, то такие циклы называются циклами с постусловием (ЦИКЛ_ДО). Если же проверка предшествует рабочей части, то имеем дело с циклами с предусловием (ЦИКЛ_ПОКА).
Выход из цикла по конечному значению изменяемой величины. Не следует, однако, думать, что арифметические циклы должны быть организованы исключительно по счетчику.
Выход из цикла происходит по конечному значению переменной (изменяемой) величины. Однако надо учитывать, что величины действительного типа представляются в машине приближенно и поэтому возможен ошибочный выход из цикла, т.е. если в качестве счетчика используется величина действительного типа, то следует изменить условие окончания цикла. Для прямого счетчика, например, достаточно увеличить величину, ограничивающую значение счетчика, на величину, меньшую или равную половине шага.
Циклы с неизвестным числом повторений или итерационные циклы – это циклы, число повторений которых заранее не известно и не может быть вычислено. В нем для определения последующего значения используется предыдущее значение. В итерационных процессах реализуется метод последовательных приближений.
Итерационный цикл имеет структуру, аналогичную структуре арифметического, только выход из него осуществляется не после того, как цикл повторится заданное число раз, а при выполнении некоторого условия, связанного с проверкой значения монотонно изменяющейся величины. Как правило, на практике она характеризует точность (погрешность), достигаемую на очередном шаге итерационного процесса.
Сложные циклы. Исходя из структуры циклы разбиваются на простые (не содержащие внутри других циклов) и сложные. До сих пор мы использовали лишь простые циклы, перейдем к рассмотрению сложных. Любой цикл, включающий один или несколько других циклов, называется сложным, или вложенным. Охватывающий их цикл принято называть внешним, а входящие во внешний цикл – внутренними. Правила организации как для внешнего, так и для внутреннего цикла те же, что и для простого. Их параметры изменяются не одновременно: при одном значении параметра внешнего цикла перебираются все значения параметра внутреннего цикла.
При вложении циклов построение начинают с внешнего. Дойдя до блока «рабочая часть цикла», строят на его месте внутренний цикл, окончив который, достраивают первый.