- •2. Структура и основные элементы программы
- •3.Общее понятие типов данных
- •4. Переменные и константы
- •5.Основные типы данных
- •6. Спецификаторы типов данных
- •7. Определение переменных и констант в программе
- •8. Инициализация переменных различных типов
- •9.Целочисленные типы данных
- •10. Вещественные типы данных
- •11. Особенности представления вещественных типов данных
- •12.Логический тип данных
- •13. Символьный тип данных
- •14. Управляющие последовательности
- •15. Операции и выражения
- •16. Операция присваивания, составные операции присваивания
- •17. Понятие l-значения
- •18. Преобразование типов данных
- •19. Арифметические операции
- •20. Операции инкремента и декремента, их разновидности
- •21. Операции отношения
- •22. Логические операции
- •23. Побитовые операции сдвига
- •24. Побитовые логические операции
- •25. Примеры применения побитовых операций
- •26. Условная операция и ее использование
- •27. Определение объема памяти, необходимого для размещения объектов
- •28. Понятие приоритета операций и его влияние на результаты вычислений
- •31.Флаги форматирования потоков ввода-вывода
- •32. Форматирование ввода-вывода с помощью манипуляторов
- •33.Форматирование ввода-вывода с помощью функций потоков ввода-вывода
- •34. Управление шириной поля вывода и выравниванием данных при выводе
- •35. Управление форматом вывода вещественных значений
- •36. Основные понятия структурного программирования
- •37. Базовый набор управляющих структур
- •39.Условная инструкция (if)
- •40. Инструкция множественного выбора (switch)
- •42. Цикл с постусловием (do while)
- •43. Итерационный цикл (for)
- •46. Инструкция перехода goto
- •47. Понятие рекуррентных вычислений, примеры
- •48. Понятие инварианта цикла
- •49. Понятие и определение массива
- •52. Ввод элементов массивов с клавиатуры
- •53. Декларативная и программная инициализация массивов
- •54. Копирование массивов
- •55. Нахождение минимальных и максимальных значений в массивах
- •56. Сдвиг элементов массивов
- •57. Перестановка элементов в массивах
- •58. Поиск данных в массивах
- •59. Сортировка данных в массивах
- •60. Вычисление сумм и произведений элементов массивов
- •61. Представление текстовых строк в виде массива символов
- •62. Ввод-вывод символьных строк
- •63. Определение фактической длины строки
- •64. Копирование символьных строк
- •65. Основные функции обработки строк библиотеки cstring
- •66. Массивы текстовых строк (двумерные массивы символов)
- •67. Указатели Понятие указателя
- •Работа с указателями
- •68. Арифметика указателей
- •69. Индексирование указателей
- •70. Ссылки
- •71. Определение функции
- •72. Инструкция return
- •73. Завершение работы функции
- •74. Механизмы передачи данных через параметры функций
- •75. Передача данных по значению
- •76. Передача данных через указатели
- •77. Передача данных по ссылке
- •78. Параметры по умолчанию
- •79. Функции с переменным числом параметров
- •80. Inline функции
- •81. Перегрузка функций
- •82. Рекурсия
- •83. Прототипы функций
70. Ссылки
Ссылка- это неявный указатель.
71. Определение функции
Любая функция состоит из двух основных элементов: заголовка и тела функции.
Заголовок функции имеет следующий формат:
<Тип возвращаемого значения> <Идентификатор – имя функции> (<Параметры>)
Тело функции представляет собой блок инструкций языка программирования, разделенных символами “точка с запятой”:
{
<Инструкция 1>;
<Инструкция 2>;
………………….
<Инструкция N>;
}
Например:
double Example (double d, int k)
{
double r;
r = d * k;
return r;
}
Внутри тела функции могут использоваться любые инструкции языка программирования. Количество инструкций не ограничено (но лучше разрабатывать небольшие по размеру функции – их легче отлаживать, меньше вероятность допустить ошибку).
Функция может возвращать одно, сформированное внутри функции, значение через свое имя. Тип данных этого значения определяется элементом заголовка <Тип возвращаемого значения>. Тип возвращаемого значения может быть любым, за исключением типа массива (но указателем он может быть).
Не все функции должны возвращать значения. В этом случае <Тип возвращаемого значения> задается ключевым словом void, которое означает – “пусто” – возвращаемое значение отсутствует:
void ErrMessage (int N)
{
cout << “\nВнимание! Ошибка номер ” << N << “\n\n”;
}
72. Инструкция return
Если функция не возвращает через свое имя никакого значения, то она завершается после выполнения последней инструкции тела функции. При необходимости досрочного завершения работы функции необходимо использовать инструкцию return. Например:
void Proc ()
{
……..
if ( Ошибка )
return;
……..
cout << “\nНормальное завершение функции\n ” ;
}
Если произошла ошибка, то выполняется инструкция return, и выполнение функции немедленно прекращается (осуществляется выход из функции). Если ошибки не было, то функция продолжит свою работу до последней инструкции и нормально завершит свою работу, когда достигнет конца блока тела функции.
Таким образом, инструкция return приводит к немедленному завершению работы функции.
В одной и той же функции могут быть использованы несколько инструкций return.
Если функция возвращает через свое имя некоторое значение, то выход из функции обязательно должен осуществляться с помощью инструкции return. В этом случае эта инструкция не только вызывает окончание работы функции, но и осуществляет передачу возвращаемого функцией значения. Например:
double Calc(double Op1, double Op2, char Oper)
{
switch (Oper)
{
case '+': return Op1 + Op2;
case '-': return Op1 - Op2;
case '/':
if (!Op2)
return Op1 / Op2;
else
{
cout << "Деление на 0!\n";
return 0;
}
case '*': return Op1 * Op2;
default:
{
cout << "Неверная операция!\n";
return 0;
}
}
}
Значение, которое возвращает инструкция return, по типу должно соответствовать типу возвращаемого функцией значения.