Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/225: Рейтинг темы: голосов - 225, средняя оценка - 4.96
73 / 73 / 14
Регистрация: 15.01.2013
Сообщений: 284

Возврат значения функции

26.04.2014, 22:38. Показов 46728. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в функцию? функция выполняет чтото, как она в себя может принимать результат) какая от этого практическая польза? ведь результат можно записать в любую переменную/переменные и потом использовать, а как это вернуть в функцию? почему вернуть, я что у ней чтото отнимал? Может мне кто-нибудь на пальцах объяснит что это такое, былбы рад увидеть примеры. Просто везде это описывается как чтото элементарное и само собой понятное, мне эта фраза абсолютно не ясна, не могу уловить логического смысла. Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2014, 22:38
Ответы с готовыми решениями:

Возврат значения из функции
Добрый вечер. Вопрос следующий , как возвратить из функции create последнее значение ЛС , чтоб в дальнейшем использовать в main. ...

Возврат копии значения из функции
Сегодня нашел информацию о том, что можно сохранять ссылку на временный объект, например #include <iostream> int foo() { ...

Возврат значения из полиморфной функции
Доброго времени суток всем. Ребят не знаю как правильно сформулировать свой вопрос. Суть вот в чем: В базовом классе Cell определена...

26
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
26.04.2014, 22:59
Функция получает на вход некие параметры, обрабатывает их как-то внутри и в ответ на свой вызов возвращает вызывающей стороне некоторое значение, результат своей работы.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
26.04.2014, 23:00
MELkey, что-то я вас плохо понял.Вас интересует возвращаемое значение функции?
0
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 121
26.04.2014, 23:06
Допустим я твой начальник. Я даю тебе какую-нибудь информацию для работы. Ты моя функция. Я тебе передаю информацию(значение), ты мне отчет(возвращаемое значение). Вот и все. Только ты сам определяешь, что передавать, а что забирать из функции.
0
 Аватар для cooller
571 / 539 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
26.04.2014, 23:10
Цитата Сообщение от Nick Alte Посмотреть сообщение
Функция получает на вход некие параметры
ну ведь может и не получать
0
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 121
26.04.2014, 23:18
Например,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int sum (int a) // int вначале означает тип возвращаемого параметра
{
int b;
b = a +5;
return b; // можно просто return a + 5;
}
 
//Наша функция прибавляет к любому целочисленному числу цифру 5, посмотрим как это работает:
 
