Uploaded by Никита Плесняков (n_plesn)

ЛЕКЦИЯ 1 Формы представления алгоритмов

advertisement
Алгоритмы, Трансляция
1 из 7
Формы представления алгоритмов:
- словесное описание ( вербальная форма);
- построчная запись;
- блок-схема;
- запись на каком-л. языке программирования.
Рассмотрим особенности каждой формы на примере алгоритма Евклида (НОД).
Словесное описание имеет минимум ограничений и является наименее формализованным. Однако, при этом алгоритм получается
и наименее строгим, допускающим неопределенности. Алгоритм в вербальной форме может оказаться очень объемным и
трудным для восприятия человеком:
Если числа равны, НОД равен одному из них. В противном случае надо из большего вычесть меньшее, полученной разностью
заменить значение большего числа. Повторить все сначала.
Построчная запись алгоритма. Это запись на естественном языке, но с соблюдением некоторых дополнительных правил.
1. Шаги (предписания) алгоритма нумеруются.
2. Исполнение алгоритма происходит в порядке возрастания номеров шагов, начиная с первого (если не встречается никаких
специальных указаний).
3. Типичными шагами алгоритма являются:
- чтение (ввод) данных;
- обработка данных (вычисления) по формулам;
- сообщение (вывод) результата;
Алгоритм Евклида можно представить с помощью построчной записи так:
[1] чтение a, b
[2] если а=b, идти на [5]
[3] если а>b, а=а-b
иначе b=b-a
[4] идти на [2]
[5] НОД = а
[6] печать НОД
[7] останов
Построчная запись позволяет избежать неопределенностей, не требует специальных знаний, но не наглядна.
Алгоритмы, Трансляция
2 из 7
Блок-схемы ...
Начало
алгоритма Евклида
Линейная структура
Ввод данных
a,b
да
дада
нет
a=b ?
Условие 1 вход 2 выхода
нет
да
нет
a>b ?
Процедура
a=a-b
b=b-a
Вывод данных
НОД=а
Начало / Конец
Цикл
2 входа
2 выхода
Конец
алгоритма Евклида
Алгоритмы, Трансляция
3 из 7
Запись алгоритма на языке программирования представляет собой форму изображения алгоритма в том случае, когда
исполнителем алгоритма является компьютер. Языки программирования имеют более жесткие правила.
Основные свойства алгоритма
1. Массовость.
Алгоритм имеет некоторое число входных величин — аргументов, задаваемых до начала исполнения. Цель выполнения
алгоритма — получение результата (результатов), имеющего вполне определенное отношение к исходным данным. Алгоритм
указывает последовательность действий по переработке исходных данных в результаты. Для алгоритма можно выбирать
различные наборы входных данных из множества допустимых для этого процесса данных, т.е. можно применять алгоритм для
решения целого класса задач одного типа, различающихся исходными данными. Это свойство алгоритма обычно
называют массовостью. Однако существуют алгоритмы, применимые только к единственному набору данных. Можно сказать,
что для каждого алгоритма существует свой класс объектов, допустимых в качестве исходных данных. Тогда свойство
массовости означает применимость алгоритма ко всем объектам этого класса.
2. Понятность.
Чтобы алгоритм можно было выполнить, он должен быть понятен исполнителю. Понятность алгоритма означает знание
исполнителя о том, что надо делать для исполнения этого алгоритма.
3. Дискретность.
Алгоритм представляется в виде конечной последовательности шагов (алгоритм имеет дискретную структуру) и его
исполнение расчленяется на выполнение отдельных шагов (выполнение очередного шага начинается после завершения
предыдущего).
4. Конечность.
Выполнение алгоритма заканчивается после выполнения конечного числа шагов. При выполнении алгоритма некоторые его
шаги могут повторяться многократно. В математике существуют вычислительные процедуры, имеющие алгоритмический
характер, но необладающие свойством конечности.
Алгоритмы, Трансляция
4 из 7
5. Определенность.
Каждый шаг алгоритма должен быть четко и недвусмысленно определен и не должен допускать произвольной трактовки
исполнителем. Следовательно, алгоритм рассчитан начисто механическое исполнение. Именно
определенность алгоритма дает возможность поручить его исполнение автомат
Основные типы алгоритмических структур.
Их всего три: линейная, разветвляющаяся и циклическая.
1. Линейная структура предполагает однократное выполнение одной и той же последовательности шагов при любых
наборах исходных данных.
2. Для разветвляющейся структуры также характерно однократное выполнение последовательности шагов, однако
состав этой последовательности определяется результатами проверки некоторых условий, т.е. зависит от
обрабатываемой информации.
3. Циклическая структура обеспечивает многократное выполнение одной и той же последовательности шагов тела
Языки программирования
Языки программирования являются одним из средств общения пользователя с компьютером. Все они ( а их
насчитывается более 1000 ) имеют сходство с естественным языком, а именно: так же, как и естественные языки
базируются на некотором множестве допустимых символов (алфавите), из которых согласно синтаксическим
правилам формируются слова ( лексические единицы ) и предложения языка ( операторы ).
Алгоритмы, Трансляция
5 из 7
Языки программирования (таблица)
Язык
FORTRAN
ФОРТРАН
Algol (Алгол)
Годы
Авторы
1950
John Backus
LISP (ЛИСП)
1960
John McCarthy
Для задач искусств, интеллекта
COBOL
КОБОЛ
APL (АЛЛ)
1961
Создан для экономических задач
BASIC (Бейсик)
1964
Grace Murray
Hopper
Kenneth Iverson,
Adin Falkoff
John Kemeny,
Thomas Kurtz
PL1\ПЛ1
1964
Pascal (Паскаль)
1967
Niklaus Wirth
SIMULA
(СИМУЛА)
LOGO (ЛОГО)
1967
1970
1-й объектно - оринетированный
Оле-Иохан Дал,
Кри-стен Нигаард язык (для моделирования)
Seymour Papert
Для обучения детей основам прогр-я
FORT
С (СИ)
PROLOG
(ПРОЛОГ)
Ada (Ада)
1971
1972
1978
Charles H. Moore
Dennis Ritchie
Алан Калмероэ
Отражает возм-ти современных ЭВМ
Для задач искусств, интеллекта
Bell Laboratories
1979
Jean Ichbiah
Для // выполнения в
многопроцессорных системах
Cii-Honeywell Bull (Франция)
C++
1980
Bjame Stroustrup
HTML
1989
Тим Бернерс-Ли
DELPHI
(ДЕЛЬФИ)
Java (Джава)
1995
1960
1962
1995
Комментарии
Одно из 1-х мест в мире по
распространенности до
сих пор.
IBM
International commitee
IBM
Dartmouth College
Попытка создания универсального
языка
Джеймс Гослинг
Фирма, организация
IBM
Federal Institute of Technology
(ШвейНорвежский ВЦ
Massachusetts Institute of Techn.
Bell Laboratories
Для создания гипертекста (эл-ной
CERN, Женева
таблицы)
Для работы с б/д на основе Pascal,
Borland
идеология - повторное исп-е готовых
программ
Для сетевого пр-ния (сохраняет стиль Sun Microsystems
С, C++)
Алгоритмы, Трансляция
6 из 7
Любому языку (в том числе и языкам программирования) присущи синтаксис и семантика .
Синтаксис — это набор правил, которые определяют основные внутренние структуры и последовательности символов,
допустимых в языке программирования. Синтаксические правила языка программирования допускают лишь
однозначный способ построения предложений (операторов).
Семантика — это значения языковых единиц (слов, словосочетаний, предложений).
Блокая куздра штеко болданула бокра и бокрячит бокренка.
Составление программ для ЭВМ первого поколения велось исключительно на машинном языке, который представляет
собой свод правил кодирования действий ЭВМ с помощью чисел. Для всех ЭВМ «понятна» только двоичная система
счисления (СС), которая для сокращения записи часто заменяется восьмеричной или шестнадцатеричной СС.
Более высоким уровнем, по сравнению с машинными языками, является машинно-ориентированные языки
символического кодирования. Основной принцип при создании языков символического кодирования состоит в замене
машинных кодов на их буквенные обозначения, а также в автоматизации процесса распределения памяти и диагностики
ошибок. Такой машинно-ориентированный язык получил название языка Ассемблера.
ЭВМ «понимает» только машинный язык, только команды, операнды адреса, записанные с помощью двоичных чисел.
Поэтому для преобразования программы, написанной на языке Ассемблера, в машинные коды необходим
«переводчик», т.е. транслятор — это специальная программа.
Недостатком машинно-ориентированных языков является невозможность выполнения программы, составленной для
процессора одного типа, на ЭВМ, которая построена на процессоре другого типа. Другими словами вид программы
зависит от типа машины.
На следующем уровне развития языков находятся процедурно-ориентированные языки. В отличие от машинноориентированных языков синтаксис и семантика этих языков не зависят от конкретной ЭВМ
Процесс перевода программы в машинные коды и процесс ее исполнения может реализоваться двумя способами:
интерпретация и компиляция (см. рис). Исторически сначала появились интерпретаторы.
Алгоритмы, Трансляция
7 из 7
Транслятор
Лексический
анализатор
Файл *.РAS
Программа
на языке
высокого
уровня


лексемы
Синтаксический
анализатор
Компилятор
Генерирует
машинный код, в
котором содержится
Файл .OBJ как код программы,
Внутренний так и коды модулей.
код
компилятора
Файл .EXE
Машинный
код
компьютера
Компиляция предназначена для обработки текстов программ, распадающихся на несколько
самостоятельных частей. Она позволяет программисту строить свою программу из маленьких
"кирпичиков" (операторов) и из больших блоков (подпрограмм), представляющих собой решения
самостоятельных задач.
Интерпретация исходной программы проще и быстрее, чем компиляция в машинные коды. Однако,
выполнение интерпретатором внутреннего представления программ за счет многократного обращения к
подпрограммам осуществляется гораздо медленнее, чем выполнение машинных кодов, сгенерированных
компилятором. Кроме того, интерпретирующая программа вместе с исходной программой должна
постоянно находиться в памяти компьютера, занимая достаточно большой ее объем. Поэтому такой способ
Инструментальные системы - это особая категория программных средств. Они включают в себя как языки
программирования, так и средства работы с ними – компилятор, транслятор, отладчик и т.д. С их помощью
создаются все другие программы. С помощью инструментальных средств создается и прикладное ПО, и новые
средства системного программирования, включая трансляторы с языков высокого уровня. Следовательно, эта
категория ПС совершенно аналогична средствам производства в промышленности - таким как станки,
инструменты, средства переработки сырья в нужную форму. При этом роль сырья играет информация текстовые и числовые данные, закодированные сообщения, графические изображения.
Download