русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

О П Е Р А Т О Р П Р И С В А И В А Н И Я


Дата добавления: 2014-11-27; просмотров: 636; Нарушение авторских прав


 

В блок-схемах обычная математическая запись , означающая, что переменная принимает значение выражения , представляется в виде (читается " становится равным " ). При выполнении этого оператора переменная теряет свое предыдущее значение и получает новое значение.

Каждое имя в программе (в том числе в блок-схеме) – это косвенное обозначение адреса поля памяти. Следовательно, при выполнении оператора в оперативной памяти будут использованы поля с именами

Выполнение оператора присваивания производится в четкой последовательности во времени:

1) из памяти в процессор читаются значения переменных (содержимое полей памяти с адресами );

2) в процессоре вычисляется значение выражения ;

3) результат вычислений записывается в память в поле с именем .

 

 

 
 

 


y a b x

 

Память

 
 

 


В обычном математическом представлении знак "=" имеет два смысла. Запись можно интерпретировать следующим образом:

1) вычислить значение выражения и присвоить его переменной ;

2) проверить, равно ли значение переменной значению выражения .

Поскольку в программе двусмысленность недопустима, то в первом случае используется символ ":=" (операция присваивания), а во втором случае - символ "=" (операция отношения).

 

Использование операции присваивания позволяет записывать такие конструкции, которые в обычной математической интерпретации бессмысленны. Например, . Это означает, что к текущему значению переменной добавляется 1, после чего полученное значение присваивается той же переменной . Следовательно, значение переменной увеличивается на единицу.

 

Пример 1. Обменять значения переменных и .

Если мы перешлем содержимое поля в поле , т.е. выполним оператор , то прежнее значение переменной будет уничтожено. При выполнении оператора будет уничтожено текущее содержимое поля . Поэтому обмен содержимого двух полей памяти необходимо делать с помощью дополнительного буферного поля. Это может иметь следующий вид:



 

b
a
2

           
   
 
   
 

 

 


R
1 3

       
 
   
 

 

 


Числа 1, 2, 3 указывают последовательность пересылок содержимого полей памяти , и .

 

Представленную выше схему можно реализовать такими операторами:

; ; .

 

Подчеркнем еще раз смысл оператора присваивания. Если в правой части оператора записана переменная, например,

,

то это означает, что содержимое поля памяти с именем (адресом) пересылается в поле . Разумеется, такая пересылка осуществляется через процессор.

 

Если в правой части оператора присваивания стоит выражение, например,

,

то вначале в процессор читаются значения операндов (содержимое поля , содержимое поля и содержимое поля памяти, в котором записана константа 1), вычисляется значение выражения, а полученный результат записывается в поле памяти, имя которого указано в левой части оператора присваивания (в данном случае в поле ).

 

В Паскале оператор присваивания имеет такое же обозначение, как и на блок-схеме. Его синтаксическая диаграмма:

 

 
 

 


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

Выражения могут быть арифметические, логические и строковые.

 

Старшинство операций:

1) not;( отрицание )

2) *, /, div, mod, and; ( операции типа умножения )

3) +, -, or, xor;( операциитипа сложения )

4) =, <>, <, <=, >, >=; ( операции отношения )

5) in.(операция принадлежности )

Примечание. Операция in будет определена при рассмотрении множеств.

 

Пример 2.

(25 – 3*3)/(3 + 1) * 7 – 4 + 2*3 = (25 – 9)/4 * 7 – 4 + 6 = 16/4 * 7 + 2 =

4.0 * 7 + 2 = 28.0 + 2 = 30.0

 

Некоторую особенность имеет вычисление логических операций and и or, для которых в Турбо Паскале применяется так называемая короткая схема вычислений. По этой схеме вначале вычисляется первый операнд. Если для операции and получено при этом значение false, то второй операнд не вычисляется, так как результат операции все равно будет иметь значение false. Аналогично, если первый операнд операции orимеет значение true, то второй операнд не вычисляется. Например, в выражении (x<0) and(y>x-1) при x = 1 будет вычислен лишь первый операнд и получено общее значение false вне зависимости от значения, которое имеет переменная y.

 

Оператор присваивания выполним, если переменная и выражение совместимы по присваиванию. Основные варианты совместимости по присваиванию:

1) переменная и выражение относятся к одному типу.

2) переменная относится к типу real, а значение выражения - к одному из целых типов.

 

 

Пример 3.

Var a,b : real;

m,n : integer;

Begin

a:=55.85; m:=15;

b:=m; n:=a;

 

В операторе n := a не выполняется требование совместимости по присваиванию. Если допустить такой оператор, то имела бы место потеря точности, так как переменной n можно присвоить лишь целую часть значения переменной a (при присваивании b:=m потери точности не происходит). Если в программе действительно нужно присвоить переменной n значение переменной a, то это можно сделать следующим образом:

n := Trunc(a) или n := Round(a) .

Другие варианты совместимости по присваиванию будут рассмотрены позже.

 



<== предыдущая лекция | следующая лекция ==>
Блок-схемный способ. | У С Л О В Н Ы Й О П Е Р А Т О Р


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.137 сек.