Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 1036; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.3 (0.009 с.) |