Эксперт
Сергей
Сергей
Задать вопрос
Мы готовы помочь Вам.

Реферат на тему: ALGOL. Скачать бесплатно

3. Алгол 60

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

Несмотря на это, роль Algol 60 (в дальнейшем – Algol) в истории языков программирования огромна, потому что идеи, заложенные в этом языке, получили дальнейшее развитие и породили целую плеяду так называемых “алголоподобных языков”, среди которых в первую очередь можно выделить Algol 68 и Pascal. Эти языки получили значительно большее распространение. Кроме того, они в процессе своего развития в свою очередь стали основой для еще более развитых и мощных языков. Своеобразие роли Algol в информатике заключается еще и в том, что этот язык стал алгоритмическим, в отличие от подавляющего большинства других языков, являющихся языками программирования. Алгоритм можно реализовать практически на любом языке программирования, но особенность Algol заключается в том, что этот язык обладал непревзойденными (на время своего появления) выразительными средствами для строгого и изящного представления алгоритма. В результате, не получив признания в промышленности как язык программирования, Algol стал стандартом де-факто для публикации алгоритмов в научной среде. Так, например, на страницах Communications of the ACM долгие годы ему отдавалось предпочтение перед другими языками.

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

Интересно, что впервые в истории язык был определен формально. Algol, которому было предназначено противопоставить четкость и элегантность конструкций хаотичности и сумбурности FORTRAN, был описан посредством модификации Нормальной Формы Бэкуса (создателя FORTRAN). Нормальная Форма Бэкуса была доработана одним из членов комитета, Питером Науром, и в дальнейшем стала известна как Расширенная Форма Бэкуса-Наура (РБНФ). РБНФ оказалась настолько удобной формой описания синтаксиса формальных языков,что в дальнейшем практически все языки программирования стали описываться в этой нотации (еще один, косвенный вклад Algolа в развитие информатики).

Очень немногие короткие документы оказали глубокое влияние на компьютерное сообщество. Легкость, с которой в последующие годы слова “ALGOL” и “ALGOL-подобный” использовались как незащищенные торговые марки, чтобы придать часть своей славы незрелым проектам, порой имеющим весьма слабое отношение к предмету, – комплимент его основам.

Одной из слабостей языка был переработанный и не слишком систематический синтаксис.

Как и в большинстве других языков программирования, программа на Algol состоит из главной программы и набора подпрограмм. При их построении используются блоки – наборы описаний и последовательности операторов, ограниченные “скобками” begin и end. Структуры данных, созданные внутри блока, локальны в его пределах и при выходе из блока уничтожаются. Таким образом, можно управлять временем жизни данных и областью видимости их идентификаторов. Идентификатором называется любая конечная последовательность букв и цифр, начинающаяся с буквы.

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

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

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

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

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

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

Для ввода данных и вывода результатов используются операторы ввода и вывода:

Ввод(х1, х2, у)

Вывод(х)

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

Кроме операторов программа содержит описания. Описание является сообщением о том, какие простые переменные используются в программе:

Real х1

Пример 3 (Программа вычисления корней квадратного уравнения ax2+bx+c=0, заданного коэффициентами a, b, c. Предполагается, что a ≠ 0 и что корни действительные):

Begin real a, b, c, x1, x2;

Ввод (a, b, c);

X1:= (-b + sqrt(b↑2 – 4 × a × c))/ (2 ×a);

X2:= (-b – sqrt(b↑2 – 4 × a × c))/ (2 ×a);

Вывод (x1, x2)

End

В программах на Алгол могут быть использован условный оператор If…then…else…

Пример 4 (Программа, после выполнения которой меньшее из двух данных неравных чисел будет увеличено вдвое, а большее оставлено без изменений):

Begin real x, y;

Ввод (x, y);

If x>y then y:= 2×y else x:= 2×x;

Вывод (x, y)

End

Оператор может быть как простым, так и составным. Структура составного оператора: Begin P1; P2; …; Pk end

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

В Алголе помимо простых переменных используются переменные с индексами.

Для многократного повторения каких-либо действий применяется оператор цикла. Структура оператора цикла: for p:=A step B until C do S. Буквой р обозначена некоторая простая переменная (параметр цикла), буквами А, В, С – арифметические выражения, буквой S – оператор.

Пример 5 (Программа вычисления n!):

Begin integer i, n, p;

Ввод (n);

P:=1;

For i:=2 step 1 until n do p:=p×i;

Вывод (p)

end

Пример 6 (Программа переводит градусы по Фаренгейту в градусы по Цельсию):

fahrenheit

begin

real fahr;

print (“Enter Fahrenheit “);

read (fahr);

print (“Celsius is “, (fahr-32.0) * 5.0/9.0);

end

finish

Была ли полезна данная статья?
Да
58.14%
Нет
41.86%
Проголосовало: 43

или напишите нам прямо сейчас:

Написать в WhatsApp Написать в Telegram