Форум: "Прочее";
Текущий архив: 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