Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 167
Текст из файла (страница 167)
г-значение Р устанавливается равным 1-значению целой переменной Х слслующим образом: Р=>Х. При этом Х должен быть правильным целевым объектом указателя, определенным как !МТЕ6ЕМ. ТАМ6ЕТ:; Х Использование указателя в выражении равносильно использованию его г-значения (то сот.ь происходит автоматическое разыменование указателя): Р1 >Х Р2->т Р1-Р2 ! То хе. чта н Х - Х Динамическое выделение памяти для указателя Р осуществляется с помощью оператора АЕЕОСЯТЕЕР1), а освобожлается память оператором ОЕАЕЕОСАТЕЕР1).
Структурированные типы данных Массивы. Диапазон изменения индексов массива должен быть определен явно— либо в операторе О!МЕМ51ОМ (который позволяет опрелелять тип компонентов массива через соглашение об именах), либо путем объявления массива н типа его компонентов одним из способов, описанных выше, например: МЕАЕ М(20). М1-5 5) 01МЕМ510М 1120,20) Если опущена нижняя граница индексов, она принимается равной 1. Массив ! считается 1МТЕОЕМ (целым), если соглашение об именах для 1 не переопределено с помощью оператора !МРЕ1С1Т.
Количество размерностей массива не должно превосходить7. Для выбора компонентов массива используются индексы, причем синтаксис этой операции такой же, как и синтаксис вызовафункций(например, М13) или М(! + 2)). В отличие от больпзинства языков, в языке ГОКТКА)ч) массивы хранятся в памяти развернутыми по столбцим. Это значит, что матрица сохраняется последовательно по столбцам, а не по строкам. Дескриптор не сохраняется вместе с массивом; если необходимо, его следует сохранить отдельно. Например, при доступе к двухмерному массиву А17. 9) (смотри раздел 6,1.5) формула Лоступа )-значенне1А17.9)) - ХО + 7 х 5 + 9 х Е может быть вычислена транслятором, поскольку во время компиляции известны все границы массива и ЧО, 5 и Е известны и являются константами.
Массивы, как и все данные в языке ГОКТКА)ч), размещаются статически, за исключением случаев, когда задан атрибут АЕЕОСАТАВЕЕ. 606 Приложение. Обзоры языков Символьные строки. В ГОРСТКАХ можно определять такие переменные, как символьные строки фиксированной длины. Например, в ГОРСТКАХ 90 операторы СНАКАСТЕК 5*10. Т*25 СНАКАСТЕК1ЕЕН=У) Ц определят 5 и Т как символьные строки длиной 10 и 25 соответственно, а 0 — как символьную строку длиной 7. Объявление !МРЕ1СП также можно использовать для определения по умолчанию длины строки и первых букв в идентификаторе переменной типа СНАйАСТЕй, если она не объявлена явно как символьная строка. Кроме того, можно определять массивы символьных строк и функции, значениями которых являются символьные строки.
Для объединения двух строк можно использовать операцию объединения (О). В операциях сравнения (.Е0, 0Т, и т, д.), определенных для символьных строк, используется лексикографнческпй порядок. Позиции символов в строковой переменной пронумерованы от 1 до объявленной границы. С помощью следующей синтаксической конструкции нз строки можно выделить подстроку: Ння строковой переиенной(позиция первого сиивопа подстроки: позиция паспеднего сиивапа подстроки) Можно опустить как первый, так и последний указатель позиции символа и использовать следую)дне заданные по умолчанию значения: позиция первого сиивопа подстроки - 1, и позиция поспеднега сиивопа подстроки - оаьявпенная граница строки Форматные преобразования, обеспечиваемые операциями ввода-вывода, можно также использовать для преобразования символьной строки, хранящейся в переменной или массиве, во внутреннее двоичное представление другой переменной или массива числового или логического типа (или наоборот).
Используются те же операторы йЕЯ0, Нй!ТЕ и ЕОКМАТ, но теперь значением именованного параметра 091Т является имя переменной. Например, КЕА0 ЩН1Т-А, ЕНТ-200) Н. и определяет, что данные должны читаться из символьной строки А (как если бы переменная Я была внешним файлом, преобразованным во внутрсннес целое представление) и сохраняться в переменных М и М.
Определяемые пользователем типы В версии ГОРСТКАХ 77 нет механизмов создания пользовательских типов. Все типы заранее определены языком. В ГОРСТКАХ 90 появился оператор ТУРЕ. Например, для генерации строк переменной длины можно определить тип Н5ТК! НС: ТУРЕ Ч5Тй)на 1НТЕЙЕК .; 512Е СНАКАСТЕК(ЕЕН=20);: ! ЕН Ено ТУРЕ Ч5ТК!НС Обьявления переменных нового типа похожи на объявления переменных других типов в РОСТКАХ 90: ТУРЕ1Ч5ТК)НС) .. НУ5ТК1Н0 Заметим, что символ Ж используется в качестве селектора поля: МУ5ТК1НСя5!2Е нлн МУ5ТК! Н9ЕЕЕН. П.4. ГОттТЯАИ 607 П.4.2. Управление последовательностью действий Выражения Для вычисления отдельного числа, логического значения или символьной строки можно использовать выражение.
Элементарные операции ассоциативны слева направо для всех выражений, за исключением операции возведения в степень (**), которая ассоциативна справа налево. Для управления последовательностью вычислений можно использовать скобки стандартным образом. Элементарные операции иметот следуютций порядок приоритетов (от высшего к низшему): / // .ЕО. .ЙЕ.
.ЕТ. .ОТ. .СЕ. .БЕ. .НОТ. . АгтО. .Ок. . ЕО1/ .. й Е От'. Операторы Оператор присваивания. Синтаксис оператора присваивания имеет вид перененнан = аырикение где и-значение выражения присваивается 1-значению переменной, как в следуютцих примерах; Х-тиг Аст,г1 - О . т — А11, л Как выражение, так и переменная мотут бы ть числовым и, логическими илп символьными. Присваивание значения переменной типа СНАкАСТЕк корректирует длину присваиваемой строки в соответствии с объявленной длиной этой переменной, либо путем отбрасывания (если строка слишком длинная), либо путем добавления пробелов (если строка слишком короткая).
Условный оператор. Предусмотрено четыре условных оператора ветвления; традиционные конструкции 1Г из ГОКТКА)х) 77, а также оператор САБЕ языка КО КТКА)к) 90. Арифметпи тескии оператор 1Е обеспечивает трсхвариантное ветвление в зависимости от того, каково значение арифметического выражения — отрицательное, нулевое или положительное: 1т 1аыраиение1 нетка„, „,„,„„,. неткан , , „ , нетка„ Метки указыватот, какому помеченному оператору передать управление.
Эта конструкция считается устаревшей и может быть вообшс удалена из следуюших версий языка. Логический оператор 1Е позволяет выполнить только один оператор в случае истинности логического выраженим: 1т таыраиение) оператор 608 Приложение. Обзоры языков Блочныйоператор1Едопускаетвыбороператоров ттб ...
СПеп ... е!зе ... епс)тб без использования операторных меток. Форма записи такого оператора следующая: !Е тестовое выраиение ТНЕМ - поспедоватепьность операторов на атдепьннх строках ЕЕ5Е 1Е тестовое вь~раиение ТНЕМ - последовательность операторов на отдеяьннх строках ЕЕ5Е поспедоватепьность операторов на атдеяьных строках ЕМ0 1Е В этом операторе части ЕЕ5Е и ЕЕ5Е 1Е можно опустить. Обратите внимание на то, что из-за синтаксиса языка ГОРСТКАХ, в котором каждый оператор должен размещаться на отдельной строке, все разделители 1Е ЕЕ5Е 1Р, ЕЕ5Е и ЕМО 1Р должны размещаться в различных строках программы. В ГОРСТКА)) 90 добавлен оператор СЯ5Е. Его синтаксис следующий: 5ЕЕЕСТ СЯ5Е выражение СЯ5Е 1вариант значения выражения) бпак операторов ..
- другие блоки СЯ5Е СЯ5Е 0ЕЕЯОЕТ блок операторов ЕМ0 5ЕЕЕСТ Значение выражения должно быть целым числом, символьной строкой или логическим значением, а вариант значения выращения должен быть константой или диапазономзначенийконстант. Например,конструкцияСЯ5Е11 . 3, 5: б, 9)означает выбор соответствующего блока операторов, если выражение принимает значение 1, 2, 3, 5, 6 или 9. ОЕЕЯОЕТ является необязательным; если он отсутствует, а значение выражения не удовлетворяет ни одному из перечисленных вариантов, то никакие операторы не выполняются. Оператор цикла.
Оператор цикла языка ГОРСТКАХ 90 имеет синтаксис 00 управление циклон блок операторов ЕМ0 00 Если опутцена конструкция, управляющая циклом, то получается бесконечный цикл, Выход из цикла должен осуществляться с помощью оператора Ех1Т. Для цикла с фиксированным количеством повторений используется следующий синтаксис 00 метка перененная - нач знак, кон знач, приращение Здесь простая целая переменная используется в качестве счетчика повторений цикла, нач знач — выражение, определяющее начальное значение счетчика кон знач определяет конечное значение счетчика, а приращение определяет число, которое должно добавляться к счетчику после выполнения каждой итерации цикла По умолчанию прирап1епие равно единице.
Пустой оператор. Оператор СОМТ1МОЕ является пустым оператором, и его совместное использование с меткой позволяет отмечать любые места в программе. В основном его применяют, чтобы отмечать конец цикла ОО или же в качестве объекта оператора ООТО, Это позволяет зафиксировать положение операторной метки, тогда как любые другие операторы можно в случае необходимости изменять. П.4. ЕОВТВАХ В09 Управление подпрограммами. Оператор САВЕ используется для вызова подпрограмм и задается в виде СЯСС иии подпрограииы(список параиетров) где списон параиетров — зто последовательность имен фактических параметров пли выражений, Подпрограммы-функции — зто подпрограммы, которые возвращают значение и могут просто использоваться в выражениях, например 2 + п)утоп(1, 23, .
ТКОЕ. ). Зттачение возвращается функцией простым его присваиванием имени функции перед выполнением оператора КЕТОКМ: мтГОК - 27 КЕТОКН Имя функции можно использовать в качестве локальной переменной в подпрограмме. Прелыдущая версия языка ЕОКТКАХ имела статическую структуру распределения памяти и не допускала рекурсии.