Оператор присвоения. Присваивание

17.04.2019

2.1. Оператор присваивания

Идентификатор: = выражение. Здесь идентификатор – имя переменной, переменная хранится в ячейке памяти с именем – идентификатор. тип ячейки памяти определен в разделе описаний. Выражение может быть арифметическим, логическим или каким-либо другим, в котором уже известны (определены) все входящие в его состав идентификаторы.

Замечание 1. Тип значения выражения и тип идентификатора должны совпадать, иначе error - ошибка.



Замечание 2. При наличии хотя бы одной ошибки программа не выполняется.

Пример. Пусть имеются ячейки памяти с именами a, b, c; ячейки таковы, что в них могут быть помещены величины только целого типа. достигается это описанием: Var a, d, c: integer, где Var - начало раздела описания переменных, a, b, c - идентификаторы. Integer означает целый, т.е. в разделе Var идентификаторы (имена) переменных определены как целые.

Работа описания: встретив такое описание, ЭВМ выдаёт три ячейки памяти с именами a, b, c, причем такие, чтобы туда могли быть помещены целые числа. Запишем оператор присваивания:

Работа оператора: машина должна иметь описание идентификаторов a, b, c.

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

2.2. комментарии

Введем понятие комментария. Комментарий – это всё, что заключено между скобками { }. Символы, заключенные между этими скобками, не воспринимаются машиной, но выдаются пользователю. Комментарии используются пользователем для объяснения алгоритма.

2.3. Программа

Напишем программу вычисления a = c+b. Программа начинается с заголовка Program – имя программы; затем идут разделы описаний (до 5) и раздел операторов, который начинается словом Begin и заканчивается END. (end с точкой, точка – конец программы). Каждое описание и оператор заканчиваются символом ";"

Program Prim1; {заголовок программы}

Var a,b,c:integer; {раздел описания переменных, выделение}

{ячеек памяти для хранения целых величин}

BEGIN {начало раздела операторов}

c:=547; b:=42; {занесение в ячейки c и b начальных значений}

a:=c+b; {вычисление значения и выдача на}

writeln(a); {экран (write - писать) значения a}

END. {конец программы}.

Напоминаем, что тексты, заключённые в скобки { }, являются комментариями, не являются частью программы и могут быть опущены, таким образом, программа для ЭВМ имеет следующий вид:

Программа записывается в виде строк. Максимальная длина строки 255 символов, но не стоит делать строки длиннее строки экрана – 80 символов, иначе строки будут "прятаться" за пределами окна экрана, хотя строки и можно просмотреть, передвигая "окно" (рис. 2.2).



"Хорошее" расположение строк "Плохое" расположение строк

Рис. 2.2

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

2.4. Простейший ввод-вывод

В программе Prim1 мы задавали исходные данные с помощью оператора присваивания, что не всегда удобно, если одну и ту же программу нужно просчитывать с различными исходными данными. Для присвоения начальных значений можно использовать оператор readln (идентификатор, идентификатор,...,идентификатор); например, readln (c,b). встретив такой оператор, машина остановится и будет ждать, пока пользователь не наберет на клавиатуре значение с, нажмет клавишу "пробел”, наберет значение b и нажмет клавишу ENTER (ввод).значения величин c и b отобразятся на экране и после нажатия клавиши ENTER занесутся в ячейки памяти машины с именами с и b соответственно. тогда программа Prim1 примет вид:

Var a, b, c: integer;

BEGIN readln (c,b);

Замечание 1. Напомним, что машине безразлично, строчные или прописные буквы одинаковых слов end, end и end (но не для вас).

Замечание 2. Удобно ставить Readln перед END, так как после выполнения программы машина выдаёт на экран окно текста программы, а результат "прячется" за этим окном и, чтобы его посмотреть, необходимо убрать окно с программой с помощью нажатия клавиш. Если перед END имеется Readln, то программа не завершит работу, пока вы не нажмете клавишу ENTER, т.е. в данном случае на экран будет выведено значение а. Вы посмотрите результат и нажмете ENTER для входа в редактор языка Паскаль.


Тип урока:

  • обучающий. Учащиеся знакомятся с новым оператором языка Паскаль;
  • повторение темы «Внутренняя память компьютера»;
  • закрепляющий приобретенные знания.

