русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Обращение к функции и ее прототип.


Дата добавления: 2013-12-23; просмотров: 1064; Нарушение авторских прав


Функция для вычисления скалярного произведения векторов.

Функция для вычисления объема цилиндра.

Функция для вычисления объема цилиндра.Пусть у функции имеются два параметра, значение большего из которых считается радиусом цилиндра, а меньший определяет значение высоты цилиндра.

Пусть g и h - параметры; тогда объем цилиндра равен g*g*h*PI, если g>h, или g*h*h*PI, если g<h, где PI - число p.

Текст нестандартного классического определения функции:

 

 

Первые две строки — заголовок функции с именем volume; далее - тело функции. Параметры специфицированы как вещественные типа float.Для возврата из функции и передачи результата в точку вызова в теле функции используется оператор

 

 

Операторов returnв теле функции может быть несколько. Например, для решения той же задачи определим другую функцию (в рекомендуемом современном формате):

 

Функция для вычисления скалярного произведения векторов.Скалярное произведение двух векторов n-мерного линейного пространства вычисляется по формуле

 

 

Функция для вычисления указанного произведения может быть определена следующим нестандартным образом:

 

 

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

Первый параметр n специфицирован как целая переменная типа int. В спецификации массивов-параметров типа floatпределы изменения индексов не указаны, что позволяет при обращении к функции использовать вместо а и b в качестве фактических параметров одномерные массивы такого же типа любых размеров (с любым количеством элементов). Конкретные пределы изменения их индексов задает фактический параметр, заменяющий формальный параметр int n.



Современный формат (введенный стандартом) предусматривает такую запись заголовка:

 

floatScalar_Product (intn, floata[ ],floatb[ ])

 

Тело функции остается одинаковым при обоих форматах определения заголовка.

Обращение к функции и ее прототип.Как уже говорилось, для обращения к функции используется элементарное (первичное) выражение, называемое "вызов функции":

имя_функцш (список_фактических_параметров)

 

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

 

 

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

тип_результата имя_функции( );

 

Такое описание не определяет функцию, не указывает количество и типы ее параметров, а только описывает тип возвращаемого значения. Например,

 

floatvolume( );...

... z=volume(z-1.0,le-2);

 

Переменная z получит вещественное значение (объем цилиндра), вычисленное с помощью функции volume(). Если описание floatvolume(); опустить, то в вызывающей программе функция volume() воспринимается как целочисленная, т.е. результат будет неверен.

Стандарт языка Си предусматривает обязательное описание функции со стандартным заголовком с помощью прототипа. Прототип в отличие от старомодного описания включает спецификацию параметров:

 

тип_результата имя_функции (спецификация_формалъных_параметров);

 

Здесь спецификация формальных параметров представляет собой список типов и, возможно, имен параметров функции.

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

 

float w(float, float);

Scalar_Product (intn, float a[ ], floatb[ ]);

 

Имена формальных параметров в прототипе функции w( ) обычно не указаны.

Отметим, что применение прототипа предполагает только стандартную форму записи заголовка функции. Использование прототипа несовместимо со "старомодным" видом заголовка. Мы настоятельно рекомендуем стандартный вид заголовка и применение прототипов.

И прототипы функций, и старомодные описания функций необходимо размещать наряду с определением объектов в теле функций до исполняемых операторов.

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



<== предыдущая лекция | следующая лекция ==>
Определение функций. | Вычисление площади треугольника.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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