Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 166
Текст из файла (страница 166)
Функция пе)еЕе обьект освободит занятую под указанный объект память, выделенную с помощью функции пеи. П.4. ГОВТВАМ Пример с пояснениями В примере, приведенном в листинге П.б, происходит суммирование элементов вектора. Со времени систем пакетной обработки сохранилось правило, что числовые метки опеоаторов записываются в позициях со 2-й по б-ю, а символ Е в первой позиции обозначает комментарий.
Каждый оператор записывается на одной строке, кроме случая, если в шестой позиции следующей строки записан любой символ, что означает продолжение предыдущего оператора. Листинг П.б. Пример суммирования массива на языке РОРТРАП[ 1 Рй06йАМ МА1М 2 РАРАМЕТЕй (МАХ5[1=99) 3 йЕАЕ А(МАХ5[1) 4 10 йЕАО(5. 100, ЕИО 999) К 5 100 ЕОйМАТ(15) 6 1Р (К.ЕЕ 0 .Ой.
К.ОТ.МАХ5!1) 5ТОР У йЕАО *, (А(1).1=1.К) 0 Рй!МТ *. (А(!),1=1,К) 9 Рй[МТ *,'5ИН ', 56М(А,К) 10 60 ТО 10 602 Приложение, Обзоры языков 11 999 Рй!ЙТ *,"А11 Осле" 12 ВТОР 13 ЕЙО 14 С ПОДПРОГРАММА СУММИРОВАНИЯ 18 ГОЙСТ!ОЙ 5ОМ(У,Й) 16 ЙЕАС : У (Н) 1 Новый стиль объявления 17 5ОМ " 0.0 18 ОО 20 1 - 1.Й 19 5ОМ 5ОМ + Ч(1) 20 20 СОЙТ1ЙОЕ 21 йЕТОйй 22 ЕЙО Пробелы игнорируются, поэтому для облегчения читаемости программы их можно свободно вставлять в любое место, например для обозначения вложенных блоков операторов, как показано в листинге П.б. К сожалению, многие програм- мисты на языке г ОКТКАХ придерживаются правила записи операторов с 7-й по- зиции. Однако это только руководящие принципы, и хорошие программы содер- жат много пустого места для улучтпения читаемости. Порядковые номера строк в левой части листинга П.б не являются частью программы, они приведены здесь только для облегчения разбора примера.
Строка 1. Имя программы МА1М. Строка 2, МА)(5!2 — определенная программистом константа. При трансляции данной программы используется значение 99, а не имя МА)(5!2. Строка 3. Описывается одномерный массив действительных чисел размером 99, границы изменения штдекса от! до 99. Нижняя граница полагается равной единице. Строка 4. В этой строке происходит считывание размера массива и зались его в переменную Й. Поскольку эта переменная не описана, она по умолчанию является целой.
Цифра 5 после оператора ЙЕАО является ссылкой па входной файл, которым является устройство стандартного ввода (например, клавиатура). Цифра 6 указы- вает на стандартный выходной файл (например, дисплей), Строка 5. Здесь оператор ЕОЙМАТ устанавливает, что данные будут целыми (1 формат) и займут пять позиций в строке ввода. Формат Е ((!хетт) является < фик- сированнымл вещественным. Например, вещественное число 5,123 могло бы иметь формат Е5. 3, а это означает, что для представления числа необходимо 5 символов, причем 3 крайних символа справа расположены после десятичной точки.
Строка 7. Оператор йЕАО считывает значения элементов массива от Я(1) до А(Й). Вместо использования оператора ЕОЙМЯТ (как в операторе ЙЕАО(5,101)), звездочка здесь означает использование управляемого списком оператора ЙЕАО, который по- следовательно считывает и анализирует вещественные числа из входного потока. Переменной 1 присваиваются значения, которые действуют только внутри этого оператора.
Строка 10. В языке КОКТКАХ 77 пет конструкции ипт1е. Оператор, записан- ный в этой строке, передаст управление назад, оператору, помеченному меткой 10, для считывания очередных данных массива. Строки 4-10 эффективно создают конструкцию ыбт1е не конец файла Оо Обработаешь следующий кассиа елб П.4. ГОР!ТЕТА!Ч 603 Сглрока 13.
Конец главной программы. Строка 14. Комментарий. Может использоваться в любом месте программы. Строка 15 — 22. Подпрограмма-функция 50М. Эта функция компилируется отдельно от основной программы. Для передачи информации компилятору нс используется информация из главной программы. Ошибочная строка ЕОНСТ!ОН 5ОМ!Ч.Н.М) также буде~ компилироваться, но может дать сбой, когда загрузчик попытается обьединить эту подпрограмму с главной программой. Строка 16.
Хотя массив задан как У С Ю, в вызове функции 50М в строке 9 он ссылается на статически размещенный параметр, вещественный массив А!99) в строке 3. Здесь же показан стиль объявления, используемый в ГОКТКАХ 90, с применением символа::. Также ЕОКТКАХ 90 поддерживает встроенные комментарии, для чего используется восклицательный знак! . Строка 1В.
В цикле 00 устанавливается начальное значение счетчика 1 равное 1, а затем ! увеличивается до М. Метка обозначает конец цикла. Если приращение не равняется 1, то требуется е!цс один параметр: ОО 20 д= 2.20.2 В этом цикле переменная О будет принимать все четные значения от 2 до 20. Строка 19. Возвращаемое ГОКТКАХ-функцией значение присваивается имени этой функции. Строка 20.
Оператор СОМТ1МОЕ является пустым и используется в основном только с меткой. Здесь он заканчивает цикл 00. П.4.1. Объекты данных Переменные н константы. Имена переменных могут быть длиной от 1 до 31 символа, начинаются с буквы и могут содержать буквы, цифры и знак подчеркивания ч .
ЕОКТКАХ нечувствителен к регистру, то есть РВ1МТ, рг!пг, Рг1пТ и Ршпс обозначают одно и то же, Традиционно программы на языке ЕОКТКАХ писались с использованием верхнего регистра, но в настоящее время программисты, пишущие па ГОКТКАХ, смешивают верхний и нижний регистры, как в большинстве других языков программирования. Переменные не обязательно объявлять явно. Явное объявление выглядит слсдуюшим образом: ВЕЯС А.
В, 5ОМ ОООВСЕ РЙЕС!5!ОН О, В СОО!САЕ . Т Описание переменной Т соответствует синтаксису ЕОКТКАХ 90. Если не приведено явное описание, то в силу вступает соглашение об именах, основанное на определении типа переменной по первой букве ее имени. В соответствии с соглашением об именах, если имя переменной начинается с букв из диапазона 1-М, ее тип определяется как 1пге9ег (делал), а вес остальные переменныс определяются как геа1 !вещественныв~. Однако программист может изменить соглашение об именах, используемых в каждой подпрограмме, если начнет описание подпро!раммы с оператора !МРЕ1С!Т.
Например, оператор !МРС!С!! !Н!ЕОЕШЯ-2! 604 Приложение. Обзоры языков расположенный в начале подпрограммы, указывает, что все локальные переменные, не объявленные явным образом, имеют тип ) пгеоег. Объявление !МРОС1Т ИОНЕ отключает все соглашения по умолчанию в ГОВТКАИ) 90, в результате чего любая необъявленная переменная воспринимается компилятором как ошибка. Это хороший способ контроля, который следует использовать в любой программе. Константы, определяемые программистом, можно создавать с помощью оператора РАКАМЕТЕК, задаваемого в начале подпрограммы: РАКАМЕТЕК )КМАХ-100. М10РТ-50) При описании типа константы также применяется соглашение об именах либо константы можно описывать явно: КЕАЕ, РАКАМЕТЕК ЕР5110Н = .0012 В языке ЕОВТВАТН) используется статическая проверка типов, но она неполная.
Многие возможности языка, включая параметры в вызовах подпрограмм и использование блоков СОММОИ, не могут быть проверены статически — отчасти потому, что подпрограммы компилируются независимо. Конструкции, которые не могут быть проверены статически, обычно остаются непроверенными во время работы программ на яэыкс гОР5ТР5А)ч. Числовые типы данных. Для иельа, вещественных и вещественных удвоенной точности числовых типов обычно используется прямое аппаратное представление чисел. Комплексный тип (совр1ех) представляется парой вещественных чисел (гез1), под которые отводится блок из двух машинных слов.
Для арифметических действий и преобразований между четырьмя числовыми типами имеется широкий набор элементарных операций. Основные арифметические операции (+, —, *,!) и операция возведения в степень (**) дополняются как болыпим набором стандартных встроенных функций, включая тригонометрические и логарифмические функ)1ии (51п, со5, Йвп, 109), операцию извлечения квадратного корня (50гг), нахождения максимального (0)вх) и минимального (0)1п) числа, так и явными функциями преобразования типов данных для различных числовых типов. Также имеются обычные операции сравнения числовых значений, которые записываются следующим образом.
Логический тип данных. Булез тип называется логическим (ЕОО)СЯЕ), литеральными константами этого типа являются . ТРОЕ. и ЕЯЕ5Е.. Основные булевы операции представлены операциями . ИОТ, АИО. и .ОК . Булеза эквивалентность нее отрицание обозначаются как ЕОН. и, ИЕОу. соответственно. Логические выражения с числовыми данными можно конструировать обычным способом(например,(П.ЕТ 7).ОК.(В ВЕ.15)). Указатели. Более старые версии г ОВТВА)И не поддерживают указателей, поскольку все данные размещаются статически. Следовательно, построение списко- п.4.РОР)те)Ан 605 вых структур на языке ГОКТКАХ часто подразумевает использование больших массивов, где индекс массива служит указателем на следующий элемент списка.
Такая процедура работает эффективно, если все размещаемые структуры одного типа, Олнако при конструировании программ, в которых созлаются произвольные структуры данных, возникают трудности. В версии ГОКТКА)ч) 90 указатели добавлены как объекты нового типа данных. Указатели объявляются следующим образом: !МТЕ6ЕМ, РО)МТЕР: Р Здесь устанавливается, что Р является указателем на целую переменную.