Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

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

 
Германн ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.073 c
15-1160683005
PHPDeveloper
2006-10-12 23:56
2006.11.05
Yandex


15-1161085200
Маска
2006-10-17 15:40
2006.11.05
Firewall


2-1161350547
Dib@zol
2006-10-20 17:22
2006.11.05
Ворох вопросов по API


2-1161511352
sss1
2006-10-22 14:02
2006.11.05
ShellExecute


15-1160758042
Chort
2006-10-13 20:47
2006.11.05
каким образом можно создать файл .chm или .hlp