Формальные и фактические параметры программы

Параметры-значения передаются в подпрограмму через стек в виде их копий.Параметры-значения используются для передачи в подпрограмму исходных данных, используемых для расчета.

Параметры-переменные указываются в описании подпрограммы после зарезервированного слова 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) и не забудь поделиться с друзьями:

Читайте также:
Лучшие программы для ipad для детей

Источник: 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; >
Читайте также:
Кто является разработчиком программы 500 дней сахаров горбачев

Параметры-переменные – параметры, служащие для возвращения результатов в основную программу.

Параметры-значение – параметры, служащие для передачи данных из программы в подпрограмму.

В каких случаях использовать параметры значения, а в каких — параметры-переменные:

Как осуществляется замена формальных параметров на фактические в момент обращения к подпрограмме?

· Если параметр определен как параметр-значение, то перед вызовом подпрограммы это значение вычисляется, полученный результат копируется во временную память и передается подпрограмме.

· Если же параметр определен как параметр-переменная, то при вызове подпрограммы передается сама переменная, а не ее копия. Любые возможные изменения в подпрограмме параметра-значения никак не воспринимаются вызывающей программой, так как в этом случае изменяется копия фактического параметра, в то время как изменение параметра-переменной приводит к изменению самого фактического параметра в вызывающей программе.

Описание всех формальных параметров как параметров-переменных нежелательно по двум причинам.

· Это исключает возможность вызова подпрограммы с фактическими параметрами в виде выражений, что делает программу менее компактной.

· В подпрограмме возможно случайное использование формального параметра, например, для временного хранения промежуточного результата, т.е. всегда существует опасность непреднамеренно «испортить» фактическую переменную.

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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда.

Читайте также:
Нужна ли программа firebird

Источник: 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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru