Файл: Алгоритмизация как обязательный этап разработки программы ( Алгоритмизация ).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

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

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Вид символов и правила составления таких блок-схем установлены ГОСТ 19.701-90[[12]]. Рассмотрим некоторые часто применяемые символы, которые используются для построения блок-схем алгоритмов программ:

Терминатор — блок обозначающий начало/конец программы, а также вход/выход для подпрограммы

Процесс — блок обозначающий выполнение действия или группы действий

Предопределенный процесс — блок обозначающий вычисления по подпрограмме (обращение к вспомогательным алгоритмам)

Данные — блок обозначающий ввод/вывод данных, носитель которых не определен

Решение — блок обозначающий проверку условия

Границы цикла — блок обозначающий начало и конец циклического процесса

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

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

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

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

Согласно ГОСТ 19781–90 программа – это данные, предназначенные для управления конкретными компонентами обработки информации в целях реализации определенного алгоритма[[13]].

4. ОСНОВНЫЕ СТРУКТУРНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ

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


Линейная алгоритмическая конструкция представлена в виде последовательности действий (шагов), в которой каждое действие алгоритма выполняется последовательно одно за другим, причем после каждого n-го действия выполняется (n+1)-е действие, если n-е действие — не конец алгоритма. Исходные данные могут быть любыми[[14]].

Ветвящейся алгоритмическая конструкция представляет собой процесс, который прерывается для выбора следующего действия в зависимости от результата проверки какого-либо условия. Условие, в данном случае, это логическое выражение, которое может принимать одно из двух значений – «Да» (истина, англ. true) или «Нет» (ложь, англ. false). Если условие истинно, действие выполняется, иначе действие не выполняется. Ветвление, также позволяет выполнять либо одну, либо другую группу операторов. В дальнейшем, для конкретных данных, такая конструкция сводится к последовательной алгоритмической конструкции. Ветвление может быть полным (если – то – иначе) или неполным (если – то). Полное ветвление в алгоритме позволяет организовать две ветви (то или иначе), каждая из которых ведет к общей точке их слияния, так что выполнение алгоритма продолжается независимо от того, какой путь был выбран (рис. 1). В неполном ветвлении (рис. 2), при невыполнении условия никакие действия не выполняются, управление сразу переходит к точке слияния[[15]].

Рис. 1. Полное ветвление

Рис. 2. Неполное ветвление

Циклическая алгоритмическая конструкция представляет собой алгоритм, в котором предусмотрено многократное повторение группы действий (шагов), при различных входных данных. Повторяющихся участки действий называют телом цикла, а одно повторение такого циклического процесса – шагом цикла или итерацией. Любая циклическая конструкция включает в себя элементы ветвящейся алгоритмической конструкции[[16]].

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


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

Цикл с предусловием. В цикле с предусловием проверка значения условного выражения (условие) стоит перед телом цикла. Тело цикла выполняется, если значение условия принимает значение ИСТИНА. После чего управление вновь переходит к проверке условия. Эти действия повторяются до того времени, пока условное выражение не примет значение ЛОЖЬ. При первом же несоблюдении условия цикл завершается. Если же на входе в цикл условие принимает значение ЛОЖЬ, происходит выход из цикла, тело цикла, в таком случае, не выполнится ни разу.

а) условный блок

б) блок границы цикла

Рис. 2. Блок-схема цикла с предусловием

Цикл с постусловием. В отличие от цикла с предусловием, тело цикла с постусловием всегда выполнится хотя бы один раз, поскольку проверка выхода из цикла стоит после тела цикла. В такой конструкции тело цикла будет выполняться до тех пор, пока не станет возможным условие выхода из цикла. Как только оно принимает значение ИСТИНА, выполнение цикла прекращается, но возможно построение цикла и с обратным условием, т.е. выполнение цикла завершается, когда условие принимает значение ЛОЖЬ[[17]]. Блок-схема данной структуры представлена на рис. 3.

а) условный блок

б) блок границы цикла

Рис. 3. Блок-схема цикла с постусловием

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

Арифметический цикл. Разновидность цикла с предусловием, в котором заранее определено число итераций. В таком цикле, число его повторений однозначно задано правилом изменения параметра, которое задается с помощью начального (N) и конечного (К) значений параметра и шагом (h) его изменения. Другими словами, на первом шаге цикла значение параметра равно N, на втором – N+h, на третьем – N+2h. На последнем шаге цикла значение параметра не превышает конечное значение К, но такое, что дальнейшее его изменение приведет к значению большему, чем К. На рис.1. представлена блок-схема, которая выведет 10 раз слово «Пример», в которой используется блок начала арифметического цикла, с указанием, что переменная i в нем будет изменяться от 1 до 10 с шагом 1[[18]].


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

5. понятие программирования и компьютерной программы

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

Как известно, структура ЭВМ по фон Нейману состоит из 5 основных устройств: устройства управления (УУ), арифметико-логического устройства (АЛУ), запоминающего устройства (ЗУ), а также устройства ввода и вывода[[19]]. Память имеет вид нумерованной последовательности ячеек, которые функционально схожи с электромеханическим переключателем, и информация в них хранится в виде двух значений - нулей и единиц. Автоматическая работа ЭВМ, управляемая программой, состоит из последовательности тактов. На каждом такте происходит считывание команд из запоминающего устройства и их выполнение. Адрес следующей ячейки памяти, из которой будет извлечена следующая команда программы, указывается специальным устройством – счетчиком команд в устройстве управления. Его наличие также является одним из характерных признаков архитектуры фон Неймана. Действия, совершаемые ЭВМ весьма примитивны – это арифметические и логические операции, операции сравнения, переписывания части информации и прочее. Другими словами составить программу для ЭВМ – это значит представить способ решения задачи в виде совокупности машинных команд (программы), чтобы они, будучи размещенными в памяти, последовательно выполняясь и вызывая одна другую, реализовали нужные вычисления.

С идеей программирования каждый сталкивается еще в школе, при составлении «плана решения» арифметической задачи в виде серии вопросов. Но заметное отличие программирования для ЭВМ от школьного опыта заключается в том, что программа для ЭВМ, чаще всего, производит не одно, а несколько последовательностей действий (разветвлений). Выбор между этими действиями зависит от промежуточных условий и значения результатов решения задачи; некоторые группы команд могут выполняться многократно (циклы), автоматически определяя нужное число повторений; может определённым образом менять, или частично формировать свою структуру в процессе выполнения.

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


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

Компьютерная программа – комбинация последовательность инструкций и данных, предназначенная для исполнения устройством управления (УУ) вычислительной машины[[20]]. Обычно образ программы хранится в виде скомпилированного исполняемого модуля (отдельного файла или группы файлов). Из этого образа, исполняемая программа в оперативной памяти может быть построена программным загрузчиком. Такое же поведение применимо и к исходным текстам программы на интерпретируемом языке программирования.

Сам процесс создания компьютерных программ носит название «программирование»[[21]], а специалистов занимающихся этим видом деятельности – программистами. Поскольку человеку свойственно ошибаться, во время написания программ, в них часто допускаются ошибки. Считается, что программа содержит ошибку, если для некоторых входящих данных она даёт сбой или некорректный результат. Ошибка может быть допущена программистом как случайно (опечатка; использование некорректного синтаксиса), так и появиться вследствие некорректного взаимодействия между различными участками программы. Процесс поиска и исправления ошибок в программах именуется отладкой. Продолжительность отладки программ заранее неизвестна, поскольку неизвестно, сколько ошибок допущено в коде. Программа не содержит ошибок, если она даёт корректные результаты для всех допустимых входящих данных.

Исходные тексты компьютерных программ в большинстве языков программирования состоят из списка инструкций, наиболее точно описывающих изначальный алгоритм. Такая парадигма программирования называется императивным программированием, и описывает «как» добиться желаемого результата. Однако применяются и другие методологии и подходы. К примеру, в декларативном программировании выбор подходящего алгоритма решения задачи предоставлен программе-интерпретатору, и описывает «какой результат» нужно получить[[22]].

Большинство пользователей компьютеров используют программы, предназначенные для выполнения конкретных задач, таких как: редактирование документов и презентаций, математические вычисления, обработка звука и видео и т.п. Такие программные средства называют прикладными программами или прикладным ПО. Управление компонентами вычислительной системы и формирование окружения для нормального функционирования прикладных программ берёт на себя системное программное обеспечение (СПО)[[23]], наиболее важной составляющей, которого является операционная система. В системном программировании назначение программы несколько иное. В отличие от прикладных программ, которые используются для решения конкретных практических задач, системные программы обеспечивают взаимодействие компонентов компьютерных систем, т.е. управляют процессором, оперативной памятью, устройствами ввода и вывода и т.п.