int main()
{
int x = 4;
int y = sum(x);
 
cout << y << endl; // y = 9, т.к. 4 + 5 = 9, функция работает корректно
 
return 0;
}
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.04.2014, 00:44
Цитата Сообщение от MELkey Посмотреть сообщение
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в функцию? функция выполняет чтото, как она в себя может принимать результат) какая от этого практическая польза? ведь результат можно записать в любую переменную/переменные и потом использовать, а как это вернуть в функцию? почему вернуть, я что у ней чтото отнимал?
Хотел было продолжить метафоры стеком, то перечитав стартовый топик, понял, что каша в голове ТС заварилась изрядная. Попытаюсь размешать.
возвращается результат (куда? в функцию? - нет, в функцию уже ничего не возвращается. Она свое дело сделала и ее уже нет (пока еще раз не позовешь). А дело ее - дать тебе результат. Вернуть. Тебе. В благодарность за то, что ты ее вызвал. Твое дело - этот результат тут же схватить - записать в любую переменную/переменные и потом использовать,
а как это вернуть в функцию? - а зачем? Ей от тебя уже ничего не нужно. Кроме очередного приказа.
почему вернуть, я что у ней чтото отнимал? - нет. Ты ей дал - команду и параметры. "Эй, жена, дай пожрать!" - это без параметров - получай бутерброд. "Милая, приготовь курочку, как ты умеешь" - это уже с параметром (остальные передаются по-умолчанию)
Ну, дальше у кого на сколько фантазии хватит, а то меня занесет...
Суть в том, что в этом патриархальном варианте вы своей "функции" совершенно ничего не должны. Единственная ваша забота - создать ее. И так, чтоб она работала правильно.
3
73 / 73 / 14
Регистрация: 15.01.2013
Сообщений: 284
27.04.2014, 07:46  [ТС]
Ну про практическую пользу пока что остаётся только догадываться, потому что кроме кроме нагромаждений я мало что увидел)) Т.е. это удобно использовать только если в функции здоровенные вычисления? А зачем в return использовать детерминированные значения? что нам даёт return 0? Информацию для ОС о том что программа завершила свою работу нормально. Зачем информировать ОС о нормальной работе программы? если чтото ненормально, она сама ничего не сделает/выдаст ошибку/упадёт. Зачем в памяти/ в исходнике/ в моей голове использовать лишнее место. Я прекрасно понимаю, что всё это продумывалось не дуракими, а следовательно в этом есть какаято суть, даёт возможность облегчить жизнь программисту. Вот пока я не понял суть и полезность этого, мне трудно с этим разобраться. Пример:
Ученику физики рассказали про дефект масс, про ядерные реакции, а как работает ядерный реактор не рассказали.
0
Заблокирован
27.04.2014, 09:03
MELkey, допустим вы хотите реализовать какую-то программу, и в ней встречается много повторяющегося кода, отличающегося одним-двумя параметрами. Вместо того, что копировать и вставлять используют функции.
Да и вообще это очень удобная вещь
1
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
27.04.2014, 09:16
Цитата Сообщение от MELkey Посмотреть сообщение
Ну про практическую пользу пока что остаётся только догадываться, потому что кроме кроме нагромаждений я мало что увидел
Допустим есть часть кода которая будет выполнятся многократно с разными параметрами.Ты можешь копировать эти строчки постоянно,нагромождая код,а можешь создать функцию,которая позволит этого избежать.Есть задачи,которые решаются рекурсивно,и там без функции не обойтись.Кроме того,разбив программу на несколько функций,отвечающих за одну задачу тебе будет проще локализировать и исправить ошибку.
1
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 121
27.04.2014, 09:55
Конечно, функции - это очень удобная вещь в плане того, что одно и то же действие ( сколь угодно большое) можно вызывать одной строчкой и при этом сколь угодно раз. Но реальная мощь функций, как мне кажется, открывается при изучении объектно-ориентированного программирования. Когда функция является методом класса или конструктором (любого типа) действительно осознаешь всю мощь функций.
Пока просто представьте функцию как некий макрос. Грубо говоря, ввел имя функции вместе с параметрами и все автоматически делается. Удобно же.

Вот тут я сделал простой пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
using namespace std;
 
 
//Функция считает скорость
void speed(double S, double t) // void перед именем функции означает отсутствие возвращаемого параметра
{                                              //По этой причине у нас отстутствует return в теле функции
    
    double sp = S/t;
    cout << "Our speed is  " << sp << endl;
    cout << "I can write everything and I don't care becouse I can show this message by one command" << endl;
}
 
//------------------------------------------------------------------------------------------------------------------
int main()
{
 
//Допустим нам надо получить четыре значения скорости
 
//Это можно сделать следдующим образом:
    double SP1 = 0;
    SP1 = 5.0/4.0;
    cout << "Our speed is  " << SP1 << endl;
    cout << "I can write everything and I don't care becouse I can show this message by one command" << endl;
 
    double SP2 = 4.0/3.0;
    cout << "Our speed is  " << SP2 << endl;
    cout << "I can write everything and I don't care becouse I can show this message by one command" << endl;
 
 
    double SP3 = 8.0/2.0;
    cout << "Our speed is  " << SP3 << endl;
    cout << "I can write everything and I don't care becouse I can show this message by one command" << endl;
 
    double SP4 = 3.0/1.0;
    cout << "Our speed is  " << SP4 << endl;
    cout << "I can write everything and I don't care becouse I can show this message by one command" << endl;
 
    cout << endl << endl;
 
    //Фуг! Это было мучительно и долго. Если бы возле меня была девушка, то она бы уже уснула! 
    //Попробуем задействовать нашу функцию!
 
    speed(5,4);   speed(4,3);  speed(8,2);  speed(3,1); // Всего одна строчка!
 
    //21 век - век автоматизации. Не надо выполнять большие действия с большими затратами времени.
    //Надо стараться все автоматизировать так, чтобы можно было нажать на кнопку и забыть.
 
    //Надеюсь все было понятно.
 
    return 0;
}

Лично я изучаю программирование на С++ по книге Лафоре(помимо лекций в институте). Всем советую!
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.04.2014, 10:31
Цитата Сообщение от MELkey Посмотреть сообщение
Зачем информировать ОС о нормальной работе программы? если чтото ненормально, она сама ничего не сделает/выдаст ошибку/упадёт.
Ну, во первых bat-, bash-скрипты умеют анализировать код возврата программы. А во-вторых уже и не требуется

