
- •Определение объекта типа функции.
- •Void main ( void )
- •Void main (void) // 13
- •Проблема обмена информацией (данными) между функциями.
- •Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение.
- •Void main ( void )
- •Прототип (описание) функции. Понятие глобального объекта.
- •Void main ( void )
- •Void main ( void )
- •Void main ( void )
- •Передача параметров по ссылке.
- •Int& float& char&
- •Void countX (float a, float b, float c, float& X )
- •Void main ( void )
- •Void countX (float a, float b, float c, float& X )
- •Void main ( void )
- •Обмен данными между функциями через глобальные объекты. Функции без возвращаемого значения. Функции без параметров.
- •Void countX (void)
- •Void main ( void )
- •Смешанный обмен данными между функциями
- •Void main ( void )
- •Void countX (float c, float& X)
- •Void main ( void )
- •Программы, состоящие из двух и более файлов.
- •Void countX (float c, float& X); // описанa функция countX для расширения ее // области видимости. Ее определение
- •Void main ( void )
- •Void countX (float c, float& X)
ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ
Государственное образовательное учреждение высшего
профессионального образования
Московский технический университет связи и информатики
Кафедра вычислительной математики и программирования
УЧЕБНО-МЕТОДИЧЕСКОЕ
ПОСОБИЕ
ПО ДИСЦИПЛИНЕ
«Информатика»
КУРС 1
ФУНКЦИИ В ЯЗЫКЕ С++
Факультет ОТФ–2
Составитель: М.И. Кувыкина, канд. техн. наук, доцент
Москва 2010 г.
Модульная структура программы в СИ++. Объект типа функция.
Любой алгоритм можно сформулировать в виде последовательности операций, выполняемых над некоторыми объектами, и записать эту последовательность операций в виде программы. С увеличением алгоритмов и соответственно объема программы невозможно удержать в памяти все ее детали. Возрастает трудоемкость создания таких программ и уменьшается их надежность. К счастью программисты давно используют принципы структурного программирования, разбивая программу на отдельные процедуры, реализующие определенные операции алгоритма. Каждая процедура решает свою узкоспециализированную задачу, может обращаться к другим процедурам, а для этого ей необходимо уметь обмениваться данными с этими другими процедурами. Понятие подобной процедуры в языке С++ конкретизируется в виде объекта типа функции.
Такой стиль программирования, использующий принципы структурного программирования, ведет к повышению степени абстракции программы и к упрощению ее структуры, повышает надежность программы. Разделение программы на объекты-функции позволяет избежать избыточности кода (многократного повторения одного и того же кода), поскольку функцию записывают один раз, а вызывать ее на выполнение можно многократно из разных точек программы. Упрощается процесс отладки, т.к. каждую функцию можно отладить отдельно. Дальнейшим шагом в повышении уровня абстракции является объединение функций и связанных с ними данных в отдельные файлы - исходные модули, компилируемые раздельно. Получившиеся в процессе компиляции объектные модули объединяются в исполняемую программу с помощью компоновщика.
Определение объекта типа функции.
Объект – это область памяти, которая имеет имя.
Каждый объект характеризуется своим типом. Когда задается тип объекта, системе сообщается:
Размер объекта (система знает, сколько байт выделить под этот объект);
Способ кодировки информации в этой области памяти;
Какие действия можно делать над информацией, записанной в этой области памяти и как их делать.
Объект типа функция относится к группе производных типов. Правила работы с этими объектами (размер, способ кодировки, действия) определил разработчик языка, они заложены в компилятор языка и система их «знает». Эти правила необходимо изучить для того, чтобы уметь работать с этими объектами.
Функция – это имя типа объекта. Но объекты типа функция обычно называют просто функциями.
Для того, чтобы в программе можно было работать с объектом, его надо физически создать, т.е. программист на языке С++ должен дать указание на его создание – на выделение памяти требуемого размера и кодировки. Выделенной памяти должно быть присвоено имя. В этом случае говорят, надо определить (defined) объект. Определить объект можно только один раз!!!!!!!!
Объект, который определен, одновременно и описан (declared).
Итак, определение объекта типа функция состоит из заголовка функции и тела функции.
Вот как синтаксически выглядит определение функции:
тип_возвращаемого_значения имя_объекта_функции (список_формальных_параметров )
{
/* Это тело функции. Здесь пишутся инструкции, которые определяют объекты, создаваемые внутри функции – локальные объекты.
Здесь пишутся инструкции, задающие действия над этими объектами - алгоритм работы функции
*/
}
Заголовок функции это:
тип_возвращаемого_значения имя_объекта_функции (список_формальных_параметров )
Заголовок функции задает, каким образом организован обмен данными между ней и вызвавшей ее объектом–функцией. То есть заголовок определяет, какие данные и как функция получает от функции, вызвавшей ее, а также какие результаты своей работы функция возвращает и как возвращает в точку ее вызова.
Тело функции, заключено в фигурные скобки и описывает с помощью инструкций алгоритм обработки данных, полученных функцией либо через параметры от вызвавшей ее другой функции, либо каким-нибудь другим способом (например, с клавиатуры):
{
/* Это тело функции. Здесь пишутся инструкции, которые определяют объекты, создаваемые внутри функции – локальные объекты.
Здесь пишутся инструкции, задающие действия над этими объектами -алгоритм работы функции
*/
}
Как известно, определить объект типа функция, как и любой другой объект, можно только один раз. И как любой другой объект функцию порой приходится описывать. Зачем? Для того, чтобы уметь правильно с этим объектом работать, когда его по каким либо причинам «не видно».
Как выглядит инструкция описания функции? Синтаксически – это точная копия заголовка функции, после которого стоит точка с запятой (ведь это инструкция!):
тип_возвращаемого_значения имя_объекта_функции (список_формальных_параметров ) ;
Для инструкции описания функции есть специальное название – прототип (prototype).
По инструкции описания объект не создается, а только объявляется, что такой объект должен быть создан и его характеристики – имя и список параметров будет таким, каким он описан.
В примере тела функции показано, как записать в программе на языке С++ много строковый комментарий, в котором можно дать нужные пояснения и который системой не воспринимается как распознаваемый текст. Этот текст только для чтения программистом:
/* это много
строковый
комментарий */
Комментарий, который занимает одну строку, можно создать так:
// это комментарий в одну строку
В комментарии можно использовать любые символы.
Главная функция в СИ++ как точка входа в программу.
Так как программа может состоять из одной или нескольких объектов-функций, то система должна знать, с какой функции следует начинать выполнять программу.
Такой функцией всегда будет функция, которая имеет имя main:
// тип_возвращаемого_значения имя_объекта_функции(список_формальных_параметров )