Тема урока: «Программирование на языке Паскаль. Оператор присваивания».

Цели:

  • Ввести понятие «Оператор присваивания».
  • Различать операции, допустимые для целых и вещественных чисел.
  • Правильно составлять и вычислять выражения с использованием оператора присваивания.
  • Писать программы для простейших задач.

Длительность урока: 1 час 30 минут.

ХОД УРОКА

Первый урок

1. Повторение темы предыдущего урока «Типы данных». Примеры использования одинаковых по звучанию слов, но имеющих разные смысловые значения.

Учитель и обучающиеся работают в форме «вопрос-ответ» (10 минут).

2. Учитель объясняет новую тему, используя мультимедийный урок-презентацию «Программирование на языке Паскаль. Оператор присваивания». Дается определение понятия «оператор присваивания», приводится общая и структурная форма оператора. Прежде, чем рассмотреть работу оператора присваивания, вспоминаем и повторяем тему «Оперативная память, свойства Оперативной памяти».

Сопровождается показом презентации. Приложение 1 (15 минут).

3. Обучающиеся работают самостоятельно, читая и конспектируя новую тему (урок-презентация предварительно записан на компьютеры обучающихся, вопросы для конспектирования определены учителем). Здесь же ученики могут познакомиться с текстами программ, в которых используется оператор присваивания Приложение 2 (20 минут).

Второй урок

4. Обучающиеся работают у доски, выполняя упражнения (12-15 минут).
1. Учитель проводит контроль знаний в форме теста. Программа-тест предварительно записывается на компьютеры обучающихся. Оценка выставляется программой. Приложение 5 (10 минут).
5. Ученики выполняют небольшую самостоятельную работу по карточкам, либо пишут и отлаживают программу на АЯП Паскаль, в которой используется оператор(ы) присваивания (учитель называет номера карточек с заданиями). За работу учащиеся получают оценку. Приложение 3 . Приложение 4 (15 минут).
Домашнее задание. Ученикам предлагается написать текст простой программы на АЯП Паскаль, в которой используется оператор(ы) присваивания (для тех учеников, которые не успели выполнить задание в классе).

Выводы:

  • Через блок 1 повторение темы предыдущего урока.
  • Через блоки 2, 3 и 4 дается и закрепляется новая тема «Оператор присваивания».
  • Через блоки 5 и 6 выполняется контроль знаний.

Программирование на языке Паскаль

Урок № 1 (2 часа). Переменные и константы. Оператор присваивания

  1. Проверка домашнего задания.
  2. Новая тема.
  3. Домашнее задание.

Проверка домашнего задания.

2. Новая тема: «Переменныые и константы. Опреатор присваивания»

Переменная – это имя области памяти (размер области зависит от типа данных), в которой хранится значение, присвоенное переменной. Переменную можно сравнить с ящиком, в котором находится значение (лучшее сравнение с многоквартирным домом, т. к. из ящика можно извлечь что-то и это будет последним, т. е. ящик остаётся пустым, а переменная, даже если ею воспользовались, остаётся в области памяти.).
Константа – фиксированные одиночные числовые или текстовые значения, которые не могут изменяться в ходе выполнеия программы.
Оператор присваивания. Один из наиболее часто используемых операторов оператор присваивания. Общий вид оператора присваивания:

имя переменной:= выражение ;

Выражение может быть и конкретным значением (т.е. число целое или вещественное, например, 22 или 2.5, символьная величина: "ABC", логическая величина: TRUE или FALSE), и некоторым выражением (величины + операции над ними), результат которого будет присвоен переменной в левой части.

ПРИМЕРЫ:

PAG:= 10; (конкретное значение в виде числа);
X:= X + 1; (выражение);
C:= B; (имя переменной);
G:= ‘ПРИВЕТ‘; (конкретное значение символьное);
X:= (-A + SIN(Y) – 4 * B * X) / (2 * C); (математическое выражение);
Y:= TRUE; (конкретая логическая величина).

Отличие операции присваивания в математике и программировании.

В математике выражениеа = в означает, что вычисленные значения для а и в должны быть равными.
В программировании А:= В понимается так, что значение, хранимое в области памяти с именем В, помещается в область памяти с именем А. Поэтому обратное выражение
В:= А даёт другой результат.
Пример: в А и в В помещаются значения 5 и 9 соответственно.

А: = 5;
В: = 9

а) Результат операции А:= В;

б) Результат операции В:= А;

Далее ещё одно существенное различие между знаком равенства и оператором присваивания: А = А + 1;
В математике такое выражение просто бессмысленно, поскольку тождество ложно. Не существует таких числовых значений А, для которых оно было бы справедливо. В программировании это означает, что к значению, хранимому в ячейке А, прибавляется 1, и вновь получаемое значение заменяет старое в ячейке А. Например, если до выполнения этого оператора А имело значение 5, то после выполнения будет равно 6.

Следующее отличие: математическое выражение А + 9 – В = Х вполне обосновано и может означать, что при подстановке некоторых чисел вместо А и В в левую часть выражения вы получите Ч. В то же время в программировании это выражение лишено смысла, поскольку левая часть выражения должна содержать имя области памяти, которой присваивается значение, вычисляемое в правой части. Если же вы попытаетесь вставить такое выражение в свою программу, то получите сообщение об ошибке, поскольку имя переменной А + 9 – В не поймёт .

записать в общепринятой форме:

(– b + sqrt(sqr(b) – 4 * a * c))/(2 * a);
a/b * (c + d) – (a – b)/b/c + 1E – 8;

Список литературы:

  • В.Б. Попов «TURBO PASCAL для школьниковI», «Финансы и статистика», Москва, 1996 г.
  • А.А. Черно в «Конспекты уроков информатики в 9 – 11 классах», «Учитель», Волгоград, 2004.
  • Д.М. Златопольский «Я иду на урок информатики. Задачи по программированию, 7 – 11 классы», «Первое сентября», Москва, 2001.

Для сокращённой записи выражений в языке программирования С++ есть специальные операции, которые называются операциями присваивания. Рассмотрим фрагмент кода, с использованием операции присваивания.

Int value = 256; value = value + 256; // обычное выражение с использованием двух операций: = и + value += 256; // сокращённое эквивалентное выражение с использованием операции присваивания

В строке 2 переменной value присваивается значение 512, полученное в результате суммы значения содержащегося в переменной value с числом 256. В строке 3 выражение выполняет аналогичную операцию, что и в строке 2 , но выражение записано в упрощённом виде. В этом выражении присутствует операция присваивания со знаком плюс += . Таким образом, операция += суммирует значение переменной value co значением, которое находится правее: 256, и присваивает результат суммы этой же переменной. Как видно из примера оператор в строке 3 короче оператора в строке 2 , хоть и выполняет аналогичную операцию. Так что, если некоторую переменную нужно изменить, то рекомендуется использовать операции присваивания.

В С++ существует пять операций присваивания, не считая основную операцию присваивания: = .

  1. += операция присваивания-сложения;
  2. -= операция присваивания-вычитания;
  3. *= операция присваивания-умножения;
  4. /= операция присваивания-деления;
  5. %= операция присваивания-остатка от деления;

Договоримся называть операции присваивания через дефис, чтобы было понятно о какой именно операции идёт речь. В таблице 1 наглядно показаны примеры использования операторов присваивания в языке программирования С++.

Операции присваивания в С++
Операция Обозначение Пример Экв.пример Пояснение
операция присваивания-сложения += var += 16 var = var + 16 Прибавляем к значению переменной var число 16, результат суммирования сохраняется в переменной var
операция присваивания-вычитания -= var -= 16 var = var — 16 Вычитаем из переменной var число 16, результат вычитания сохраняется в переменной var
операция присваивания-умножения *= var *= 16 var = var * 16 Умножаем значение переменной var в 16 раз, результат умножения присваивается переменной var
операция присваивания-деления /= var /= 16 var = var / 16 Делим значение переменной var на 16, результат деления присваивается переменной var
операция присваивания-остатка от деления %= var %= 16 var = var % 16 Находим остаток от деления и сохраняем его в переменной var

Разработаем программу, которая будет использовать операции присваивания.

