Переменные, операции, выражения. (Лекция 3)

Содержание

Слайд 2

Переменные, операции, выражения

Переменные, операции, выражения

Слайд 3

Поля и методы встроенных типов Любой встроенный тип C# построен на

Поля и методы встроенных типов

Любой встроенный тип C# построен на основе

стандартного класса библиотеки .NET. Это значит, что у встроенных типов данных C# есть методы и поля. С помощью них можно, например, получить:
double.MaxValue (или System.Double.MaxValue) — максимальное число типа double;
uint.MinValue (или System.UInt32.MinValue) — минимальное число типа uint.
В вещественных классах есть элементы:
положительная бесконечность PositiveInfinity;
отрицательная бесконечность NegativeInfinity;
«не является числом»: NaN.
Слайд 4

Переменные Переменная — это величина, которая во время работы программы может

Переменные

Переменная — это величина, которая во время работы программы может

изменять свое значение.
Все переменные, используемые в программе, должны быть описаны.
Объявления переменных в C# имеют следующий общий вид:
[модификаторы] <тип> <имя_переменной>;
Для каждой переменной задается ее имя и тип:
int a, b = 1; float x = 0.1, y=0.1f; char option;
Тип переменной выбирается исходя из диапазона и требуемой точности представления данных.

неопределенный тип (var)
Например, объявление переменной:
var name = "Петров А.В.";
аналогично следующему объявлению:
string name = "Петров А.В.";

Слайд 5

Общая структура программы на С# Переменные, описанные непосредственно внутри класса, называются

Общая структура программы на С#

Переменные, описанные непосредственно внутри класса, называются полями

класса.

Переменные, описанные внутри метода класса, называются локальными переменными.

Слайд 6

Блок — это код, заключенный в фигурные скобки. Области видимости переменных

Блок — это код, заключенный в фигурные скобки.

Области видимости переменных

Так называемая область действия переменной,

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

Области видимости переменных

Области видимости переменных

Слайд 8

Именованные константы const int b = 1; const float x =

Именованные константы

const int b = 1;
const float x = 0.1,

y = 0.1f;
const int b = 1, a = 100; const int x = b * a + 25;

Вместо значений констант можно (и нужно!) использовать в программе их имена.
Это облегчает читабельность программы и внесение в нее изменений:

Слайд 9

Ссылочные переменые операция new выделяет и инициализирует память для экземпляра любого

Ссылочные переменые

операция new выделяет и инициализирует память для экземпляра любого заданного

типа (для ссылочных переменных – в куче);

Box b1; // объявление ссылочной переменной
b1 = new Box (); // выделение памяти для объекта

Box b1 = new Box(); // объявление и инициализация

Слайд 10

Операции и выражения

Операции и выражения

Слайд 11

Операции и выражения Выражение — правило вычисления значения. В выражении участвуют

Операции и выражения

Выражение — правило вычисления значения.
В выражении участвуют операнды,

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

t + Math.Sin(x)/2 * x
результат имеет вещественный тип
a <= b + 2
результат имеет логический тип
x > 0 && y < 0
результат имеет логический тип

Слайд 12

Операции и выражения

Операции и выражения

Слайд 13

Операции и выражения 2 + 3 * 2 (2 + 3)

Операции и выражения

2 + 3 * 2

(2 + 3) *

2

Приоритеты и ассоциативность операций языка

а + b + с означает (а + b) + с,
а = b = с означает а = (b = с ) .

F ( i ) + G(i++) * H(i) (**)

Слайд 14

Тип результата выражения Если входящие в выражение операнды одного типа и

Тип результата выражения

Если входящие в выражение операнды одного типа и операция

для этого типа определена, то результат выражения будет иметь тот же тип.
Если операнды разного типа и (или) операция для этого типа не определена, перед вычислениями автоматически выполняется преобразование типа по правилам, обеспечивающим приведение более коротких типов к более длинным для сохранения значимости и точности.
char c = 'A';
int i = 100;
double d = 1;
double summa = c + i + d; // 166
Слайд 15

Неявные арифметические преобразования типов в C# при отсутствии линии возникает ошибка компиляции

Неявные арифметические преобразования
типов в C#

при отсутствии линии возникает ошибка компиляции

Слайд 16

Исключение При вычислении выражений могут возникнуть ошибки (переполнение, деление на ноль).

Исключение

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

