Среда, 24.04.2024, 10:54
Приветствую Вас Гость | RSS

Лекции

Меню сайта
Форма входа
Категории раздела
ТАУ (Теория автоматического управления) [31]
лекции по ТАУ
Экология [151]
учебник
Бухгалтерский учет и налогообложение в строительстве [56]
Дементьев А.Ю. - Практическое пособие
Психология [104]
Пип
информатика [80]
с# Карли Ватсон
современные стулья [0]
новинки
Поиск

Главная » 2010 » Февраль » 10 » Выражения
23:58
Выражения
Выражения
Теперь, когда вы познакомились с объявлением и инициализацией переменных,
настало время узнать, какие действия можно выполнять над ними. Для этих целей
язык С# имеет целый набор операторов, в частности, оператор присваивания =,
который мы уже использовали. Записывая операторы в определенном сочетании
с переменными и литеральными значениями (при использовании совместно с опе-
раторами они называются операндами), мы можем создавать выражения, которые
являются основными строительными блоками компьютерных программ.
Существуют различные операторы, начиная от самых простых и до чрезвычайно
сложных, которые вряд ли вам встретятся где-либо, кроме как в математических
приложениях. Простые операторы включают в себя все основные математические
действия (например, оператор + производит сложение двух операндов), а сложные
операторы предназначены для выполнения манипуляций над двоичным представле-
нием содержимого переменной. Существуют также логические операторы, работа-
ющие с логическими значениями, и операторы присваивания типа = .
В данной главе основное внимание мы будем уделять математическим операто-
рам и оператору присваивания, отложив логические операторы до следующей гла-
вы, в которой приступим к изучению булевой логики в контексте управления ходом
выполнения программы.
Все операторы могут быть условно разделены на три категории:
Q Унарные операторы, которые выполняют действие
над единственным операндом.
• Бинарные операторы, которые выполняют действие
над двумя операндами.
• Тринарные операторы, которые выполняют действие
над тремя операндами.
Большинство операторов попадает в категорию бинарных; существует также
несколько унарных операторов и единственный тринарный, называемый условным
оператором (условный оператор представляет собой логический оператор, т. е.
возвращает логическое значение; мы познакомимся с ним в следующей главе).
Математические операторы
Существует пять простых математических операторов, причем два из них имеют
как бинарную, так и унарную форму. В приведенной ниже таблице перечислены
все математические операторы, даны элементарные примеры их использования
и показаны результаты их работы с простыми численными типами (целыми числа-
ми и числами с плавающей запятой):
Оператор Значение Пример использования Результат
в выражении
+ Бинарное varl = var2 + var3; Переменной varl присваивается значение,
которое представляет собой сумму значений
переменных var2 и var3
Бинарное varl = var2 - var3; Переменной varl присваивается значение,
получающееся в результате вычитания
значения переменной var3 из значения
переменной var2
36
Оператор Значение Пример использования
в выражении
Результат
Глава 3
Продолжение таблицы
Бинарное
Бинарное
Бинарное
Унарное
Унарное
varl = var2 * var3;
varl = var2 / var3;
varl = var2 % var3;
varl = +var2;
varl = -var2;
Переменной varl присваивается значение,
которое представляет собой результат
перемножения переменных var2 и var3
Переменной varl присваивается значение,
которое представляет собой результат деления
переменной var2 на переменную var3
Переменной varl присваивается значение,
которое представляет собой остаток от деления
переменной var2 на переменную var3
Переменной varl присваивается значение
переменной var2
Переменной varl присваивается значение
переменной var2, умноженное на -1
Здесь приведены примеры с использованием простых численных типов, так как
результаты, получаемые при действиях с другими простыми типами, могут оказать-
ся неясными. Что бы вы хотели получить при сложении двух логических перемен-
ных? На самом деле мы не получим ничего, поскольку компилятор не позволит
использовать оператор + (а также любые другие математические операторы) с пе-
ременными типа booi. Сложение переменных типа char также выглядит несколько
запутанным. Если вы помните, переменные типа char на самом деле хранятся
в виде чисел, поэтому результатом сложения двух переменных типа char также
будет число (типа int, если быть точным). Такое действие представляет собой
пример неявного преобразования типов, о чем мы будем говорить более подробно;
некоторое внимание мы также уделим явному преобразованию типов, поскольку
оно применимо в тех случаях, когда переменные varl, var2 и var3 относятся к раз-
ным типам.
Необходимо отметить, что бинарный оператор + имеет смысл и тогда, когда он
используется с переменными типа string. В этом случае предыдущая таблица дол-
жна быть дополнена следующим:
Оператор Значение Пример использования Результат
в выражении
Бинарное varl = var2 + var3; Переменной varl присваивается значение,
которое представляет собой результат
объединения двух строк, хранящихся
в переменных var2 и var3
Никакие другие математические операторы к строкам применяться не могут.
Два других оператора, которые нам необходимо рассмотреть, это операторы
увеличения (инкремент) и уменьшения (декремент), каждый из которых является
унарным оператором и может использоваться одним из двух способов: либо непо-
средственно перед операндом, либо сразу после него. Давайте посмотрим на резуль-
таты, которые получаются в случае простых выражений, а затем их обсудим.
Переменные и выражения 37
Оператор Значение Пример использования Результат
в выражении
Унарное
Унарное
Унарное
Унарное
varl = ++var2;
varl = —var2;
varl = var2++;
varl = var2—;
Переменной varl присваивается значение
переменной var2+l. Переменная var2
увеличивается на единицу
Переменной varl присваивается значение
переменной var2-l. Переменная var2
уменьшается на единицу
Переменной varl присваивается значение
переменной var2. Переменная var2
увеличивается на единицу
Переменной varl присваивается значение
переменной var2. Переменная var2
уменьшается на единицу
Эти операторы всегда приводят к изменению значения, хранящегося в соответ-
ствующем операнде. Оператор + + всегда увеличивает значение своего операнда
на 1, а оператор --- уменьшает его на 1. Отличие заключается в том результате,
который записывается в переменную varl, поскольку местоположение оператора
определяет порядок выполнения действий. Когда любой из этих двух операторов
помещен перед операндом, он выполняется прежде каких-либо других вычислений.
Размещение любого из этих двух операторов после операнда приводит к тому, что
оператор выполняется после завершения всех остальных вычислений для данного
выражения.
Все сказанное заслуживает еще одного примера. Рассмотрим следующий код:
varl = var2++ * — var3;
Вопрос: какое значение будет присвоено переменной varl? Перед тем как вы-
ражение начнет вычисляться, будет выполнен оператор --, расположенный перед
переменной var3, что приведет к изменению ее значения с 6 на 5. Мы можем про-
игнорировать оператор ++, расположенный за переменной var2, поскольку он не
будет оказывать никакого влияния до тех пор, пока вычисление этого выражения
не будет завершено, поэтому в varl будет записан результат умножения 5 на 5,
т.е. 25.
Эти простые унарные операторы оказываются чрезвычайно удобными в очень
многих ситуациях. На самом деле они представляют собой просто сокращенную
запись выражений вроде:
varl = varl + 1;
Оказывается, что такие выражения имеют очень широкое распространение,
в частности, при организации циклов, с чем мы столкнемся в следующей главе.
Итак, теперь давайте рассмотрим, каким образом можно использовать матема-
тические операторы, а заодно познакомимся с еще двумя полезными понятиями.
Практикум: выполнение действий над переменными с помощью
математических операций
1. Создайте новое консольное приложение с именем chO3ExO2
В директории C:\BegCSharp\Chapter3.
38 Глава 3
2. Добавьте следующий код в ciassi.cs:
static void Main (string [] args)
double firstNumber, secondNumber;
string userName;
Console.WriteLine("Enter your name:*);
userName = Console.ReadLineO ;
Console.WriteLine("Welcome {0} !", userName);
•• Console .-WriteLine( "Now give me a number:") ;
firstNumber = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Now give me another number:") ;
secondNumber = Convert.ToDouble(Console.ReadLine());
Console. Writ eLine ( "The sum of {0} and {1} is {2}.", f irstNu:iiber,
secondNumber, firstNumber + secondNumber);
Console.WriteLine("The result of subtracting {0} from {1} is {2}.
secondNumber, firstNumber, firstNumber - secondNumber);
Console.WriteLine("The product of {0} and {1} is {2}.",
firstNumber, secondNumber, firstNumber * secondNumber);
Console.WriteLine("The result of dividing {0} by {1} is {2}.n,
firstNumber, secondNumber, firstNumber / secondNumber);
Console.WriteLine("The remainder after dividing {0} by {1} is {2}.
firstNumber, secondNumber, firstNumber % secondNumber);
3. Выполните программу
(см. рис. справа).
Enter шшз*- nairi
Karli : ; : [!в Icome Karlit
Now 0isie m& a
4. Введите свое имя и нажмите
клавишу Enter (см. рис. слева).
5. Введите число, нажмите Enter,
затем введите еще одно число
и еще раз нажмите Enter:
1^ C:\Ben.
Entei* MOUF names
Karli
Uelcome Kai*lif
How gi^e ше a oiiPifeei*:
32-76
Нсш giue me another mmhevz
19.43
Tfte sun П£ 32.76 ami 19.43 is 52Л9-
The result of subtracting 19,43 from 32.76 is 13.33.
Ibe product o£ 32.7S and 19.43 is 636.S2&S.
The result of diyidinsr 32.76 by 19.43 is 1.68605249613999.
!!ie renainder after dividing 32.76 hy 19,43 is 13.33.
Press an*f hey to continue
.JfiJiSi
Переменные и выражения 39
Как это работает
Эта программа не только демонстрирует использование математических опера-
торов, но в ней также появились два важных понятия, с которыми мы будем по-
стоянно встречаться в учебных примерах:
• Ввод данных пользователем
• Преобразование типов
Для ввода данных, осуществляемого пользователем, применяется синтаксис,
аналогичный синтаксису команды console.writeLineO, с которой вам уже прихо-
дилось Встречаться. В ДаННОМ Случае ИСПОЛЬЗуетСЯ Команда Console. ReadLine ().
Эта команда осуществляет вывод приглашения для ввода, который помещается
в переменную типа string:
string userName;
Console.WriteLine("Enter your name: ") ;
userName = Console.ReadLine();
Console,WriteLine("Welcome {0} I * , userName);
Этот код выводит содержимое переменной userName на экран.
В данном примере мы также осуществляем считывание двух вводимых чисел.
Здесь все оказывается несколько сложнее, так как команда Console.ReadLine о
генерирует строку, а нам требуются числа. Тут вводится понятие преобразования
типов. Более подробно оно будет описываться в главе 5, однако для начала давайте
рассмотрим код, использованный в примере.
Во-первых, мы объявляем две переменные, в которых собираемся хранить вво-
димые числа:
double firstNumber, secondNumber;
Затем мы задаем приглашение и применяем с помощью console.ReadLine о
к полученной строке команду convert.ToDoubleO, позволяющую преобразовывать
строки в тип double. Полученное значение присваивается первой из объявленных
нами Переменных — firstNumber:
Console.WriteLine("Now give me a number:") ;
firstNumber = Convert.ToDouble(Console.ReadLine());
Такой синтаксис является очень простым, поэтому вас не должно удивлять, что
многие другие типы преобразований выполняются аналогичным образом.
Далее в программе точно так же происходит получение второго числа:
Console.WriteLine("Now give me another number:");
secondNumber = Convert.ToDouble(Console.ReadLine() ) ;
После этого выводятся результаты сложения, вычитания, умножения и деления
двух введенных чисел, а также остаток от деления этих двух чисел, полученный
с помощью оператора "остаток от деления" (%):
Console.WriteLineCThe sum of {0} and {1} is {2}.", firstNumber,
secondNumber, firstNumber + secondNumber);
Console.WriteLine("The result of subtracting {0} from {1} is {2}.",
secondNumber, firstNumber, firstNumber - secondNumber);
Console.WriteLineCThe product of {0} and {1} is {2}.", firstNumber,
secondNumber, firstNumber * secondNumber);
Console.WriteLineCThe result of dividing {0} by {1} is {2}.", firstNumber,
secondNumber, firstNumber / secondNumber);
Console.WriteLineCThe remainder after dividing {0} by {1} is {2}.",
firstNumber, secondNumber, firstNumber % secondNumber);
40 Глава 3
Обратите внимание, что в качестве параметров оператора console.writeLineо
мы используем выражения вроде firstNumber + secondNumber, избегая стадию при-
сваивания значения этих выражений промежуточным переменным:
Console.WriteLine(*The sum of {0} and {1} is {2}.", firstNumber,
secondNumber, firetNumber + eecondNumber) ;
Использование подобного синтаксиса позволяет делать код удобочитаемым
и сокращает количество строк.











Категория: информатика | Просмотров: 982 | Добавил: basic | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Календарь
«  Февраль 2010  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

krutoto.ucoz.ru
Бесплатный конструктор сайтов - uCoz