Структуры в C

Содержание

Слайд 2

Строки Строка является объектом типа String, значением которого является текст. Текст

Строки

Строка является объектом типа String, значением которого является текст. Текст хранится

в виде последовательной доступной только для чтения набора объектов Char. В конце строки на языке C# отсутствует символ, заканчивающийся на NULL; поэтому строка C# может содержать любое число внедренных символов NULL ("\0"). Свойство Length строки представляет число объектов Char, содержащихся в этой строке, а не число символов Юникода.
В C# ключевое слово string является псевдонимом свойства String. Поэтому String и string эквивалентны
Слайд 3

Строки Объявление и инициализацию строк можно выполнять различными способами: string message1;

Строки

Объявление и инициализацию строк можно выполнять различными способами:
string message1;
string str =

"Пример строки";
char[] letters = { 'A', 'B', 'C' };
string alphabet = new string(letters); 
Слайд 4

Строки Над строками определены следующие операции: присваивание (=); конкатенация (объединение) или

Строки

Над строками определены следующие операции:
присваивание (=);
конкатенация (объединение) или сцепление строк (+);
две

операции проверки эквивалентности: равно (= =) и не равно (!=);
взятие индекса ([]).
Слайд 5

Строки Переприсваивание Строки можно целиком переприсваивать: string s1 = "Hello"; string s2 = s1;

Строки

Переприсваивание
Строки можно целиком переприсваивать:
string s1 = "Hello";
string s2 = s1;

Слайд 6

Строки Объединение строк Можно объединять строки с помощью оператора +: string

Строки

Объединение строк
Можно объединять строки с помощью оператора +:
string s1 = "orange";
string

s2 = "red";
s1 += s2;Console.WriteLine(s1); // напечатается "orangered"
Строковые объекты являются неизменяемыми: после создания их нельзя изменить. Все методы String и операторы C#, которые, как можно было бы представить, изменяют строку, в действительности возвращают результаты в новый строковый объект.
.
Слайд 7

Строки Постоянство строк Строковые объекты являются неизменяемыми: после создания их нельзя

Строки

Постоянство строк
Строковые объекты являются неизменяемыми: после создания их нельзя изменить. Все

методы String и операторы C#, которые, как можно было бы представить, изменяют строку, в действительности возвращают результаты в новый строковый объект.
В примере, когда содержимое строк s1 и s2 объединяется в одну строку, две исходные строки не изменяются. Оператор += создает новую строку с объединенным содержимым. Этот новый объект присваивается переменной s1, а исходный объект, который был присвоен строке s1, освобождается для сборки мусора, поскольку ни одна переменная не содержит ссылку на него.
Слайд 8

Строки Сравнения Самый простой способ сравнения двух строк — использовать операторы

Строки

Сравнения
Самый простой способ сравнения двух строк — использовать операторы == и

!=, осуществляющие сравнение с учетом регистра:
string color1 = "red";
string color2 = "green";
string color3 = "red";
if (color1 == color3) Console.WriteLine("Строки равны");
if (color1 != color2) Console.WriteLine("Строки не равны");
Не допускается использование >,<,>=,<= для сравнения строк. Для строковых объектов существует метод CompareTo(), возвращающий целочисленное значение, зависящее от того, что одна строка может быть меньше (<), равна (==) или больше другой (>). При сравнении строк используется значение Юникода, при этом значение строчных букв меньше, чем значение заглавных.
Слайд 9

Строки Доступ к отдельным знакам Квадратные скобки [] служат для доступа

Строки

Доступ к отдельным знакам
Квадратные скобки [] служат для доступа к отдельным

знакам в объекте string, но при этом возможен доступ только для чтения:
string str = "test";
char x = str[2]; // x = 's';
Слайд 10

Строки В C# существуют два вида строковых констант: обычные константы, которые

Строки

В C# существуют два вида строковых констант:
обычные константы, которые представляют строку

символов, заключённую в кавычки;
@-константы, заданные обычной константой c предшествующим знаком @.
Слайд 11

Строки Обычные константы В обычных константах некоторые символы интерпретируются особым образом.

Строки

Обычные константы
В обычных константах некоторые символы интерпретируются особым образом. Связано это,

прежде всего, с тем, что необходимо уметь задавать в строке непечатаемые символы, такие, как, например, символ табуляции. Возникает необходимость задавать символы их кодом – в виде escape-последовательностей. Для всех этих целей используется комбинация символов, начинающаяся символом "\" - обратная косая черта. Это так называемые Escape-последовательности
Слайд 12

Строки При этом возникают неудобства: например, при задании констант, определяющих путь

Строки

При этом возникают неудобства: например, при задании констант, определяющих путь к

