Что делает оператор присваивания
Оценка 4.8

Что делает оператор присваивания

Оценка 4.8
docx
информатика
03.05.2020
Что делает оператор присваивания
0.1. Что делает оператор присваивания
16.docx

0.1. Что делает оператор присваивания с памятью

Рассмотрим пример программы:

VAR  a,b,y : Integer;
BEGIN
     a:= 10;
     b:= 6;
     y:= a+b+1;
     WriteLn (y+200)
END.

В программе между BEGIN и END встречаются три переменные, поэтому все они перечислены в описании    VAR  a,b,y : Integer  .   Компьютер отведет для них в памяти три двухбайтовые ячейки.

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

Выполняя оператор присваивания (например, y:=a+b+1), компьютер сначала смотрит на его правую часть (a+b+1). Если в ней встречаются переменные (в нашем случае это a и b ), то компьютер перед вычислением ищет их значения в отведенных под них ячейках памяти (и находит там 10 и 6), подставляет эти значения в правую часть и вычисляет ее. Затем вычисленное значение (17) компьютер записывает в ячейку памяти, отведенную под переменную, поставленную в левой части (y).  

Таким образом, когда мы говорим "Компьютер запомнил, что а равно 2", мы подразумеваем "Компьютер записал в ячейку памяти, предназначенную для а, число 2".

А теперь рассмотрим, как будут заполняться информацией ячейки a,b,y   в процессе выполнения нашей программы. В самом начале выполнения паскалевской программы в них находится неизвестно что. Первым выполняется оператор  a:=10. Согласно только что приведенному определению оператора присваивания в ячейку a будет записано число 10. Затем выполняется оператор  b:= 6 и в ячейке b появляется шестерка. Затем выполняется оператор  y:= a+b+1. Компьютер смотрит, что находится в ячейках a и b, видит там 10 и 6, подставляет их в выражение a+b+1, получает 17 и записывает в ячейку y. Наконец выполняется оператор  WriteLn (y+200). Компьютер заглядывает в ячейку y, видит там 17, вычисляет  17+200 и выводит 217 на экран.

Схематически этот процесс можно изобразить так:

ПОРЯДОК  ИСПОЛНЕНИЯ ОПЕРАТОРОВ

ЧТО НАХОДИТСЯ В ЯЧЕЙКАХ ПАМЯТИ

ЧТО ВИДИМ НА ЭКРАНЕ

a

b

y

a:= 10

10

?

?

 

b:= 6   

10

6

?

 

y:= a+b+1        

10

6

17

 

WriteLn (y+200)

10

6

17

217

Теперь мы можем также уточнить работу оператора WriteLn:

Если в скобках оператора WriteLn встречаются выражения с переменными величинами, то Паскаль находит в памяти значения этих величин, подставляет их в выражения, вычисляет выражения и результат выводит на экран.

Задание 7: Поменяйте местами операторы b:= 6   и   y:= a+b+1. Что произойдет?

 

                                                     0.1.1.            Оператор присваивания меняет значение переменной величины

Пока я не рассматривал программы, в которых переменные меняют свою величину. Теперь настало время такую программу рассмотреть:

VAR k : Integer;
BEGIN
     k:=10;  WriteLn (k);   k:=25;   WriteLn (k);   k:=4;   WriteLn (k)
END.

 

Запишем схематически процесс изменения информации в ячейке k:

ПОРЯДОК  ИСПОЛНЕНИЯ ОПЕРАТОРОВ

ЧТО НАХОДИТСЯ В ЯЧЕЙКЕ ПАМЯТИ k

ЧТО ВИДИМ НА ЭКРАНЕ

k:=10   

10

 

WriteLn (k)

10

10

k:=25   

25

 

WriteLn (k)

25

25

k:=4

4

 

WriteLn (k)

4

4

Как видите, в процессе работы программы содержимое ячейки 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)


 

Скачано с www.znanio.ru

Что делает оператор присваивания с памятью

Что делает оператор присваивания с памятью

Оператор присваивания меняет значение переменной величины

Оператор присваивания меняет значение переменной величины
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
03.05.2020
Посмотрите также: