Параметры-значения передаются в подпрограмму через стек в виде их копий.Параметры-значения используются для передачи в подпрограмму исходных данных, используемых для расчета.
Параметры-переменные указываются в описании подпрограммы после зарезервированного слова var. При использовании параметра-переменной в подпрограмму передается сама переменная.
Параметры-константы используются в подпрограммах. При передаче параметра-константы как параметра-значения (что, в принципе, возможно) быстродействие программы уменьшается.
№20 Понятие процедура в PASCAL. Соответствие параметров. Параметры-значения и параметры переменные. Локальные и глобальные параметры.
Понятие процедура в PASCAL. Процедура — это независимая именованная часть программы, которую можно вызвать по имени для выполнения определённой в ней последовательности действий.
Структура процедуры имеет следующий вид:
Procedure(формальные параметры: их тип);
Var
(локальные переменные)
#38. Именованные аргументы. Фактические и формальные параметры | Python для начинающих
begin
.
end;
Соответствие параметров. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров.Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными — передающиеся из подпрограммы в вызывающий блок (результаты работы подпрограммы).
Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными (константы и выражения недопустимы), а те, что используются при ее вызове – фактическими (константы, переменные, выражения, массивы).
Формальные параметры в заголовке процедур и функций записываются в виде:
var имя праметра: имя типа;
Параметры-значения и параметры переменные. Если перед именем формального параметра стоит ключевое слово var, то такой параметр есть параметр-переменная (x1 и x2 в заголовке
procedure sq(a, b, c: real; var x1, x2: real)).
Параметры-значения. Если в качестве формального параметра указана переменная, то такой параметр и есть параметр-значение(a, b и с в процедуре sq:procedure sq((a, b, c: real; var x1, x2: real)).
Локальные и глобальные параметры. Локальные параметры объявляются внутри подпрограммы и доступны только самой подпрограмме. Для локальных параметров происходи динамическое выделение памяти в процессе решения задачи.
Глобальные параметры объявляются вне подпрограммы в разделе деклараций основной программы и могут быть доступны как самой основной программе, так и всем ее подпрограммам. Глобальные параметры сохраняют свои значения в течение «всей жизни» программы.
№21 Стандартные модули PASCAL. Процедуры модулей GRAPH и CRT. Возможности работы в графическом режиме.
Стандартные модули PASCAL. В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций. Этимимодулямиявляются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBOS и GRAPH3.
Передача параметров в функцию по значению. Параметры функции. Передача аргументов в функцию. #34
Модуль содержит базовые средства языка, которые поддерживают ввод-вывод, работу со строками, операции с плавающей точкой и динамическое распределение памяти. Этот модуль автоматически используется во всех программах, и его не требуется указывать в операторе uses.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Процедуры и функции в языке Си. Вызов в программах. Формальные и фактические параметры. Соответствие между параметрами.Примеры.
Процедура – подпрограмма, которая получает передаваемые ей параметры и выполняет необходимые действия.
имя_функции(список_параметров)
Функция – отличается от процедуры тем, что дополнительно всегда возвращает одно результирующее значение.
тип имя_функции(список_параметров)
Т.к. функция возвращает значение, то ее вызов может рассматриваться как выражение и может быть использован в других выражениях (математических, логических и т.п.):
a = b + 2 * foo(c);
Вызовфункции
Синтаксис вызова функции:
обозначение_функции(список_фактических_параметров)
обозначение_функции – имя_функции.
список_фактических_параметров – список выражений, количество, тип и порядок следования которых соответствуют списку формальныхпараметров функции.
Порядок вычисления значений фактических параметров перед вызовом функции (в т.ч. преобразования типов) неопределен.
Объявление функции
Объявление (declaration) функции – предварительное описание функции (прототип/сигнатура функции)
Прототип функции определяет:
· Тип возвращаемого значения.
· Тип и число аргументов.
Прототип функции нужен для того, чтобы компилятор мог генерировать корректный код для вызова функции и обработки возвращаемых данных.
Синтаксис объявления функции:
тип имя_функции(список_параметров)
Прототип функции обязателен если:
· Вызов функции встречается в программе раньше по тексту, чем ее определение.
· Функция должна вызываться из других модулей (в этом случае прототип помещается в h-файл).
Объявление и определение функции должны иметь одинаковое количество и типы параметров и возвращаемого значения. Имена параметров могут отличаться (в объявлении имена могут быть опущены, в любом случае компилятор их игнорирует).
// прототип для func1 обязателен
func1 (char d, int y);
// прототип для func2 не обязателен
// можносразуопределение
int func2(char symb, int shft)
return (int)symb — shft;
int main(void)
c = func1(a, b);
c = func2(a, b);
int func1(char symb, int shft)
return (int)symb + shft;
Формальные и фактические параметры
· Формальные параметры существуют в прототипе и теле определения функции. Они доступны внутри функции как локальные переменные.
· Фактические параметры существуют в основной программе (вызывающей функции). Они указываются при вызове функции на месте формальных.
В момент вызова функции значения фактических параметров присваиваются формальным. Имена формальных и фактических параметров могут совпадать.
intfoo(inta, intb)
// привходе a = 1, b=2
int main(void)
z = foo(1, 2.75);
Количество и тип фактических параметров должны точно совпадать с количеством и типом формальных параметров. Причем, они соответствуют друг другу в порядке указания.
Процедуры и функции в языке Си. Параметры-переменные, параметры-значения. Примеры.
Ответ:
Процедура – подпрограмма, которая получает передаваемые ей параметры и выполняет необходимые действия.
имя_функции(список_параметров)
Функция – отличается от процедуры тем, что дополнительно всегда возвращает одно результирующее значение.
тип имя_функции(список_параметров)
Синтаксис определения (definition) функции:
тип имя(список_параметров)
тело функции
· тип – тип возвращаемого значения. Особые случаи:
o void – нет возвращаемого значения (т.е. функция – эквивалент процедуры);
o тип опущен – по умолчанию предполагается тип int
· список_параметров – список формальных параметров (возможно пустой) разделенных запятыми, каждый элемент которого имеет вид:
тип имя_параметра
int sum(int x, int y) | sum(int x, int y) // неявныйтип int | int sum(int x, int y) < int k; k = x + y; return; // нет значения > | int sum(int x, int y) < int k; k = x + y; // поумолчанию return; > |
Параметры-переменные – параметры, служащие для возвращения результатов в основную программу.
Параметры-значение – параметры, служащие для передачи данных из программы в подпрограмму.
В каких случаях использовать параметры значения, а в каких — параметры-переменные:
Как осуществляется замена формальных параметров на фактические в момент обращения к подпрограмме?
· Если параметр определен как параметр-значение, то перед вызовом подпрограммы это значение вычисляется, полученный результат копируется во временную память и передается подпрограмме.
· Если же параметр определен как параметр-переменная, то при вызове подпрограммы передается сама переменная, а не ее копия. Любые возможные изменения в подпрограмме параметра-значения никак не воспринимаются вызывающей программой, так как в этом случае изменяется копия фактического параметра, в то время как изменение параметра-переменной приводит к изменению самого фактического параметра в вызывающей программе.
Описание всех формальных параметров как параметров-переменных нежелательно по двум причинам.
· Это исключает возможность вызова подпрограммы с фактическими параметрами в виде выражений, что делает программу менее компактной.
· В подпрограмме возможно случайное использование формального параметра, например, для временного хранения промежуточного результата, т.е. всегда существует опасность непреднамеренно «испортить» фактическую переменную.
20.Глобальные и локальные переменные в языке Си. Видимость объектов.Примеры.
Ответ:
Глобальные переменные
· Используются для описания данных, которые должны быть доступны в нескольких функциях, модулях.
· Как правило — описываются вне блоков (вначале модуля).
· Существуют все время исполнения программы.
· Главная проблема: сложность контроля за изменением данных (возможно в любых точках программы).
Локальные переменные
· Используются для временного хранения данных (внутри блока, функции).
· Описываются внутри блока
· Уничтожаются при выходе из блока
· Не рекомендуются при описании неизменяемых значений (констант)
int a; int function (int b, char c); void main (void) < int d, e; float f; . >int function (int b, char c) | // Определение глобальной переменной // Объявление функции (т.е. описание ее заголовка) //Тело программы //Определение локальных переменных //Определение локальной переменной //Определение функции и формальных параметров //Тело функции //Определение локальной переменной |
Область видимости — часть текста программы, в которой может быть использован данный объект. Область видимости имени начинается в точке объявления (сразу после объявителя, но перед инициализатором).
Видимость переменных и функций в программе определяется следующими правилами:
· Переменная, объявленная или определенная глобально, видима от точки объявления или определения до конца исходного файла.
· Переменная, объявленная или определенная локально, видима от точки объявления или определения до конца текущего блока.
· Переменные из объемлющих блоков, включая переменные объявленные на глобальном уровне, видимы во внутренних блоках («вложенная видимость»).
· Функции с классом памяти static видимы только в исходном файле, в котором они определены. Всякие другие функции видимы во всей программе.
Последнее изменение этой страницы: 2018-04-12; просмотров: 554.
stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда.
Источник: stydopedya.ru
Формальные и фактические параметры
Формальные параметрызадаются при объявлении подпрограммы,фактические параметры– при вызове подпрограммы. Типы фактических параметров должны быть идентичны типам формальных параметров. Их число должно быть равно числу формальных параметров, должен совпадать и порядок следования фактических параметров с порядком записи формальных.
Механизм передачи данных через формальные параметры реализуется с использованием специальной области памяти –стека. По умолчанию размер стека установлен 16384 байта. Можно изменить объем стека в настройках среды Delphi.
Параметры-значения
Синтаксис задания параметров-значений
В этом случае для фактического параметра создается копия в стеке. При вызове подпрограммы на месте параметра-значения может стоять выражение, совместимое по типу с формальным параметром. В подпрограмме его значение измениться не может. Входные параметры, задают как параметры-значения. Передавать в подпрограмму массивы в виде параметров значений нецелесообразно, так как расходуется лишняя память – в стеке создается дополнительная копия массива.
Параметры-переменные
Синтаксис задания параметров-переменных
При использовании в подпрограммах параметров-переменных в стеке выделяются ячейки для размещения адресов фактических параметров. В отличие от параметров-значений, в подпрограмме значения параметров-переменных могут изменяться. Так как фактические параметры в этом случае передаются по адресу, любое изменение параметра-переменной внутри подпрограммы фиксируется в фактическом параметре. Выходные параметры задают как параметры-переменные.
Параметры-константы
Входные параметры могут передаваться в подпрограмму как параметры-константы. Синтаксис задания параметров-констант
Параметры-константы введены для того, чтобы ключевое слово varсохранить за выходными параметрами, а входной параметр мог передаваться по адресу. Компилятор сам определяет, что передавать по адресу, а что как копию. Например, простые переменные передаются как копии, а массивы – по адресу. Изменить параметры-константы внутри подпрограммы нельзя. Вместо параметров-констант можно подставлять выражения, как и для параметров-значений.
ПроцедураExit
Эту процедуру используют для досрочного выхода из подпрограммы.
Пусть задан массив вещественных чисел. Найти первый отрицательный элемент в этом массиве
type mass= array[1..100] of real;
function Minus(const a1: mass):real;
for i:=1 to High(a1) do
Процедурные типы
В Паскале допускается использование в качестве параметров процедур и функций других процедур и (или) функций. Формальный параметр-процедура (функция) задается в виде заголовка той процедуры (функции), имя которой может быть задано в качестве фактического параметра – при этом имя такой процедуры (функции) и ее формальные параметры выбираются достаточно произвольным образом. В качестве параметров нельзя использовать процедуры (функции), фактические параметры которых вызываются по имени, т.е. параметрами таких процедур могут быть только параметры-значения. Это ограничение снижает гибкость использования процедур, но повышает надежность программ.
Применение процедурных типов требует установления специального дальнегомеханизма компилирования программы, который можно задать, поместив в начало программы директиву компиляторуF+>.
Пример.
type f1= function (x: real):real;
functionfr(x: real):real;
begin fr:=x-cos(x) end;
functionfg(x: real):real;
begin fg:=x*x+sin(x) end;
functionSUM (f:f1;m,k:integer):real;
vari : integer; r : real;
begin r:=0; for i:=m to k do r:=r+f(i); sum:=r end;
Тогда в программе можно записать, например, такой оператор
Источник: studfile.net