Аргументы задаваемые по умолчанию




Лабораторная работа N 4.

 

ИССЛЕДОВАНИЕ ФУНКЦИЙ ЯЗЫКА Си++.

Цель работы – изучить синтаксис объявления и вызова функций языка Си++

 

Краткие теоретические сведения – В данной лабораторной работе исследуется синтаксис языка Си++ необходимый для объявления и использования функций.

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

Синтаксис объявления функции следующий:

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

{

//последовательность инструкций определяющих тело функции

………..

return (возвращаемое значение соотв. типу_результата);

}

Правила объявления функций

  1. Тип результата функции записывается до имени функции.
  2. Если список параметров пустой, то используются круглые скобки () в круглых скобках в этом случае разрешается использование ключевого слова (void) что подчеркивает отсутствие списка аргументов хотя это и не является обязательным условием.
  3. Список типов параметров содержит список параметров с указанием их типов следующего формата:

[const] тип1 параметр1, [const] тип2 параметр2,…

Ключевое слово const указывает на то, что данный параметр не может быть изменен внутри тела функции.

  1. Тело функции заключается в фигурные скобки { }. После функции точка с запятой не ставиться.
  2. С++ поддерживает передачу аргументов по значению, по ссылке и по указателю. (По умолчанию аргументы передаются в виде значений). При передаче по ссылке используется синтаксис вида:

[const] тип1& параметр1, [const] тип2& параметр2,…

  1. C++ поддерживает локальные константы, типы данных и переменные. Эти элементы данных могут появляться во вложенных операторах (т.е. внутри тела функции), вложенные функции в языке С++ не поддерживаются.
  2. Ключевое слово return возвращает значение функции. Тип возвращаемого значения должен соответствовать типу результата указанному при объявлении функции.
  3. Если тип результата void то использование return является необязательным, в этом случае return может быть использован например для преждевременного выхода из функции по какому либо условию при этом сразу после ключевого слова return ставиться точка с запятой return;

В С++ используется либо описание, либо определение функции перед ее использованием.

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

Локальные переменные в функциях

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

Внешние переменные (глобальные) – это переменные которые могут быть использованы внутри любой подпрограммы т.е. эти переменные существуют во время всего цикла выполнения программы.

Статические переменные в функции

Локальные переменные которые сохраняют свои значения между вызовами функций называются статическими переменными, т.е. несмотря на то, что данные переменные недоступны из других подпрограмм, а также из главной программы они сохраняют свои значения (находятся в оперативной памяти) во время всего цикла выполнения программы аналогично глобальным переменным. Для объявления статических переменных используется синтаксис: static тип_переменной имя_переменной[=нач. значение];

Функции типа inline.

Синтаксис объявления функций типа inline следующий:

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

Объявление функции с ключевым словом inline указывает компилятору на то, что во всех местах программы где будет осуществляться вызов данной функции вместо вызова функции необходимо подставить ее скомпилированные код т.е. вместо вызова подставить тело функции. Применение функций типа inline позволяет ускорить время выполнения программы однако при этом генерируется избыточный программный код что приводит к росту размера самой исполняемой части программы, поэтому при необходимости рекомендуется использовать функции небольшого размера (т.е. имеющие немного операторов внутри тела функции) в качестве inline функций. Альтернативным решение к использованию функций типа inline является применение директивы #define, однако при этом не обеспечивается проверка типов параметров.

Аргументы задаваемые по умолчанию

Правила использования аргументов по умолчанию

1. После того, как назначен по умолчанию аргумент какому либо параметру необходимо сделать тоже самое для всех последующих параметров данного списка.

2. Необходимо обеспечить аргумент для каждого параметра, который не имеет аргумента по умолчанию.

3. Можно опускать аргумент для параметров, который имеет задаваемый по умолчанию аргумент.

4. Если вы опустили аргумент для какого либо параметра с аргументом по умолчанию, аргументы для всех последующих параметров должны быть опущены.

Перегрузка функций

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

Список параметров функции называется сигнатурой функции.

 

Вопросы для самоконтроля

1. Назовите основные правила используемые при объявлении функций.

2. В чем основные сходства и отличия между описанием и определением функции?.

3. Назовите основные особенности глобальных, локальных и статических переменных при их использовании в функциях.

4. Какое основное назначение функций типа inline?

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

6. Какие основные особенности перегрузки функций в языке С++?

 

Задание на работу Выполнить демонстрационные программы и сделать выводы письменно.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: