русс | укр

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

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

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

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


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

Функции


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


Ссылочные переменные

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

Пример объявления ссылочной переменной:

#include <iostream>

using namespace std ;

void main ()

 

{

int t = 13, //инициализация t

&r = t; //r синоним имени t

cout<<”Начальное значение t = ”<<t; //выводит 13

r +=10;

cout<<”Конечное значение t = ”<<t; //выводит 23

}

На переменные ссылочного типа накладываются ограничения:

· нельзя взять адрес переменной ссылочного типа;

· запрещается использовать массивы ссылок;

· не допускается использовать ссылки на битовые поля;

· нельзя создать указатель на ссылку.

Основное назначение ссылок:

· их используют в качестве формальных параметров функции;

· представляют собой удобную альтернативу указателям при обработке крупных структур посредством функций;

· они играют важную роль при создании классов.

 

Функция (function) представляет собой именованный законченный алгоритм, который может неоднократно выполняться в различных местах программы с разными исходными данными, возвращая различные результаты своей работы. Тело функции может сохраняться как в теле основной программы, так и в отдельном файле. Файл может представлять собой библиотеку программиста или пользователя.

Библиотеки функций позволяют:

· использовать одни и те же функции разными программистами;

· повысить структурированность и наглядность программы;

· облегчить написание и отладку программы.

Любая программа на языке С++ содержит одну главную функцию “main” и любое количество других авторских или служебных функций. Действие программы имеющей подпрограммы, начинаются с главной функции “main”. Подпрограмма выполняется только после вызова. Для того чтобы в точке вызова функции была видна функция, ее описание должно находиться выше блока вызываемой функции. При создании функций надо определить:



· класс памяти и видимость переменных функций;

· определение функций (тексты функций);

· объявление функции;

· вызов функции;

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

Определение функции – это текст, который содержит заголовок и тело функции. Тело функции – это блок, в котором определяется тип внутренних переменных и операторы тела функции. Структура функции идентична главной функции “main”.

Структура заголовка функции:

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

· спецификатор класса памяти – спецификатор, который определяет класс памяти функции;

· тип возвращаемого параметра – определяет тип результата, возвращаемого функцией в точку вызова с помощью оператора return. Тип результата, может быть, простой или указатель на любой структурированный тип;

· имя_функции – уникальный идентификатор, с помощью которого функция вызывается для выполнения;

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

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

Область видимости функции является файл, где находится её определение. Код функции закрыт и недоступен для других функций. Данные, определенные внутри какой-либо функции, никак не взаимодействуют с данными из другой функции, поскольку область видимости каждой функции индивидуальна. Переменные, которые определены в теле функции, называются локальными. Они автоматически создаются при входе в функцию и автоматически уничтожаются при выходе из нее. Такая организация переменных называется автоматической. Локальные переменные не сохраняют свои значения между вызовами функции. Если функция находится в одном файле с главной функцией, то тело функции или её прототип должны находиться выше вызываемой функции.

Структура прототипа функции:

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

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

Пример функции, возвращающей значение в точку вызова

#include <iostream>

#include <cmath>

using namespace std ;

// прототипы функций

long double fact ( const int ) ;

double cube(double x);

// главная функция

void main ( )

{

int x = 8 ;

cout << fact ( x ) << endl ;

x = fact ( x ) ; cout << x << endl ;

long double y ;

y = fact ( 150 ) ; cout << y << endl ;

cout<<”Введите целее число до 10”;

cin>> x;

cout<<”Куб числа ”<< x<<” = ”<<cube(x);

cout<<”Куб числа ”<< 1.2<<” = ”<<cube(1.2);

}

// определение вычисления

long double fact ( const int n)

{

int I (n);//переменная I инициализируется значением //переменной n

long double res = 1 ;

while ( i > 1 ) res *= i-- ;

return res ;//тип переменной res совпадает с типом //возвращаемого параметра

}

double cube(double x)

{

return pow(x,3); //в операторе return присутствует //выражение типа double

}

Прототип функции описывает интерфейс функции для компилятора, он сообщает компилятору, коков тип возвращаемого значения, а также количество и типы формальных параметров. Когда функция cube(x) завершает вычисление, она помещает возвращаемое значение в некоторое определенное место (либо в регистр ЦП, а возможно в ОП), затем вызывающая функция (void main ( )) извлекает значение из этого места. Т.К. прототип устанавливает, что cube() возвращает тип double, компилятор знает, сколько байт следует извлечь и как их интерпретировать. Прототипы так же снижают вероятность ошибок в программе. Они обеспечивают следующее:

· компилятор корректно обрабатывает возвращаемое значение:

· компилятор проверяет, указано ли правильное количество аргументов;

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

Прототипирование происходит во время компиляции и называется статическим контролем типов.

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

· возврат результата в точку вызова;

· и по адресам формальных переменных.



<== предыдущая лекция | следующая лекция ==>
Структуры | Объявление формальных параметров


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


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

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

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


 


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

 
 

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

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