Процедуры и функции. Возможные ошибки: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Строка 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.

Ссылки

Алгоритмы для начинающих