Системное программирование. Лекция №5

Содержание

Слайд 2

Работа со строками Извлечение подстроки

Работа со строками

Извлечение подстроки

Слайд 3

Работа со строками Разбиение строки на подстроки по разделителям Удаление пустых слов

Работа со строками

Разбиение строки на подстроки по разделителям

Удаление пустых слов

Слайд 4

Работа со строками Замена одной строки на другую строку Удаление пустых символов

Работа со строками

Замена одной строки на другую строку

Удаление пустых символов

Слайд 5

Работа со строками Удаление ненужных символов с конца и начала строки по списку

Работа со строками

Удаление ненужных символов с конца и начала строки по

списку
Слайд 6

Работа со строками StringBuilder Не делайте в цикле объединение строк с

Работа со строками StringBuilder

Не делайте в цикле объединение строк с помощью

класса String

Может выполняться около 1-2 сек

Слайд 7

Работа со строками StringBuilder Правильный вариант для объединения строк

Работа со строками StringBuilder

Правильный вариант для объединения строк

Слайд 8

Работа со строками StringBuilder Вывод в обратном порядке строки

Работа со строками StringBuilder

Вывод в обратном порядке строки

Слайд 9

Пространства имён Пространство имен (пакет) в ООП мы называем контейнером для

Пространства имён

Пространство имен (пакет) в ООП мы называем контейнером для группы

классов, которые объединены общей функцией или используются в общем контексте. Пространства имен способствуют лучшей логической организации исходного кода, создавая семантическое разделение классов по категориям и облегчая их использование в исходном коде. Теперь мы рассмотрим пространства имен в C # и увидим, как мы можем их использовать.
Слайд 10

Пространства имён

Пространства имён

Слайд 11

Пространства имён

Пространства имён

Слайд 12

Исключения Исключение - это уведомление о том, что что-то прерывает нормальное

Исключения

Исключение - это уведомление о том, что что-то прерывает нормальное выполнение

программы. Исключения обеспечивают парадигму программирования для обнаружения неожиданных событий и реагирования на них. Когда возникает исключение, состояние программы сохраняется, нормальный поток прерывается, и управление передается обработчику исключения (если таковой существует в текущем контексте). Исключения возникают или генерируются программным кодом, который должен послать сигнал исполняющейся программе об ошибке или необычной ситуации.
Перехват и обработка исключений Обработка исключений - это механизм, который позволяет генерировать и перехватывать исключения. Этот механизм предоставляется внутри CLR (Common Language Runtime). Части инфраструктуры обработки исключений - это языковые конструкции C # для генерации и перехвата исключений.
В объектно-ориентированном программировании (ООП) исключения являются мощным механизмом для централизованной обработки ошибок и исключительных ситуаций. Этот механизм заменяет процедурно-ориентированный метод обработки ошибок, в котором каждая функция возвращает код, указывающий на ошибку или успешное выполнение. Обычно в ООП код, выполняющий какую-либо операцию, вызывает исключение, если есть проблема и операция не может быть успешно завершена.
Слайд 13

Исключения ООП исключения - это классы, и их можно наследовать для

Исключения

ООП исключения - это классы, и их можно наследовать для построения

иерархий. Когда исключение обрабатывается (перехватывается), механизм обработки может перехватить целый класс исключений, а не только конкретную ошибку (как в традиционном процедурном программировании)
Иногда исключения используются не столько для того, чтобы сигнализировать о проблеме, сколько для обработки некоторого ожидаемого события. Это не считается хорошей практикой, поскольку исключения не должны контролировать нормальный ход программы.
В ООП рекомендуется использовать исключения для управления ошибочными ситуациями или неожиданными событиями, которые могут возникнуть во время выполнения программы.
Выявление исключений в C # После того, как метод выдает исключение, CLR ищет обработчик исключения, который может обработать ошибку.
Слайд 14

Исключения

Исключения

Слайд 15

