Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика учебное пособие часть2.doc
Скачиваний:
27
Добавлен:
16.09.2019
Размер:
1.14 Mб
Скачать

6.2 Символьная форма представления алгоритма

В символьном представлении наибольшее распространение получила строчная запись.

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

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

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

Термин «частично формализованный» означает, что в псевдокоде строго определены только правила записей управляющих структур, а описание самих действий является естественным.

Основные примитивы (стандартные блоки) псевдокода, из которых строится представления алгоритма.

1. Присвоение значения описательному имени

Имя  выражение; Имя := выражение; ,

где Имя – описательное имя (идентификатор), а выражение – определяет значение, которое присваивается этому имени.

Остаток Товара  Начальный Остаток + Приход – Расход.

2. Ветвление – выбор одного из действий в зависимости от истинности или ложности какого-либо условия.

if (условие) then (действие 1) else (действие 2);

Если (условие) то (действие 1) иначе (действие 2);

if (високосный год) then ежедневная сумма  годовая сумма /366

else ежедневная сумма  годовая сумма /365;.

3. цикл (повторение) с предварительным условием – пока выполняется условие, выполнять действия (do):

while (условие) do (действие);

Пока (условие) повторять (действие);

while (есть билеты) do (продавать билеты).

4. внешнее оформление (proc – начало алгоритма)

end – завершение алгоритма)

Алг/ конец – в русской нотации.

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

Пример 1. Решение квадратного уравнения ax2 + bx + c = 0

Алг Корни;

Задать a, b, c;

D := b2  a c;

Если D > 0

то (x1:= (  b + )/2a; x2 := )

иначе

Если D = 0 то (x := )

иначе (сообщить, что корней нет);

Конец.

Пример 2. Алгоритм Евклида – нахождение наибольшего общего делителя (НОД)

Словесное описание.

  1. Задать числа a и b;

  2. Если a = b, результатом считать a; закончить вычисления.

  3. Если a > b, найти разность (a – b) ; новым значением a считать значение разности, перейти к п.1.

  4. Если b > a, найти разность (b – a); новым значением b считать значение разности; перейти к п.1.

Алг Евклид;

Задать a, b;

Пока (a b) повторять

Если a > b то a a – b

иначе b b – a;

Результат (a);

Конец.

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

Еще один вид строчной записи – язык программирования.

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

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

Различают языки низкого уровня и высокого уровня.

К языкам первого типа относятся:

- язык машинного типа (язык машинных кодов) – совокупность команд, интерпретируемых и исполняемых компьютером. Каждый оператор на этом языке является машинной командой и представляет собой последовательность 0 и 1;

- ассемблер (макроассемблер) – язык символического кодирования. Операторами языка являются машинные команды, которым приписывается мнемоническое обозначение, а в качестве операндов используются не конкретные адреса в ОЗУ, а их символические имена (CLA – очистить аккумулятор, ADD а – добавить в регистр-аккумулятор значение а).

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

Ассемблер является машинно-зависимым языком, то есть записанная на нем программа может использоваться лишь на той технике (точнее том типе процессора), ассемблер которого был использован.

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

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

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

Примерами таких языков являются:

FORTRAN (Formula Translator) - язык решения сложных научных и инженерных задач (это был первый язык высокого уровня);

COBOL (Common Business Oriented Language) – язык для решения экономических и коммерческих задач;

LISP - решение задач искусственного интеллекта;

PROLOG – задачи логического вывода и т.п.

К универсальным языкам относятся C, PASCAL, Basic, JAWA, а также современные среды визуального программирования Delphi, Visual Basic и т.п.

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

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