// assignment.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include using namespace std; int main(int argc, char* argv) { int value = 256; cout << "value = " << value << endl; value += 256; // сокращённое выражение с использованием операции присваивания - сложения cout << "value += 256; >> " << value << endl; value -= 256; // сокращённое выражение с использованием операции присваивания - вычитания cout << "value -= 256; >> " << value << endl; value *= 2; // сокращённое выражение с использованием операции присваивания - умножения cout << "value *= 2; >> " << value << endl; value /= 8; // сокращённое выражение с использованием операции присваивания - деления cout << "value /= 8; >> " << value << endl; system("pause"); return 0; }

Для начала в строке 9 была объявлена переменная value , и инициализирована значением 256. В строках 11, 13, 15, 17, прописаны операции присваивания – сложения, вычитания, умножения и деления соответственно. После выполнения каждой операции присваивания оператор cout печатает результат. Результат работы программы (см. Рисунок 1).

Value = 256 value += 256; >> 512 value -= 256; >> 256 value *= 2; >> 512 value /= 8; >> 64 Для продолжения нажмите любую клавишу. . .

Рисунок 1 – Операции присваивания в С++

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

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

Оператор присваивания определяет процесс вычисления нового значения переменной с помощью выражения и запоминание полученного результата в ОП.

Выражение – это правило (формула) для вычисления нового значения . Выражение строится из операндов, операций и круглых скобок , с помощью которых можно задать требуемый порядок выполнения его операций. В качестве операндов могут быть константы, переменные и функции. Результатом выполнения выражения является значение арифметического или логического типа, строка или множество. Тип результата определяется как типом операндов, так и видом операций, выполняемых над операндами. Над различными типами данных допустимы различные совокупности операций. К моменту вычисления выражения должны быть известны значения всех входящих в него переменных.

Форма оператора присваивания:

где A – имя переменной (левая часть оператора присваивания);

B – выражение для вычисления нового значения (правая часть оператора присваивания). Тип результата выражения должен быть совместим с типом переменной A.

Правила выполнения оператора присваивания:

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

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

Примеры. 1. Традиционное представление арифметического выражения

Z:= (X +Y) + (X – Y)

(C – 0.5) (X*A)

На Паскале: Z:= (X +Y) / (C – 0.5) + (X – Y) / (X*A) ;

2. Традиционно: Ai = Bi+1 + Ci, j ; На Паскале: A [ I ] := B [ I + 1 ] + C [ I, J ];

В алгебре нет аналогов следующих операторов: I:= I + 1; X:= X + DX; С помощью данных операторов переменные I и X получают приращения равные соответственно 1 и DX.

Операнды в выражениях соединяются знаками операций, которые могут быть одноместные (например, +X, -Y, NOT Z; где NOT – не) или двухместные (например: X + Y, A * B, C < D, E OR F, где OR – или, E AND F, где AND – и).

Операции различаются по степени приоритета:

1) одноместные операции (+, -, NOT);

2) мультипликативные (размножающие) операции (*, /, DIV (ц/деление), MOD (остаток ц/деления), AND, SHL (сдвиг влево), SHR (сдвиг вправо);

3) аддитивные (суммирующие) операции: +, -, OR, XOR (исключить ИЛИ);



4) операции отношения: =, <>, <, <=, >=, >, IN (В) – принадлежность множеству.

Если нет скобок, операции одного уровня приоритета (ранга) выполняются в последовательности их написания слева направо. Операции различных рангов выполняются в последовательности их приоритета.

Последовательность вычисления выражений:

1) Сначала полностью вычисляются выражения в скобках, начиная с самых внутренних;

2) Операции одного ранга (однородные) выполняются последовательно слева направо;

3) При неоднородных операциях последовательность выполнения операций следующая:

a) значения функций;

b) одноместные операции (например, -х, +а);

c) двухместные операции в порядке их приоритета.

Выражения на Паскале пишут на одном уровне, без изменения уровня написания индексов массивов. При написании выражений нельзя:

1) пропускать знак * - умножения;

2) при переносе выражения на следующую строку повторять знак арифметической операции.

При написании выражений допускается:

1) не писать + в одноместной операции, т.е. можно писать A:= X, а не A:= +X;

2) делать пробелы между операндами, знаками операций и скобками;

3) перенос (продолжение) выражения на следующую строку, не разрывая идентификатора, ключевых слов и чисел;

4) использовать лишние скобки для удобства чтения выражений.