C# есть механизм обработки исключительных ситуаций (исключений), который позволяет избегать аварийного завершения программы.
Если в процессе вычислений возникла ошибка, система сигнализирует об этом с помощью выбрасывания (генерирования) исключения.
Каждому типу ошибки соответствует свое исключение. Исключения являются классами, которые имеют общего предка — класс Exception, определенный в пространстве имен System.
Например, при делении на ноль будет выброшено исключение DivideByZeroException, при переполнении — исключение OverflowException.
В программе необходимо предусмотреть обработку исключений.
Слайд 17

Инкремент и декремент using System; namespace CA1 { class C1 {

Инкремент и декремент

using System;
namespace CA1
{ class C1
{ static void

Main()
{ int x = 3, y = 3;
Console.Write( "Значение префиксного выражения: " );
Console.WriteLine( ++x );
Console.Write( "Значение х после приращения: " );
Console.WriteLine( x );
Console.Write( "Значение постфиксного выражения: " );
Console.WriteLine( y++ );
Console.Write( "Значение у после приращения: " );
Console.WriteLine( y );
}}}

Результат работы программы:
Значение префиксного выражения: 4
Значение х после приращения: 4
Значение постфиксного выражения: 3
Значение у после приращения: 4

Слайд 18

Операции отрицания - ! ~ using System; namespace ConsoleApplication1 { class

Операции отрицания - ! ~

using System;
namespace ConsoleApplication1
{ class Class1
{

static void Main()
{
sbyte a = 3, b = -63, c = 126;
bool d = true;
Console.WriteLine( -a ); // Результат -3
Console.WriteLine( -c ); // Результат -126
Console.WriteLine( !d ); // Результат false
Console.WriteLine( ~a ); // Результат -4
Console.WriteLine( ~b ); // Результат 62
Console.WriteLine( ~c ); // Результат -127
}}}

a = 00000011
~a = 11111100

b = 11000001
~b = 00111110

c = 01111110
~c = 10000001

Слайд 19

Явное преобразование типа long b = 300; int a = (int)

Явное преобразование типа

long b = 300;
int a = (int) b;

// данные не теряются
byte d = (byte) a; // данные теряются
Слайд 20

Операции сдвига ( >) Применяются к целочисленным операндам. Сдвигают двоичное представление

Операции сдвига (<< и >>)

Применяются к целочисленным операндам.
Сдвигают двоичное

представление первого операнда влево или вправо на количество двоичных разрядов, заданное вторым операндом.
При сдвиге влево (<<) освободившиеся разряды обнуляются.
При сдвиге вправо (>>) освободившиеся биты заполняются нулями, если первый операнд беззнакового типа, и знаковым разрядом в противном случае.
Стандартные операции сдвига определены для типов int, uint, long и ulong.
Слайд 21

Операции сдвига ( >) using System; namespace ConsoleApplication1 { class Class1

Операции сдвига (<< и >>)

using System;
namespace ConsoleApplication1
{ class Class1
{

static void Main()
{
byte a = 3, b = 9;
sbyte c = 9, d = -9;
Console.WriteLine( a << 1 ); // Результат 6
Console.WriteLine( a << 2 ); // Результат 12
Console.WriteLine( b >> 1 ); // Результат 4
Console.WriteLine( c >> 1 ); // Результат 4
Console.WriteLine( d >> 1 ); // Результат -5
}
}
}

00000011

00000110

00001100

Слайд 22

Операции отношения и проверки на равенство Операции отношения ( , >=,

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

Операции отношения (<, <=, >, >=,

==, !=) сравнивают первый операнд со вторым.
Операнды должны быть арифметического типа.
Результат операции — логического типа, равен true или false.
x == y -- true, если x равно y, иначе false
x != y -- true, если x не равно y, иначе false
x < y -- true, если x меньше y, иначе false
x > y -- true, если x больше y, иначе false
x <= y -- true, если x меньше или равно y, иначе false
x >= y -- true, если x больше или равно y, иначе false
Слайд 23

Условные логические операции && и || using System; namespace ConsoleApplication1 {

Условные логические операции && и ||

using System;
namespace ConsoleApplication1
{ class Class1

{ static void Main()
{
Console.WriteLine( true && true ); // Результат true
Console.WriteLine( true && false ); // Результат false
Console.WriteLine( true || true ); // Результат true
Console.WriteLine( true || false ); // Результат true
}
}
}

(a < b) || (a < c)
Если первое условие истинно, второе не вычисляется

Слайд 24

Условная операция операнд_1 ? операнд_2 : операнд_3 Операнд_1 — выражение, для

Условная операция

операнд_1 ? операнд_2 : операнд_3
Операнд_1 — выражение, для которого существует

неявное преобразование к логическому типу.
Если результат вычисления операнда_1 равен true, результат операции — значение операнда_2,
иначе — значение операнда_3.
using System;
namespace ConsoleApplication1
{ class Class1
{ static void Main()
{
int a = 11, b = 4;
int max = b > a ? b : a;
Console.WriteLine( max ); // Результат 11
}}}
Слайд 25

Операция присваивания Присваивание – это замена старого значения переменной на новое.

Операция присваивания

Присваивание – это замена старого значения переменной на новое. Старое

значение стирается бесследно.
Операция может использоваться в программе как законченный оператор.
переменная = выражение
a = b + c;
x = 1;
x = x + 0.5;
Правый операнд операции присваивания должен иметь неявное преобразование к типу левого операнда, например:
вещественная переменная = целое выражение;
Слайд 26

Сложное присваивание в C# x += 0.5; соответствует x = x

Сложное присваивание в C#

x += 0.5; соответствует x = x +

0.5;
x *= 0.5; соответствует x = x * 0.5;
a %= 3; соответствует a = a % 3;
a <<= 2; соответствует a = a << 2;
и т.п.
Слайд 27

Консольный ввод-вывод

Консольный ввод-вывод

Слайд 28

Вывод на консоль using System; namespace A { class Class1 {

Вывод на консоль

using System;
namespace A
{ class Class1
{ static void Main()

{
int i = 3;
double y = 4.12;
decimal d = 600m;
string s = "Вася";
Console.Write( i );
Console.WriteLine( " y = " + y);
Console.WriteLine("d = " + d + " s = " + s );
}
}
}
}
}
}

Результат работы программы:
3 y = 4,12
d = 600 s = Вася

Слайд 29

Вывод на консоль using System; namespace A { class Class1 {

Вывод на консоль

using System;
namespace A
{ class Class1
{ static void Main()

{
int i = 3;
double y = 4.12;
decimal d = 600m;
string s = "Вася";
}
}
}

Console.Write( i );
Console.Write( " y = {0} \nd = {1}", y, d );
Console.WriteLine( " s = " + s );

Слайд 30

Вывод на консоль using System; namespace A { class Class1 {

Вывод на консоль

using System;
namespace A
{ class Class1
{ static void Main()

{
int i = 3;
double y = 4.12;
decimal d = 600m;
string s = "Вася";
}
}
}

Console.Write( i );
Console.Write( " y = {0:F2} \nd = {1:D3}", y, d );
Console.WriteLine( " s = " + s );

Формат

Формат

Результат работы программы:
3 y = 4,12
d = 600 s = Вася

Слайд 31

Формат место заполнителя { номер [ , длина ] [ :

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

{ номер [ , длина ] [ : формат

] }
номер – номер элемента в списке вывода (может идти не по порядку и повторяться)
длина – количество позиций под значение. Если длина отрицательная, значение выравнивается по левому краю, иначе - по правому.
формат – строка формата для выводимого значения (описатели формата на следующем слайде)
Примеры:
{0,-6:F4}
{2:X4}
{1:hh}
Слайд 32

Описатели формата

Описатели формата

Слайд 33

Операции отрицания - ! ~

Операции отрицания - ! ~

Слайд 34

Операции отрицания - ! ~

Операции отрицания - ! ~

Слайд 35

Ввод с консоли using System; namespace A { class Class1 {

Ввод с консоли

using System;
namespace A
{ class Class1
{ static void Main()

{
string s = Console.ReadLine(); // ввод строки
char c = (char)Console.Read(); // ввод символа
Console.ReadLine();
string buf; // буфер для ввода чисел
buf = Console.ReadLine();
int i = Convert.ToInt32( buf ); // преобразование в целое
buf = Console.ReadLine();
double x = Convert.ToDouble( buf ); // преобразование в вещ.
buf = Console.ReadLine();
double y = double.Parse( buf ); // преобразование в вещ.
}
}
}
Слайд 36

Операции отрицания - ! ~ using System; namespace A { class

Операции отрицания - ! ~

using System;
namespace A
{ class Class1
{

static void Main()
{
string s = Console.ReadLine(); // ввод строки
char c = (char)Console.Read(); // ввод символа
Console.ReadLine();
int i = Convert.ToInt32( Console.ReadLine() );
double x = Convert.ToDouble( Console.ReadLine() );
double y = double.Parse( Console.ReadLine() );
}
}
}