файлу, приходится каждый раз удваивать символ обратной косой черты.
string path2 = "C:\\Users\\Mikant\\Documents";
Слайд 13

Строки @-константы В @-константах все символы трактуются в полном соответствии с

Строки

@-константы
В @-константах все символы трактуются в полном соответствии с их изображением.

Поэтому путь к файлу лучше задавать @-константой. Единственная проблема в таких случаях: как задать символ кавычки, чтобы он не воспринимался как конец самой константы. Решением является удвоение символа.
string path1 = @"C:\Users\Mikant\Documents";
Слайд 14

Строки

Строки

Слайд 15

Строки

Строки

Слайд 16

Строки string s6 = «РГппУ"; Console.WriteLine(s6.ToUpper()); // Напечатается РГППУ string s3

Строки

string s6 = «РГппУ";
Console.WriteLine(s6.ToUpper()); // Напечатается РГППУ
string s3 = "Visual C#

Express";
string s5 = s3.Replace("C#", "Basic");
Сonsole.WriteLine(s5);// напечатается "Visual Basic Express”
string s3 = "Visual C# Express";
string s4 = s3.Substring(7, 2);
Console.WriteLine(s4);// напечатается "C#"
Слайд 17

Строки Преобразование строк в другие типы С помощью объекта Convert: N

Строки

Преобразование строк в другие типы
С помощью объекта Convert:
N = Convert.ToInt32(s1);
M =

Convert.ToDouble(s2);
F = Convert.ToBoolean(s3);
B = Convert.ToByte(s4);
C = Convert.ToChar(k);
s5= Convert.ToString(x);
Слайд 18

Структуры

Структуры

Слайд 19

Структуры Структуры являются фундаментальными типами данных в C# и большинстве других

Структуры

Структуры являются фундаментальными типами данных в C# и большинстве других современных

языках программирования. Структуры в C# практически ничем не отличаются от структур в любом другом языке.
Структура - это набор зависимых друг от друга переменных. Зависимость здесь исключительно логическая и определяется условиями задачи.
Структура относится к типу значения, а не к ссылочному типу данных.
Слайд 20

Описание структуры: struct имя_структуры { public тип поле1; public тип поле2; . . . } Структуры

Описание структуры:
struct имя_структуры
{
public тип поле1;
public тип поле2;
. . .
}

Структуры

Слайд 21

