Песни о Паскале | страница 33




>var S : string;

>begin

>Writeln(S);

>S:= ’Спартак’;

>Writeln(S);

>S:= S + ’ – чемпион!’;

>Writeln(S);

>Writeln(’Нажми Enter’); Readln;

>end.


Здесь переменная S будет напечатана трижды. Но что, по вашему мнению, выведет первый оператор Writeln(S)? Ни за что не угадаете! Этого даже я не знаю. Все потому, что при старте программы содержимое всех её переменных не определено, – в этих «карманчиках» может валяться что угодно. Обычно там остаются следы от деятельности предыдущих программ – так называемый мусор. Не пытайтесь напечатать такие переменные или извлечь из них данные, – порой это может вызвать даже аварию программы.

Запомните: прежде, чем взять из «карманчика», туда следует что-либо положить! Надо, как говорят программисты, инициализировать переменную. Это можно сделать двояко: либо вводом данных процедурой Readln, либо оператором присваивания.

В последующих операторах этого примера переменная S инициализируется, и здесь результат вывода на экран очевиден. А в операторе


>S:= S + ’ – чемпион!’;


предыдущее значение переменной S взято для формирования её нового значения. Теперь там окажется строка «Спартак минус чемпион!». Не обижайтесь, спартаковцы, – пошутил. Обязательно проверьте эту программу!

Типизированные константы

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


>const Pele = ’Эдсон Арантес ду Насименту’; <– это строка (string)

>      Number = 12;             <– это число


Здесь тип сам собой определяется тем значением, что дано константе.

Но существует и другая разновидность констант – типизированные константы, которые объявляются с явным указанием типа:


>const Pele : string = ’Эдсон Арантес ду Насименту’; <– это строка (string)

>      Number : integer = 12;       <– это число (integer)


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

В Delphi разрешено инициализировать переменные при объявлении:


>var Pele : string = ’Эдсон Арантес ду Насименту’;


Но этот способ не совместим с Borland Pascal, и в данной книге не применяется.

Итоги

• В одном операторе можно объявить несколько переменных одного типа.

• Процедура Writeln способна напечатать в одной строке несколько параметров. Параметры в списке разделяются запятыми.