Охарактеризуйте оператор присваивания кратко

Обновлено: 02.07.2024

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

Если в левой части оператора присваивания указана переменная типа Boolean, то в правой части оператора должно быть задано логическое выражение, задающее правило вычисления логического значения (true или false). Синтаксис:

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

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

с переменными целого типа: x := 200;

вещественного: y := Sin(Pi/3);

символьного: с := ‘6’;

булевского: test := false;

R – радиус окружности (тип – integer или real)

Pi – константа, равная значению p.

  1. Присвоить переменной Flag (тип — Boolean) значение true, если переменная X (тип — real) находится в интервале (0; 1), и false – в противном случае:
  1. Присвоить переменной Rect (тип — Boolean) значение true, если из отрезков длиной X, Y, Z (тип — real) можно построить треугольник, и false – в противном случае:

Операторы ввода-вывода

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

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

Основными устройствами ввода-вывода у ПК являются клавиатура и экран монитора. Именно через эти устройства главным образом осуществляется диалог между человеком и ПК.

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

Существует две формы оператора ввода: Read и ReadLn. Процедура ввода с клавиатуры имеет следующий формат:

Read ( ),

где – это последовательность имен переменных, разделенных запятыми.

Оператор обеспечивает ввод данных разных типов с клавиатуры. В скобках указываются имена переменных, которым присвоятся введенные значения. При вводе нескольких значений с помощью одного оператора они разделяются символом . Для окончания ввода (завершения работы оператора Read) нажимается клавиша . Если же в программе есть несколько подряд идущих операторов Read, то данные вводятся потоком, т.е. без нажатия .

Другой вариант оператора ввода с клавиатуры имеет вид:

ReadLn ( )

Оператор ReadLn аналогичен предыдущему, отличие заключается в том, что при выполнении одного оператора ReadLn курсор на экране монитора переходит на новую строку.

Аналогично существует две формы оператора вывода. Оператор вывода на экран (обращение к стандартной процедуре вывода) имеет следующий формат:

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

Если необходимо вывести на экран какой-либо текст, то внутри оператора Write этот текст записывается в апострофах.

Второй вариант процедуры вывода на экран:

Его действие отличается от оператора Write тем, что после вывода последнего в списке значения происходит перевод курсора к началу следующей строки. Оператор WriteLn может использоваться без каких-либо параметров – в этом случае после выполнения такого оператора курсор перемещается на одну позицию вниз.

В операторах вывода Write и WriteLn имеется возможность установить ширину поля вывода. Если X и I – целочисленные выражения, а Y — вещественное выражение, то вызов

Write ( X : I, Y : I ) — печатает значения X и Y каждое в крайние правые позиции полей шириной I;

Write ( Y : I : X) – вызовом в крайние правые позиции поля шириной I символов выводится десятичное представление значения Y в формате с фиксированной точкой, причем после десятичной точки выводится X цифр, представляющих дробную часть числа.

Составной оператор

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

Условный оператор

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

если x>=0, то f(x)=2x.

Здесь значение функции f вычисляется в зависимости от величины x по разным формулам.

Для задания выбора того или иного действия в зависимости от условия в языке Pascal предназначен условный оператор, который имеет две формы: полную и сокращенную.

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

Если значение логического выражения – true, то выполняется , если false, то выполняется .

И по ветке then, и по ветке else должен выполняться единственный оператор. Если по смыслу задачи необходимо выполнить несколько операторов, тогда следует использовать составной оператор.

Часть условного оператора, начинающаяся со слова else, может отсутствовать, такая форма оператора называется сокращенной и выглядит следующим образом:

Оператор в этом случае выполняется, если условие истинно, иначе программа переходит к следующему оператору.

Пример полной формы: рассмотрим определение функции f(x):

Если в нашем примере описать логическую переменную В, значение которой будет равно true, если x

Пример краткой формы:

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

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

Теперь дадим строгое описание условного оператора в форме синтаксической диаграммы:

123

То, что мы раньше называли условием, есть логическое выражение, которое вычисляется в первую очередь. Если его значение равно true, то будет выполняться , если false, то для полной формы или сразу следующий оператор после условного для неполной формы.

Пример: По длинам трех сторон треугольника a, b, c вычислить его площадь.

Для решения задачи используется формула Герона: , где — полупериметр треугольника. Исходные данные должны удовлетворять основному соотношению для сторон треугольника: длина каждой стороны должна быть меньше длин двух других сторон.

Условный оператор Case (оператор варианта)

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

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

Присвоить строке S значение дня недели для заданного числа D при условии, что в месяце 31 день и 1-ое число – понедельник.

Для построения алгоритма воспользуемся операцией mod, позволяющий вычислить остаток от деления двух целых чисел, и с условием, что 1-ое число – понедельник. Тогда можно записать следующий оператор Case:

Чтобы завершить построение алгоритма решения поставленной задачи, необходимо ограничить область возможных значений переменной D (тип — integer):

Присва́ивание (иногда присвое́ние) — механизм в программировании, позволяющий динамически изменять связи объектов данных (как правило, переменных) с их значениями. Строго говоря, изменение значений является побочным эффектом операции присвоения, и во многих современных языках программирования сама операция также возвращает некоторый результат (как правило, копию присвоенного значения). На физическом уровне результат операции присвоения состоит в проведении записи и перезаписи ячеек памяти или регистров процессора.

Присваивание является одной из центральных конструкций в императивных языках программирования, эффективно и просто реализуется на фон-неймановской архитектуре, которая является основой современных компьютеров.

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

Определение присваивания

Общий синтаксис простого присваивания выглядит следующим образом:

В роли оператора присваивания в языках программирования чаще всего выступают = , := или ← . Но специальный синтаксис может и не вводится — например, в

