Способами описания алгоритма являются описание алгоритма с помощью псевдокода
Формы записи алгоритмов
На практике наиболее распространены следующие формы представления алгоритмов:
- словесная (запись на естественном языке);
- графическая (изображения из графических символов);
- псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.;
- программная (тексты на языках программирования).
1. Словесный способ записи алгоритма
Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке.
Например. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел (алгоритм Эвклида).
Словесный способ не имеет широкого распространения, так как такие описания:
страдают многословностью записей;
2. Наибольшее распространение благодаря своей наглядности получил графический способ записи алгоритмов. При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.
Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. В таблице приведены наиболее часто употребляемые символы.
Блок «процесс» применяется для обозначения действия или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединять в один блок. Представление отдельных операций достаточно свободно.
Блок «решение» используется для обозначения переходов управления по условию. В каждом блоке «решение» должны быть указаны вопрос, условие или сравнение, которые он определяет.
Блок «модификация» используется для организации циклических конструкций. (Слово модификация означает видоизменение, преобразование). Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное условие и шаг изменения значения параметра для каждого повторения.
Блок «предопределенный процесс» используется для указания обращений к вспомогательным алгоритмам, существующим автономно в виде некоторых самостоятельных модулей, и для обращений к библиотечным подпрограммам.
Псевдокод представляет собой систему обозначений и правил, предназначенную для единообразной записи алгоритмов.
Псевдокод занимает промежуточное место между естественным и формальным языками. С одной стороны, он близок к обычному естественному языку, поэтому алгоритмы могут на нем записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, что приближает запись алгоритма к общепринятой математической записи.
В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным языкам, что облегчает запись алгоритма на стадии его проектирования и дает возможность использовать более широкий набор команд, рассчитанный на абстрактного исполнителя.
Однако в псевдокоде обычно имеются некоторые конструкции, присущие формальным языкам, что облегчает переход от записи на псевдокоде к записи алгоритма на формальном языке. В частности, в псевдокоде, так же, как и в формальных языках, есть служебные слова, смысл которых определен раз и навсегда. Они выделяются в печатном тексте жирным шрифтом, а в рукописном тексте подчеркиваются.
Единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций.
Источник
Способы описания алгоритмов
Правила оформления схем алгоритмов
Условные обозначения и правила выполнения схем алгоритмов регламентируются требованиями Единой системы программной документации в соответствии с ГОСТ 19.701-90 [6].
Схема алгоритма состоит из символов, краткого пояснительного текста и соединяющих линий (см. Приложение). Символы предназначены для графического обозначения отдельных операций, суть которых выражается текстом внутри символов. Символы должны быть по возможности одного размера и располагаться в схеме равномерно, в любой ориентации, но предпочтительным является их горизонтальное расположение.
Внутри символа помещается минимальное количество текста, необходимого для понимания функции данного символа. Если такой текст требует значительного увеличения размера символа, то для размещения текста следует использовать символ «комментарий». Пунктирная линия символа «комментарий» связывается с соответствующим символом или может обводить группу символов (рис. 2).
Рис. 2.
Символы в схеме соединяются линиями, которые указывают потоки управления. Направление потока слева направо и сверху вниз считается стандартным. Направление потока, отличное от стандартного, должно быть отмечено стрелкой на конце линии (при вхождении потока в символ или в другую линию потока). Линии должны быть направлены к центру символа. Следует избегать пересечения линий, если потоки в данном месте не входят друг в друга. При необходимости линии в схемах следует разрывать во избежание лишних пересечений или слишком длинных линий, а также, если схема состоит из нескольких страниц. Соединитель в начале разрыва является внешним, а в конце разрыва — внутренним. В комментариях к соединителям могут быть приведены ссылки к страницам (рис.3).
Рис. 3.
Как правило, каждый символ имеет один вход и один выход. Исключение составляют символы:
- «терминатор» (у операции «начало» нет входа, у операции «конец» нет выхода),
- «решение» (один вход и несколько выходов),
- «подготовка» (организация цикла, пример см. на с.33).
Символ «решение» является логическим. Каждый выход из символа «решение» должен сопровождаться значением условия, приведенного внутри (рис.4).
Рис. 4
Представление алгоритма решения задачи в виде схемы является наиболее наглядным, позволяет проследить процесс прохождения данных, связи между отдельными участками программы. Однако, схема должна быть удобочитаемой, т.е. не должна быть чересчур мелкой, подробной, «перегруженной», чтобы не потерять своей наглядности.
В случае описания решения очень большой, сложной задачи рекомендуется выполнять схему с несколькими уровнями детализации, число которых зависит от размеров и сложности задачи. Уровень детализации должен быть таким, чтобы различные части и взаимосвязь между ними были понятны в целом. При этом весь алгоритм разбивается на смысловые фрагменты, связь между которыми следует указать на более крупной схеме. Сами же фрагменты удобнее выполнять на отдельных страницах, желательно каждый фрагмент размещать на одной странице, не перегружая чрезмерно ссылками и комментариями.
Способы описания алгоритмов
Существуют следующие способы описания (представления) алгоритмов:
1. словесное описание;
2. описание алгоритма с помощью математических формул;
3. графическое описание алгоритма в виде блок-схемы;
4. описание алгоритма с помощью псевдокода;
5. комбинированный способ изображения алгоритма с использованием словесного, графического и др. способов.
Словесное описание алгоритма представляет собой описание структуры алгоритма на естественном языке. Например, к приборам бытовой техники, как правило, прилагается инструкция по эксплуатации, т.е. словесное описание алгоритма, в соответствии с которым данный прибор должен использоваться.
Графическое описание алгоритма в виде блок-схемы – это описание структуры алгоритма с помощью геометрических фигур с линиями связи.
Блок схема алгоритма – это графическое представление метода решения задачи, в котором используются специальные символы для отображения операций.
Символы, из которых состоит блок-схема алгоритма, определяет ГОСТ 19.701-90. Этот ГОСТ соответствует международному стандарту оформления алгоритмов, поэтому блок-схемы алгоритмов, оформленные согласно ГОСТ 19.701-90, в разных странах понимаются однозначно.
Псевдокод – описание структуры алгоритма на естественном, но частично формализованном языке. В псевдокоде используются некоторые формальные конструкции и общепринятая математическая символика. Строгих синтаксических правил для записи псевдокода не предусмотрено.
Рассмотрим простейший пример. Пусть необходимо описать алгоритм вывода на экран монитора наибольшего значения из двух чисел.
Рисунок 1 — Пример описания алгоритма в виде блок-схемы
Описание этого же алгоритма на псевдокоде:
2. Ввод чисел: Z, X
3. Если Z > X то Вывод Z
4. Иначе вывод Х
Каждый из перечисленных способов изображения алгоритмов имеет и достоинства и недостатки. Например, словесный способ отличается многословностью и отсутствием наглядности, но дает возможность лучше описать отдельные операции. Графический способ более наглядный, но часто возникает необходимость описать некоторые операции в словесной форме. Поэтому при разработке сложных алгоритмов лучше использовать комбинированный способ.
Источник
Описание алгоритмов с помощью псевдокода
Псевдокод (алгоритмический язык) — система обозначений и правил, предназначенная для единообразной и точной записи алгоритмов и исполнения их. Особенность псевдокода заключается в том, что описания на нем выполняются на родном языке — русском, английском, украинском, немецком и т.п.
Псевдокод занимает промежуточное место между естественным и формальным языками. С одной стороны, он близок к обычному естественному языку, поэтому алгоритмы могут на нем записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, что приближает запись алгоритма к общепринятой математической записи.
Отметим, что между понятиями «алгоритмический язык» (псевдокод) и «языки программирования» есть различие; прежде всего, под исполнителем в алгоритмическом языке может подразумеваться не только компьютер, но и устройство для работы «в обстановке». Программа, записанная на алгоритмическом языке, не обязательно предназначена компьютеру. Практическая же реализация алгоритмического языка — отдельный вопрос в каждом конкретном случае.
Достоинство записи алгоритмов и программ на алгоритмическом языке заключается в простоте их чтения и ввода с экрана ЭВМ, а также в простоте внесения изменений и исправлений с использованием даже самых простейших редакторов тестов. По этим причинам зарубежом схемы алгоритмов уже давно не используются ни для документирования, ни для обучения, а все современные языки построены на принципах структурного программирования.
В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным языкам, что облегчает запись алгоритма на стадии его разработки и дает возможность использовать широкий набор команд, рассчитанный на абстрактного исполнителя. В нем имеются некоторые конструкции, присущие формальным языкам, что облегчает переход от записи на псевдокоде к записи алгоритма на формальном языке.
Как и каждый язык, алгоритмический язык имеет свой словарь. Основу этого словаря составляют слова, употребляемые для записи команд, входящих в систему команд исполнителя того или иного алгоритма. Такие команды называют простыми командами. В алгоритмическом языке используют слова, смысл и способ употребления которых задан раз и навсегда. Эти слова называют служебными. Использование служебных слов делает запись алгоритма более наглядной, а форму представления различных алгоритмов — единообразной.
Следует отметить, что единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций. Однако, существуют определенные правила, которых следует придерживаться при записи алгоритма на псевдокоде.
Алгоритм, записанный на алгоритмическом языке (псевдокоде), должен иметь название. Название желательно выбирать так, чтобы было ясно, решение какой задачи описывает данный алгоритм. Для выделения названия алгоритма перед ним записывают служебное слово алг (АЛГоритм). За названием алгоритма (обычно с новой строки) записывают его команды. Для указания начала и конца алгоритма его команды заключают в пару служебных слов нач (НАЧало) и кон (КОНец). Команды (операторы) записывают последовательно.
Последовательность записи алгоритма:
Алг название алгоритма
Нач
Серия команд алгоритма
Кон
При построении новых алгоритмов могут использоваться алгоритмы, составленные ранее. Алгоритмы, целиком используемые в составе других алгоритмов, называют вспомогательными алгоритмами. Вспомогательным может оказаться любой алгоритм из числа ранее составленных. Не исключается также, что вспомогательным в определенной ситуации может оказаться алгоритм, сам содержащий ссылку на вспомогательные алгоритмы.
Очень часто при составлении алгоритмов возникает необходимость использования в качестве вспомогательного одного и того же алгоритма, который к тому же может быть весьма сложным и громоздким. Было бы нерационально, начиная работу, каждый раз заново составлять и запоминать такой алгоритм для его последующего использования. Поэтому в практике широко используют, так называемые, встроенные (или стандартные) вспомогательные алгоритмы, т.е. такие алгоритмы, которые постоянно имеются в распоряжении исполнителя. Обращение к таким алгоритмам осуществляется так же, как и к «обычным» вспомогательным алгоритмам. У исполнителя-робота встроенным вспомогательным алгоритмом может быть перемещение в хранилище из любой точки помещения склада; у исполнителя-язык программирования Паскаль это, например, встроенный алгоритм «SIN» и т.д.
Простейшим видом машинного оператора является оператор присваивания, служит для вычисления выражений и присваивания их значений переменным. Общий вид: a := b, где знак «:=» означает команду заменить прежнее значение переменной, стоящей в левой части, на вычисленное значение выражения, стоящего в правой части. Здесь а и b — программные переменные — область машинной памяти, в которой хранятся их значения а и b. В отличии от обычных математических переменных программные переменные могут получать новые значения. В частности, присваивание b := b + 5 записывает в программную переменную b новое значение b’, равное величине b + 5, где b — прежнее значение переменной b.
Рассмотрим примеры присваивания и описания результатов его выполнения.
Запись присваиваний читается:
а := 0 — «переменной а присвоить значение 0»;
b := b + 10 — «переменной b присвоить значение b + 10».
Записи в колонке результатов читаются так:
а = 0 — «значение а равно 0»;
b‘ = b + 1 — «значение b’ равно b + 1».
Для ввода и вывода данных используют команды:
ввод или считать (имена переменных);
вывод или написать (имена переменных, выражения, “тексты”).
Алгоритм 2
Алг Сравнение x и y
Нач
Вывод(“Введите x”)
Ввод (x)
Вывод(“Введите y”)
Ввод (y)
вывод (“X= ”, x=y, “ Y= ”,x, y+x)
Кон
Рассмотрим работу данного алгоритма, в качестве исполнителя выберем компьютер. После выполнения первой команды вывод(“Введите x”) на экране появится сообщение:
Пусть пользователь введет значение равное 10. Тогда следующая команда ввод (x) присвоит введенное значение переменной x, т.е. x=10. Далее на экране появится сообщение:
Пусть пользователь введет значение равное 7. Аналогично команда ввод (y) присвоит введенное значение переменной y, т.е. y=7. В результате работы алгоритма на экране появится следующее сообщение:
Т.е. в команде вывод() все, что размещено в кавычках рассматривается как текст и выводится на экран без изменений, вместо переменных на экран выводятся их значения и, если в команде присутствуют арифметические или логические операции, то сначала они выполняются, и полученный результат тоже выводится на экран.
Рассмотрим, как будет выглядеть алгоритм 1 нахождения значения функции z(x), в точке x=10 записанный на псевдокоде.
Алгоритм 3
алг Расчет значения функции z(x) в точке x=10
нач
вывод (“Введите значение переменной x=10”)
ввод (x)
z:=x*x-2*x+4
z:=z/(x-5)
a:=x*x*x
z:=z+a
вывод (“Значение функцииz(”,x,”)= ”,z)
кон
Результатом работы алгоритма, если пользователь действительно введет значение x=10, будет следующее сообщение на экране:
Значение функции z(10)= 1016,8
Вопросы и задания для самоподготовки
1. Дайте определение алгоритма.
2. Охарактеризуйте основные свойства алгоритма.
3. Какие виды алгоритмов вам известны? Приведите примеры.
4. Какие существуют способы описания алгоритмов? Приведите примеры.
5. Перечислите и охарактеризуйте основные функциональные символы, используемые при составлении схем алгоритмов.
6. Правила составления схем алгоритмов.
7. Дайте определение псевдокода.
8. Для чего служит оператор присваивания?
9. Какие команды используют в псевдокоде для ввода/вывода данных? Приведите примеры.
10. В результате работы фрагмента алгоритма
переменная Y приняла значение равное 5. Укажите число — начальное значение переменной X данного алгоритма.
11. Какое значение примет переменная A по окончании работы алгоритма, если начальным значением A ввести: 10; -7; 0. Напишите сообщение, которое будет выведено на экране в конце работы алгоритма.
агоритм Вычисление значения А
вывод (“Введите значение А”)
12. Чему будет равно значение переменной b после выполнения заданного фрагмента алгоритма? Чему будет равно значение переменной b, если условие выполнения цикла изменить на b>a?
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).
Папиллярные узоры пальцев рук — маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни.
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.
Источник