
Курс лекций CS (первый семестр)
.pdf
Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
больше 100 программа работает нормально и дефект не проявляется. Покажем как нужно исправить ошибку с помощью фигурных скобок.
using System;
using System.Collections.Generic; using System.Text;
namespace ConsoleApplication1
{
class MyProgram
{
static void Main(string[] args)
{
int x;
Console.Write("Введите число меньше 10 или больше 100:"); x=Convert.ToInt32(Console.ReadLine());
if ( x>=10)
if (x>100)
Console.WriteLine("Больше 100. Спасибо!\n"); else // к какому оператору if относиться этот оператор
Console.WriteLine("Меньше 10. Спасибо!\n");
Console.ReadLine();
}
}
}
Результат:
61

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
Исправленный текст программы:
using System;
using System.Collections.Generic; using System.Text;
namespace ConsoleApplication1
{
class MyProgram
{
static void Main(string[] args)
{
int x;
Console.Write("Введите число меньше 10 или больше 100:"); x=Convert.ToInt32(Console.ReadLine());
if (x >= 10)
{
if (x > 100)
62

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
Console.WriteLine("Больше 100. Спасибо!\n");
}
else // к какому оператору if относиться этот оператор
Console.WriteLine("Меньше 10. Спасибо!\n");
Console.ReadLine();
}
}
}
Результат:
63
Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
Таблица преобразования по типу
Команда |
Результат |
|
|
Convert.ToBoolean(val) |
val преобразовано в bool |
|
|
Convert.ToByte(val) |
val преобразовано в byte |
|
|
Convert.ToChar(val) |
val преобразовано в char |
|
|
Convert.ToDecimal(val) |
val преобразовано в decimal |
|
|
Convert.ToDouble(val) |
val преобразовано в double |
|
|
Convert.Tolntl6(val) |
val преобразовано в short |
|
|
Convert.Tolnt32(val) |
val преобразовано в int |
|
|
Convert.Tolnt64(val) |
val преобразовано в long |
|
|
Convert.ToSByte(val) |
val преобразовано в sbyte |
|
|
Convert.ToSingle(val) |
val преобразовано в float |
|
|
Convert.ToString(val) |
val преобразовано в string |
|
|
Convert.ToUIntl6(val) |
val преобразовано в ushort |
|
|
64

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
Convert.ToUInt3 2(val) |
val преобразовано в uint |
Convert.ToUInt64(val) |
val преобразовано в ulong |
65
Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
Лекция №11.
Логические операторы.
Довольно часто у нас возникает необходимость проверять не одно условное выражение, а сразу несколько.
Логические операторы
Оператор |
Символ |
Тип оператора |
Объяснение |
«Логическое |
! |
Унарный |
!переменная |
НЕ» |
|
|
Выражение возвращает true, если |
|
|
|
|
|
|
|
переменная имеет значение false, и |
|
|
|
наоборот. |
«Логическое И» |
& |
Бинарный |
Переменная1 & Переменная2 |
|
|
|
Выражение возвращает true, если обе |
|
|
|
переменные имеют значение true. |
|
|
|
Выражение возвращает false во всех |
|
|
|
других случаях. |
«Логическое |
| |
Бинарный |
Переменная1 | Переменная2 |
ИЛИ» |
|
|
Выражение возвращает true, если хотя |
|
|
|
|
|
|
|
бы одна из переменных имеет значение |
|
|
|
true. Выражение возвращает false, если |
|
|
|
обе переменные равны false. |
«Исключающее |
^ |
Бинарный |
Переменная1 ^ Переменная2 |
ИЛИ» |
|
|
Выражение возвращает true, если |
|
|
|
|
|
|
|
только одна из переменных имеет |
|
|
|
значение true, но не обе. Выражение |
|
|
|
возвращает false во всех других |
|
|
|
случаях. |
|
|
|
|
Для операторов & и | существуют аналоги:
66

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
Оператор |
Символ |
Тип оператора |
Объяснение |
«Логическое И» |
&& |
Бинарный |
Переменная1 && Переменная2 |
«Логическое |
|| |
Бинарный |
Переменная1 || Переменная2 |
ИЛИ» |
|
|
|
Результат выполнения этих операций в точности соответствует результату выполнения операций & и |, однако существует одно важное отличие; оно заключается в способе достижения результата, позволяющем в некоторых случаях ускорить операцию. Оба эти оператора рассматривают значение своего первого операнда (в приведенной выше таблице это переменная1) и в определенных случаях могут вообще обходиться без обработки второго операнда (в нашем примере переменная2).
Если значение первого операнда оператора && — false, то нет необходимости рассматривать значение второго операнда, поскольку результатом все равно будет значение false. Аналогично оператор || вернет значение true, если его первый операнд имеет значение true, независимо от значения второго операнда. При выполнении операторов & и | всегда происходит вычисление обоих операндов.
С учетом этого при использовании операторов && и || вместо & и | можно ожидать небольшого увеличения быстродействия. Выгода будет особенно ощутима в тех приложениях, где задействовано много таких операторов. Существует правило, согласно которому при наличии возможности всегда следует использовать операторы && и ||.
Например, логическое выражение
((x= =5) && (y= =5))
возвратит значение true, если обе переменные равны 5. Это же выражение возвратит false, если хотя бы одна из переменных не равна 5.
Выражение
((x= =5) || (y= =5))
возвратит значение true, если либо значение х, либо значение y, либо оба равны 5.
67
Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
Выражение
(!(x= =5))
возвратит значение true только в том случае, если х равно числу 5.
Операторам отношений и логическим операторам присущ некоторый уровень приоритета, который определяет порядок вычисления операторов, поэтому стоит пользоваться круглыми скобками. Часто дополнительные круглые скобки стоит использовать только для четкого определения того, что именно вы хотите сгруппировать. Помните, что цель программы – написать программу, которая прекрасно работает, а также легко читается и понимается.
Пример. Проверить является ли треугольник равнобедренным.
using System;
using System.Collections.Generic; using System.Text;
namespace ConsoleApplication1
{
class MyProgram
{
static void Main(string[] args)
{
double a,b,c;
Console.WriteLine("Введите стороны треугольника"); Console.Write("a="); a=Convert.ToDouble(Console.ReadLine()); Console.Write("b="); b=Convert.ToDouble(Console.ReadLine()); Console.Write("c="); c=Convert.ToDouble(Console.ReadLine());
68

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
if ((a+b)>c && (b+c)>a && (a+c)>b)
{
if (a==b || b==c || a==c) Console.WriteLine("треугольник равнобедренный");
else
Console.WriteLine("треугольник неравнобедренный");
}
else
Console.WriteLine("это не треугольник");
Console.ReadLine();
}
}
}
Результат.
69

Кафедра теоретической механики ИМЭМ ОНУ им. И.И.Мечникова
Логические операторы присваивания.
Символ |
Тип оператора |
Объяснение |
&= |
Бинарный |
Переменная1 &= Переменная2 |
|
|
Переменнойl присваивается значение, |
|
|
являющееся результатом выполнения |
|
|
операции Переменнаяl & Переменная2. |
|= |
Бинарный |
Переменная1 | =Переменная2 |
|
|
Переменнойl присваивается значение, |
|
|
являющееся результатом выполнения |
|
|
операции Переменнаяl | Переменная2. |
^= |
Бинарный |
Переменная1 ^ =Переменная2 |
|
|
Переменнойl присваивается значение, |
|
|
являющееся результатом выполнения |
|
|
операции Переменнаяl ^ Переменная2. |
Тринарный оператор.
Условный оператор (?:) – это единственный оператор в языке C# который работает сразу с тремя операндами.
Синтаксис использования условного оператора следующий:
(выражение1) ? (выражение2) : (выражение3)
70