Описание алгоритмов с помощью псевдокода

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

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

Отметим, что между понятиями «алгоритмический язык» (псевдокод) и «языки программирования» есть различие; прежде всего, под исполнителем в алгоритмическом языке может подразумеваться не только компьютер, но и устройство для работы «в обстановке». Программа, записанная на алгоритмическом языке, не обязательно предназначена компьютеру. Практическая же реализация алгоритмического языка - отдельный вопрос в каждом конкретном случае.

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

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

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

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

Алгоритм, записанный на алгоритмическом языке (псевдокоде), должен иметь название. Название желательно выбирать так, чтобы было ясно, решение какой задачи описывает данный алгоритм. Для выделения названия алгоритма перед ним записывают служебное слово алг (АЛГоритм). За названием алгоритма (обычно с новой строки) записывают его команды. Для указания начала и конца алгоритма его команды заключают в пару служебных слов нач (НАЧало) и кон (КОНец). Команды (операторы) записывают последовательно.

Последовательность записи алгоритма:

Алг название алгоритма

Нач

Серия команд алгоритма

Кон

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

Очень часто при составлении алгоритмов возникает необходимость использования в качестве вспомогательного одного и того же алгоритма, который к тому же может быть весьма сложным и громоздким. Было бы нерационально, начиная работу, каждый раз заново составлять и запоминать такой алгоритм для его последующего использования. Поэтому в практике широко используют, так называемые, встроенные (или стандартные) вспомогательные алгоритмы, т.е. такие алгоритмы, которые постоянно имеются в распоряжении исполнителя. Обращение к таким алгоритмам осуществляется так же, как и к «обычным» вспомогательным алгоритмам. У исполнителя-робота встроенным вспомогательным алгоритмом может быть перемещение в хранилище из любой точки помещения склада; у исполнителя-язык программирования Паскаль это, например, встроенный алгоритм «SIN» и т.д.

Простейшим видом машинного оператора является оператор присваивания, служит для вычисления выражений и присваивания их значений переменным. Общий вид: a := b, где знак «:=» означает команду заменить прежнее значение переменной, стоящей в левой части, на вычисленное значение выражения, стоящего в правой части. Здесь а и b - программные переменные - область машинной памяти, в которой хранятся их значения а и b. В отличии от обычных математических переменных программные переменные могут получать новые значения. В частности, присваивание b := b + 5 записывает в программную переменную b новое значение b', равное величине b + 5, где b - прежнее значение переменной b.

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

Присваивания: Результаты:

а := 0 а = 0

b := а + 10 b ' = а + 10 = 10

b := b - 5 b " = b' - 5 = 5

Запись присваиваний читается:

а := 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”) на экране появится сообщение:

Введите x

Пусть пользователь введет значение равное 10. Тогда следующая команда ввод (x) присвоит введенное значение переменной x, т.е. x=10. Далее на экране появится сообщение:

Ведите y

Пусть пользователь введет значение равное 7. Аналогично команда ввод (y) присвоит введенное значение переменной y, т.е. y=7. В результате работы алгоритма на экране появится следующее сообщение:

X= FALSE Y= 1017

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

Рассмотрим, как будет выглядеть алгоритм 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:=X-5

X:=2*(Y+1)

Y:=X+Y

вывод (Y)

переменная Y приняла значение равное 5. Укажите число - начальное значение переменной X данного алгоритма.

11. Какое значение примет переменная A по окончании работы алгоритма, если начальным значением A ввести: 10; -7; 0. Напишите сообщение, которое будет выведено на экране в конце работы алгоритма.

агоритм Вычисление значения А

нач

вывод (“Введите значение А”)

ввод (А)

если А>0 то А:=А*2

иначе

если А<0 то А:=-3*А

иначе A:=А+10

вывод (“Значение А=”, A, “ результат сравнения А ”,А>15)

кон

12. Чему будет равно значение переменной b после выполнения заданного фрагмента алгоритма? Чему будет равно значение переменной b, если условие выполнения цикла изменить на b>a?

a:=10

b:=50

нц пока b>=a

b:=b-a

кц


Наши рекомендации