Comments 15
>Процедура и функция — это ключевые понятия в любом языке программирования, без которых не обходится ни одна серьезная программа.
Так говорите как будто процедуры есть во всех языках, улыбнуло :)
Так говорите как будто процедуры есть во всех языках, улыбнуло :)
+4
Да, функции в том или ином виде есть во всех тьюринг-полных языках программирования (читай, во всех). Это основа самого языка. Другое дело, выглядеть или называться они могут по-разному.
-1
Brainfuck. Полон по Тьюрингу. Показывайте функции.
+3
Брейнфак только в теории тьюринг-полный. Была бы бесконечная память, была бы и реализация функций.
Объяснения, как и что делается, можно найти тут:
www.iwriteiam.nl/Ha_bf_Turing.html
Объяснения, как и что делается, можно найти тут:
www.iwriteiam.nl/Ha_bf_Turing.html
0
Любой реализованный на практике язык не является в полной мере полным по Тьюрингу, т.к. реализовать бесконечную ленту (память) невозможно. Brainfack является таким же относительно полным приближением как и любой другой язык. Так что ваше утверждение, что функции есть во всех полных по Тьюрингу языках — чушь, как и ваша аргументация в пользу этого.
+2
Такие простые истины описаны здесь. По мне, каждый кто хотя бы неделю писал программы на Delphi знает их.
+13
UFO just landed and posted this here
Это называется copy-on-write
Логически ничем не отличается от передачи по значению, различие только в скорости выполнения.
Логически ничем не отличается от передачи по значению, различие только в скорости выполнения.
+1
UFO just landed and posted this here
procedure EditString (s : string);
begin
s:='5';
end;
procedure TForm19.Button1Click(Sender: TObject);
var
ss : string;
begin
ss:='1234';
EditString(ss);
ShowMessage(ss);
end;
Ну вот например этот код показывает что значение переменной ss в итоге не изменится. Создается копия сразу или только при изменении сказать точно не смогу.
0
Для комплекта не хватает примеров по замыканиям;
Так же нет описания передачи ссылок на функции, процедуры и методы;
Не указано, что нельзя задать дефолтное значению типу Variant;
И да, упущена такая штука, как VarArrayOf
Так же нет описания передачи ссылок на функции, процедуры и методы;
Не указано, что нельзя задать дефолтное значению типу Variant;
И да, упущена такая штука, как VarArrayOf
0
Решили вспомнить школьный курс информатики? :)
+6
да… навспоминали азов, и то с ошибками и недоговорками…
Например, фраза «Однако это не относится к объектам. Например, если в функцию передается переменная (а точнее экземпляр объекта) TStringList, то в данном случае произойдет передача по ссылке (даже если это не указано явно).» не совсем корректна.
Это относится к объектам. Но в Delphi есть два вида объектов — новые, которые типа class и старые, которые типа object. Ко вторым относится полностью, как и к записям (record), а вот к первым отностися косвено — потому что они всегда храняться по ссылке. Переменная типа class — это указатель, и вот именно к нему относится режим передачи значения. К указателю. И относится так же в полной мере.
Например, фраза «Однако это не относится к объектам. Например, если в функцию передается переменная (а точнее экземпляр объекта) TStringList, то в данном случае произойдет передача по ссылке (даже если это не указано явно).» не совсем корректна.
Это относится к объектам. Но в Delphi есть два вида объектов — новые, которые типа class и старые, которые типа object. Ко вторым относится полностью, как и к записям (record), а вот к первым отностися косвено — потому что они всегда храняться по ссылке. Переменная типа class — это указатель, и вот именно к нему относится режим передачи значения. К указателю. И относится так же в полной мере.
0
Sign up to leave a comment.
Использование процедур и функций в Delphi