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

Материал из Вики проекта 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.

Ссылки

Персональные инструменты