Зачем переменные вместо чисел

В 4.11 я учил вас использовать в программе не числа, а переменные величины. Однако, впоследствие при написании простеньких программ сам же этому принципу не следовал, чтобы не отвлекать ваше внимание на запоминание имен переменных. Теперь пришла пора показать, почему же все-таки полезно вместо чисел употреблять переменные.

Вот программа для задания 3 из 9.7 выше для бесконечного движения окружности влево-вправо. В ней этот принцип пока не соблюдается.

USES Graph;

VAR x, Device, Mode :Integer;

BEGIN
Device:=0;

InitGraph(Device, Mode, ’<путь к графическим драйверам>’);

ReadLn;

repeat {Внешний цикл для бесконечности отскоков}
{ Движение направо:}

x:=40; {Начинаем перемещение из левой части экрана}

repeat {Вложенный цикл для движения направо}
SetColor(White);

Circle(x,100,10); {Рисуем белую окружность}

SetColor(Black);

Circle(x,100,10); {Рисуем черную окружность}

x:=x+2 {Перемещаемся немного направо}

until x>600; {пока не упремся в правый край экрана}
{ Движение налево:}

x:=600; {Начинаем перемещение из правой части экрана }

repeat {Вложенный цикл для движения налево}
SetColor(White);

Circle(x,100,10); {Рисуем белую окружность}

SetColor(Black);

Circle(x,100,10); {Рисуем черную окружность}

x:=x-2 {Перемещаемся немного налево}

until x<40 {пока не упремся в левый край экрана}

 

until 8>9 {Невыполнимое условие, чтобы цикл выполнялся бесконечно}
END.

Предположим, мы хотим, чтобы шарик летал в три раза быстрее. Для этого нам достаточно в двух местах программы вместо 2 написать 6. Вот то-то и неудобно, что в двух, а не в одном. Слишком много труда. В нашей программе это, конечно, пустяк, а вот в больших и сложных программах одна и та же величина может встречаться десятки раз, и чтобы ее изменить, придется вносить десятки исправлений.

Теперь напишем вариант той же программы, но с использованием переменных величин:

USES Graph;

VAR x, Device, Mode, lev, prav, shag : Integer;

BEGIN
Device:=0;

InitGraph(Device, Mode, ’<путь к графическим драйверам>’);

ReadLn;

lev:=40; prav:=600; shag:=2;

repeat
x:=lev;

repeat
SetColor(White);

Circle(x,100,10);

SetColor(Black);

Circle(x,100,10);

x:=x+shag

until x>prav;

x:=prav;

repeat
SetColor(White);

Circle(x,100,10);

SetColor(Black);

Circle(x,100,10);

x:=x-shag

until x<lev
until 8>9
END.

Теперь для того, чтобы изменить скорость шарика, достаточно заменить 2 на 6 только в одном месте.

Вторая причина, по которой мы используем переменные, та, что с ними программа становится понятнее, так как имена переменным мы придумываем, исходя из их смысла.