Cтраница 3
Функциональные языки - это языки, предназначенные для описания алгоритмов в виде композиций функций. Оператора присваивания в таких языках нет, его роль выполняет механизм передачи аргументов. [31]
Простой и процедурный блоки PL / I различаются, в основном, лишь способом обращения к ним: вход, выход, передача аргументов. [32]
Заметим, что основная программа ARCHIVE имеет информацию об этих переменных, поскольку они используются в некоторых из вызываемых ее подпрограмм и поскольку необходима инициализация, хотя в ней не используется большинство из них. Глобальность блочной структуры удобна для работы с группой связанных переменных, но она также опасна, поскольку использование глобальных переменных менее контролируемо, чем передача аргументов, и может затруднить определение того, в каких программах какие переменные используются. Альтернативой этому является объединение группы связанных переменных в виде записи и передача ее как одного аргумента в подпрограммы, к которым необходимо обратиться. В действительности это не решает проблемы, если разным подпрограммам потребуются разные части записи. Мы пытаемся максимально ограничить объем переменных для этих программ, которые нужно знать, но решение об использовании глобальных переменных или аргумента должно приниматься в каждом отдельном случае; автоматического способа принятия решения не существует. [33]
Если он длиннее 8 знаков, то его следует разделить на части длиной не более 8 знаков, иначе все знаки аргумента после восьмого при передаче будут потеряны. Части должны быть отделены друг от друга по крайней мере одним пробелом. При передаче аргументов главной процедуре разделяющие пробелы удаляются. Перед наклонной чертой и после нее перед операндом аргумент должен ставиться по крайней мере один пробел. Закрывающая скобка при описании режимов может не ставиться. [34]
Это относится не только к структурам и классам, но и к простым типам данных, таким, как int или long. При передаче аргументов по значению, функции передается не сам объект, а его копия. При передаче по ссылке функция получает указатель на объект. Это имеет два основных следствия. Во-первых, функция может изменить объект, переданный по ссылке. Во-вторых, исключаются накладные расходы, связанные с созданием копии объекта. [35]
Напомним, JSJ обозначает переход без изменения регистра J. Когда число параметров невелико, предпочитают передавать их в подпрограмму или посредством регистров ( как г. 3 использовался для передачи параметра п в MAXN, a rll - для передачи параметра п в MAXIMUM), или посредством фиксированных ячеек памяти. Другим, нередко удобным способом передачи аргументов оказывается просто список этих аргументов вслед за командой JMP; поскольку значение J-регистра известно, подпрограмма может обращаться к своим параметрам. [36]
У этой функции три аргумента, которыми являются имена созданных полей. С помощью операторов Dim и Set происходит передача аргументов ф - н нии. Предполагается, что функция будет использоваться в форме с именем Фота. Оператор И позволяет функции работать, если флажок сброшен и дата P. Select Case Date - Pdata) функция возвращает одну из фраз. [37]
По этому оператору выполнение программы продолжается с указанного номера оператора. По оператору GOTO 0; выполнение программы возобновляется с ее начала. При этом начальные значения получают только переменные с атрибутом INITIAL, все остальные считаются неинициализированными; открытые файлы закрываются; передача аргумента главной процедуре не повторяется. [38]
Системный вызов exec, выполненный успешно, уничтожает предыдущие сегменты данных, стека и процедур, а вместо них загружает информацию из указанного файла. Затем управление передается на точку входа. После выполнения exec возврат в исходную программу осуществляется только в следующих случаях; файл не найден; файл не является исполняемой программой; превышен допустимый объем памяти; для передачи аргументов требуется более 512 байтов; файл не разрешается выполнять данной группе пользователей. [39]
Интересно, что функции-элементы printMilitary и printStandard не получают никаких аргументов. Это происходит потому, что функции-элементы неявно знают, что они печатают данные-элементы определенного объекта типа Time, для которого они активизированы. Это делает вызовы функций-элементов более краткими, чем соответствующие вызовы функций в процедурном программировании. Это уменьшает также вероятность передачи неверных аргументов, неверных типов аргументов или неверного количества аргументов. [40]
Действия, выполняемые программой при представлении запросов к субмонитору, очень просты В R1 загружается код обслуживания - небольшое целое число, используемое для выбора задачи, которую. Ассоциации между кодами обслуживания и задачами устанавливаются при ассемблировании субмонитора. Кроме того, эти ассоциации известны подпрограммам порождения кода в ХСОМ Список действительных кодов обслуживания приведен в габл. Во время запроса субмонитору может также передаваться до двух аргументов. Подробнее передача аргументов субмонитору рассматривается ниже. [41]
В программе 3.5 предполагается, что размер массива должен быть известен заранее. Чтобы выполнить программу для другого значения N, следует изменить константу N и повторно скомпилировать программу. В программе 3.6 показано альтернативное решение: пользователь может ввести значение N, после чего будут выводиться простые числа, меньшие этой величины. В обоих осуществляется передача функциям массивов в качестве аргументов. Первый механизм обеспечивает передачу аргументов командной строки главным программам в массиве argv с размером argc. Обзор массивов отложим до раздела 3.7, а пока примем на веру, что переменная N принимает значение, вводимое пользователем при выполнении программы. [42]
Программа на языке СИ состоит из одной или нескольких функций. В тексте программы функции помещаются одна за другой; начало и конец каждой функции, составленной из операторов, выделяются парой фигурных скобок. В каждой программе должна быть функция по имени main, с которой начинается выполнение программы. Связь между функциями осуществляется через аргументы и значения, возвращаемые функциями, а также через внешние переменные. Одна из особенностей языка СИ заключается в том, что передача аргументов функции осуществляется копированием, что исключает опасность нежелательной модификации исходных аргументов самой функцией. Функции в языке СИ могут использоваться рекурсивно. [43]