Процедуры и функции. Возможные ошибки: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) |
Mikst (обсуждение | вклад) |
||
Строка 26: | Строка 26: | ||
=== Передача выходных параметров по значению === | === Передача выходных параметров по значению === | ||
<source lang="Delphi">procedure BadInc(i: integer); | |||
begin | |||
i := i + 1; | |||
end; | |||
var i: integer; | |||
begin | |||
i := 5; | |||
writeln(i); | |||
BadInc(i); // меняется копия переменной i, а не сама переменная i. Нееобходимо использовать var-параметр | |||
writeln(i); | |||
end.</source> | |||
== Ссылки == | == Ссылки == | ||
[[Алгоритмы_для_начинающих_на_примерах|Алгоритмы для начинающих]] | [[Алгоритмы_для_начинающих_на_примерах|Алгоритмы для начинающих]] |
Версия от 13:02, 28 ноября 2009
Невозвращение значения функции по одной из ветвей алгоритма
function Bad(x: integer): integer;
begin
if x>0 then
Result := 777
// При x<=0 значение функции непредсказуемо
end;
begin
writeln(Bad(-2));
end.
Описание переменной цикла, используемого в процедуре, как глобальной
var i: integer;
procedure Bad;
begin
for i := 1 to 10 do // Переменная-параметр цикла for должна описываться подпрограмме, где используется цикл
write(i);
end;
begin
for i := 1 to 10 do
Bad;
end.
Передача выходных параметров по значению
procedure BadInc(i: integer);
begin
i := i + 1;
end;
var i: integer;
begin
i := 5;
writeln(i);
BadInc(i); // меняется копия переменной i, а не сама переменная i. Нееобходимо использовать var-параметр
writeln(i);
end.