Структура программы С#. Переменные, операции и выражения

Содержание

Слайд 2

Вопросы:

1. Структура программы С#
2. Переменные
3. Операции
4. Выражения

Вопросы: 1. Структура программы С# 2. Переменные 3. Операции 4. Выражения

Слайд 3

Структура программы C#

// A Hello World! program in C#
using System;
namespace Hello World
{
class

Структура программы C# // A Hello World! program in C# using System;
Hello
{
static void Main()
{
System.Console.WriteLine("Hello World!");
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}}}

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

Для использования в программе классов из других пространств имен необходимо указать их с директивой using.

Слайд 4

Пример создания собственного пространства имён

namespace StatisticalData {
class FileHandling {
public void

Пример создания собственного пространства имён namespace StatisticalData { class FileHandling { public
Load() {}
// code to load statistical data
}
}
namespace Images {
class FileHandling {
public void Load() {} // code to load an image file }}

class Program {
static void Main() {
StatisticalData.FileHandling data = new StatisticalData.FileHandling();
data.Load();
  Images.FileHandling image = new Images.FileHandling();
image.Load();
}}

Слайд 5

Инструкции

Базовым строительным блоком программы являются инструкции (statement). Инструкция представляет некоторое действие, например, арифметическую операцию,

Инструкции Базовым строительным блоком программы являются инструкции (statement). Инструкция представляет некоторое действие,
вызов метода, объявление переменной и присвоение ей значения. В конце каждой инструкции в C# ставится точка с запятой (;). Данный знак указывает компилятору на конец инструкции. 
Набор инструкций может объединяться в блок кода. Блок кода заключается в фигурные скобки, а инструкции помещаются между открывающей и закрывающей фигурными скобками.
Одни блоки кода могут содержать другие блоки.

Слайд 6

Метод Main ()

По умолчанию метод Main размещается в классе Program. Название класса может быть

Метод Main () По умолчанию метод Main размещается в классе Program. Название
любым. Но метод Main является обязательной частью консольного приложения. Если мы изменим его название, то программа не скомпилируется.
По сути и класс, и метод представляют своего рода блок кода: блок метода помещается в блок класса. Внутри блока метода Main располагаются выполняемые в программе инструкции.

Слайд 7

Метод Main ()

static void Main()
{
// возвращает значение void}

static int Main()
{
// возвращает значение типа int
return

Метод Main () static void Main() { // возвращает значение void} static
0;}

static int Main(string[] args)
{
// принимает массив строковых аргументов
return 0;
}

class TestClass
{
static void Main(string[] args) {
// Display the number of command line arguments:
System.Console.WriteLine(args.Length);
for(int i=0; i < args.Length; i++)
Console.WriteLine(args[i]) ; }}

Слайд 8

Регистрозависимость

C# является регистрозависимым языком. Это значит, в зависимости от регистра символов какое-то

Регистрозависимость C# является регистрозависимым языком. Это значит, в зависимости от регистра символов
определенные названия может представлять разные классы, методы, переменные и т.д.
Например, название обязательного метода Main начинается именно с большой буквы: "Main". Если мы назовем метод "main", то программа не скомпилируется, так как метод, который представляет стартовую точку в приложении, обязательно должен называться "Main", а не "main" или "MAIN".

Слайд 9

КОММЕНТАРИИ

Важной частью программного кода являются комментарии. Они не являются собственно частью программы,

КОММЕНТАРИИ Важной частью программного кода являются комментарии. Они не являются собственно частью
при компиляции они игнорируются. Тем не менее комментарии делают код программы более понятным, помогая понять те или иные его части.
Есть два типа комментариев: однострочный и многострочный.
Однострочный комментарий размещается на одной строке после двойного слеша //.
А многострочный комментарий заключается между символами /* текст комментария */. Он может размещаться на нескольких строках. 

Слайд 10

Переменные

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

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

Слайд 11

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

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

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

Слайд 12

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

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

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

Слайд 13

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

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

Пример описания переменных using System; namespace CA1 { class Class1 { static
int i = 3;
double y = 4.12;
decimal d = 600m;
string s = "Вася"; }}}

Слайд 14

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

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

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

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

Слайд 15

Выражения

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

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

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

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

Слайд 16

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

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

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

Справа налево
a = b = c = d
( a = ( b = ( c = d ) ) )

Слайд 17

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

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

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

Слайд 18

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

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

Тип результата выражения Если операнды, входящие в выражение, одного типа, и операция
этого типа определена, то результат выражения будет иметь тот же тип.
Если операнды разного типа и (или) операция для этого типа не определена, перед вычислениями автоматически выполняется преобразование типа по правилам, обеспечивающим приведение более коротких типов к более длинным для сохранения значимости и точности.
Автоматическое (неявное) преобразование возможно не всегда, а только если при этом не может случиться потеря значимости.
Если неявного преобразования из одного типа в другой не существует, программист может задать явное преобразование типа с помощью операции (тип)x.

Слайд 19

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

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

Слайд 20

Введение в исключения

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

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

Слайд 21

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

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

Инкремент и декремент using System; namespace CA1 { class C1 { static
{ 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

Слайд 22

Операция new

Операция new служит для создания нового объекта. Формат операции:
new тип

Операция new Операция new служит для создания нового объекта. Формат операции: new
( [ аргументы ] )
С помощью этой операции можно создавать объекты как ссылочных, так и значимых типов, например:
object z = new object();
int i = new int(); // то же самое, что int i = 0;

Слайд 23

Операции отрицания

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

Операции отрицания using System; namespace ConsoleApplication1 { class Class1 { static void
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
}}}

Слайд 24

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

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

Явное преобразование типа long b = 300; int a = (int) b;
данные не теряются
byte d = (byte) a; // данные теряются

Слайд 25

Умножение

Операция умножения (*) возвращает результат перемножения двух операндов.
Стандартная операция умножения

Умножение Операция умножения (*) возвращает результат перемножения двух операндов. Стандартная операция умножения
определена для типов int, uint, long, ulong, float, double и decimal.
К величинам других типов ее можно применять, если для них возможно неявное преобразование к этим типам. Тип результата операции равен «наибольшему» из типов операндов, но не менее int.
Если оба операнда целочисленные или типа decimal и результат операции слишком велик для представления с помощью заданного типа, генерируется исключение System.OverflowException

Слайд 26

Результаты вещественного умножения

Результаты вещественного умножения

Слайд 27

Пример

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

Пример using System; namespace ConsoleApplication1 { class Class1 { static void Main()
= 11, y = 4;
float z = 4;
Console.WriteLine( z * y ); // Результат 16
Console.WriteLine( z * 1e308 ); // Рез. "бесконечность"
Console.WriteLine( x / y ); // Результат 2
Console.WriteLine( x / z ); // Результат 2,75
Console.WriteLine( x % y ); // Результат 3
Console.WriteLine( 1e-324 / 1e-324 ); // Результат NaN
}}}

Слайд 28

Операции сдвига

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

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

Слайд 29

Пример

using System;
namespace ConsoleApplication1
{ class Class1
{ static void Main()
{
byte a

Пример using System; namespace ConsoleApplication1 { class Class1 { static void Main()
= 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
}
}
}

Слайд 30

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

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

Операции отношения и проверки на равенство Операции отношения ( , >=, ==,
!=) сравнивают первый операнд со вторым.
Операнды должны быть арифметического типа.
Результат операции — логического типа, равен 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

Слайд 31

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

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

Условные логические операции using System; namespace ConsoleApplication1 { class Class1 { static
{
Console.WriteLine( true && true ); // Результат true
Console.WriteLine( true && false ); // Результат false
Console.WriteLine( true || true ); // Результат true
Console.WriteLine( true || false ); // Результат true
}
}
}

Слайд 32

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

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

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

Слайд 33

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

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

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