Исключения try { // Some code that may throw an exception

Исключения

try
{
// Some code that may throw an exception
}
catch (ExceptionType objectName)
{
// Code

handling an Exception
}
catch (ExceptionType objectName)
{
// Code handling an Exception
}
finally
{
// This code will always execute
}

Выбрасывание исключений (конструкция throw) Исключения в C # генерируются с помощью ключевого слова throw. Нам нужно предоставить экземпляр исключения, содержащий всю необходимую информацию об ошибке.
static void Main()
{
Exception e = new Exception("There was a problem");
throw e;
}

Слайд 16

Исключения Исключения в .NET бывают двух типов - системные и прикладные.

Исключения

Исключения в .NET бывают двух типов - системные и прикладные. Системные

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

Потоки Поток - это упорядоченная последовательность байтов, которая отправляется из одного

Потоки

Поток - это упорядоченная последовательность байтов, которая отправляется из одного приложения

или устройства ввода в другое приложение или устройство вывода. Эти байты записываются и читаются один за другим и всегда прибывают в том же порядке, в котором они были отправлены. Потоки - это абстракция канала передачи данных, который соединяет два устройства или приложения. Потоки - это основное средство обмена информацией в компьютерном мире. Благодаря потокам различные приложения могут получать доступ к файлам на компьютере и могут устанавливать сетевое взаимодействие между удаленными компьютерами. В мире компьютеров многие операции можно интерпретировать как чтение и запись в поток. Например, печать - это процесс отправки последовательности байтов в поток, связанный с соответствующим портом, к которому подключен принтер.
Каждый раз, когда вы читаете или записываете из или в файл, вам нужно открыть поток в соответствующий файл, выполнить чтение или запись
Слайд 18

Потоки Основные операции с потоками. С потоками можно выполнять следующие операции:

Потоки

Основные операции с потоками.
С потоками можно выполнять следующие операции: создание /

открытие, чтение данных, запись данных, поиск / позиционирование, закрытие /
Creation
To create or open a stream
Reading
Reading means extracting data from the stream.
Writing
Writing means sending data to the stream in a specific way.
Positioning
Positioning or seeking in the stream
Closing
To close or disconnect a stream
Слайд 19

Потоки Binary and Text Streams FileStream, BinaryReader и BinaryWriter. Text Streams

Потоки

Binary and Text Streams
FileStream, BinaryReader и BinaryWriter.
Text Streams
Text streams

are very similar to binary, but only work with text data or rather a sequence of characters (char) and strings (string).
ReadLine() – reads one line of text and returns a string.
- ReadToEnd() – reads the entire stream to its end and returns a string.
- Write() – writes a string to the stream.
- WriteLine() – writes one line of text into the stream.
// Create a StreamReader connected to a file
StreamReader reader = new StreamReader("test.txt");
// Read the file here …
// Close the reader resource after you've finished using it
reader.Close();
Слайд 20

Чтение текстового файла построчно Reading a Text File Line by Line

Чтение текстового файла построчно

Reading a Text File Line by Line –

Example
class FileReader
{
static void Main()
{
// Create an instance of StreamReader to read from a file
StreamReader reader = new StreamReader("Sample.txt");
int lineNumber = 0;
// Read first line from the text file
string line = reader.ReadLine();
// Read the other lines from the text file
while (line != null)
{
lineNumber++;
Console.WriteLine("Line {0}: {1}", lineNumber, line);
line = reader.ReadLine();
}
// Close the resource after you've finished using it
reader.Close();
}
}
Слайд 21

Чтение текстового файла построчно Автоматическое закрытие потока после работы с ним

Чтение текстового файла построчно

Автоматическое закрытие потока после работы с ним Как

отмечалось в предыдущем примере, закончив работу с объектом типа StreamReader, мы вызвали Close () и закрыли поток за объектом StreamReader. Однако очень часто начинающие программисты забывают вызвать метод Close (), тем самым блокируя используемый файл.
Конструкция C # using (…) гарантирует, что после выхода из тела автоматически будет вызван метод Close (). Это произойдет, даже если при чтении файла возникнет исключение.
Слайд 22

Чтение текстового файла построчно class FileReader { static void Main() {

Чтение текстового файла построчно

class FileReader
{
static void Main()
{
//

Create an instance of StreamReader to read from a file
StreamReader reader = new StreamReader("Sample.txt");
using (reader)
{
int lineNumber = 0;
// Read first line from the text file
string line = reader.ReadLine();
// Read the other lines from the text file
while (line != null)
{
lineNumber++;
Console.WriteLine("Line {0}: {1}", lineNumber, line);
line = reader.ReadLine();
}
}
}
}
Слайд 23

Чтение текстового файла построчно class FileReader { static void Main() {

Чтение текстового файла построчно

class FileReader
{
static void Main()
{
//

Create an instance of StreamReader to read from a file
StreamReader reader = new StreamReader("Sample.txt");
using (reader)
{
int lineNumber = 0;
// Read first line from the text file
string line = reader.ReadLine();
// Read the other lines from the text file
while (line != null)
{
lineNumber++;
Console.WriteLine("Line {0}: {1}", lineNumber, line);
line = reader.ReadLine();
}
}
}
}
Слайд 24

Чтение текстового файла построчно Reading a Cyrillic Content You probably already

Чтение текстового файла построчно

Reading a Cyrillic Content
You probably already guessed

that if we want to read from a file that contains characters from the Cyrillic alphabet, we must use the correct encoding that "understands" correctly these special characters. Typically, in a Windows environment, text files, containing Cyrillic text, are stored in Windows-1251 encoding. To use it, we should set it as the encoding of the stream, which our StreamReader will process: Encoding win1251 = Encoding.GetEncoding("Windows-1251");
StreamReader reader = new StreamReader("test.txt", win1251);
Стандарт Юникода. Чтение в Юникоде
Unicode - это отраслевой стандарт, который позволяет компьютерам и другим электронным устройствам всегда представлять и манипулировать текстом, который был написан в большинстве мировых литературных источников. Он состоит из более чем 100 000 символов, а также различных схем кодирования (кодировок). Объединение различных символов, которые предлагает Unicode, приводит к его большему распространению. Как вы знаете, символы в C # (типы char и string) также представлены в Unicode.
Чтобы читать символы, хранящиеся в Unicode, мы должны использовать одну из поддерживаемых схем кодирования для этого стандарта. Самым популярным и широко используемым является UTF-8. Мы можем установить его как схему кода уже знакомым способом
Слайд 25

Запись текстового файла построчно Writing to a Text File Text files

Запись текстового файла построчно

Writing to a Text File
Text files are

very convenient for storing various types of information. For example, we can record the results of a program. We can use text files to make something like a journal (log) for the program – a convenient way to monitor it at runtime.
Again, as with reading a text file, we will use a similar to the Console class when writing, called StreamWriter.
Слайд 26

Упражнения

Упражнения

Слайд 27

Считывание с исключением class HandlingExceptions { static void Main() { string

Считывание с исключением

class HandlingExceptions
{
static void Main()
{
string

fileName = @"somedir\somefile.txt";
try
{
StreamReader reader = new StreamReader(fileName);
Console.WriteLine(
"File {0} successfully opened.", fileName);
Console.WriteLine("File contents:");
using (reader)
{
Console.WriteLine(reader.ReadToEnd());
}
}

catch (FileNotFoundException)
{
Console.Error.WriteLine(
"Can not find file {0}.", fileName);
}
catch (DirectoryNotFoundException)
{
Console.Error.WriteLine(
"Invalid directory in the file path.");
}
catch (IOException)
{
Console.Error.WriteLine(
"Can not open the file {0}", fileName);
}
}

Слайд 28

Подсчёт слов

Подсчёт слов

Слайд 29

Подсчёт слов

Подсчёт слов

Слайд 30

Безопасное считывание файла

Безопасное считывание файла