Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];

Вниз

Различия между процедурой и функцией   Найти похожие ветки 

 
Vlad Oshin ©   (2007-11-06 17:49) [40]

а вообщето, нет, наверное, разницы


 
b z   (2007-11-06 17:53) [41]

что то с "детсва" вспомнилось: разница  - функция может вернуть на 1 результат больше чем процедура :)


 
Игорь Шевченко ©   (2007-11-06 18:00) [42]

Парой больше, парой меньше...


 
Alkid ©   (2007-11-06 18:01) [43]


> 3) в теле функции функция хотя бы раз должна присвоить себе
> значение.

Ну вот это не факт. Может и не присваивать. Только тогда warning и undefined behavior


 
Германн ©   (2007-11-06 18:11) [44]


> Alkid ©   (06.11.07 18:01) [43]
>
>
> > 3) в теле функции функция хотя бы раз должна присвоить
> себе
> > значение.
>
> Ну вот это не факт. Может и не присваивать. Только тогда
> warning и undefined behavior
>

Читай сабж.
> Когда я учился в универе и у нас был старый добрый паскаль


 
KSergey ©   (2007-11-06 18:11) [45]

> Alkid ©   (06.11.07 18:01) [43]
> Ну вот это не факт. Может и не присваивать. Только тогда

лично я бы эцих прописал.


 
Правильный_Вася   (2007-11-06 18:20) [46]


> 2) процедура имеет тип

???


 
Alkid ©   (2007-11-06 18:23) [47]


> лично я бы эцих прописал.

Да не эцих, а error :)


 
Kemuri   (2007-11-06 18:26) [48]

> KSergey Вы ничего не путаете?
да, заглючил уже сам
1) функция возвращает результат, процедура - нет
2) функция имеет тип
3) в теле функции функция хотя бы раз должна присвоить себе значение.
но думаю вы поняли


 
Azize ©   (2007-11-06 18:39) [49]


> 3) в теле функции функция хотя бы раз должна присвоить себе
> значение.
> но думаю вы поняли

не обязательно!!!!!!!!!!!!!!!!!!!!!


 
oxffff ©   (2007-11-06 18:41) [50]


> но думаю вы поняли


Функциональное программирование?


 
Alkid ©   (2007-11-06 18:44) [51]


> Функциональное программирование?

А при чём здесь это? Это, имхо, из другой оперы :)


 
Kemuri   (2007-11-06 18:47) [52]

> не обязательно!!!!!!!!!!!!!!!!!!!!!
Сам знаю что необязательно!!!!!!!!!!!!!! Повторюсь, это не мои слова. Но если пытаться это подвести под какую либо логику, то функция, не присваивающая себе значение (исключаем result) является процедурой, даже если обьявлена как функция. Думаю это надо понемать именно так.


 
Piter ©   (2007-11-06 19:22) [53]

Ega23 ©   (06.11.07 17:22) [28]
> FillChar кого? Регистра eax??

Или это я с прямым углом путаю?

Ром, не помню точно. С этим как-то Hint какой-то связан...


хинт, скорее всего связан с тем, чтобы метод использовать в callback вызовах WinApi.


 
Некто   (2007-11-06 19:29) [54]


> функция, не присваивающая себе значение (исключаем result)
> является процедурой, даже если обьявлена как функция

Тогда получается, что это процедура, которая имеет тип (п. 2)... Препод вас в рекурсию хотел загнать. :)


 
Anatoly Podgoretsky ©   (2007-11-06 20:12) [55]

> megabyte  (06.11.2007 16:28:04)  [4]

Оба тезиса неверны.


 
Anatoly Podgoretsky ©   (2007-11-06 20:15) [56]

> Kerk  (06.11.2007 16:36:10)  [10]

Не присваивай и не возвращает - это две большие разницы.
А откуда у не присваивает уши растут мы знаем.


 
Anatoly Podgoretsky ©   (2007-11-06 20:15) [57]

> ZeroDivide  (06.11.2007 16:40:13)  [13]

А он какой всегда


 
Anatoly Podgoretsky ©   (2007-11-06 20:19) [58]

> Piter  (06.11.2007 17:12:23)  [23]

В стек говоришь, а про регистры не слышал.
А есть процессоры без стека


 
Anatoly Podgoretsky ©   (2007-11-06 20:23) [59]

> Германн  (06.11.2007 17:14:25)  [25]

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

Test := Test + 1;

А мы посмотрим на твое выражение. Только сильно не выражайся :-)


 
Anatoly Podgoretsky ©   (2007-11-06 20:25) [60]

> Johnmen  (06.11.2007 17:29:33)  [33]

Особенно хорошо решать голосование вопрос крутится ли солнце вокруг земли.


 
Anatoly Podgoretsky ©   (2007-11-06 20:30) [61]

> Alkid  (06.11.2007 18:23:47)  [47]

А если это функция/функционал класса RandomInt?
Тогда это уже не будет ошибкой, но предупреждение получишь.


 
Piter ©   (2007-11-06 20:36) [62]

Удалено модератором


 
Anatoly Podgoretsky ©   (2007-11-06 20:42) [63]

> Piter  (06.11.2007 20:36:02)  [62]

Пишу от души, ничем себя не ограничивая.
И тебе привет.


 
Amoeba ©   (2007-11-06 20:52) [64]


> Германн ©   (06.11.07 17:25) [30]
>
>
> > Amoeba ©   (06.11.07 17:24) [29]
>
>
> > Нет тут слева ф-ии. Это тот же Result.
>
> Читай [19] внимательно и с выражением :-)