Пример: struct student { public string fio; public string FormOfEducation; public

Пример:
struct student
{
public string fio;
public string FormOfEducation;
public

int course;
public string faculty;
}

Структуры

Слайд 22

static void Main(string[] args) { student stud; stud.fio = «Иванов Егор

static void Main(string[] args)
{
student stud;
stud.fio = «Иванов

Егор Петрович";
stud.FormOfEducation = "очного";
stud.course = 3;
stud.faculty = "электроэнергетического";
Console.WriteLine("СПРАВКА подтверждает, что "+stud.fio +
" является студентом "+stud.FormOfEducation+
" отделения ВоГТУ " +stud.course+" курса "+stud.faculty+
" факультета");
Console.Read();
}

Структуры

Слайд 23

student[] Сортировка по возрастанию: Массив.OrderBy(x=>x.поле) stud.OrderBy(x=>x.fio); Сортировка по убыванию: Массив.OrderByDescending (x=>x.поле) stud.OrderBy Descending (x=>x.cours) Структуры

student[]
Сортировка по возрастанию:
Массив.OrderBy(x=>x.поле)
stud.OrderBy(x=>x.fio);
Сортировка по убыванию:
Массив.OrderByDescending (x=>x.поле)
stud.OrderBy Descending (x=>x.cours)

Структуры

Слайд 24

Исключения В языке C# ошибки в программе во время выполнения передаются

Исключения

В языке C# ошибки в программе во время выполнения передаются через

программу посредством механизма, называемого исключениями. Исключения создаются кодом, который встречает ошибку и перехватываются кодом, который может исправить ее. Исключения могут создаваться средой CLR платформы .NET Framework или кодом в программе.
Слайд 25

Этапы исключений: Генерация исключения Обработка исключения Исключения

Этапы исключений:
Генерация исключения
Обработка исключения

Исключения

Слайд 26

Схема обработки исключений в C#: try {... } catch (T1 e1)

Схема обработки исключений в C#:
try {... } catch (T1 e1) {...}

... catch(Tk ek) {...} finally {...}
Всюду в тексте модуля, где синтаксически допускается использование блока, этот блок можно сделать охраняемым, добавив ключевое слово try. Вслед за try-блоком могут следовать catch-блоки, называемые блоками- обработчиками исключительных ситуаций, их может быть несколько, они могут и отсутствовать. Завершает эту последовательность finally-блок - блок завершения (финализации), который также может отсутствовать.

Исключения

Слайд 27

Свойства исключений: Исключения имеют типы, в конечном счете являющиеся производными от

Свойства исключений:
Исключения имеют типы, в конечном счете являющиеся производными от System.Exception.


Следует использовать блок try для заключения в него инструкций, которые могут выдать исключения.
При возникновении исключения в блоке try поток управления немедленно переходит к первому соответствующему обработчику исключений, присутствующему в стеке вызовов. В языке C# ключевое слово catch используется для определения обработчика исключений.
Если обработчик для определенного исключения не существует, выполнение программы завершается с сообщением об ошибке.
Не перехватывайте исключение, если его нельзя обработать, и оставьте приложение в известном состоянии. При перехвате System.Exception вновь инициируйте это исключение с использованием ключевого слова throw в конце блока catch.
Исключения могут явно генерироваться программной с помощью ключевого слова throw.
Код в блоке finally выполняется, даже при возникновении исключения. Блок finally используется для освобождения ресурсов, например для закрытия потоков или файлов, открытых в блоке try.

Исключения

Слайд 28

Блок try используется программистами C# для разбиения на разделы кода, который

Блок try используется программистами C# для разбиения на разделы кода, который

может затрагиваться исключением.
Блок catch может указывать тип перехватываемого исключения. Спецификация типа называется фильтр исключений. Несколько блоков catch с различными фильтрами исключений могут быть соединены друг с другом. Блоки catch проверяются сверху вниз в коде, однако для каждого вызванного исключения выполняется только один блок catch.
Блок finally позволяет удалить действия, выполненные в блоке try. При наличии блока finally он выполняется последним, после блока try и всех выполняемых блоков catch. Блок finally выполняется всегда, вне зависимости от возникновения исключения или обнаружения блока catch, соответствующего типу исключения.

Исключения

Слайд 29

В стандарте языка C# конструкция try/catch/finally называются try оператором. Определены три

В стандарте языка C# конструкция try/catch/finally называются try оператором. Определены три

формы оператора try:
Блок контроля, за которым следуют catch-обработчики (один или несколько)
Блок контроля, за которым следует блок завершения (finally-блок)
Блок контроля, за которым следуют catch-обработчики (один или несколько), размещен блок завершения (finally-блок)

Исключения

Слайд 30

Имеется три формы catch-инструкции: сatch (тип_исключения имя) {операторы} сatch (тип_исключения) {операторы}

Имеется три формы catch-инструкции:
сatch (тип_исключения имя) {операторы}
сatch (тип_исключения) {операторы}
сatch {операторы}
Для выполнения

перехвата исключений вне зависимости от их типа (перехват всех исключений) используется оператор catch без параметров.

Исключения

Слайд 31

private void button1_Click(object sender, EventArgs e) { try { stud[i].fio =

private void button1_Click(object sender, EventArgs e)
{ try
{ stud[i].fio

= textBox1.Text;
stud[i].dat = dateTimePicker1.Value;
if (radioButton1.Checked) stud[i].pol = 'ж';
else stud[i].pol = 'м';
stud[i].ves = Convert.ToInt32(numericUpDown1.Value);
stud[i].ekat = checkBox1.Checked;
stud[i].rost = Convert.ToDouble(textBox2.Text);
i++;
}
catch
{ MessageBox.Show("Ошибка");}
}

Исключения

Слайд 32

Исключения

Исключения

Слайд 33

private void button1_Click(object sender, EventArgs e) { try { stud[i].fio =

private void button1_Click(object sender, EventArgs e)
{
try
{ stud[i].fio

= textBox1.Text;
stud[i].dat = dateTimePicker1.Value;
if (radioButton1.Checked) stud[i].pol = 'ж';
else stud[i].pol = 'м';
stud[i].ves = Convert.ToInt32(numericUpDown1.Value);
stud[i].ekat = checkBox1.Checked;
stud[i].rost = Convert.ToDouble(textBox2.Text);
i++; }
catch (System.FormatException)
{ MessageBox.Show("Ввод не числа"); }
catch (System.IndexOutOfRangeException)
{ MessageBox.Show("Выход за пределы массива"); }
finally
{ textBox1.Text="";
textBox2.Text="";
textBox1.Focus();}
}

Исключения

Слайд 34

Контролируемый ввод private void textBox2_KeyPress(object sender, KeyPressEventArgs e) { bool zpt=false;

Контролируемый ввод

private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{ bool zpt=false;

if (char.IsDigit(e.KeyChar) == true) return;
if (e.KeyChar == (char)Keys.Back) return;
if (textBox2.Text.IndexOf(',') != -1)
zpt = true;
if (zpt == true) { e.Handled = true; return; }
if (e.KeyChar == ',') return;
e.Handled = true;
}