Данная запись эквивалентна вызову функции. Аналогично, в КОБОЛе старого стиля:

Алгоритм работы оператора присваивания

Символ присваивания

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

Выбор символа оператора равенства в языке при использовании = как присваивания решается:

  • Введением нового символа языка для оператора проверки равенства.

Запись равенства в Си == является источником частых ошибок из-за возможности использования присваивания в управляющих конструкциях, но в других языках проблема решается введением дополнительных ограничений.

  • Использованием этого же символа, значение определяется в зависимости от контекста.

Например, в выражении языка ПЛ/1:

переменной А присваивается булевское значение выражения отношения В = С . Такая запись приводит к снижению читабельности и редко используется.

Семантические особенности

Бывает, по используемому синтаксису, в императивных языках невозможно понять как реализуется семантика присваивания, если это, явно, не определено в языке.

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

Следствием чего можно провести присваивание данных, сформированных(расположенных) далеко от операции присваивания.

Рассмотрим простой пример для вышесказанного:

или так то же самое(семантически):

Неоднозначность присваивания

Первая последовательность будет признана верной, вторая — ложной.

Семантика ссылок

После этого b будет иметь значение [1, 1000, 3] — просто потому, что фактически его значение — это и есть значение a . Число ссылок на один и тот же объект данных называется его мощностью, а сам объект погибает (уничтожается или отдаётся сборщику мусора), когда его мощность достигает нуля. Языки программирования более низкого уровня (например, Си) позволяют программисту явно управлять тем, используется ли семантика указателей или семантика копирования.

Подмена операции

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

Расширения конструкции присваивания


Множественные целевые объекты

Одной из альтернатив простого оператора является возможность присвоения значения выражения нескольким объектам. Например, в языке ПЛ/1 оператор

одновременно присваивает нулевое значение переменным SUM и TOTAL . В языке Ада присвоение также является оператором, а не выражением, поэтому запись множественного присвоения имеет вид:

Аналогичное присвоение в языке

В отличие от ПЛ/1, Ады и Питона, где множественное присвоение считается только сокращённой формой записи, в языках Си, Лисп и других данный синтаксис имеет строгую основу: просто оператор присвоения возвращает присвоенное им значение (см. выше). Таким образом, последний пример — это на самом деле:

Строчка такого вида сработает в Си (если добавить точку с запятой в конце), но вызовет ошибку в Питоне.

Параллельное присваивание

Некоторые языки, например Руби и

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

Некоторые языки (например,

Условные целевые объекты

Некоторые языки программирования, например, C++ и

присвоит 0 переменной count1 если flag истинно и count2 , если flag ложно.

Другой вариант условного присваивания (Руби):

Данная конструкция присваивает переменной a значение только в том случае, если значение ещё не присвоено или равно false .

Составные операторы присваивания

Составной оператор присваивания позволяет сокращённо задавать часто используемую форму присвоения. С помощью этого способа можно сократить запись присвоения, при котором целевая переменная используется в качестве первого операнда в правой части выражения, например:

Синтаксис составного оператора присваивания языка Си представляет собой объединение нужного бинарного оператора и оператора = . Например, следующие записи эквивалентны

Унарные операторы присваивания

В языке программирования Си и большинстве производных от него есть два специальных унарных (то есть имеющих один аргумент) арифметических оператора, представляющих собой в действительности сокращённые присваивания . Эти операторы сочетают операции увеличения и уменьшения на единицу с присваиванием. Операторы ++ для увеличения и -- для уменьшения могут использоваться как префиксные операторы (то есть перед операндами) или как постфиксные (то есть после операндов), означая различный порядок вычислений. Оператор префиксной инкрементации возвращает уже увеличенное значение операнда, а постфиксной — исходное.

Ниже приведён пример использования оператора инкрементации для формирования завершённого оператора присвоения

увеличение значения переменной на единицу эквивалентная расширенная запись

Хоть это и не выглядит присваивания, но таковым является. Результат выполнения приведённого выше оператора равнозначен результату выполнения присваивания .

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

Screenshot_18.jpg

Выполняя первую команду переменной \(a\) присваивается значение \(2\) и это значение записывается в ячейку оперативной памяти.

Теперь в оперативной памяти хранится значение переменной \(a=14\). Предыдущее значение \(2\) из памяти стёрлось.

Выполним последнюю строку данного нам алгоритма. (Помним о том, что на данный момент в оперативной памяти хранятся данные \(a=14\), \(b=4\).)

Оператор присваивания - самый простой и наиболее распространённый оператор.

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

Оператор присваивания представляет собой запись, содержащую символ = (знак равенства), слева от которого указано имя переменной, а справа - выражение. Оператор присваивания заканчивается знаком ; (точка с запятой).

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

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


Вычислить значение выражения справа от знака равенства и полученное значение присвоить переменной, указанной слева от знака равенства.

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

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

В операторе присваивания допускается объявление типа переменной слева от знака равенства:

Ранее объявленные переменные используются в операторе присваивания без указания типа.

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

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

Примеры использования в правой части пользовательских и стандартных функций:

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

При вычислениях в операторе присваивания применяются правила приведения типов данных (см. Приведение типов).

Примеры операторов присваивания краткой формы

В MQL4 используется также краткая форма записи операторов присваивания. Это - форма операторов присваивания, в которой используются операции присвоения, отличные от операции присвоения = (знак равенства) (см. Операции и выражения). На операторы краткой формы распространяются те же правила и ограничения. Краткая форма операторов присваивания используется в коде для наглядности. Программист по своему усмотрению может использовать ту или иную форму оператора присваивания. Любой оператор присваивания краткой формы может быть легко переписан в полноформатный, при этом результат исполнения оператора не изменится.

Читайте также: