Процедуры и функции. Возможные ошибки

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску

Невозвращение значения функции по одной из ветвей алгоритма

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.

Ссылки