
- •Лабораторная работа 1 Тема: Типы данных и операторы языка с#. Массивы. Строки. Регулярные выражения
- •Типы данных c#
- •Преобразования типов
- •Преобразования строк в число. Класс Convert
- •Массивы в c#
- •Int[] k; //k – одномерный массив
- •Базовый класс System.Array
- •Строки в с# Класс Сhar
- •Класс String
- •Строковые константы
- •Пространство имен RegularExpression и классы регулярных выражений
- •Синтаксис регулярных выражений
- •Классы пространства RegularExpressions
- •1. Проработать примеры 1-8, данные в теоретических сведениях. Создать на их основе программы. Получить результаты работы программ и уметь их объяснить. Внести их в отчет с комментариями.
- •2. Выполнить два задания на двумерный массив по заданному номеру варианта и номеру, отсчитанному с конца.
- •3. Выполнить два задания на строки по заданному номеру варианта и номеру, отсчитанному с конца. Использовать в задачах два класса строк: String и StringBuilder.
- •4. Выполнить задание на применение регулярных выражений. Выбрать одно по заданному номеру.
- •Лабораторная работа 2 Тема: Структуры и перечисления как частные виды классов. Классы. Интерфейсы
- •[Атрибуты][модификаторы]enum имя_перечисления[: базовый класс] {список_возможных_значений}
- •[Атрибуты][модификаторы]struct имя_структуры [:список_интерфейсов] {тело_структуры}
- •Классы в c# [атрибуты][модификаторы]class имя_класса [:список_родителей] {тело_класса}
- •Индексаторы
- •Статические поля и методы класса
- •Наследование
- •Интерфейсы
- •Две стратегии реализации интерфейса
- •Преобразование к классу интерфейса
- •Проблемы множественного наследования
- •Коллизия имен
- •Ip1.Prop1("интерфейс iProps: свойство 1");
- •Ip1.Prop2("интерфейс 1 ", 88);
- •Ip2.Prop1("интерфейс iPropsOne: свойство1");
- •2. Наследование от общего предка
- •Обработка исключительных ситуаций
- •Блок finally
- •Лабораторная работа 3 Тема: Разработка gui. Создание sdi-приложений. Обработка событий
- •Создание простых форм с помощью комплекса инструментальных средств разработки программ .Net sdk
- •Режимы дизайна и кода
- •Элементы управления
- •Общие свойства, события и методы элементов управления
- •Обработка событий в Windows Forms
- •События MouseDown и Keypress
- •Форматирование элементов управления
- •Создание меню
- •Закрытие формы
- •Диалоговые окна
- •Создание панели инструментов
- •Список элементов ListBox
- •Потоковые классы
- •Встроенные типы данных и потоки
- •Класс File
- •Сериализация объектов
- •Создание многооконного приложения
- •Для каждого пункта меню пишем обработчики событий, выполняющие соответсвтвующие пункту действия. Перечисление MdiLayout
- •Вырезание, копирование и вставка текстовых фрагментов
- •Контекстное меню
- •Диалоговые окна
- •Сохранение файла при закрытии формы
- •OpenFileDialog и SaveFileDialog для sdi-приложений
- •Лабораторная работа 5 Тема: Создание и вывод графический изображений на форму. Анимация.
- •Класс Region
- •Вывод графических объектов без события Paint
- •Возможности класса Graphics
- •Класс Pen
- •Вывод изображений
- •Элемент управления PictureBox
- •Вывод изображений и двойная буферизация
Строки в с# Класс Сhar
В C# есть символьный класс Char, основанный на классе System.Char и использующий двухбайтную кодировку Unicode представления символов. Для этого типа в языке определены символьные константы - символьные литералы. Константу можно задавать:
символом, заключенным в одинарные кавычки;
escape-последовательностью, задающей код символа;
Unicode-последовательностью, задающей Unicode-код символа.
public void TestChar(){
char ch1='A', ch2 ='\x5A', ch3='\u0058';
char ch = new Char();
int code; string s;
ch = ch1;
//преобразование символьного типа в тип int
code = ch; ch1=(char) (code +1);
//преобразование символьного типа в строку
s = ch1.ToString()+ch2.ToString()+ch3.ToString();
Console.WriteLine("s= {0}, ch= {1}, code = {2}", s, ch, code);
}
Тип char, как и все типы C#, является классом. Этот класс наследует свойства и методы класса Object и имеет большое число собственных методов.
Таблица 1.5 - Статические методы и свойства класса Char
Метод |
Описание |
GetNumericValue |
Возвращает численное значение символа, если он является цифрой, и (-1) в противном случае |
IsDigit |
Возвращает true, если символ является десятичной цифрой |
IsLetter |
Возвращает true, если символ является буквой |
IsLetterOrDigit |
Возвращает true, если символ является буквой или цифрой |
IsLower |
Возвращает true, если символ задан в нижнем регистре |
IsNumber |
Возвращает true, если символ является числом (десятичной или шестнадцатиричной цифрой) |
IsUpper |
Возвращает true, если символ задан в верхнем регистре |
ToLower |
Приводит символ к нижнему регистру |
ToUpper |
Приводит символ к верхнему регистру |
Класс Сhar[] - массив символов
В языке C# определен класс Char[], и его можно использовать для представления строк постоянной длины. Массив char[] - это обычный массив. Он не задает строку, заканчивающуюся нулем. Более того, его нельзя инициализировать строкой символов, как это разрешается в С++. Константа, задающая строку символов, принадлежит классу String, а в C# не определены взаимные преобразования между классами String и Char[], даже явные. У класса String есть динамический метод ToCharArray(), задающий подобное преобразование. Возможно также посимвольно передать содержимое переменной string в массив символов:
// Программа 4. Массивы символов Char[]
string CharArrayToString(char[] ar) {
string result="";
for(int i = 0; i< ar.Length; i++) result += ar[i];
return(result);
}
void PrintCharAr(string name,char[] ar) {
Console.WriteLine(name);
for(int i=0; i < ar.Length; i++)
Console.Write(ar[i]);
Console.WriteLine();
}
public void TestCharArAndString() {
//массивы символов
//char[] strM1 = "Hello, World!"; ошибка: нет преобразования класса string в класс char[]
string hello = "Здравствуй, Мир!";
char[] strM1 = hello.ToCharArray();
PrintCharAr("strM1",strM1);
char[] World = new char[3];
Array.Copy(strM1,12,World,0,3); //копирование подстроки
PrintCharAr("World",World);
Console.WriteLine(CharArrayToString(World));
}
Класс Char[], как и всякий класс-массив в C#, является наследником не только класса Object, но и класса Array, и, следовательно, обладает всеми методами родительских классов.