Базовые алгоритмические структуры
Массовость
Pезультативность
Опpеделенность
Дискpетность
Понятность
На практике наиболее распространены следующие формы представления алгоритмов:
- словесная (запись на естественном языке);
- графическая (изображения из графических символов);
- псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
- программная (тексты на языках программирования).
Алгоритмы можно представлять как некоторые структуры, состоящие из отдельных базовых (т.е. основных) элементов. Естественно, что при таком подходе к алгоритмам изучение основных принципов их конструирования должно начинаться с изучения этих базовых элементов. Для их описания будем использовать язык схем алгоритмов и учебный алгоритмический язык.
Логическая структура любого алгоритма может быть
представлена комбинацией трех базовых структур:
следование, ветвление, цикл.
Характерной особенностью базовых структур является наличие в них одного входа и одного выхода.
1. Базовая структура "следование". Образуется последовательностью действий, следующих одно за другим:
Алгоритмический язык | Язык блок-схем |
действие 1 действие 2 . . . . . . . . . действие n |
2. Базовая структура "ветвление". Обеспечивает в зависимости от результата проверки условия (да или нет) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран. Структура ветвление существует в четырех основных вариантах:
- если—то;
- если—то—иначе;
- выбор;
- выбор—иначе.
Алгоритмический язык | Язык блок-схем |
1. если—то | |
если условие то действия все | |
2. если—то—иначе | |
если условие то действия 1 иначе действия 2 все | |
3. выбор | |
выбор при условие 1: действия 1 при условие 2: действия 2 . . . . . . . . . . . . при условие N: действия N все | |
4. выбор—иначе | |
выбор при условие 1: действия 1 при условие 2: действия 2 . . . . . . . . . . . . при условие N: действия N иначедействия N+1 все |
Примеры структуры ветвление
Алгоритмический язык | Язык блок-схем |
если x > 0 то y := sin(x) все | |
если a > b то a := 2*a; b := 1 иначе b := 2*b все | |
выбор при n = 1: y := sin(x) при n = 2: y := cos(x) при n = 3: y := 0 все | |
выбор при a > 5: i := i+1 при a = 0: j := j+1 иначе i := 10; j:=0 все |
3. Базовая структура "цикл". Обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла. Основные разновидности циклов представлены в таблице:
Алгоритмический язык | Язык блок-схем |
Цикл типа пока. Предписывает выполнять тело цикла до тех пор, пока выполняется условие, записанное после слова пока. | |
нц пока условие тело цикла (последовательность действий) кц | |
Цикл типа для. Предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне. | |
нц для i от i1до i2 тело цикла (последовательность действий) кц |
Примеры структуры цикл
Алгоритмический язык | Язык блок-схем |
нц пока i <= 5 S := S+A[i] i := i+1 кц | |
нц для i от 1 до 5 X[i] := i*i*i Y[i] := X[i]/2 кц |
9.Языки программирования: ассемблеры и языки высокого уровня, интерпретаторы и компиляторы. Язык Basic. Операторы Basic.
Язык ассемблера — это машинно-зависимый язык низкого уровня, в котором короткие мнемонические имена соответствуют отдельным машинным командам. Используется для представления в удобочитаемой форме программ, записанных в машинном коде.
Язык ассемблера позволяет программисту пользоваться текстовыми мнемоническими (то есть легко запоминаемыми человеком) кодами, по своему усмотрению присваивать символические имена регистрам компьютера и памяти, а также задавать удобные для себя способы адресации.
Языки высокого уровня были разработаны для того, чтобы освободить программиста от учета технических особенностей конкретных компьютеров, их архитектуры.
По назначению языки высокого уровня делятся на 3 группы.
1 группа. Проблемно-ориентированные языки – предназначенные для решения частных задач обработки данных из конкретной прикладной области (языки САПР, СУБД, систем искусственного интеллекта).
2 группа. Процедурно-ориентированные языки – предназначенные для обработки данных, имеющих относительно простую структуру и позволяющие представлять алгоритм в виде комбинации таких процедур, как ввод-вывод, вычисление выражений, циклическое исполнение (языки Фортран, Бейсик).
3 группа. Универсальные языки – включают средства обработки данных сложной структуры, символьной информации, средства для создания нестандартных типов данных и инструментов для их обработки (языки C, Pascal, C++).
Компилятор (англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.
После того, как программа откомпилирована, ни сама исходная программа, ни компилятор более не нужны. В то же время программа, обрабатываемая интерпретатором, должна заново переводиться на машинный язык при каждом очередном запуске программы.
Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять.
Basic (Beginners All-purpose Symbolic Instruction Code — многоцелевой язык символических инструкций для начинающих) представляет собой простой язык программирования, разработанный в 1964 году для использования новичками в программировании.
Операторы:
Оператор PRINT позволяет выводить данные на экран.
Оператор CLS очищает экран и используется без параметров
Оператор INPUT дает возможность вводить данные во время выполнения программы, после чего эти данные обрабатываются программой.
Появление на экране вопросительного знака означает запрос ввода. Ввод
данных завершается нажатием клавиши , и введенное значение сохраняется в заданной переменной.
Для перемещения курсора в требуемую позицию экрана, как правило, применяют оператор LOCATE.
Оператор GOTO позволяет изменить последовательность выполнения шагов программы, но его применение нежелательно, так как увеличивается время выполнения, снижается наглядность .
Оператор PRINT позволяет выводить данные на экран.
Оператор CLS очищает экран и используется без параметров
оператор INPUT дает возможность вводить данные во время выполнения программы, после чего эти данные обрабатываются программой.
Появление на экране вопросительного знака означает запрос ввода. Ввод
данных завершается нажатием клавиши , и введенное значение сохраняется в заданной переменной.
Для перемещения курсора в требуемую позицию экрана, как правило, применяют оператор LOCATE.
Оператор GOTO позволяет изменить последовательность выполнения шагов программы, но его применение нежелательно, так как увеличивается время выполнения, снижается наглядность и