Главная страница
    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.041 c
15-1160987619
Juice
2006-10-16 12:33
2006.11.05
Средство разработки на Java


2-1161069191
Батя
2006-10-17 11:13
2006.11.05
Типа listbox a только в место текста картинки


15-1160521441
Moscow
2006-10-11 03:04
2006.11.05
Секундные пропадания напряжения в Москве У вас есть такое?


2-1161198949
Busik
2006-10-18 23:15
2006.11.05
Помогите решить проблему


2-1161063939
svt
2006-10-17 09:45
2006.11.05
Мастера, подскажите как сделать так, чтобы





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