Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Процедуры. Статическое и динамическое распределение памяти




Блоки

Статическое и динамическое распределение памяти

Различают 2 механизма распределения памяти.

Статический: объекты программы получают постоянный адрес в памяти. Занимаемое ими пространство освобождается только после окончания программы.

Динамический: память под объекты выделяется и освобождается во время выполнения программы.

Конструкция присутствует только в языке C.

Блок – это ограниченная последовательность инструкций, задающая границы области действия имен, описанных (или определенных) в нем, и управляющая динамическим распределением памяти для этих данных. Такие объекты называют локализованными в блоке или просто локальными данными. Блок выполняется в естественном порядке следования инструкций.

Формат:

{ <описания и определения> <выполняемые инструкции>}

Пример.

{ int i, j; //Определения локальных данных

for (i=0; i<l; i++){

s[ i ]=0;

for (j=0; j<k; j++){

s[ i ] += p[ i ][ j ]*q[ j ];

}

}

}

Как видно из синтаксиса и примера, блок – это составная инструкция, дополненная описаниями и определениями объектов программы.

Блок – это минимальная структурная единица программы на языке C.

Процедура – это часть программы, которая не выполняется в естественном порядке, а вызывается специальным способом.

В различных языках программирования допускаются внешние и внутренние процедуры. Внешняя процедура не содержится внутри любой другой процедуры, может вызываться из произвольных мест программы и транслироваться отдельно, независимо от других фрагментов программы. Это дает возможность разбить решаемую задачу на логические, по возможности, слабо связанные между собой части и вести их разработку независимо разными людьми. Передача информации между процедурами осуществляется путем передачи аргументов из вызывающей процедуры в вызываемую. В вызываемой процедуре каждому аргументу в порядке их передачи соответствует параметр, тип и организация которого должны совпадать с типом и организацией аргумента. После передачи аргументов в теле процедуры выполняются задуманные действия и результат этих действий может быть передан обратно в место вызова с помощью того же механизма. Этот результат включается в список параметров вызываемой процедуры (следовательно и в список аргументов вызывающей). Иногда для описания этого механизма употребляют термины фактический параметр (вызывающая процедура) и формальный параметр (вызываемая). Внутренняя процедура содержится внутри некоторой другой процедуры и на ее употребление накладываются существенные ограничения. В языках C и Basic допустимы только внешние процедуры.

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

Подпрограмма – это процедура, которая может возвращать произвольное число (от 0 до любого) параметров (результат выполнения) и для ее вызова применяется специальная инструкция.

C

Формально в языке нет понятия подпрограмма, опредено лишь понятие функция. Однако последняя легко преобразуется в подпрограмму и для ее вызова применяется инструкция вида:

<имя_процедуры>([список_аргументов]);

Пример. Подпрограмма умножения матриц.

MultMatrix(a, b, c, m, l, n);

Здесь:

a – левая матрица,

b – правая матрица,

c – матрица-результат,

m – число строк левой матрицы и результата,

i – число столбцов левой=числу строк правой,

n – число столбцов правой и результата.

Basic

Имеется 2 инструкции вызова:

call <имя_подпрограммы>([список_аргументов]) или

<имя_подпрограммы> [список_аргументов]

Пример. Подпрограмма умножения матриц.

call MultMatrix(a, b, c, m, l, n) или MultMatrix a, b, c, m,l, n

Функция – это процедура, в которой выделяется один из возвращаемых объектов (основной результат выполнения). Он не включается в список параметров процедуры. Его значение присваивается имени функции. Таким образом, вызов функции может включаться в произвольное выражение и не требует специальной инструкции. Примером могут служить большинство встроенных функций языка.

Пример вызова.

Basic: y=sqr(x*x+z*z)+abs(x-z)

C: y=sqrt(x*x+z*z)+fabs(x-z);

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

Пример. Функция printf (<управляющая_строка>[, <список_аргументов>);

<управляющая строка> является первым обязательным параметром.




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 352; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.