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

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

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

Author24 — интернет-сервис помощи студентам
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в функцию? функция выполняет чтото, как она в себя может принимать результат) какая от этого практическая польза? ведь результат можно записать в любую переменную/переменные и потом использовать, а как это вернуть в функцию? почему вернуть, я что у ней чтото отнимал? Может мне кто-нибудь на пальцах объяснит что это такое, былбы рад увидеть примеры. Просто везде это описывается как чтото элементарное и само собой понятное, мне эта фраза абсолютно не ясна, не могу уловить логического смысла. Заранее благодарен.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2014, 22:38
Ответы с готовыми решениями:

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

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

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

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

26
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
26.04.2014, 22:59 2
Функция получает на вход некие параметры, обрабатывает их как-то внутри и в ответ на свой вызов возвращает вызывающей стороне некоторое значение, результат своей работы.
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
26.04.2014, 23:00 3
MELkey, что-то я вас плохо понял.Вас интересует возвращаемое значение функции?
0
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 121
26.04.2014, 23:06 4
Допустим я твой начальник. Я даю тебе какую-нибудь информацию для работы. Ты моя функция. Я тебе передаю информацию(значение), ты мне отчет(возвращаемое значение). Вот и все. Только ты сам определяешь, что передавать, а что забирать из функции.
0
571 / 539 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
26.04.2014, 23:10 5
Цитата Сообщение от Nick Alte Посмотреть сообщение
Функция получает на вход некие параметры
ну ведь может и не получать
0
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 121
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;
}
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
27.04.2014, 00:44 7
Цитата Сообщение от MELkey Посмотреть сообщение
Что такое возврат значения функции? я уже всю голову изломал, что и куда возвращается? в гугле нашёл мол возвращается результат (куда? в функцию? функция выполняет чтото, как она в себя может принимать результат) какая от этого практическая польза? ведь результат можно записать в любую переменную/переменные и потом использовать, а как это вернуть в функцию? почему вернуть, я что у ней чтото отнимал?
Хотел было продолжить метафоры стеком, то перечитав стартовый топик, понял, что каша в голове ТС заварилась изрядная. Попытаюсь размешать.
возвращается результат (куда? в функцию? - нет, в функцию уже ничего не возвращается. Она свое дело сделала и ее уже нет (пока еще раз не позовешь). А дело ее - дать тебе результат. Вернуть. Тебе. В благодарность за то, что ты ее вызвал. Твое дело - этот результат тут же схватить - записать в любую переменную/переменные и потом использовать,
а как это вернуть в функцию? - а зачем? Ей от тебя уже ничего не нужно. Кроме очередного приказа.
почему вернуть, я что у ней чтото отнимал? - нет. Ты ей дал - команду и параметры. "Эй, жена, дай пожрать!" - это без параметров - получай бутерброд. "Милая, приготовь курочку, как ты умеешь" - это уже с параметром (остальные передаются по-умолчанию)
Ну, дальше у кого на сколько фантазии хватит, а то меня занесет...
Суть в том, что в этом патриархальном варианте вы своей "функции" совершенно ничего не должны. Единственная ваша забота - создать ее. И так, чтоб она работала правильно.
3
73 / 73 / 13
Регистрация: 15.01.2013
Сообщений: 284
27.04.2014, 07:46  [ТС] 8
Ну про практическую пользу пока что остаётся только догадываться, потому что кроме кроме нагромаждений я мало что увидел)) Т.е. это удобно использовать только если в функции здоровенные вычисления? А зачем в return использовать детерминированные значения? что нам даёт return 0? Информацию для ОС о том что программа завершила свою работу нормально. Зачем информировать ОС о нормальной работе программы? если чтото ненормально, она сама ничего не сделает/выдаст ошибку/упадёт. Зачем в памяти/ в исходнике/ в моей голове использовать лишнее место. Я прекрасно понимаю, что всё это продумывалось не дуракими, а следовательно в этом есть какаято суть, даёт возможность облегчить жизнь программисту. Вот пока я не понял суть и полезность этого, мне трудно с этим разобраться. Пример:
Ученику физики рассказали про дефект масс, про ядерные реакции, а как работает ядерный реактор не рассказали.
0
Заблокирован
27.04.2014, 09:03 9
MELkey, допустим вы хотите реализовать какую-то программу, и в ней встречается много повторяющегося кода, отличающегося одним-двумя параметрами. Вместо того, что копировать и вставлять используют функции.
Да и вообще это очень удобная вещь
1
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
27.04.2014, 09:16 10
Цитата Сообщение от MELkey Посмотреть сообщение
Ну про практическую пользу пока что остаётся только догадываться, потому что кроме кроме нагромаждений я мало что увидел
Допустим есть часть кода которая будет выполнятся многократно с разными параметрами.Ты можешь копировать эти строчки постоянно,нагромождая код,а можешь создать функцию,которая позволит этого избежать.Есть задачи,которые решаются рекурсивно,и там без функции не обойтись.Кроме того,разбив программу на несколько функций,отвечающих за одну задачу тебе будет проще локализировать и исправить ошибку.
1
6 / 6 / 0
Регистрация: 11.04.2012
Сообщений: 121
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;
}

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

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

Не по теме:

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

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

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

Не по теме:

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

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

Не по теме:

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



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

Не по теме:

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

0
27.04.2014, 12:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2014, 12:19
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru