Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,

Презентация:



Advertisements
Похожие презентации
Функции Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение. Функция.
Advertisements

Основы информатики Лекция. Функции Заикин Олег Сергеевич
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
Лекция 6 Функции. Объявления и определения Объявление функции – указание имени функции, а также входных и выходных параметров Определение функции – указание.
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Основы информатики Классы Заикин Олег Сергеевич zaikin.all24.org
1 Методы Java Методы класса – это подпрограммы, присоединенные к конкретным определениям классов. Они описываются внутри определения класса на том же уровне,
УКАЗАТЕЛИ. Переменная - это именованная область памяти с заданным типом. [=значение]; int a; //Переменная типа integer с именем a int b=2;// Переменная.
Лекция 10. Введение в ООП. Часть 3 Красс Александр СПбГУ ИТМО, 2008.
ПРОЦЕДУРЫ И ФУНКЦИИ CPascal Подпрограмма – группа операторов реализующая законченный алгоритм и оформленная как самостоятельная синтаксическая единица.
Функции Лекция 8. Назначение функций Функции - самостоятельные программные единицы, спроектированные для решения конкретной задачи. Функции по структуре.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Лекция 8 Область видимости Время жизни. Область видимости Область видимости – характеристика именованного объекта Область видимости - часть текста программы,
Процедуры и Функции Подпрограмма, задаваемая с помощью ключевого слова Sub (subprogram), называется процедурой, а с помощью ключевого слова Function -
Подпрограммы. Функции и процедуры. Кулебякин В.В.
Лекция 1 Классификация С++. Парадигмы программирования Императивная Функциональная Декларативная (логическая) Инструкция 1 Инструкция 2 Инструкция 3 Инструкция.
Лекция 9 Приведение типов. Классификация типов Типы С++ Пользовательские Встроенные (Фундаментальные) Адресные Арифтметические void Указатели Ссылки Массивы.
Лекция 10 ОбъектыЛекция 10 ОбъектыООП Инкапсуляция Возможность совместного хранения данных и кода для их обработки Наследование Возможность расширять существующие.
Переменная - это величина, которая имеет имя, тип и значение. Значение переменной может меняться во время выполнения программы. В компьютерах каждая переменная.
Тема 1. Модульность. Основы модульного программирования Одной из распространенных методик создания программной продукции в настоящее время является структурное.
Транксрипт:

Практическое занятие 6. Функции

Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры, все подпрограммы C++ являются функциями, а процедура вводится как частный случай функции с возвращаемым значением типа void. Для простоты можно представлять себе функцию как маленькую подпрограмму, выполняющую очень специфическую часть общей задачи.

Объявление и определение функций Общая форма стандарта ANSI С объявления и определения функций (поддерживаемого и C++ ) такова: возвращаемый Тип имя Функции( ) { } Примеры double sqr(double у) { return у * у;} char prevChar( char с) { return с - 1; }

Правила объявления и определения функций в C++: При объявлении функции перед именем функции всегда указывается тип возвращаемого ею значения. Если список параметров пуст, круглые скобки после имени функции обязательно должны быть указаны. C++ позволяет вам использовать ключевое слово void для явного указания того, что список параметров пуст, хотя это будет возвратом к стандарту языка С. Список параметров с указанием типов должен иметь следующий вид: [ const] тип 1 параметр 1, [const] тип 2 параметр 2,... Параметры задаются подобно тому, как определяются переменные: сначала вы задаете тип параметра, а потом идентификатор параметра. В C++ параметры в списке разделяются запятыми. Ключевое слово const объявляет компилятору, что значение параметра не должно изменяться функцией.

Правила объявления и определения функций в C++: Тело функции C++ заключается в фигурные скобки ( {}). За закрывающей скобкой не должно стоять точки с запятой. C++ поддерживает передачу параметров как по ссылке, так и по значению. По умолчанию параметры передаются по значению. Для определения параметра, передающегося по ссылке, необходимо после указания типа ввести символ &. Ключевое слово return передает в вызывающую функцию возвращаемое значение, если оно существует. Если тип возвращаемого функцией значения void, вы не обязаны использовать оператор return, кроме того случая, когда вам нужно произвести выход из функции прежде, чем она выполнится целиком.

C++ требует, чтобы либо объявление, либо определение функции предшествовало ее вызову. Объявление функции, называемое обычно прототипом, содержит имя функции, тип возвращаемого функцией значения и количество и тип ее параметров. Указание имен параметров не является обязательным. За списком параметров, после закрывающейся скобки, должна следовать точка с запятой, а не операторный блок.

Пример объявления прототипа: // Объявление прототипа функции sqr double sqr(double); int main() { cout

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

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

Передача по значению void foo(int parm) { parm=parm+1; } int main() { int value = 5; foo(value); cout

Передача по ссылке Если необходимо изменить переменную-оригинал, то следует воспользоваться способом передачи параметра по ссылке. Ссылочный параметр работает так же, как и ссылочные переменные.

Передача по ссылке void foo(int &parm) { parm=parm+1; } int main() { int value = 5; foo(value); cout

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

Передача с помощью указателя void fоо( int *parm) // используется указатель //на переменную целого типа { ++*parm; // не забудьте символ * } int main() { int value = 5; foo(&value); // передается адрес переменной cout

Функции и переменные

Локальная переменная функции существует только во время вызова этой функции. Как только происходит возврат из функции, испол­няющая система удаляет локальные переменные и освобождает па­мять. Следовательно, между вызовами функции содержимое локальных пере­менных теряется. Инициализация локальных переменных производится каж­дый раз при вызове функции.

В практике программирования встречаются случаи, когда желательно сохранение значения локальной переменной между вызовами функ­ции. Этот тип локальной переменной называется статической переменной. C++ позволяет вам определить локальную переменную, сохраняющую свое значение между вызовами функции, простым применением ключевого слова static слева от описателя типа. Статическая переменная обычно инициализируется. Инициализация выполняется один раз, при первом вызове функции.

Досрочный выход из функции Обычно бывает нужным прервать выполнение функции при наступлении условий, не позволяющих продолжать вычисления. Такой выход в C++ выполняет оператор return. Для функции типа void используется return без возвращаемого выражения. Во всех других функциях оператор return должен возвращать значение, которое может объяснять причину возврата из функции.

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

Аргументы по умолчанию это простое и одновременно мощное языковое средство, которое означает следующее: если вы опустили значение аргумента для параметра, который имеет аргумент по умолчанию, для этого параметра автоматически будет использовано значение по умолчанию.

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

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

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