Пока я не рассматривал программы, в которых переменныеменяют свою величину. Теперь настало время такую программу рассмотреть:
VAR k: Integer;
BEGIN
k:=10; WriteLn (k); k:=25; WriteLn (k); k:=4; WriteLn (k)
END.
Запишем схематически процесс изменения информации в ячейке k:
ПОРЯДОК ИСПОЛНЕНИЯ ОПЕРАТОРОВ | ЧТО НАХОДИТСЯ В ЯЧЕЙКЕ ПАМЯТИ k | ЧТО ВИДИМ НА ЭКРАНЕ |
k:=10 | ||
WriteLn (k) | ||
k:=25 | ||
WriteLn (k) | ||
k:=4 | ||
WriteLn (k) |
Как видите, в процессе работы программы содержимое ячейки k меняется. Так, при выполнении оператора k:=25 там вместо значения 10 появляется 25. А куда же девается десятка? Она стирается, то есть компьютер забывает ее безвозвратно. Здесь действует общий принцип работы всех компьютеров:
Если в какое-нибудь место памяти или диска записывается новая информация, то старая информация, записанная там раньше, автоматически стирается, даже если она кому-то и нужна.
Раз теперь вместо 10 в ячейке k находится 25, то оператор WriteLn (k) печатает уже 25. Следующий оператор k:=4 запишет на место 25 четверку, а WriteLn (k) ее напечатает.
|
|
А что напечатает следующая программа?
VAR f: Integer;
BEGIN
f:=30;
f:=f+4;
WriteLn (f)
END.
Оператор f:=30 запишет в ячейку f число 30. А что сделает странный оператор f:=f+4? По определению оператора присваивания он сначала вычислит правую часть f+4, подставив туда вместо f его значение, взятое из ячейки, и получит 34. Затем число 34 будет записано в ячейку, отведенную под переменную, обозначенную в левой части, то есть опять в ячейку f. При этом старое значение 30 будет стерто.
Таким образом, оператор f:=f+4 просто увеличивает число в ячейке f на четверку или, другими словами, увеличивает f на 4.
Задания 8-10:
Определите без компьютера, что будет напечатано при выполнении следующих фрагментов программ:
8) a:=100; a:=10*a+1; WriteLn (a)
9) a:=100; a:=-a; WriteLn (a)
10) a:=10; b:=25; a:=b-a; b:=a-b; WriteLn (a,' ',b)