Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
MELkey
73 / 73 / 13
Регистрация: 15.01.2013
Сообщений: 282
26.04.2014, 22:38     Возврат значения функции #1
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в функцию? функция выполняет чтото, как она в себя может принимать результат) какая от этого практическая польза? ведь результат можно записать в любую переменную/переменные и потом использовать, а как это вернуть в функцию? почему вернуть, я что у ней чтото отнимал? Может мне кто-нибудь на пальцах объяснит что это такое, былбы рад увидеть примеры. Просто везде это описывается как чтото элементарное и само собой понятное, мне эта фраза абсолютно не ясна, не могу уловить логического смысла. Заранее благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
26.04.2014, 22:59     Возврат значения функции #2
Функция получает на вход некие параметры, обрабатывает их как-то внутри и в ответ на свой вызов возвращает вызывающей стороне некоторое значение, результат своей работы.
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
26.04.2014, 23:00     Возврат значения функции #3
MELkey, что-то я вас плохо понял.Вас интересует возвращаемое значение функции?
Faoxis
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 114
26.04.2014, 23:06     Возврат значения функции #4
Допустим я твой начальник. Я даю тебе какую-нибудь информацию для работы. Ты моя функция. Я тебе передаю информацию(значение), ты мне отчет(возвращаемое значение). Вот и все. Только ты сам определяешь, что передавать, а что забирать из функции.
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
26.04.2014, 23:10     Возврат значения функции #5
Цитата Сообщение от Nick Alte Посмотреть сообщение
Функция получает на вход некие параметры
ну ведь может и не получать
Faoxis
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 114
26.04.2014, 23:18     Возврат значения функции #6
Например,
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;
}
Байт
 Аватар для Байт
13951 / 8782 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
27.04.2014, 00:44     Возврат значения функции #7
Цитата Сообщение от MELkey Посмотреть сообщение
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в функцию? функция выполняет чтото, как она в себя может принимать результат) какая от этого практическая польза? ведь результат можно записать в любую переменную/переменные и потом использовать, а как это вернуть в функцию? почему вернуть, я что у ней чтото отнимал?
Хотел было продолжить метафоры стеком, то перечитав стартовый топик, понял, что каша в голове ТС заварилась изрядная. Попытаюсь размешать.
возвращается результат (куда? в функцию? - нет, в функцию уже ничего не возвращается. Она свое дело сделала и ее уже нет (пока еще раз не позовешь). А дело ее - дать тебе результат. Вернуть. Тебе. В благодарность за то, что ты ее вызвал. Твое дело - этот результат тут же схватить - записать в любую переменную/переменные и потом использовать,
а как это вернуть в функцию? - а зачем? Ей от тебя уже ничего не нужно. Кроме очередного приказа.
почему вернуть, я что у ней чтото отнимал? - нет. Ты ей дал - команду и параметры. "Эй, жена, дай пожрать!" - это без параметров - получай бутерброд. "Милая, приготовь курочку, как ты умеешь" - это уже с параметром (остальные передаются по-умолчанию)
Ну, дальше у кого на сколько фантазии хватит, а то меня занесет...
Суть в том, что в этом патриархальном варианте вы своей "функции" совершенно ничего не должны. Единственная ваша забота - создать ее. И так, чтоб она работала правильно.
MELkey
73 / 73 / 13
Регистрация: 15.01.2013
Сообщений: 282
27.04.2014, 07:46  [ТС]     Возврат значения функции #8
Ну про практическую пользу пока что остаётся только догадываться, потому что кроме кроме нагромаждений я мало что увидел)) Т.е. это удобно использовать только если в функции здоровенные вычисления? А зачем в return использовать детерминированные значения? что нам даёт return 0? Информацию для ОС о том что программа завершила свою работу нормально. Зачем информировать ОС о нормальной работе программы? если чтото ненормально, она сама ничего не сделает/выдаст ошибку/упадёт. Зачем в памяти/ в исходнике/ в моей голове использовать лишнее место. Я прекрасно понимаю, что всё это продумывалось не дуракими, а следовательно в этом есть какаято суть, даёт возможность облегчить жизнь программисту. Вот пока я не понял суть и полезность этого, мне трудно с этим разобраться. Пример:
Ученику физики рассказали про дефект масс, про ядерные реакции, а как работает ядерный реактор не рассказали.
Ev_Hyper
 Аватар для Ev_Hyper
1805 / 1626 / 435
Регистрация: 15.12.2013
Сообщений: 5,774
27.04.2014, 09:03     Возврат значения функции #9
MELkey, допустим вы хотите реализовать какую-то программу, и в ней встречается много повторяющегося кода, отличающегося одним-двумя параметрами. Вместо того, что копировать и вставлять используют функции.
Да и вообще это очень удобная вещь
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,912
27.04.2014, 09:16     Возврат значения функции #10
Цитата Сообщение от MELkey Посмотреть сообщение
Ну про практическую пользу пока что остаётся только догадываться, потому что кроме кроме нагромаждений я мало что увидел
Допустим есть часть кода которая будет выполнятся многократно с разными параметрами.Ты можешь копировать эти строчки постоянно,нагромождая код,а можешь создать функцию,которая позволит этого избежать.Есть задачи,которые решаются рекурсивно,и там без функции не обойтись.Кроме того,разбив программу на несколько функций,отвечающих за одну задачу тебе будет проще локализировать и исправить ошибку.
Faoxis
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 114
27.04.2014, 09:55     Возврат значения функции #11
Конечно, функции - это очень удобная вещь в плане того, что одно и то же действие ( сколь угодно большое) можно вызывать одной строчкой и при этом сколь угодно раз. Но реальная мощь функций, как мне кажется, открывается при изучении объектно-ориентированного программирования. Когда функция является методом класса или конструктором (любого типа) действительно осознаешь всю мощь функций.
Пока просто представьте функцию как некий макрос. Грубо говоря, ввел имя функции вместе с параметрами и все автоматически делается. Удобно же.

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

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;
}

Лично я изучаю программирование на С++ по книге Лафоре(помимо лекций в институте). Всем советую!
Байт
 Аватар для Байт
13951 / 8782 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
27.04.2014, 10:31     Возврат значения функции #12
Цитата Сообщение от MELkey Посмотреть сообщение
Зачем информировать ОС о нормальной работе программы? если чтото ненормально, она сама ничего не сделает/выдаст ошибку/упадёт.
Ну, во первых bat-, bash-скрипты умеют анализировать код возврата программы. А во-вторых уже и не требуется

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

Не по теме:

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

Байт
 Аватар для Байт
13951 / 8782 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
27.04.2014, 10:51     Возврат значения функции #14
Nick Alte, Faoxis, позвольте мне обобщить ваши высказывания и свести их воедино
Реальная мощь функций открывается при изучении программирования.
Faoxis
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 114
27.04.2014, 11:11     Возврат значения функции #15
Байт, позвольте уточнить - Реальная мощь функций открывается при изучении программирования на С++
Но в то же время функции есть и в других языка программирования, но не во всех есть объекты. Схема рушится!

Добавлено через 5 минут
Nick Alte, Я же сказал, что это для меня. Как МНЕ кажется, функции выполняющие роль конструкторов, деструкторов и методов класса намного более захватывающие, чем обычные вялые функции, которые выполняют определенную последовательность действий при вызове(да да, я знаю, что методы класса делают так же, но они методы класса! ). Лично я влюбился в функции после того как познакомился с объектами. Говорю это как человек, который все еще изучает программирование в институте(6 семестр).
Байт
 Аватар для Байт
13951 / 8782 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
27.04.2014, 11:13     Возврат значения функции #16
Цитата Сообщение от Faoxis Посмотреть сообщение
на С++
ИМХО, лишнее. А Паскаль, он что, без функций? И что бы вы без функций на нем делали кроме "Хэллоу, Ворд" ? А Алгол, Фортран, ПЛ, Ассемблер, Лисп в конце концов!
Желающие могут продолжить список...
S_el
27.04.2014, 11:13
  #17

Не по теме:

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

Байт
 Аватар для Байт
13951 / 8782 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
27.04.2014, 11:29     Возврат значения функции #18
Цитата Сообщение от Faoxis Посмотреть сообщение
Лично я влюбился в функции
Что ж, глупо спорить с влюбленными. Могу вам только пожелать счастья в личной жизни
Вы сами неявно создали метафору: функция - женщина Продолжим ее.
Вы с юным пылом были очарованы первой попавшейся вам красоткой. Но уверяю вас, в мире их значительно больше! Говорю это, как человек, изучающий программирование несколько больше 6-ти семестров.
А ваши эмоции делают вам честь. Чтобы достичь успехов в программировании (да и в любом деле), нужно вкладывать в дело не только серое вещество, но и сердце.
Удачи!
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
27.04.2014, 12:01     Возврат значения функции #19
Цитата Сообщение от Faoxis Посмотреть сообщение
Я же сказал, что это для меня.
Я намекал на то, что даже все эти прекрасные вещи - далеко не вся мощь функций. И чтобы открыть для себя их новые стороны, полезно познакомиться с функциональным программированием. Это и в C++ потом пригодится, при написании шаблонов и лямбд.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 12:19     Возврат значения функции
Еще ссылки по теме:

Двумерные массивы и возврат значения из функции C++
Неправильный возврат значения функции C++
C++ Возврат значения из operator=

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

Или воспользуйтесь поиском по форуму:
Байт
 Аватар для Байт
13951 / 8782 / 1221
Регистрация: 24.12.2010
Сообщений: 15,891
27.04.2014, 12:19     Возврат значения функции #20

Не по теме:

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



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

Не по теме:

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

Yandex
Объявления
27.04.2014, 12:19     Возврат значения функции
Ответ Создать тему
Опции темы

Текущее время: 02:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru