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

Вниз

Прошу у ДМ помощи   Найти похожие ветки 

 
Германн ©   (2006-10-16 01:49) [0]

Возникла тут некая проблема с переводом сути в текстовый формат. :-)
А именно. Как описать разницу между функцией и процедурой? Раньше во времена TP это было не сложно. Функцию нельзя было вызвать иначе, чем в правой части выражения. Сейчас можно функцию вызвать как процедуру. Но как на "простом языке" объяснить одновременное наличие этих двух сущностей в Дельфи? Только ли как "тяжёлое наследие" (т.е. совместимость снизу вверх)? Или есть ещё причины?


 
vuk ©   (2006-10-16 01:52) [1]

Функция возвращает значение.


 
DrPass ©   (2006-10-16 01:54) [2]

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


 
Zeqfreed ©   (2006-10-16 02:03) [3]

Проверить не могу, но по-моему ф-цию можно использовать в левой части оператора присваивания. Кстати было бы любопытно узнать не ошибаюсь ли я, потому что в Си то точно можно, а вот в Delphi... Теоретически должно быть возможно.


 
Ketmar ©   (2006-10-16 02:06) [4]

>[3] Zeqfreed(c) 16-Oct-2006, 02:03
>Проверить не могу, но по-моему ф-цию можно использовать в
>левой части оператора присваивания.
не функцию, а её результат. и то не любой.


 
Ketmar ©   (2006-10-16 02:06) [5]

проще говоря, если функция возвращает корректное lvalue -- то можно.

(упростил я понимание? %-)


 
Zeqfreed ©   (2006-10-16 02:15) [6]

Нет, ну разумеется, что её результат :) Но в коде то ф-ция будет слева ;)

P.S. Кто мне скажет, почему в линуксах в русской раскладке знаки препинания каким-то чудным образом расставлены?


 
Ketmar ©   (2006-10-16 02:17) [7]

>[6] Zeqfreed(c) 16-Oct-2006, 02:15
>P.S. Кто мне скажет, почему в линуксах в русской раскладке
>знаки препинания каким-то чудным образом расставлены?
чудны дела твои, господь Линус...


 
Германн ©   (2006-10-16 02:29) [8]


> vuk ©   (16.10.06 01:52) [1]
>
> Функция возвращает значение.

Если вызвать её не в правой части выражения, то она ничего не возвращает, кроме того что может возвратить процедура, у которой есть такие же var-параметры!


 
Ketmar ©   (2006-10-16 02:36) [9]

>[8] Германн(c) 16-Oct-2006, 02:29
>Если вызвать её не в правой части выражения, то она ничего
>не возвращает, кроме того что может возвратить процедура,
>у которой есть такие же var-параметры!
она всегда возвращает. но если значение не использовать, то его просто выкинут. %-)


 
Германн ©   (2006-10-16 02:44) [10]


> Ketmar ©   (16.10.06 02:36) [9]
>
> >[8] Германн(c) 16-Oct-2006, 02:29
> >Если вызвать её не в правой части выражения, то она ничего
> >не возвращает, кроме того что может возвратить процедура,
>
> >у которой есть такие же var-параметры!
> она всегда возвращает. но если значение не использовать,
>  то его просто выкинут. %-)
>

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


 
Германн ©   (2006-10-16 02:50) [11]

А ну да. Сам придумал радикальный ответ.
Функцию можно использовать в выражениях (и в левой части и в правой), а процедуру нет! Ни справа ни слева.


 
Ketmar ©   (2006-10-16 02:52) [12]

угу. процедура -- сама себе выражение. часто -- матерное...


 
Германн ©   (2006-10-16 03:02) [13]


> Ketmar ©   (16.10.06 02:52) [12]
>
> угу. процедура -- сама себе выражение. часто -- матерное.
> ..

Ну это у кого как, конечно! :-)
Каждый мыслит в меру своей испорченности, имхо! :-)

P.S. В четвертом классе заболел основной солист детского хора школы. Меня заставили петь на концерте за него! Пел я "На прививку третий класс...".
Это я по поводу процедуры. До сих пор я процедуры (на русском) вспоминаю только в том плане! :-)


 
Ketmar ©   (2006-10-16 03:23) [14]

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


 
Павел Калугин ©   (2006-10-16 10:04) [15]

Как нам объясняли:
Процедуры нет.
Есть функция.
Если у функции не определили что она возвращает, то эту порнографию Вы можете назвать процедурой.
Но все равно оно функция.
А процедуры нет. Так фикция...
НА вопрос
- А что тогда значит текст
 procedure fikcia()
 begin
    showmessage("Препод сам <нелицеприятное выражение>" );
 end                      
 И главное, процедура есть функцми нет и работает?
он
- ответил Не верьте глазам своим внутри там все равно функция


 
Sandman29 ©   (2006-10-16 10:20) [16]

С точки зрения математики и прочей философии...
Процедура - это некая последовательность операторов. То есть целью процедуры является выполнение неких типичных действий, желательно вызывать процедуру несколько раз.
Функция - это преобразование входных аргументов в выходное значение. То есть целью функции яляется только получение значения. Если в функции есть побочные эффекты, то это "плохая" функция.

procedure SwapVars(var V1, V2);

function GetMax(const A1, A2: TType): TType;

function WriteToFile(...) - плохая функция


 
TUser ©   (2006-10-16 11:21) [17]

Расширенный синтаксис вызова функций помню точно был в учебнике по ТР6.


 
Desdechado ©   (2006-10-16 13:53) [18]

а в Си все проще, там нет процедур, там есть функции, возвращающие void


 
Джо ©   (2006-10-16 14:24) [19]

> [18] Desdechado ©   (16.10.06 13:53)
> а в Си все проще, там нет процедур, там есть функции, возвращающие
> void

А по мне, так это как если бы определить трезвого человека как алкоголика, только не пьющего :)


 
isasa ©   (2006-10-16 14:34) [20]

Джо ©   (16.10.06 14:24) [19]
А по мне, так это как если бы определить трезвого человека как алкоголика, только не пьющего :)


По аналогии
Процедура- частный случай функции, не возвращающий значение.


 
Джо ©   (2006-10-16 14:35) [21]

А что тогда "функция"? :)


 
isasa ©   (2006-10-16 14:47) [22]

Джо ©   (16.10.06 14:35) [21]
:)
Все остальное ...


 
PZ   (2006-10-16 15:24) [23]

> [19] Джо ©   (16.10.06 14:24)
> А по мне, так это как если бы определить трезвого человека как алкоголика, только не пьющего :)

Восхитительное определение!


 
vuk ©   (2006-10-16 15:47) [24]

to Германн ©   (16.10.06 02:29) [8]:
>кроме того что может возвратить процедура, у которой есть такие же var-
>параметры!
Функция возвращает через свое имя. Плюс ко всему, то, что "возвращает" процедура, должно быть предварительно туда передано.



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

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

Наверх




Память: 0.5 MB
Время: 0.138 c
3-1157457438
parovoZZ
2006-09-05 15:57
2006.11.05
Создание папки в древесной структуре


15-1160968658
Slider007
2006-10-16 07:17
2006.11.05
С днем рождения ! 14 октября


15-1160889398
cyborg
2006-10-15 09:16
2006.11.05
Толи кони не едут


15-1161131078
SerJaNT
2006-10-18 04:24
2006.11.05
Сравнение 2х цветов


6-1150700215
Чайник2006
2006-06-19 10:56
2006.11.05
Как отправить файл на сервер с помощью idHTTP (Indy 10)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский