Pull to refresh

Comments 15

>Процедура и функция — это ключевые понятия в любом языке программирования, без которых не обходится ни одна серьезная программа.
Так говорите как будто процедуры есть во всех языках, улыбнуло :)
Да, функции в том или ином виде есть во всех тьюринг-полных языках программирования (читай, во всех). Это основа самого языка. Другое дело, выглядеть или называться они могут по-разному.
Brainfuck. Полон по Тьюрингу. Показывайте функции.
Брейнфак только в теории тьюринг-полный. Была бы бесконечная память, была бы и реализация функций.

Объяснения, как и что делается, можно найти тут:
www.iwriteiam.nl/Ha_bf_Turing.html
Любой реализованный на практике язык не является в полной мере полным по Тьюрингу, т.к. реализовать бесконечную ленту (память) невозможно. Brainfack является таким же относительно полным приближением как и любой другой язык. Так что ваше утверждение, что функции есть во всех полных по Тьюрингу языках — чушь, как и ваша аргументация в пользу этого.
Такие простые истины описаны здесь. По мне, каждый кто хотя бы неделю писал программы на Delphi знает их.
Значит Вы давно не видели чему учат в нынешних ВУЗах :)
UFO just landed and posted this here
Это называется copy-on-write
Логически ничем не отличается от передачи по значению, различие только в скорости выполнения.
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 в итоге не изменится. Создается копия сразу или только при изменении сказать точно не смогу.
Для комплекта не хватает примеров по замыканиям;
Так же нет описания передачи ссылок на функции, процедуры и методы;
Не указано, что нельзя задать дефолтное значению типу Variant;
И да, упущена такая штука, как VarArrayOf

если не сложно, подкиньте сылочку с примером передачи функции, процедуры или метода как ссылки. До сих пор не использовал такую возможность но было бы интересно увидеть как это делается.
да… навспоминали азов, и то с ошибками и недоговорками…

Например, фраза «Однако это не относится к объектам. Например, если в функцию передается переменная (а точнее экземпляр объекта) TStringList, то в данном случае произойдет передача по ссылке (даже если это не указано явно).» не совсем корректна.

Это относится к объектам. Но в Delphi есть два вида объектов — новые, которые типа class и старые, которые типа object. Ко вторым относится полностью, как и к записям (record), а вот к первым отностися косвено — потому что они всегда храняться по ссылке. Переменная типа class — это указатель, и вот именно к нему относится режим передачи значения. К указателю. И относится так же в полной мере.
Sign up to leave a comment.

Articles