Добавлено через 8 минут
ИМХО, топик был создан не без лукавства. Просто ТС таким образом решил заставить нас еще больше полюбить функцию, и за одно понять, за что же мы ее так любим
0
27.04.2014, 10:47

Не по теме:

Цитата Сообщение от Faoxis Посмотреть сообщение
Но реальная мощь функций, как мне кажется, открывается при изучении объектно-ориентированного программирования.
Реальная мощь функций открывается при изучении функционального программирования. Искренне ваш, К.О.

0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.04.2014, 10:51
Nick Alte, Faoxis, позвольте мне обобщить ваши высказывания и свести их воедино
Реальная мощь функций открывается при изучении программирования.
0
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 121
27.04.2014, 11:11
Байт, позвольте уточнить - Реальная мощь функций открывается при изучении программирования на С++
Но в то же время функции есть и в других языка программирования, но не во всех есть объекты. Схема рушится!

Добавлено через 5 минут
Nick Alte, Я же сказал, что это для меня. Как МНЕ кажется, функции выполняющие роль конструкторов, деструкторов и методов класса намного более захватывающие, чем обычные вялые функции, которые выполняют определенную последовательность действий при вызове(да да, я знаю, что методы класса делают так же, но они методы класса! ). Лично я влюбился в функции после того как познакомился с объектами. Говорю это как человек, который все еще изучает программирование в институте(6 семестр).
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.04.2014, 11:13
Цитата Сообщение от Faoxis Посмотреть сообщение
на С++
ИМХО, лишнее. А Паскаль, он что, без функций? И что бы вы без функций на нем делали кроме "Хэллоу, Ворд" ? А Алгол, Фортран, ПЛ, Ассемблер, Лисп в конце концов!
Желающие могут продолжить список...
0
27.04.2014, 11:13

Не по теме:

Цитата Сообщение от Faoxis Посмотреть сообщение
Реальная мощь функций открывается при изучении программирования на С++
А если на C? :)

0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.04.2014, 11:29
Цитата Сообщение от Faoxis Посмотреть сообщение
Лично я влюбился в функции
Что ж, глупо спорить с влюбленными. Могу вам только пожелать счастья в личной жизни
Вы сами неявно создали метафору: функция - женщина Продолжим ее.
Вы с юным пылом были очарованы первой попавшейся вам красоткой. Но уверяю вас, в мире их значительно больше! Говорю это, как человек, изучающий программирование несколько больше 6-ти семестров.
А ваши эмоции делают вам честь. Чтобы достичь успехов в программировании (да и в любом деле), нужно вкладывать в дело не только серое вещество, но и сердце.
Удачи!
2
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
27.04.2014, 12:01
Цитата Сообщение от Faoxis Посмотреть сообщение
Я же сказал, что это для меня.
Я намекал на то, что даже все эти прекрасные вещи - далеко не вся мощь функций. И чтобы открыть для себя их новые стороны, полезно познакомиться с функциональным программированием. Это и в C++ потом пригодится, при написании шаблонов и лямбд.
3
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.04.2014, 12:19

Не по теме:

Резюмируем под музыку Имре Кальмана
Без функций жить нельзя на свете - нет! :curtsy:



Добавлено через 3 минуты

Не по теме:

Nick Alte, Сначала не хотел портить вам такую круглую репу. Но потом подумал - все рано ее кто-нибудь испортит. Так пусть моя "спасибка" откроет новую тысячу (дай Бог, не последнюю!:)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2014, 12:19
Помогаю со студенческими работами здесь

Неправильный возврат значения функции
При компиляции если значение меньше или равно 100 программа прекращает работу а если значение выше 100 то работает нормально. ...

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

Двумерные массивы и возврат значения из функции
Доброго времени суток уважаемые фуромчане! Решил обратиться к более опытным людям ибо сам допереть не могу:) Ситуация вот в чём.Нужно...

Повторный возврат рандомного значения ,без изменения значения
Добрый день. Пишу простую консольную игру Кости. Есть 4-е функции прорисовки костей (2-е на кости игрока и 2-е на кости ПК). Каждая...

Возврат 2 значений из функции с одним вызовом этой же функции
Вообщем где то в какой то игре была хукнута одна функция int function(int arg1,int arg2,int arg3); суть в чем int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru