Решено: "Программа возвращает число". Как это понять? (Хотя догадываюсь, что ответ лежит где-то на поверхности)

Модератор: Модераторы разделов

promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Решено: "Программа возвращает число". Как это понять?

Сообщение promov »

Но у меня глаз, что называется, "замылился" на более сложных вопросах и поэтому с простым разобраться не могу
Отрывок из книги "...именем программы является main и ... эта программа возвращает целое число..."
Кроме того, термин "возвращать нечто" встречался мною и раньше при изучении Pascal но я его благополучно заменял для себя на более понятный "передавать" а теперь жалею, что вовремя не разобрался.
Как понять "возвращает число"? Передаёт что ли? Ответ повторюсь, наверное настолько прост, что его нигде не объясняют. Не обессудте, если сразу не пойму и буду уточнять ответ. Спасибо.
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
Аватара пользователя
anonymous.ru
Сообщения: 614

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение anonymous.ru »

Функция main() как и любая другая функция может вернуть число.
Это число может быть передано той программе, которая запустила Вашу программу (родительской программе).


Почитай Дочерние процессы - вопрос по теоретическому материалу

для примера:
в шеле можно узнать код возврата последней завершившейся команды
попробуй

true
echo $?
false
echo $?

Вариант номер два, процесс не просит о смерти хочет жить и работать, но его убивают - сигналом в спину.
Тогда ядро сообщает родителю, что его сын погиб в неравном бою от рук сигнала номер такой та.

кстати нажатие комбинаций клавиш тоже приводит к посылки сигнала

пример, пробуй

sleep 10000
^C
echo $?
:drinks:
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение Liksys »

Код: Выделить всё

#include <stdio.h>
int main(void)
{
    return 0; // ключевой момент
}

Это как возвращаемое значение функции, только значаение передается обратно в оболочку например. 0 - успешное завершение, неноль - ошибка.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение Uncle_Theodore »

promov писал(а):
13.09.2007 19:55
Но у меня глаз, что называется, "замылился" на более сложных вопросах и поэтому с простым разобраться не могу
Отрывок из книги "...именем программы является main и ... эта программа возвращает целое число..."

Странный отрывок.
Кроме того, термин "возвращать нечто" встречался мною и раньше при изучении Pascal но я его благополучно заменял для себя на более понятный "передавать" а теперь жалею что вовремя не разобрался.
Как понять "возвращает число"? Передаёт что ли? Ответ повторюсь, наверное настолько прост, что его нигде не объясняют. Не обессудте, если сразу не пойму и буду уточнять ответ. Спасибо.

Когда Вы запускаете программу, скажем, из командной строки, bash (командный интерпретатор) говорит программе -- ну-ка давай поработай! Программа работает, потом говорит bash'у -- все, поработала. Работа прошла нормально. Или наоборот, говорит, я попыталась поработать, но вышла ошибочка. Ее ответ -- это и есть число, возвращенное вызвавшему ее интерпретатору.
Спасибо сказали:
promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение promov »

Ну конечно. Впервые я столкнулся с этим термином в примерно таком контексте: "...функция X возвращает случайное число Y, удовлетворяющее условию..." и т. д. Теперь-то мне понятно, что "возвращает" значит "возвращает туда, откуда вызвана". Во как! Всё действительно просто- ответ на поверхности, я же в поисках его пытался углубляться куда-то ещё дальше и неизвестно, к чему эти потуги привели бы...
Всем спасибо!
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
Аватара пользователя
Славик
Сообщения: 159
ОС: AltLinux2.4 master

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение Славик »

promov писал(а):
13.09.2007 20:54
Ну конечно. Впервые я столкнулся с этим термином в примерно таком контексте: "...функция X возвращает случайное число Y, удовлетворяющее условию..." и т. д. Теперь-то мне понятно, что "возвращает" значит "возвращает туда, откуда вызвана". Во как! Всё действительно просто- ответ на поверхности...


В случае bash механизм передачи значения (возврата) в точку вызова немножко другой. Собственно возвращаемое значение помещается в специальную переменную $?
А для записи куда нить некоторого значения используются специальные конструкции `thegototam` и $(thegototam), причём энтот tchegototam далжен чёнить писать на стандартный вывод:

Код: Выделить всё

 [slavik@mycomp slavik]$ str="$(echo mama)"
 [slavik@mycomp slavik]$ echo $str
 mama

