Оператор присваивания и операции
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

По сути, в примере 1.2 уже используется один из самых часто используемых операторов языка – оператор присваивания. Он обозначается одиночным знаком равенства (=). Его структура следующая:

 

ИмяПеременной = Выражение;

В левой части от символа «=» пишется переменная, в правой части выражение. Как это звучит по-русски? Переменной присвоить значение выражения, стоящего справа. Обратите внимание, что оператор работает в одну сторону - слева направо. То есть операторы i=j и j=i разные (в первом случае переменной i присвоить значение переменой j, во втором случае переменной j присвоить значение переменой i).

 

Пример 1.3. В продолжение примера 1.1 можно написать

 

i=2;

j=3+2*i;

x=(Math.Sin(i)+1)/(Math.Exp(j)+2);     

i=i

 

Как работает оператор присваивания? Первым шагом вычисляется выражение, стоящее справа. Вторым шагом проверяется на соответствие тип выражения и тип переменной. Третий шаг состоит в том, что если типы согласованы (они могут быть и разными, но согласованными), то переменной присваивается значение выражения; если же типы не согласованы, то выдается сообщение об ошибке.

В последней строке примера 1.3 в левой и в правой части оператора присваивания стоит переменная i. Это возможно? Конечно. Как это работает? Сначала будет взято значение переменной i по ее адресу в ОП. Далее к этому значению прибавят 1, проверят тип полученного выражения, а уже потом переменной i присвоят новое значение, то есть пойдут по адресу переменной i в ОП и положат туда новое значение. При этом старое значение будет потеряно.

В примере 1.3 кроме оператора присваивания используются операции умножения, сложения, деления, а также используются библиотечные функции класса Math: Sin(x) и Exp(x).

Подробнее рассмотрим арифметические операции, то есть те, результатом которых будет число.

Различают унарные и бинарные операции. Унарный знак плюс «+» перед величиной не изменяет ее значения. Унарный знак минус «-» перед величиной изменяет ее знак на противоположный. К бинарным арифметическим операциям относятся сложение, вычитание, умножение, деление, целочисленное деление (без остатка), остаток от деления, возведение в степень.

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

 

                                                                                                           Таблица 1.2

 

Операция Название
+ Сложение
- Вычитание
* Умножение
/ Деление
% Остаток от деления

 

У операций определены (выставлены) приоритеты выполнения операций в выражении. Эти приоритеты приведены в табл. 1.3.

 

     Таблица 1.3

 

Операция Приоритет Тип действий
( ) 1 Вычисление в скобках
Функция 2 Вычисление значения функции
Унарный + или – 3 Унарные операции  
*; / 4 Операции умножения и деления
% 4 Остаток от деления
+; - 5 Сложение и вычитание

 

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

Операция % возвращает остаток, полученный путем деления двух операндов целого типа. Следует обратить внимание на операцию деления, в которой оба операнда целые. В этом случае результат будет тоже целого типа. Например, 10/3 – в результате получится 3; 1/3 – в результате будет 0.

1.4. Преобразование данных

 

  Преобразование данных может быть явное и неявное . Неявно можно выполнять все преобразования, которые не приведут к потере информации. Поэтому данные типов bool , double , decimal не могут быть неявно преобразованы ни в какие типы данных. float может быть преобразован в double; int может быть преобразован в long , float , double , decimal ; long может быть преобразован в float , double , decimal.

Явное преобразование рассмотрим в примере 1.4.

Пример 1.4. Явные преобразование данных

x = (float)56.3;    //число типа double преобразуется в float

d1 = (decimal)25.6; //число типа double преобразуется в decimal

i = (int)8.6;         // результат i=8

 

Ответственность за явные преобразования несет программист. Например, следующее преобразование формально не является ошибкой x=(float)56.6e+300; несмотря на то, что преобразовываемое значение не входит в диапазон допустимых значений данных типа float. Результаты таких преобразований в общем случае не определены. Однако, присвоения short n=123456789; и n=(short)123456789; являются синтаксическими ошибками.

Преобразования также можно реализовать с использованием методов класса Convert из пространства имен System.

 

 

1.5. Ввод и вывод данных в консольном режиме.
Последовательная программа

 

Работа консольной программы связана с окном, которое открывается с началом выполнения программы и закрывается с окончанием программы. В это окно можно вывести данные, а вот ввести данные в консольном режиме можно с использованием клавиатуры. Для этого используются методы класса System.Console с именами WriteL i ne() для вывода строки символов в консольное окно и ReadLine () для ввода строки символовс клавиатуры. Для того чтобы их использовать, подключается пространство имен System   ( using System; ).

 

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

И еще раз напомним о главном: в C# все имена перед их использованием должны быть описаны, причем описание (объявление) имен может находиться в любой точке программы по мере необходимости их использования.

Напишем программу, в которой будут продемонстрированы варианты объявления имен переменных разных типов данных: целых и действительных чисел, строк, логических данных. Пусть в этой программе будет вычисление сложного арифметического выражения с вызовом математических функций из класса Math, явные и неявные преобразования, конвертация данных с использованием класса Convert. Обязательно надо продемонстрировать работу методов WriteLine() и ReadLine() класса Console.

 


Пример 1.5.

 

 

Для вводимых значений действительных x,y вычислить

 

.

 

 

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

Схема алгоритма решения примера приведена на рис. 1.4, а исходный код в примере 1.6

 

Рис. 1.4. Схема алгоритма примера 1.5

 

Пример 1.6. Исходный текст последовательной программы примера 1.5.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

Дата: 2019-11-01, просмотров: 165.