Не надо софистики!


 
Dimaxx ©   (2007-11-06 21:21) [65]

Есть еще 1 отличие. Функцию можно вызвать и как процедуру и как функцию, а процедуру как функцию не вызовешь.


 
Германн ©   (2007-11-06 21:21) [66]


> Anatoly Podgoretsky ©   (06.11.07 20:23) [59]
>
> > Германн  (06.11.2007 17:14:25)  [25]
>
> Это старый синтаксис и смысл здесь другой, ничего функции
> не присваивается.

А я этого и не говорил.

> попробуй сделай
>
> Test := Test + 1;
>
> А мы посмотрим на твое выражение.

Не дождётесь!


 
Черный Шаман   (2007-11-06 21:23) [67]


>
> Kemuri   (06.11.07 16:21)
>
> Когда я учился в универе и у нас был старый добрый паскаль,
>  нам преподша на экзамене задала такой вопрос: сколько различий
> между процедурой и функцией в паскале и какие они. По ее
> мнению на этот вопрос есть единственный правильный ответ.
>  Любые попытки оспорить ее мнение расценивались как провал.
>  Вот теперь мне интересно узнать мнения программистов на
> этот счет. Итак, сколько и какие?
> ЗЫ "правильный" ответ оглашу чуть позже.


Если концептуально, то функция располагает к функциональному программированию(без состояния), процедура к императивному программированию(с состоянием).

Чаще всего оно смешивается.


 
Anatoly Podgoretsky ©   (2007-11-06 21:34) [68]

> Германн  (06.11.2007 21:21:06)  [66]

Ну тогда ты не понял меня, слева не функция, а просто слово, по синтаксису означает Result

> Не дождётесь!

Да я от тебя другого и не ожидал, знал что ты испугаешься.


 
Kolan ©   (2007-11-06 21:41) [69]

Ессно разница есть.

ЗЫ
 Ветки про основы всегда вызывают горячие споры :)


 
oxffff ©   (2007-11-06 21:43) [70]


> Alkid ©   (06.11.07 18:44) [51]
>
> > Функциональное программирование?
>
> А при чём здесь это? Это, имхо, из другой оперы :)


Имхо такие требования препода смахивают именно в сторону ФП.


 
Jukadze   (2007-11-06 22:00) [71]

Черный Шаман   (06.11.07 21:23) [67]

>Если концептуально, то функция располагает к функциональному программированию(без состояния), процедура к императивному программированию(с состоянием).

К функциональному программированию располагает отсутствие возможности создавать побочные эффекты при выполнении подпрограмм.
А именно отсутствие присваивание и наличие только связывания (binding).


 
Galinka ©   (2007-11-06 22:32) [72]

Функция явно возвращает результат. Для этого собсно они и нужны. Процедура может "возвращать результат" только косвенно, т.е., например, изменять переданный ей через указатель или ссылку объект.


 
Ins ©   (2007-11-07 00:20) [73]

>>нам преподша на экзамене задала такой вопрос

Надо было задать встречный вопрос: "На каком уровне абстракции? На машинном или на человеческом?"


 
Германн ©   (2007-11-07 02:02) [74]


> Johnmen ©   (06.11.07 17:29) [33]
>
> > ALL
> Итак, выношу на голосование:
> Есть ли различия между процедурой и функцией? (ДА/НЕТ)
> Я голосую - НЕТ.
> 0/1
>
> PS
> Вообще предлагаю все вопросы решать демократические, т.е.
>  голосованием.
>

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


 
Kemuri   (2007-11-07 02:08) [75]

>на суть сабжа никто не обращает внимания, даже его автор
Так суть уже исчерпана давно... хва тут флудить уже :)


 
guav ©   (2007-11-07 02:10) [76]

> Ни в левой части (даже если это всего лишь её идентификатор)
> , ни в правой.

В правой можно.


 
guav ©   (2007-11-07 02:13) [77]

Я голосую ДА.


 
Германн ©   (2007-11-07 02:18) [78]


> guav ©   (07.11.07 02:10) [76]
>
> > Ни в левой части (даже если это всего лишь её идентификатор)
> > , ни в правой.
>
> В правой можно.
>

Это как?


 
guav ©   (2007-11-07 02:20) [79]

> [78] Германн ©   (07.11.07 02:18)


var P: procedure;
begin
 P := Beep;
end;


 
Германн ©   (2007-11-07 02:22) [80]


> Kemuri   (07.11.07 02:08) [75]
>
> >на суть сабжа никто не обращает внимания, даже его автор
> Так суть уже исчерпана давно... хва тут флудить уже :)
>

Тогда поясни. Ты говоришь о паскале времён ТР или о современном Дельфи?
По сабжу следует первое, по большинству ответов - второе.
Так как тебя понимать, Саид?



Страницы: 1 2 3 вся ветка

Форум: "Прочее";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.61 MB
Время: 0.061 c
1-1190205924
SamProf
2007-09-19 16:45
2007.12.09
Как очистить cookie в TwebBrowser


2-1195133837
unnamed
2007-11-15 16:37
2007.12.09
TIdUDPServer и TIdUDPClient: проблема!(не знаю как её обозвать)


3-1186498316
alex_tonk
2007-08-07 18:51
2007.12.09
DBLookupComboBoxEh


2-1194866181
Kolan
2007-11-12 14:16
2007.12.09
Что значит ошибка &amp;laquo;Invalid value for field <поле>&amp;raquo;?


15-1194738002
Kostafey
2007-11-11 02:40
2007.12.09
С днем рождения ! 11 ноября





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский