Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Статическое и динамическое распределение памяти
Различают 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 (<управляющая_строка>[, <список_аргументов>); <управляющая строка> является первым обязательным параметром. Определения процедур C Формат функции: [<тип>] <имя>([<описания_параметров>])<блок> В блоке обязательно присутствие инструкции вида return <выражение>, значение которого возвращается в точку вызова. Его обычно называют возвращаемым значением функции. <тип> в заголовке функции указывает тип возвращаемого значения.Если тип значения в инструкции return не совпадает с типом в заголовке, то производится автоматическое преобразование его к типу заголовка. Если <тип> отсутствует, то транслятор подставляет int.
Примеры. float MinFun( floa t x[ ], in t n){ int i, j; float MinValue; ................ return 2*MinValue+5; } Определение функции: Вызов: double Max(double a, double b){ y=Max(cos(x), sin(x)); double y; if (a>b){ y=a; } else { y=b; } return y; } Basic Формат функции: function <имя_функции>([<описания_параметров>]) as <тип> инструкции <имя_функции>=<выражение> End function Возвращаемое значение непосредственно присваивается имени функции. Примеры. function Minfun(x() as single, n as integer) as single dim i as integer, j as integer, MinValue as single, y as single ................................................................................ MinValue=2*y+5 End function Определение функции Вызов function Max(a as double, b as double) as double y=Max(cos(x), sin(x)); dim y as double; if a>b then y=a Else y=b End if Max=y End function C По понятиям языка C подпрограмма – это функция, не возвращающая значения. Для указания типа возвращаемого значения в этом случае используется ключевое слово void (пустой, не возвращающий значение). Пример. void fun(void){ …………. [ return;] ........…… } Для возвращения в точку вызова используется инструкция return; Если возвратпроизводится непосредственно перед замыкающей фигурной скобкой тела процедуры, то употребление инструкции return необязательно. Пример(подпрограмма). Вызов: /* Умножение матрицы на вектор */ Matrix(a, b, c, m, n); void Matrix(double p[10][10], /* Исходная матрица */ double q[10], /* Исходный вектор */ double s[10], /* Вектор-результат */ int l, /* Число строк */ int k){ /* Число столбцов */ int i, j; for (i=0; i<l; i++){ for (s[ i ]=j=0; j<k; j++){ s[ i ]+=p[ i ][ j ]*q[ j ]; } } } /* End Matrix */ В каждой программе должна быть процедура, которой передает управление операционная система и которая остается активной в течение всей работы программы. Эта процедура называется главной и имеет заголовок вида: void main([<параметры>]) <блок> Параметры используются редко, поэтому обычно имеем: void main( void ){ ............ } Basic Формат подпрограммы: sub <имя_подпрограммы>([<описания_параметров>]) .................................. Exit sub .................................. End sub Для возвращения в точку вызова используется инструкция exit sub. Если возвратпроизводится в конце процедуры, то употребление инструкции exit sub не нужно. Пример (подпрограмма). Вызов: ' Умножение матрицы на вектор call Matrix(a, b, c, m, n); sub Matrix(p(9,9) as double, _ q(9) as double, _ s(9) as double, _ l as integer, _ k as integer) dim i as integer, j as integer for i=0 to l-1 s(i)=0 for j=0 to k-1 s(i)=s(i)+p(i)(j)*q(j) next j next i End sub В языке Basic операционная система передает управление либо объекту программы, называемому формой, либо главной процедуре Sub Main.
|
||||||
Последнее изменение этой страницы: 2017-02-08; просмотров: 728; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.186.6 (0.022 с.) |