Примерно так :)
Познание бесконечности требует бесконечного времени.
А. и Б. Стругацкие
Понедельник начинается в субботу
Спасибо сказали:
astronom
Сообщения: 151
ОС: Debian

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение astronom »

promov писал(а):
13.09.2007 19:55
Как понять "возвращает число"? Передаёт что ли? Ответ повторюсь, наверное настолько прост, что его нигде не объясняют. Не обессудте, если сразу не пойму и буду уточнять ответ. Спасибо.

Что касается "программа возвращает", то тут уже объяснялось: программа передает число другой программе, которая ее вызвала (в частности, тому же командному интерпретатору).

Вообще о "функция возвращает значение":
Функция, вернее, ее имя - идентификатор или метка некоторого участка кода, на который переходит указатель (Если функция встраиваемая, то ее код просто вставляется в месте вызова ... но, это, наверное, понятно), когда встречает инструкцию вызова этой функции (в данном случае, просто наталкивается на имя этой функции в теле какой-либо другой функции). Для иллюстрации посмотрите где-нибудь, как можно с помощью всеми нелюбимого GOTO, всеми любимого IF и метки, реализовать цикл. ;)
Также, функция - переменная, т.е. под нее выделяется участок памяти, соответствующий участку памяти, выделяющемуся под переменную того типа, который функция возвращает. Иными словами, кроме того, что функция (имя функции) указывает на некоторый участок кода, она является указателем на участок памяти, в который можно что-то записать. Вот результат выполнения кода тела функции и записывается в этот участок памяти. А функция (в смысле функция как переменная) содержит ссылку на этот участок памяти.
Словосочетание "функция возвращает значение ..." просто более удобно, чем "функция содержит адрес участка памяти, в котором содержится результат выполнения кода, описанного в теле функции." :ph34r:
p.s. ну где-то как-то так, в общем. :ph34r:
Параллельные извилины не пересекаются ...
Спасибо сказали:
Аватара пользователя
bormant
Сообщения: 1354

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение bormant »

astronom писал(а):
22.08.2008 21:15
promov писал(а):
13.09.2007 19:55
Как понять "возвращает число"? Передаёт что ли? Ответ повторюсь, наверное настолько прост, что его нигде не объясняют. Не обессудте, если сразу не пойму и буду уточнять ответ. Спасибо.

Что касается "программа возвращает", то тут уже объяснялось: программа передает число другой программе, которая ее вызвала (в частности, тому же командному интерпретатору).

Словосочетание "функция возвращает значение ..." просто более удобно, чем "функция содержит адрес участка памяти, в котором содержится результат выполнения кода, описанного в теле функции." :ph34r:
p.s. ну где-то как-то так, в общем. :ph34r:

Для знакомых с паскалем -- достаточно представить, что программа всегда начинает исполняться не с неименованного блока begin end, а с:
function main(argc: integer; var argv: array of pchar);
begin ...; main:=something end;

Фраза "возвращает значение" отражает суть проискодящего -- в месте вызова функции поизводится ее вычисление (неважно, вызовом или подстановкой) и используется вычисленное значение.
Рассуждения на тему адресов/регистров в данном случае не существенны -- ибо зависят целиком зависят от платформы, компилятора, представления типа на платформе и определенных ОС правил возврата кода завершения процесса.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение diesel »

господа, не нужно насиловать труп которому скоро будет год.
Спасибо сказали:
promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение promov »

Дизелю: почему нет?
Мне-то всё понятно. Но я ведь не один тут. Может, кто ещё подобным вопросо задастся его некоторые объясения не устроят- вот, пожалуйста, по-другому объяснено. Парни не флудят, говорят по теме.
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Решено: "Программа возвращает число". Как это понять?

Сообщение diesel »

promov писал(а):
24.08.2008 19:58
Дизелю: почему нет?
Мне-то всё понятно. Но я ведь не один тут. Может, кто ещё подобным вопросо задастся его некоторые объясения не устроят- вот, пожалуйста, по-другому объяснено. Парни не флудят, говорят по теме.

потому что тема уже раскрыта достаточно и пересказывать еще раз не имеет смысла, с другой стороны - тема не закрыта, и если у кого-то действительно возникнет вопрос по теме(в чем я лично очень сомневаюсь) - вполне может его здесь задать.
Спасибо сказали: