Язык С#. Состав языка

Содержание

Слайд 2

Состав языка Символы: буквы: A-Z, a-z, _, буквы нац. алфавитов цифры:

Состав языка

Символы:
буквы: A-Z, a-z, _, буквы нац. алфавитов
цифры: 0-9, A-F
спец. символы:

+, *, {, …
пробельные символы

Лексемы:
константы 2 0.11 “Вася”
имена Vasia a _11
ключевые слова double do if
знаки операций + <= new
разделители ; [ ] ,

Выражения
выражение - правило вычисления значения: a + b
Операторы
исполняемые: c = a + b;
описания: double a, b;

static void Main()
{ Самолёт АН24 =
new Самолёт();
АН24.Полетели();
}

Лексема (token, токен) – минимальная единица языка, имеющая самостоятельный смысл

Слайд 3

Вид Примеры Булевские true false Целые десятич. 8 199226 16-ричн. 0xA

Вид Примеры
Булевские true false
Целые десятич. 8 199226
16-ричн. 0xA 0x1B8
Веществ. с тчк 5.7
с порядком 0.2E6 .11e–3

5E12
Символьные 'A' '\x74' '\0' '\\' Строковые "Здесь был Vasia"
"Здесь был \u0056\u0061"
@"C:\temp\file1.txt"
Константа null null

Константы (литералы) C#

5∙1012

Слайд 4

Имена (идентификаторы) имя должно начинаться с буквы или _; имя должно

Имена (идентификаторы)

имя должно начинаться с буквы или _;
имя должно содержать только

буквы, знак подчеркивания и цифры;
прописные и строчные буквы различаются;
длина имени практически не ограничена.
имена не должны совпадать с ключевыми словами, однако допускается: @if, @float…
в именах можно использовать управляющие последовательности Unicode

Примеры правильных имен:
Vasia, Вася, _13, \u00F2\u01DD, @while.
Примеры неправильных имен:
2late, Big gig, Б#г

Слайд 5

Нотации Понятные и согласованные между собой имена — основа хорошего стиля.

Нотации

Понятные и согласованные между собой имена — основа хорошего стиля. Существует

несколько нотаций — соглашений о правилах создания имен.
В C# для именования различных видов программных объектов чаще всего используются две нотации:
Нотация Паскаля - каждое слово начинается с прописной буквы:
MaxLength, MyFuzzyShooshpanchik
Camel notation - с прописной буквы начинается каждое слово, составляющее идентификатор, кроме первого:
maxLength, myFuzzyShooshpanchik
Слайд 6

Ключевые слова, знаки операций, разделители Ключевые слова — идентификаторы, имеющие специальное

Ключевые слова, знаки операций, разделители

Ключевые слова — идентификаторы, имеющие специальное значение для

компилятора. Их можно использовать только в том смысле, в котором они определены.
Например, для оператора перехода определено слово goto.
Знак операции — один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются.
Например: + - = == %= new is
Операции делятся на унарные (с одним операндом), бинарные (с двумя) и тернарную (с тремя).

Разделители используются для разделения или, наоборот, группирования элементов. Примеры разделителей: скобки, точка, запятая.

Слайд 7

Ключевые слова C# abstract as base bool break byte case catch

Ключевые слова C#

abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while

Слайд 8

Типы данных: Концепция Классификация Встроенные типы данных

Типы данных:
Концепция
Классификация
Встроенные типы данных

Слайд 9

©Павловская Т.А. (НИУ ИТМО) внутреннее представление данных => множество их возможных

©Павловская Т.А. (НИУ ИТМО)

внутреннее представление данных => множество их возможных значений
допустимые

действия над данными => операции и функции

Тип данных определяет:

Концепция типа данных

Слайд 10

Различные классификации типов данных

Различные классификации типов данных

Слайд 11

Основная классификация типов C#

Основная классификация типов C#

Слайд 12

Встроенные типы данных C#: Булевский Целые Вещественные Финансовый Символьный object

Встроенные типы данных C#:
Булевский
Целые
Вещественные
Финансовый
Символьный
object

Слайд 13

Логический (булевский) и целые

Логический (булевский) и целые

Слайд 14

Остальные

Остальные

Слайд 15

Математические функции: класс Math

Математические функции: класс Math

Слайд 16

Слайд 17

Линейные программы: Структура программы Переменные Операции Выражения Введение в обработку исключительных ситуаций Простейший ввод-вывод

Линейные программы:
Структура программы
Переменные
Операции
Выражения
Введение в обработку исключительных

ситуаций
Простейший ввод-вывод
Слайд 18

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

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

описания и операторы, например:
Console.Write("Превед медвед");
}
// описания
}
}

Структура простейшей программы на С#

Слайд 19

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

Переменные

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

может изменять свое значение.
Все переменные, используемые в программе, должны быть описаны.
Для каждой переменной задается ее имя и тип:
int number; float x, y; char option;
Тип переменной выбирается исходя из диапазона и требуемой точности представления данных.
Слайд 20

Общая структура программы на С# пространство имен Класс А Класс В

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

пространство имен

Класс А

Класс В

Метод Main

Переменные класса

Методы класса:

Переменные

класса

Локальные переменные

Методы класса:


Слайд 21

Область действия и время жизни переменных Переменные описываются внутри какого-то. блока:

Область действия и время жизни переменных

Переменные описываются внутри какого-то. блока:

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

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

Слайд 22

Инициализация переменных При объявлении можно присвоить переменной начальное значение (инициализировать). int

Инициализация переменных

При объявлении можно присвоить переменной начальное значение (инициализировать).
int number

= 100; float x = 0.02; char option = ’ю’;
При инициализации можно использовать не только константы, но и выражения — главное, чтобы на момент описания они были вычислимыми, например:
int b = 1, a = 100;
int x = b * a + 25;
Слайд 23

Пример описания переменных using System; namespace CA1 { class Class1 {

Пример описания переменных

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

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

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

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

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

имена.
Это облегчает читабельность программы и внесение в нее изменений:
const float weight = 61.5;
const int n = 10;
const float g = 9.8;

Никаких чисел, кроме 0 и 1, в программе быть не должно (нигде, кроме описаний именованных констант)

Слайд 25

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

Выражения

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

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

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

Слайд 26

Ассоциативность выражений Слева направо a + b – c + d

Ассоциативность выражений

Слева направо
a + b – c + d
(

( ( a + b ) – c ) + d )
a * b / c * d
( ( ( a * b ) / c ) * d )
Справа налево
a = b = c = d
( a = ( b = ( c = d ) ) )
Слайд 27

Первичные (), [], ++, --, new, … Унарные ~, !, ++,

Первичные (), [], ++, --, new, …
Унарные ~, !, ++, --,

-, …
Типа умножения (мультипликативные) *, /, %
Типа сложения (аддитивные) +, -
Сдвига <<, >>
Отношения и проверки типа <, >, is, …
Проверки на равенство ==, !=
Поразрядные логические &, ^, |
Условные логические &&, ||
Условная  ?:
Присваивания            =, *=, /=,…

Приоритеты операций C#

Слайд 28

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

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

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

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

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

Понятие «исключительная ситуация»

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

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

Инкремент и декремент 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

Слайд 31

Пример (умножение *, деление /, остаток %) using System; namespace ConsoleApplication1

Пример (умножение *, деление /, остаток %)

using System;
namespace ConsoleApplication1
{ class Class1

{ static void Main()
{
int x = 11, y = 4;
float z = 4;
Console.WriteLine( z * y ); // Результат 16
Console.WriteLine( x / y ); // Результат 2
Console.WriteLine( x / z ); // Результат 2,75
Console.WriteLine( x % y ); // Результат 3
}}}
Слайд 32

©Павловская Т.А. (НИУ ИТМО) Присваивание – это замена старого значения переменной

©Павловская Т.А. (НИУ ИТМО)

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

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

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

1

x

1+0.5

1.5

Слайд 33

©Павловская Т.А. (НИУ ИТМО) Сложное присваивание в C# x += 0.5;

©Павловская Т.А. (НИУ ИТМО)

Сложное присваивание в 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;
и т.п.
Слайд 34

©Павловская Т.А. (НИУ ИТМО) Консольный ввод-вывод

©Павловская Т.А. (НИУ ИТМО)

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

Слайд 35

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

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

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

Вывод на консоль – 1/4

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

Console.Write( i );
Console.WriteLine( " y = " + y);
Console.WriteLine("d = " + d + " s = " + s );

Слайд 36

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

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

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

Вывод на консоль – 2/4

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

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

Слайд 37

©Павловская Т.А. (НИУ ИТМО) 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 = "Вася";
}
}
}

Вывод на консоль – 3/4

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

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

Формат

Формат

Слайд 38

©Павловская Т.А. (НИУ ИТМО) 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( " y = {0,5:0.# ' руб. '} \n", y );
}
}
}

Вывод на консоль – 4/4

y = 4,1 руб.

5 позиций под значение

пользовательский формат

Слайд 39

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

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

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

}
номер – номер элемента в списке вывода (может идти не по порядку и повторяться)
длина – количество позиций под значение. Если длина отрицательная, значение выравнивается по левому краю, иначе - по правому.
формат – строка формата для выводимого значения

©Павловская Т.А. (НИУ ИТМО)

Слайд 40

©Павловская Т.А. (НИУ ИТМО) 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 ); // преобразование в вещ.
}
}
}

Ввод с консоли – 1/2

Слайд 41

©Павловская Т.А. (НИУ ИТМО) 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();
int i = Convert.ToInt32( Console.ReadLine() );
double x = Convert.ToDouble( Console.ReadLine() );
double y = double.Parse( Console.ReadLine() );
}
}
}

Ввод с консоли – 2/2

Слайд 42

©Павловская Т.А. (НИУ ИТМО) using System; namespace CA1 { class Class1

©Павловская Т.А. (НИУ ИТМО)

using System;
namespace CA1
{ class Class1
{ static void

Main()
{
Console.WriteLine( "Введите температуру по Фаренгейту" );
double fahr = Convert.ToDouble( Console.ReadLine() );
double cels =5.0 / 9 * (fahr - 32);
Console.WriteLine( "По Фаренгейту: {0} в градусах Цельсия: {1}",
fahr, cels );
}
}
}

Пример: перевод температуры из F в С