Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Топ:
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2019-12-21 | 328 |
5.00
из
|
Заказать работу |
|
|
Операции отношения (<, <=, >, >=, = =,! =) сравнивают первый операнд со вторым Операнды должны быть арифметического типа. Результат операции — логического типа, равен true или false. Обратите внимание на то, что операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения.
Очень интересно формируется результат операций отношения для особых случаев вещественных значений. Например, если один из операндов равен NaN, результатом для всех операций, кроме!=, будет false (для операции!- результат равен true).
Поразрядные логические операции
Поразрядные логические операции (&, |, ^) применяются к целочисленным операндам и работают с их двоичным кодом. При выполнении операций операнды сопоставляются побитно (первый бит первого операнда с первым битом второго, второй бит первого операнда со вторым битом второго и т. д.). Стандартные операции определены для типов int, uint, long и ulong.
При поразрядной конъюнкции, или поразрядном И (операция обозначается &), бит результата равен 1 только тогда, когда соответствующие биты обоих операндов равны 1.
При поразрядной дизъюнкции, или поразрядном ИЛИ (операция обозначается |), бит результата равен 1 тогда, когда соответствующий бит хотя бы одного из операндов равен 1.
При поразрядном исключающем ИЛИ (операция обозначается ^) бит результата равен 1 только тогда, когда соответствующий бит только одного из операндов равен 1.
Пример применения поразрядных логических операций
using System;
namespace ConsoleApplicationl
{ class Classl
{ static void Main() {
Console.WriteLine(6 & 5); // Результат 4
Console.WriteLine(6 | 5); // Результат 7
Console.WriteLineC 6 ^ 5); / Результат 3 } } }
Условные логические операции
Условные логические операции И (&&) и ИЛИ (||) чаще всего используются с операндами логического типа. Результатом логической операции является true или false. Операции вычисляются по сокращенной схеме.
|
Результат операции логическое И имеет значение true, только если оба операнда имеют значение true.
Результат операции логическое ИЛИ имеет значение true, если хотя бы один из операндов имеет значение true.
Тернарная (условная) операция
Условная операция (?:) — тернарная, то есть имеет три операнда. Ее формат:
операнд1? операнд2: операнд3
Пример применения тернарной операции
using System;
namespace ConsoleApplicationl
{ class Classl
{ static void Main()
{ int a = 11, b = 4;
int max = b > a? b: a;
Console.WriteLine(max); // Результат 11
} } }
Другой пример применения условной операции: требуется, чтобы некоторая целая величина увеличивалась на 1, если ее значение не превышает n, а иначе принимала значение 1. Это удобно реализовать следующим образом: i = (i < n)? i + 1: 1;
Операции присваивания
Операции присваивания (=, +=, -=, *= и т. д.) задают новое значение переменной. Эти операции могут использоваться в программе как законченные операторы. Механизм выполнения операции присваивания такой: вычисляется выражение и его результат заносится в память по адресу, который определяется именем переменной, находящейся слева от знака операции. То, что ранее хранилось в этой области памяти, естественно, теряется.
Примеры операторов присваивания:
а = b + с / 2;
b = а;
а = b;
х = 1;
х+ = 0.5;
Обратите внимание: b=а и а=b— это совершенно разные действия!
Присваивание — это передача данных «налево».
Результатом операции присваивания является значение, записанное в левый операнд. Тип результата совпадает с типом левого операнда.
В сложных операциях присваивания (+=, *=, /= и т. п.) при вычислении выражения, стоящего в правой части, используется значение из левой части. Например, при сложении с присваиванием ко второму операнду прибавляется первый, и результат записывается в первый операнд, то есть выражение а += b является более компактной записью выражения а = а + b.
|
Результатом операции сложного присваивания является значение, записанное в левый операнд.
Операции присваивания выполняются справа налево, в отличие от большинства других операций (а = b = с означает а = (b=c)).
14
Функции для консольного ввода и вывода в языке C# существенно отличаются от аналогичных функций языка С++. Таких функций 4, и все они являются членами класса Console. ФункцииWriteLine иWrite обеспечивают вывод на экран и отличаются тем, что функцияWriteLine после вывода обеспечивает перевод вывода на новую строку на экране, а функцияWrite такой перевод не выполняет. Для ввода применяются функцииReadLine иReadKey. ФункцияReadLine обеспечивает ввод строки. Если содержимое строки является числом, то требуется преобразование строки в число. Такое преобразование выполняет функцияParse, которая записывается после точки после имени типа данных. Для обратного перевода в строку текста применяется функцияToString. ФункцияReadKey позволяет ввести код нажатой клавиши, и она часто применяется для останова экрана пользователя после вывода на экран. Если эту функцию не записать, то экран быстро исчезнет, не дав возможности посмотреть, что было выведено. Ниже приведен пример.
double a, c; | // Объявление переменных |
int b; | |
Console.WriteLine("Введите число"); | // С переходом на новую строку |
a = double.Parse(Console.ReadLine()); | // Ввод с преобразованием |
Console.WriteLine("Введите второе число"); | |
b = int.Parse(Console.ReadLine()); | // Ввод с преобразованием |
c = a + b; | |
Console.WriteLine("Сумма {0} и {1} = {2}", a, b, c); | |
Console.ReadKey(); | // Останов экрана |
Вкавычках в круглых скобках записывается поясняющий текст и задается формат вывода. Для указания формата применяются пары фигурных скобок, в которых записываются целые числа, указывающие на порядок вывода переменных, имена которых записаны после кавычек. Отсчет начинается от нуля.
Впримере показано, что числа в фигурных скобках следуют подряд, что указывают на совпадение порядка вывода элементов с порядком записи имен переменных, список которых приведен после кавычек. Принципиально, изменяя порядок следования чисел в фигурных скобках, не изменяя порядка записи переменных в списке, можно изменять порядок вывода переменных на экран.
Всписке переменных для вывода можно применять арифметические выражения. Например, строку вывода из примера выше можно записать и так (в примере выше без использования переменной c):
|
Console.WriteLine("Сумма {0} и {1} = {2}", a, b, a + b);
Если требуется ввести числа и любые другие элементы в одной строке, в том числе и разнотипные (тип данных var будет описан ниже):
Чернов Э. А. | - 16 - | Лекции по языку C# v 2.3 |
var str =Console.ReadLine();
var result = str.Split(new[ ] {' ',';'});foreach(vara inresult)
Console.Write("{0} ", a);
Метод Split позволяет разбить введенную строку на отдельные элементы. Конструкцияnew[ ] указывает, что будет сформирован массив, количество элементов которого заранее неизвестно. В фигурных скобках в апострофах указывается символ, являющийся разграничителем между отдельными элементами во вводимой строке. Этот разграничитель может быть не один. В примере в качестве разграничителей заданы пробел и точка с запятой. Такая запись позволяет использовать любой из указанных разграничителей в любой последовательности, как отдельно, так и совместно. Переменнаяstr является неявно типизированной. Тип данныхvar позволяет объявлять переменные, которые могут быть любого типа. Но особый интерес представляют таблицы, которые состоят из массивов строк. В этом случае переменной типаvar является объект класса, которым является отдельная строка, а собственно таблица является массивом строк.
15
Все математические функции реализованы как методы класса Math, основные из которых представлены в таблице 4.1
Таблица 4.1 – Основные поля и методы класса Math
Имя метода | Описание | Пояснения |
Abs | Модуль | |x|, записывается как Abs(x) |
Acos | Арккосинус | Acos(double x), угол задается в радианах |
Asin | Арксинус | Asin(double x) |
Atan | Арктангенс | Atan(double x) |
Atan2 | Арктангенс | Atan2(double x,double y) –угол, тангенс которого есть результат деления y на х |
BigMul | Произведение | BigMul(int x,int y) |
Celling | Округление до большего целого | Celling(double x) |
Cos | Косинус | Cos(double x) |
Cosh | Гиперболический косинус | Cosh(double x) |
DivRem | Деление и остаток | DivRem(x,y,rem) |
E | Число е | 2,71828182845905 |
Exp | Экспонента | Exp(x) |
Floor | Округление до меньшего целого | Floor(double x) |
IEEERemainder | Остаток от деления | IEEERemainder(double x, double y) |
Log | Натуральный логарифм | Log(x) |
Log10 | Десятичный логарифм | Log10(x) |
Max | Максимум из 2-х чисел | Max(x,y) |
Продолжение таблицы 4.1
|
Имя метода | Описание | Пояснения |
Min | Минимум из 2-х чисел | Min(x,y) |
PI | Значение числа пи | 3,14159265358979 |
Pow | Возведение в степень | Pow(x,y) – x в степени y |
Round | Округление | Round(3.1)=3 Round(3.8)=4 |
Sign | Знак числа | |
Sin | Синус | Sin(double x) |
Sinh | Гиперболический синус | Sinh(double x) |
Sqrt | Квадратный корень | Sqrt(x) |
Tan | Тангенс | Tan(double x) |
Tanh | Гиперболический тангенс | Tanh(double x) |
16
Любое выражение, завершающееся точкой с запятой, рассматривается как опера-тор, выполнение которого заключается в вычислении выражения. Частным случаем выражения является пустой оператор; (он используется, когда по синтаксису оператор требуется, а по смыслу - нет). Примеры:
i++; // выполняется операция инкремента
a *= b + с; // выполняется умножение с присваиванием
fun(i, k); // выполняется вызов функции
while(true); // цикл из пустого оператора (бесконечный)
Блок или составной оператор, - это последовательность описаний и операторов,
заключенная в фигурные скобки. Блок воспринимается компилятором как один
оператор и может использоваться всюду, где синтаксис требует одного оператора,
а алгоритм - нескольких. Блок может содержать один оператор или быть пустым.
Операторы ветвления
Операторы ветвления if и switch применяются для того чтобы в зависимости от конкретных значений исходных данных обеспечить выполнение разных последовательностей операторов. Оператор if обеспечивает передачу управления на одну из двух ветвей вычислений, а оператор switch - на одну из произвольного числа ветвей.
Условный оператор if
Условный оператор if используется для разветвления процесса вычислений на два направления.
Формат оператора:
if (логическое_выражение) оператор_1; [ else оператор_2; ]
Сначала вычисляется логическое выражение. Если оно имеет значение true, выполняется первый оператор, иначе — второй. После этого управление передается на оператор, следующий за условным. Ветвь else может отсутствовать.
ПРИМЕЧАНИЕ
Операторы, входящие в условный, не должны иметь метку и не могут быть описаниями.
Сначала вычисляется логическое выражение. Если оно имеет значение true, выполняется первый оператор, иначе — второй. После этого управление передается на оператор, следующий за условным. Ветвь else может отсутствовать.
ПРИМЕЧАНИЕ
Операторы, входящие в условный, не должны иметь метку и не могут быть описаниями.
Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений. Структурная схема оператора приведена на рис. 4.3.
Формат оператора:
switch (выражение)
{
case константное_выражение_1: [ список_операторов_1 ]
case константное_выражение_2: [ список_операторов_2 ]
|
case константное_выражение_n: [ список_операторов_n ]
[ default: операторы ]
}
Выполнение оператора начинается с вычисления выражения. Тип выражения чаще всего целочисленный (включая char) или строковый1. Затем управление передается первому оператору из списка, помеченному константным выражением, значение которого совпало с вычисленным.
Все константные выражения должны быть неявно приводимы к типу выражения в скобках. Если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch оператору).
Каждая ветвь переключателя должна заканчиваться явным оператором перехода, а именно оператором break, goto или return:
□ оператор break выполняет выход из самого внутреннего из объемлющих его
операторов switch, for, while и do (см. раздел «Оператор break», с. 84);
□ оператор goto выполняет переход на указанную после него метку, обычно это
метка case одной из нижележащих ветвей оператора switch (см. раздел «Опе
ратор goto», с. 83);
□ оператор return выполняет выход из функции, в теле которой он записан (см.
раздел «Оператор return», с. 87).
Оператор goto обычно используют для последовательного выполнения нескольких ветвей переключателя, однако поскольку это нарушает читабельность программы, такого решения следует избегать.
В листинге 4.2 приведен пример программы, реализующей простейший калькулятор на четыре действия.
bool ok = true;
double res, a, b;
char op = '-';
switch (op)
{
case '+': res = a + b; break;
case '-': res = a - b; break;
case '*': res = a * b; break;
case '/': res = a / b; break;
default: res = double.NaN; ok - false; break;
}
Оператор switch предпочтительнее оператора if в тех случаях, когда в программе требуется разветвить вычисления на количество направлений большее двух и выражение, по значению которого производится переход на ту или иную ветвь, не является вещественным. Часто это справедливо даже для двух ветвей, поскольку повышает наглядность программы
Операторы цикла используются для вычислений, повторяющихся многократно. В С# имеется четыре вида циклов: цикл с предусловием while, цикл с постусловием repeat, цикл с параметром for и цикл перебора foreach. Каждый из них состоит из определенной последовательности операторов.
Блок, ради выполнения которого и организуется цикл, называется телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла (рис. 4.4). Один проход цикла называется итерацией.
Начальные установки служат для того, чтобы до входа в цикл задать значения переменных, которые в нем используются.
Проверка условия продолжения цикла выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием, схема которого показана на рис, 4.4, а), либо после тела цикла (цикл с постусловием, рис. 4.4, б). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.
Параметром цикла называется переменная, которая используется при проверке условия продолжения цикла и принудительно изменяется на каждой итерации, причем, как правило, на одну и ту же величину. Если параметр цикла целочисленный, он называется счетчиком цикла. Количество повторений такого цикла можно определить заранее. Параметр есть не у всякого цикла. В так называемом итеративном цикле условие продолжения содержит переменные, значения которых изменяются в цикле по рекуррентным формулам1.
Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto (см. раздел «Операторы передачи управления», с. 83). Передавать управление извне внутрь цикла запрещается (при этом возникает ошибка компиляции).
Формат оператора прост: while (выражение) оператор
Выражение должно быть логического типа. Например, это может быть операция отношения или просто логическая переменная. Если результат вычисления выражения равен true, выполняется простой или составной оператор (блок). Эти действия повторяются до того момента, пока результатом выражения не станет значение false. После окончания цикла управление передается на следующий за ним оператор.
Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение равно false, цикл не выполнится ни разу.
Цикл с постусловием do
Цикл с постусловием реализует структурную схему, приведенную на рис. 4.4, б, и имеет вид
do оператор while выражение;
Сначала выполняется простой или составной оператор, образующий тело цикла, а затем вычисляется выражение (оно должно иметь тип bool). Если выражение истинно, тело цикла выполняется еще раз и проверка повторяется. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления.
Этот вид цикла применяется в тех случаях, когда тело цикла необходимо обязательно выполнить хотя бы один раз, например, если в цикле вводятся данные и выполняется их проверка. Если же такой необходимости нет, предпочтитель-нее пользоваться циклом с предусловием.
Пример программы, выполняющей проверку ввода, приведен в листинге 4.5.
Цикл с параметром for
Цикл с параметром имеет следующий формат:
for (инициализация; выражение; модификации) оператор;
Инициализация служит для объявления величин, используемых в цикле, и присвоения им начальных значений. В этой части можно записать несколько операторов, разделенных запятой, например:
for (int i = 0, j = 20;...
int k, m;
for (k = 1, m = 0;...
Областью действия переменных, объявленных в части инициализации цикла, является цикл. Инициализация выполняется один раз в начале исполнения цикла. Выражение типа bool определяет условие выполнения цикла: если его результат равен true, цикл выполняется. Цикл с параметром реализован как цикл с предусловием.
Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую, например:
for (int i = 0, j = 20; i < 5 && j > 10; i++, j--)...
Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!). Для примера вычислим сумму чисел от 1 до 100:
int s = 0;
for (int i = 1; i <- 100; i++)
s += i;
Цикл foreach используется для просмотра всех объектов из некоторой группы данных, например массива, списка или другого контейнера. Он будет рассмотрен, когда у нас появится в нем необходимость, а именно в разделе «Оператор foreach» (см. с. 136).
Рекомендации по выбору оператора цикла
Операторы цикла взаимозаменяемы, но можно привести некоторые рекомендации по выбору наилучшего в каждом конкретном случае.
Оператор do while обычно используют, когда цикл требуется обязательно выполнить хотя бы раз, например, если в цикле производится ввод данных. Оператором while удобнее пользоваться в тех случаях, когда либо число итераций заранее неизвестно, либо очевидных параметров цикла нет, либо модификацию параметров удобнее записывать не в конце тела цикла.
|
|
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!