Циклы. Возможные ошибки: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) |
Mikst (обсуждение | вклад) |
||
Строка 49: | Строка 49: | ||
=== Зацикливание=== | === Зацикливание=== | ||
<source lang="Delphi">var x: integer; | |||
begin | |||
x := 1; | |||
while x>0 do // ошибка: условие все время остается истинным | |||
begin | |||
writeln(x); | |||
x := x + 1; | |||
end; | |||
end.</source> | |||
=== Переполнение=== | === Переполнение=== | ||
=== Сравнение вещественных чисел на равенство === | === Сравнение вещественных чисел на равенство === |
Версия от 13:04, 19 ноября 2009
Неверный тип переменной цикла
var x: real;
begin
for x := 1 to 10 do // переменная - параметр цикла не может иметь вещественный тип
write(x);
end.
Изменение переменной цикла в теле цикла
Пример 1.
var i: integer;
begin
for i := 1 to 10 do
begin
write(i);
i := i + 2; // Нельзя изменять значение переменной цикла внутри цикла
end;
end.
Пример 2.
var i: integer;
begin
for i := 1 to 10 do
begin
read(i); // Нельзя изменять значение переменной цикла внутри цикла
write(i);
end;
end.
Использование одинаковой переменной цикла в заголовках вложенных циклов
var i,j: integer;
begin
for i := 1 to 10 do
for i := 1 to 10 do // ошибка: во вложенном цикле нельзя использовать параметр цикла с тем же именем
begin
write(i);
end;
end.
Неинициализированная переменная
var
i: integer;
p: real;
begin
// Забыли инициализировать p := 1
for i := 1 to 10 do
p := p * 2;
write(p);
end.
Зацикливание
var x: integer;
begin
x := 1;
while x>0 do // ошибка: условие все время остается истинным
begin
writeln(x);
x := x + 1;
end;
end.