Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Передача данных через формальные параметры.

Читайте также:
  1. A. Диффузия с помощью переносчика, диффузия через поры.
  2. C) Передача знаний из различных областей наук.
  3. D. Это объем жидкости, протекающий через сечение трубы в единицу времени;
  4. D.S. ингаляционно во время присупа. 1-2 дозы, при необходимости- повторить через 20-30 мин.
  5. I. Исследование свойств форматов сжатия графических данных
  6. А) через ЖКТ
  7. Абстракция данных.
  8. Анализ данных на основе их сортировки.
  9. Анализ эмпирических данных (результаты анкетного обследования)
  10. Архитектура ПК. Центральные и периферийные устройства, средства ввода и средства вывода данных. Оперативная память и средства внешней памяти. Характеристики процессора.

Формальные параметры могут быть трех разновидностей:

Параметры-значения, параметры - переменные, параметры - кон-

станты.

Параметры-значения описываются следующим образом:

имя(a,b:Тип1; c,d,e:Тип2;...)

Для каждого формального параметра – значения транслятор внутри

подпрограммы резервирует дополнительные ячейки памяти в соответствии с

типом параметра. При вызове подпрограммы, происходит пересылка факти-

ческого параметра в эти ячейки памяти, после чего выполняется подпрограм-

ма. При этом значение ячейки, где находился сам фактический параметр, не

изменяется. Этот механизм обеспечивает, как, защищенность фактического

параметра, так и его универсальность, т.е. то, что фактическим параметром

может быть константа, переменная или арифметическое выражение.

Например:

Varx,u,zreal;

Function sqxy(x,y:real):real;

begin

if x<0 then x:=0;

if y<0 then y:=0;

Result:=sqrt(x)+sqrt(y);

end;

begin

...

x:=-0.5;

u:=4;

z:=sqxy(x,u);//вызовфункции

write(‘ x=’,x,‘ u=’,u,‘ z=’,z);

z:=sqxy(sin(u)+x,1.86);

...

end;

Здесь внутри функции (х, у) – формальные параметры, а в программе

(х, и) и (sin(u)+x, 1.86) фактические.

При работе данной программы будет напечатано

x= -0.5 u=4 z=2

хотя внутри подпрограммы будет вычислено х=0.

Недостатком формального параметра-значения является необходимость

дублирования ячеек памяти в вызывающей и в вызываемой программах, что в

случае, например, параметра-массива приводит к неоправданным затратам

памяти.

Параметры – константы описываются следующим образом:

имя(Consta,b:Тип1; Constc,d,e:Тип2;...)

В этом случае фактическимпараметром может быть только имя пере-

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

торой находится фактический параметр, и все действия производятся над

этой ячейкой. Поэтому после работы подпрограммы в ячейке фактического

параметра при необходимости будет находиться результат.

Например:

typevek = array[1..10] of integer;

procedure sab(n:byte; cоnsta,b:vek; var s:integer);

Var i:byte;

begin

s:=0;

for i:=1 to n do

s:=s+a[i]*b[i];

end;

...

Varx,y:vek;

sk:integer;

begin

Read(x,y);//вводмассивов

sab(5,x,y,sk);

Write(sk);

end;

В процедуре sab массивы a, b описаны как константы, а переменная s

описана как параметр-переменная. Это позволило для массивов x, y сэконо-

мить память, а через параметр-переменную s вывести результат. Ячейку, вы-

деляемую под параметр n, экономнее переслать саму, чем через её адрес, по-

этому для нее используется параметр-значение.




Дата добавления: 2015-01-30; просмотров: 133 | Поможем написать вашу работу | Нарушение авторских прав

1 | 2 | 3 | 4 | 5 | 6 | 7 | <== 8 ==> | 9 | 10 | 11 | 12 | 13 |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав