
- •220300 - Системы автоматизированного проектирования
- •Состав языка и принцип работы компилятора языка высокого уровня
- •Идентификаторы
- •Альтернативный ввод-вывод в стиле с
- •Константы
- •Манипуляторы
- •Преобразования типов
- •Арифметические операции
- •Функции стандартной библиотеки
- •Операции отношения и логические операции
- •Базовые конструкции структурного программирования
- •Цикл с параметром (for)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Рекомендации по программированию циклов
- •Ветвления
- •Условный оператор if
- •Вложенные конструкции
- •Проблемы соответствия if и else во вложенных ветвлениях
- •Условная операция
- •Оператор switch
- •Операторы передачи управления
- •Контрольная работа
- •Массивы
- •Сортировка массива методом выбора
- •Сортировка массива методом пузырька
- •Многомерные массивы
- •Операции со строками
- •Функции
- •Void starline(); // объявление функции (прототип)
- •Передача аргументов в функцию по значению
- •Void charline(char sim, int n); // объявление функции (прототип)
- •Возвращение функцией значения
- •Передача аргументов по ссылке
- •Возвращение значения по ссылке
- •Перегруженные функции
- •Переменные и функции
- •Передача массивов в функции
- •Указатели
- •Указатели и массивы
- •Указатели и функции
- •Указатели и строки
- •Динамический массив и динамическое выделение памяти
- •Ввод/вывод
- •Форматированный ввод/вывод
- •Конструкторы и методы
- •Двоичный ввод/вывод. Бинарные файлы
- •Двунаправленный ввод/вывод
- •Функции стандартной библиотеки для работы с файлами или ввод/вывод в стиле с
Возвращение функцией значения
Когда выполнение функции завершается, она может возвратить значение программе, которая её вызвала. Если тип возвращаемого функцией значения не void, то она может входить в состав выражений или, в частном случае, располагаться в правой части оператора присваивания.
Рассмотрим пример, который демонстрирует применение функции, получающей значение веса в фунтах и возвращающей эквивалентное значение веса в килограммах.
#include <iostream>
#include <conio>
using namespace std;
float perevod(float f); // прототип функции
int main() {
float funt, kg;
cout << "\nVvedite ves v funtah: ";
cin >> funt;
kg = perevod(funt);
cout << "Ves v kilogrammah = " << kg << endl;
getch(); return 0;
}
//---------------функция переводит фунты в килограммы
float perevod(float f) {
float kilograms = 0.453592 * f; // можно просто return (0.453592 * f);
return kilograms;
}
Как видно из данного примера, тип возвращаемого значения указывается перед именем функции при объявлении и определении функции. В момент возвращения, с помощью оператора return, функцией значения происходит копирование значения переменной kilograms в переменную kg.
Количество аргументов у функции может быть сколь угодно большим, но возвращаемое значение всегда только одно. Эта особенность функций является препятствием в тех случаях, когда необходимо вернуть программе несколько значений, однако есть способы, позволяющие возвращать несколько значений при помощи функций.
Д/З №1 |
Напишите программу, позволяющую вычислять сумму двух целых величин с помощью функции, возвращающей суммарный результат. |
Ответ |
#include <iostream> #include <conio> using namespace std; int sum(int s1, int s2); int main() { int a, b; cout << "Vvedite 1-oe slagaemoe: "; cin >> a; cout << "Vvedite 2-oe slagaemoe: "; cin >> b; cout << endl; cout << a << " + " << b << " = " << sum(a, b); getch(); return 0; } int sum(int s1, int s2) { return (s1 + s2); } |
Д/З №2 |
Напишите программу, позволяющую вычислять результат деления двух вещественных чисел. Операцию деления с проверкой ошибок реализуйте с помощью функции. |
Ответ |
#include <iostream> #include <conio> using namespace std; float delenie(float d1, float d2); // или float delenie(float& d1, float& d2) int main() { float a, b; cout << "\nVvedite delimoe: "; cin >> a; cout << "Vvedite delitel: "; cin >> b; cout << endl << a << " / " << b << " = " << delenie(a, b); getch(); return 0; } //--------------------------------------------------------------------------- float delenie(float d1, float d2) { // или float delenie(float& d1, float& d2) float result; if(d2 == 0) { cout << "\nERROR: delenie na nol!"; result = -0; } else { result = d1/d2; } return result; } |