Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Графическое представление алгоритма.



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

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

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

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

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

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

Блок « начало » и « конец » алгоритма используется для указания начала и конца алгоритма.

Блок «начало цикла с параметрами» используется для указания началацикла с параметрами.

Блок «конец цикла с параметрами» используется для указания концацикла с параметрами.

Блок «ввод-вывод данных» используется для указания ввода и вывода данных.

- переход от блока к блоку.

А
- соединитель блоков на странице.

В
- соединитель блоков на листах.

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

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

1. Базовая структура " следование". Образуется последовательностью действий, следующих одно за другим.

2. Базовая структура " ветвление". Обеспечивает в зависимости от результата проверки условия ( да или нет ) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран. Структура ветвление существует в четырех основных вариантах:

если—то;

если—то—иначе;

выбор;

выбор—иначе.

 

1. если—то
если условие то действия все если x > 0 то y: = sin(x) все
2. если—то—иначе
если условие то действия 1 иначе действия 2 все если a > b то a: = 2*a; b: = 1 иначе b: = 2*b все
3. выбор
выбор при условие 1: действия 1 при условие 2: действия 2 ............ при условие N: действия N все выбор при n = 1: y: = sin(x) при n = 2: y: = cos(x) при n = 3: y: = 0 все
4. выбор—иначе
выбор при условие 1: действия 1 при условие 2: действия 2 ............ при условие N: действия N иначедействия N+1 все выбор при a > 5: i: = i+1 при a = 0: j: = j+1 иначе i: = 10; j: =0 все

3. Базовая структура " цикл". Обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла. Основные разновидности циклов представлены в таблице:

 

1. Цикл типа пока – с предусловием. Предписывает выполнять тело цикла до тех пор, пока выполняется условие, записанное после слова пока.
нц пока условие тело цикла (последовательность действий) Кц нц пока i < = 5 S: = S+A[i] i: = i+1 кц
2. Цикл типа для – с параметрами. Предписывает выполнять тело цикла для всех значений некоторой переменной (параметра цикла) в заданном диапазоне.
нц для i от i1до i2 тело цикла (последовательность действий) Кц нц для i от 1 до 5 X[i]: = i*i*i Y[i]: = X[i]/2 кц
3. Цикл типа до тех пор – с постусловием.Предписывает выполнять тело цикла до тех пор, пока условие не станет истинным.
нц тело цикла (последовательность действий) кц условие нц i=i+1 S=S+a(i) кц i< 10

 

Вложенные циклы.

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

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

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

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

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

Лекция 9 (Л-4.2). Программирование.

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

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

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

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

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

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

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

ЯП – фиксированная система обозначений и правил для описания алгоритмов и структур данных.

Эволюция и классификация ЯП.

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

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

III поколение. В 1965 г. появился первый язык высокого уровня FORTRAN (Дж. Бэкус, фирма IBM). ЯП этого уровня человеко-ориентированные, проще в освоении. Версии FORTRAN использовались на ЭВМ всех классов. За FORTRAN появились и развились ALGOL, COBOL, BASIC, PL/1, PASCAL, APL, ADA, C, FORth, LISP, MODULA, и др. В настоящее время более 2000 ЯП.

IV поколение. ЯП

1) носят непроцедурный характер – описывают ЧТО делать, а не КАК надо делать. Пример – PROLOG, LONGIN. Свободно осваиваются и применяются непрофессионалами;

2) объектно-ориентированнные - каждый графический объект знает, что нужно делать со своими данными (SMALLTALK, его основа SIMULA-67);

3) языки запросов – извлечение информации из БД. Стандарт этих ЯП является SQL – STRUCTURED QUERY LANGUAGE;

4) языки параллельного программирования – ориентированы на создание ПО для вычислительных систем параллельной архитектуры (многомашинные, мультипроцессорные системы и т.д.). Эти языки являются модификацией FORTRAN, OCCAM, SISAL и т.д.).

V поколение. Языки искусственного интеллекта (InterLisp, EXPERTLISP, IQLISP, SAIL) и естественные языки, не требующие освоения специального синтаксиса. В настоящее время естественные языки ограниченных возможностей (CLOUT, Q$A, HAL).

Фактор Характеристика Группы Примеры ЯП
Уровень ЯП Степень близости ЯП к архитектуре компьютера Низкий Автокод, ACCEMBLER
Средний FORTRAN, PASCAL, ADA, BASIC, C
Высокий СЕТЛ
Специализация ЯП Потенциальная или реальная область применения Общего назначения (универсальные) ALGOL, PL/1, SIMULA, BASIC, PASCAL
Специализированные FORTRAN (инженерные расчеты), COBOL (коммерческие задачи), REFAL, LISP (символьная обработка), MODULA, ADA (программирование в режиме реального времени)
Алгоритмичность (процедурность) Возможность абстрагироваться от деталей алгоритма. Алгоритмичность тем выше, чем точнее приходится планировать порядок выполняемых действий Процедурные ACCEMBLER, FORTRAN, BASIC, PASCAL, ADA
Непроцедурные PROLOG, LANGIN

 


Поделиться:



Последнее изменение этой страницы: 2017-04-12; Просмотров: 582; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.024 с.)
Главная | Случайная страница | Обратная связь