Информатика - Учебное пособие

Средства записи алгоритмов

 

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

На практике в информатике наиболее часто используются три способа записи алгоритма. Рассмотрим их более подробно.

1-й способ: естественная (словесная) запись алгоритма. Запись на обычном языке общения, ориентированная на исполнителя - человека. Отдельные этапы алгоритма обычно нумеруются.

Примеры.

 

Алгоритм попадания в свою квартиру

Алгоритм       вычисления   выражения

y = x*x+2x-5 для x = 7

1)         подойти к двери;

2)         достать ключ;

3)         вставить в замочную скважину;

4)         повернуть n раз;

5)         вынуть ключ;

6)         распахнуть дверь.

1)   присвоить переменной х значение 7;

2)   подставить  значение  х  в  приведенное выражение и произвести вычисления;

3)   потребовать ответ;

4)   прекратить вычисления.

 

2-й  способ:  запись  алгоритма  в  графической  форме.  Обычно  под  этим  понимается изображение алгоритма в виде блок-схемы.

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

 

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

 

----

 

 

- пуск и останов (начало и конец алгоритма)

 

 

 

 

.

 
- этап вычислений

 

-  этап проверки некоторого условия

 

-  ввод-вывод вообще

 

- ввод с клавиатуры

 

- вывод на дисплей

 

- заголовок итерационного цикла

 

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

Пример. Так выглядит блок-схема алгоритма математической задачи, приведенного в предыдущем примере:

 

начало

 

 

 

 

x = 7

 

 

y = x*x+2x-5

 

 

 

вывод y

 

конец

 

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

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

 

3-й способ: запись алгоритма на конкретном языке программирования. Организация такой записи оставляет основной смысл следующего, четвертого этапа решения задач на ЭВМ.

 

4  этап.  Очевидно,  что  алгоритм решения  задачи,  предназначенный для  исполнения  на

ЭВМ, должен быть записан на понятном компьютеру языке, языке программирования.

Язык программирования - формализованный язык (набор символов и система правил образования и истолкования конструкций из этих символов), предназначенный для описания алгоритмов решения задач на ЭВМ.

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

Программа - упорядоченная последовательность предложений языка программирования

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

Очевидно, что каждое предложение программы должно заставлять компьютер выполнять определенную последовательность действий. При решении задач на ЭВМ 1-го поколения (40-e и начало 50-х годов XX века) программы записывались на т. н. машинном языке. Это означает, что каждая инструкция программы записывалась на языке внутреннего кодирования информации, т. е. чаще всего представляла последовательность нулей и единиц. Такое программирование:

а) очень трудоемко;

б) не наглядно (трудно понять по тексту программы, что она, собственно, делает);

в)  не  эффективно  (для  выполнения  одного  и  того  же  алгоритма  на  ЭВМ  с  различной архитектурой приходится создавать разные программы).

Поэтому  в  середине  50-х  годов  появились  первые  языки  программирования, использующие символику, близкую общепринятой математической. К настоящему времени число таких языков едва ли не превышает сотню. Одни из этих языков сохранили машинную ориентацию  и  предназначены  для  символической  записи  машинных  команд.  Их  часто называют машинозависимыми (автокод, ассемблер). Другие языки создавались с ориентацией на  программиста,  а  не  на  возможности  конкретной  ЭВМ.  Они  относятся  к машинонезависимым, или языкам программирования высокого уровня. Одни из таких языков создавались для решения задач определенного класса (например, Фортран - для решения научно-технических задач, Кобол – экономических, Си - для написания операционных систем и т. д.). Их иногда называют процедурно-ориентированными. Другие, рассчитанные на решение широкого класса задач, считают универсальными языками (ПЛ/1, Паскаль, Ада).

Таким образом, можно предложить следующую схему:

 

языки программирования

/          

низкого уровня         высокого уровня

/                      (машинонезависимые)

/                      /          

машинные

машино-

процедурно-

универсальные

 

зависимые

ориентированные

 

 

Ассемблер – язык символического кодирования, в котором один оператор соответствует одной команде машинного языка.

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

 

Пример фрагмента программы, в котором перемножаются числа  2  и 3, на различных языках:

 

машинный язык IBM PC

Ассемблер IBM PC

Си

(в 16-ричном коде)

B80200

 

mov AX, 0002

 

S = 2;

B80300

F7E3

mov BX, 0003

mul BX

N = 3;

S = S*N;

 

Cуществует ряд требований к тексту программы:

1) программа должна иметь название, раскрывающее смысл решаемой задачи;

2) следует обозначать начало и конец выполнения алгоритма;

3) вводимые величины должны быть снабжены описаниями типа величин;

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

 

Пример листинга программы вычисления выражения y = x*x + 2x - 5  для значения  х = 7,

записанного на языке Си:

/* однократный просчѐт выражения*/

#include <stdio.h>

main()

{

float x,y;

x=7.0;

y=x*x+2*x-5;

printf(“x = \%3.1f  y = \%6.4f ”,x,y);

}