КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |