Другие языки программирования и технологии

Что значит возвращение и невозвращение значения функции? И чем отличается void от int?

Я не понимаю самого значения "возвращения", возвращение чего? И можно с примерами, если не трудно,
В нормальных языках есть отдельно процедуры и отдельно функции.

Функции ОБЯЗАТЕЛЬНО возвращают знанчение, которое можно использовать внутри выражения в котрором эта функция вызвана. Например, функция sin в выражении y := sin(x) / 2 возвращает значение синуса от x и это возвращаемое значение тут же делится на 2 и присваивается переменной y.

Процедуры ЯВНО значение не возвращают. Их назначение - побочные эффекты. Вызов процедуры - всегда отдельный оператор. Например, readln(q); (побочный эффект - изменение значения переменной q).

В языках с С-подобным синтаксисом процедуры и функции смешали в одну кучу и назвали функциями. При этом всё равно остались нормальные функции (возвращающие, например, int), и нормальные процедуры - ничего не возвращающие. Но т. к. теперь у нас всё называется функциями, то для обозначения процедур в язык ввели специальный псевдотип void, означающий, что никакого значения здесь нет и быть не может.

Именно потому начинать обучение надо с нормального учебника программирования, а не с модного языка - чтобы в голове не было этой каши.
Андрей Удалов
Андрей Удалов
89 465
Лучший ответ
Дмитрий Леонидович Напридумывали терминов:
Подпрограмма
Процедура
Функция
Метод
По сути одно и то же, оттенок разный.
- ты бросаешь ведро в колодец и уходишь. Ведро осталось ржаветь в колодце. ("Пальто нэ надо!")
- ты бросаешь ведро в колодец, поднимаешь его с водой и уносишь.
Avaz Muzafarov
Avaz Muzafarov
78 589
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 означает, что функция не возвращает ничего.
AJ
Avinash Jharya
56 993
Ну тип если функция возвращает значение, то его можно где-то использовать, например записать в переменную:
var i = func(a, b)
теперь переменная i имеет значение, возвращённое функцией func

P.S. понятно объяснил ))
Александр Скворцов Ток я не понял, если в main мы может возвращать значение, то почему его тип void?
Куда ты полез в функции, если ты еще типы данных не изучил?