Другие языки программирования и технологии
Что значит возвращение и невозвращение значения функции? И чем отличается void от int?
Я не понимаю самого значения "возвращения", возвращение чего? И можно с примерами, если не трудно,
В нормальных языках есть отдельно процедуры и отдельно функции.
Функции ОБЯЗАТЕЛЬНО возвращают знанчение, которое можно использовать внутри выражения в котрором эта функция вызвана. Например, функция sin в выражении y := sin(x) / 2 возвращает значение синуса от x и это возвращаемое значение тут же делится на 2 и присваивается переменной y.
Процедуры ЯВНО значение не возвращают. Их назначение - побочные эффекты. Вызов процедуры - всегда отдельный оператор. Например, readln(q); (побочный эффект - изменение значения переменной q).
В языках с С-подобным синтаксисом процедуры и функции смешали в одну кучу и назвали функциями. При этом всё равно остались нормальные функции (возвращающие, например, int), и нормальные процедуры - ничего не возвращающие. Но т. к. теперь у нас всё называется функциями, то для обозначения процедур в язык ввели специальный псевдотип void, означающий, что никакого значения здесь нет и быть не может.
Именно потому начинать обучение надо с нормального учебника программирования, а не с модного языка - чтобы в голове не было этой каши.
Функции ОБЯЗАТЕЛЬНО возвращают знанчение, которое можно использовать внутри выражения в котрором эта функция вызвана. Например, функция sin в выражении y := sin(x) / 2 возвращает значение синуса от x и это возвращаемое значение тут же делится на 2 и присваивается переменной y.
Процедуры ЯВНО значение не возвращают. Их назначение - побочные эффекты. Вызов процедуры - всегда отдельный оператор. Например, readln(q); (побочный эффект - изменение значения переменной q).
В языках с С-подобным синтаксисом процедуры и функции смешали в одну кучу и назвали функциями. При этом всё равно остались нормальные функции (возвращающие, например, int), и нормальные процедуры - ничего не возвращающие. Но т. к. теперь у нас всё называется функциями, то для обозначения процедур в язык ввели специальный псевдотип void, означающий, что никакого значения здесь нет и быть не может.
Именно потому начинать обучение надо с нормального учебника программирования, а не с модного языка - чтобы в голове не было этой каши.
- ты бросаешь ведро в колодец и уходишь. Ведро осталось ржаветь в колодце. ("Пальто нэ надо!")
- ты бросаешь ведро в колодец, поднимаешь его с водой и уносишь.
- ты бросаешь ведро в колодец, поднимаешь его с водой и уносишь.
Mhd Isaev
Хорошо, а зачем вообще нужна функция или метод ничего не возвращающие? Про вывод на экран понятно, а еще есть варианты для чего?
Возвращение - это когда ты в результате работы функции получаешь какой-то результат,
записанный в название функции: число, строку, или еще что-то.
Например, функция вычисления факториала:
long int factorial(long int n)
{
if (n == 0 || n == 1) return 1;
return n * factorial(n - 1);
}
В основной программе пишешь:
A = factorial(i)
Невозвращение - это когда функция что-то делает внутри себя, но никакого результата не выдает.
Например, она просто выводит что-то на экран:
void print(string s1, s2)
{
printf (s1);
printf (s2);
}
В основной программе пишешь:
print ("У шуры шары", "Мамы мыла раму")
Разница между void и int перед названием функции.
int означает, что функция возвращает число целого типа.
В примере функция factorial возвращает число типа long int, то есть длинное целое.
void означает, что функция не возвращает ничего.
записанный в название функции: число, строку, или еще что-то.
Например, функция вычисления факториала:
long int factorial(long int n)
{
if (n == 0 || n == 1) return 1;
return n * factorial(n - 1);
}
В основной программе пишешь:
A = factorial(i)
Невозвращение - это когда функция что-то делает внутри себя, но никакого результата не выдает.
Например, она просто выводит что-то на экран:
void print(string s1, s2)
{
printf (s1);
printf (s2);
}
В основной программе пишешь:
print ("У шуры шары", "Мамы мыла раму")
Разница между void и int перед названием функции.
int означает, что функция возвращает число целого типа.
В примере функция factorial возвращает число типа long int, то есть длинное целое.
void означает, что функция не возвращает ничего.
Ну тип если функция возвращает значение, то его можно где-то использовать, например записать в переменную:
var i = func(a, b)
теперь переменная i имеет значение, возвращённое функцией func
P.S. понятно объяснил ))
var i = func(a, b)
теперь переменная i имеет значение, возвращённое функцией func
P.S. понятно объяснил ))
Александр Скворцов
Ток я не понял, если в main мы может возвращать значение, то почему его тип void?
Куда ты полез в функции, если ты еще типы данных не изучил?
Похожие вопросы
- Чем отличается в c++ int main() от void main()???
- С++.Составить программу для определения таблицы значений функции у в произвольном диапазоне [a, b
- Для аргумента x, изменяющегося от –0.6 с шагом 0.05 вычислить 20 значений функций.
- (С++) чем отличается такая запись int* const arr от такой int *arr
- (С++) чем отличается такая запись int* const arr от такой int *arr?
- Что значит возвращает значение функции? для чего нужен оператор return в си? как он работает?
- Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x)
- как в с++ возвращать значение функции больше одного? допустим сразу несколько значений
- Вычислить значение функции y=sinx – cosAX + B, где Х изменяется от 1 до 10, А от 10 до 1, В=2, шаг равен 3. Составить
- помогите решить на паскале 3. Вычислить значение функции tg(x)/x2 на интервале от *-5, 5] c шагом h = 0.1.
Подпрограмма
Процедура
Функция
Метод
По сути одно и то же, оттенок разный.