Способы описания алгоритмов.
Тема 2. Этапы построения алгоритма. В основе решения любой задачи лежит понятие алгоритма. Под алгоритмом принято понимать «точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату». Таким образом, алгоритм должен содержать конечную последовательность шагов или операций, однозначно определяющих процесс переработки исходных и промежуточных данных в искомый результат. Алгоритмы и их свойства. При составлении алгоритмов следует учитывать ряд требований, выполнение которых приводит к формированию необходимых свойств. Алгоритм должен быть однозначным, исключающим произвольность толкования любого из предписаний, и заданного порядка исполнения. Это свойство алгоритма называется определенностью. Реализация вычислительного процесса, предусмотренного алгоритмом, должна через определенное число шагов привести к выдаче результатов или сообщения о невозможности решения задачи. Это свойство алгоритма называется результативностью. Решение однотипных задач с различными исходными данными можно осуществлять по одному и тому же алгоритму, что дает возможность создавать типовые программы для решения задач при различных вариантах задания значений исходных данных. Это свойство алгоритма называется массовостью. Предопределенный алгоритмом вычислительный процесс можно разделить на отдельные этапы, элементарные операции. Это свойство алгоритма называется дискретностью. Если алгоритм рассматривать как совокупность предписаний по выполнению действий, то всегда необходимо выделить те объекты, над которыми должны осуществляться предписанные действия. Таковыми объектами являются данные.
Способы описания алгоритмов. Для строгого задания различных структур данных и алгоритмов их обработки требуется иметь такую систему формальных обозначений и правил, чтобы смысл всякого используемого предписания трактовался точно и однозначно. Соответствующие системы правил называют языками описаний. К изобразительным средствам описания алгоритмов относятся следующие основные способы их представления: словесный (записи на естественном языке), структурно-стилизованный (записи на алгоритмическом языке псевдокода), графический (изображения схем из графических символов), программный (тексты на языках программирования). Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных и задается в произвольном изложении на естественном языке. Пример 1. Записать алгоритм нахождения наибольшего общего делителя двух натуральных чисел (n и m) на естественном языке. При таком словесном способе содержание алгоритма может быть следующим: 1) если числа равны, то необходимо взять любое из них в качестве ответа, в противном случае — продолжить выполнение алгоритма; 2) определить большее из чисел; 3) заменить большее число разностью большего и меньшего чисел; 4) повторить алгоритм сначала. Описанный алгоритм применим к любым натуральным числам и должен приводить к решению поставленной задачи. Способ основан на использовании общепринятых средств общения между людьми и с точки зрения написания трудностей для авторов алгоритмов не представляет. Однако для «исполнителей» такие описания алгоритмов часто неприемлемы. Они строго не формализуемы, страдают многословностью записей, допускают неоднозначность толкования отдельных предписаний. Поэтому такой способ описания алгоритмов не имеет широкого распространения.
Структурно-стилизованный способ записи алгоритмов основан на формализованном представлении предписаний, задаваемых путем использования ограниченного набора типовых синтаксических конструкций, представленных в понятном для разработчика алгоритма виде. Такие средства описания алгоритмов часто называются псевдокодами. Язык графических символов. Для изображения структур алгоритмов используется совокупность блочных символов (блоков), соединяемых линиями передач управления. Такое изображение называется методом блок-схем. Как и псевдокод, метод блок-схем можно применить на любом уровне абстракции. Поскольку алгоритмы воспринимаются в первую очередь визуально, их следует изображать таким образом, чтобы их структура выглядела четко и выразительно. Краткость, выразительность и планомерность при проектировании позволяют создавать схемы алгоритмов высокого качества. В схеме алгоритма каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т. п.) соответствует геометрическая фигура, представленная в виде блочного символа (блока), называемого символом действия. Символы действия соединяются линиями переходов, определяющими очередность выполнения действий. Форма символов установлена ГОСТ 19.003—80, а правила составления схем алгоритмов — ГОСТ 19.002—80. Блоки ввода-вывода используются для обозначения операций ввода и вывода информации. Отдельным логическим устройствам ЭВМ или отдельным функциям обмена соответствуют определенные блочные символы. В каждом из них указываются тип устройства или Блок обработки (процесс) применяется для обозначения одного или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединить в один блок. Представление отдельных операций достаточно свободно. Например, для обозначения вычислений можно использовать математические выражения, для пересылок данных — стрелки, для других действий — пояснения на естественном языке. В зависимости от уровня детализации схемы пояснения на естественном языке могут быть более или менее подробными. Метод блок-схем, так же как и алгоритмический язык (псевдокод), независим от специфики языков программирования, поэтому в описаниях операторов не следует использовать резервированные слова и символы языков программирования, а также применять имена данных, образованные в соответствии с синтаксическими правилами этих языков.
Линии переходов используются для обозначения порядка выполнения действий. Для улучшения наглядности следует придерживаться стандартных правил изображения линий передач управления — сверху вниз и слева направо. Если необходимо показать передачу управления снизу вверх или справа налево, то направление следует отметить стрелкой. Символ ограничения (прерывания) предназначен для обозначения входов в схему алгоритма и выходов из нее. Каждая схема должна начинаться или заканчиваться символом ограничения. В этих символах разрешается давать пояснения к использованию. Если символ указывает на прерывание, то он должен идентифицировать соответствующую исключительную ситуацию и блок схемы, осуществляющий управление в этой ситуации. Блок решения используется для обозначения переходов управления по условию. В каждом блоке решения должны быть указаны вопрос, решение, условие или сравнение, которые он определяет. Стрелки, выходящие из блока решения, должны быть помечены соответствующими ответами (например, ДА, НЕТ), так чтобы были учтены все возможные ответы. Следует отметить, что ответы, которые не могут появиться при анализе правильной информации, иногда появляются при рассмотрении некорректных данных. Такие ситуации всегда следует учитывать. Блок вызова модуля используется для указания обращений к вспомогательным алгоритмам, выделенным автономно, в виде некоторого модуля; для обращений к библиотечным подпрограммам; для обозначения части алгоритма, не зависящей от основной схемы управления; для обозначения определенной части алгоритма, которая будет кодироваться вместе со всем алгоритмом, но в документации представлена отдельной схемой. Если такая часть алгоритма представляет собой итерационный процесс, то в соответствующий ей блок вызова необходимо включить описания условий окончания цикла. По мнению некоторых специалистов, использование более одной схемы для одного алгоритма затрудняет его понимание. Однако практика показывает, что удобнее всего применять схемы алгоритмов, разбитые в соответствии с уровнями абстракции.
Блок модификаций используется для организации циклических конструкций. Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное условие и правило изменения значения параметра для каждого повторения. Блок размещается в начале циклической конструкции, для управления которой он используется, даже в том случае, если изменение параметра и проверка условий окончания цикла при реализации алгоритма производится не в начале, а в конце цикла. Соединители используются в том случае, когда схема алгоритма разделяется на автономные части, особенно если она не умещается на одном листе, или когда необходимо избежать излишних пересечений линий переходов. Применение соединителей не должно нарушать структурности при изображении схем. Комментарий позволяет включать в схемы алгоритмов пояснения к функциональным блокам. Частое использование комментариев нежелательно, так как это усложняет (загромождает) схему, делает ее менее наглядной. Однако некоторые обозначения переменных, принятые допущения или назначение отдельных алгоритмов требуют пояснительных записей.
Языки программирования. Рассмотренные выше способы описания алгоритмов (словесный, структурно-стилизованный, графический) «грешат» существенным недостатком: записи предписаний не могут непосредственно восприниматься машиной и в дальнейшем выполняться. Поэтому они могут использоваться только для предварительной работы с алгоритмом в расчете на то, что существуют средства описания алгоритмов, используя которые символы алгоритма можно ввести в память ЭВМ и затем выполнить заданные предписания для получения искомых результатов. Средствами такого описания алгоритма являются языки программирования, позволяющие на основе строго определенных правил формировать последовательность предписаний, однозначно отражающих смысл и содержание частей алгоритма с целью их последующего исполнения на ЭВМ. Алгоритм, записанный по правилам языка программирования, является исходной программой на этом языке. Языки программирования, не зависящие от особенностей конкретной машины и ориентированные на широкий круг пользователей, считаются языками высокого уровня.
Алгоритмический язык - это набор символов (алфавит языка), система правил образования из этих символов конструкций, с помощью которых представляются определенные компоненты алгоритма (синтаксис языка), и система правил истолкования этих конструкций, позволяющих однозначно воспроизводить процесс переработки данных (семантика языка). При построении алгоритмов используются определенные понятия алгоритмического языка. Каждое понятие составляет некоторая синтаксическая единица (конструкция) и выражаемые ею свойства процесса переработки данных. Другими словами, понятие определяется во взаимодействии синтаксических и семантических правил. Синтаксические правила показывают, как образуется данное понятие из других понятий или символов алфавита языка. Семантические правила определяют свойства, приписываемые данному понятию, в зависимости от свойств понятий, используемых в указанных синтаксических правилах. Перечисленные три составные части языка (алфавит, синтаксис и семантика) позволяют точно ответить на вопрос, что является алгоритмом на этом языке и каким именно, так как они определяют и то, какие символы могут использоваться для описания процессов переработки данных, и то, какие их последовательности являются допустимыми, и то, какие акты переработки информации представляют эти последовательности.
Воспользуйтесь поиском по сайту: ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|