Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справка.doc
Скачиваний:
12
Добавлен:
07.02.2015
Размер:
367.1 Кб
Скачать

Работа с текстовыми файлами

Для работы с текстовыми файлами проще всего воспользоваться потоками классов StreamWriter и StreamReader. Эти потоки просты в использовании и удобны. Для работы с потоками в первую очередь необходимо подключить библиотеку System.IO; Using System.IO; Сначала разберемся с записью в файл, а затем с чтением из файла.

Запись в текстовый файл Для записи в файл нужно сначала создать файл и открыть поток для работы с ним StreamWriter sw = File.CreateText("test.txt"); Здесь мы создали поток sw, а при помощи метода File.CreateText("test.txt") создали файл «test.txt»(по умолчанию сохраняется в папку Debug сохраненного проекта). После того как открыли поток мы можем записывать в него текстовые строки используя методы Write и WriteLine sw.WriteLine("Мой первый файл созданый в C#"); Но если мы проверим после запуска программы файл, то увидим что он пуст. Это нормально. Данные не появятся в файле до тех пор пока мы не закроем поток sw. Делается это с помощью метода Close: sw.Close(); А вот теперь после запуска мы увидим что в файле появилась строка введенного текста.

Мы рассмотрели ситуайию когда файл не создан, а если нам понадобится в готовый файл дописать какойлибо текст. Для этого нам понадобится метод AppendText. Использовать его нужно вместо CreateText: StreamWriter sw = File.AppendText("test.txt"); sw.WriteLine("Добавили вторую строчку в файл"); sw.Close(); С записью думаю все понятно. Теперь разберемся с чтением из файла.

Чтение из текстового файла Для чтения в первую очередь нужно открыть поток класса StreamReader, привязав его к файлу. Делается это при помощи метода File.OpenText(‘имя файла’); StreamReader sr = File.OpenText("test.txt"); Если нам нужно считать только первую строку из файла, то все просто. Для этого воспользуемся следующей конструкцией sr.ReadLine(). Допустим нам нужно вывести первую строчку из файла на консоль. Делается следующим образом: System.Console.WriteLine(sr.ReadLine());

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

while (true){ string st = sr.ReadLine(); if (st==null) break; System.Console.WriteLine(st); }

В этом примере мы считали файл построчно и вывели его на консоль. Как и при записи в файл, так и при чтении из него не стоит забывать о закрытии потока методом Close. Sr.Close();

Пример (создадим файл запишем в него 2 строчки текста и после этого выведем их на консоль)

StreamWriter sw = File.CreateText("test.txt"); sw.WriteLine("Первая строка"); sw.WriteLine("Вторая строка"); sw.Close(); StreamReader sr = File.OpenText("test.txt"); while (true) { string st = sr.ReadLine(); if (st==null) break; System.Console.WriteLine(st); } sw.Close(); System.Console.ReadLine();  

Работа с текстовыми строками

Применение класса System.String

Методы и свойства класса System.String позволяют выполнять над строками все самые необходимые операции, такие, например, как сравнение, поиск подстроки, объединение строк, копирование символов из строки и т.д.

 

Создание строк

Переменная строкового типа создается аналогично переменным числового типа. Для работы со строками используется тип String.

Пример:

Stringt; //t – переменная строкового типа

 

Конкатенация строк

Иногда перед нами возникает задача конкатенации (объединения строк). Для этого можно использовать либо оператор +, или метод String.concat.

Пример:

String s1=”Hello, ”; String s2=”World”; String res1=s1+s2;

В результате res1 будет содержать строку “Hello, world”.

Ту же задачу решим другим способом

String res2=String.Concat(s1, s2);

Результат будет тот же.

 

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

Для создания новой строки из фрагмента уже существующей используется метод Substring.

Общий вид

String s1=s.substring(i,j);

Здесь s1 – получаемая строка, s – исходная строка, i - номер символа с которого начинаем копировать, j – количество копируемых символов.

Стоит помнить что нумерация символов в строке начинается с нуля.

 

Пример:

string s="Informatika";

string s1 =s.Substring(2,5);

System.Console.WriteLine(s1);

System.Console.ReadLine();

В результате получится слово forma.

Если количество копируемых символов не указано то копируется вся строка начиная с исходной позиции

Пример:

string s="Informatika";

string s1 =s.Substring(2);

System.Console.WriteLine(s1);

System.Console.ReadLine();

В результате получим слово formatika.

 

Вставка подстроки

Для вставки подстроки в строку используется метод Insert. Выглядит следующим образом

String s1=s.insert(i, s2);

Где s1 – получаемая строка, s – исходная строка, i – позиция в которую нужно вставить, s2 – вставляемая подстрока.

 

Пример:

string s="Hello, ";

string s1 =s.Insert(7, "World");

System.Console.WriteLine(s1);

System.Console.ReadLine();

В результате получим фразу Hello, World.

 

Замена символовДля замены символа в строке используется методReplace. В качестве первого параметра он содержит заменяемый символ, а в качестве второго параметра символ или группа символов на которую нужно заменить.

Прмер:

string s="kot";

string s1 =s.Replace("o", "i");

System.Console.WriteLine(s1);

System.Console.ReadLine();

В результате получим слово kit.

 

Удаление символов из строки

Для удаления символов из строки используется метод Remove.

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

Пример:

String s="Molotok";

string s1 =s.Remove(5, 2);

System.Console.WriteLine(s1);

System.Console.ReadLine();

В результате получим слово Molot.

Аналогично копированию, второй параметр можно упускать.

Метод Trimпозволяет удалять из строки, не значащие пробелы МетодToUpperприводит символы строки к верхнему регистру МетодToLowerприводит символы строки к нижнему регистру МетодPadLeftвыравнивает текст по левому краю поля МетодPadRightвыравнивает текст по правому краю поля. МетодLengthполучает длину строки

Для вывода символа строки соответствующего заданному номеру используют следующую запись s[i], где s – строка, а i – номер символа, который нужно вывести.

Пример решения задачи:

Дана строка состоящая из цифр, посчитать их сумму

string s1, s="45";

int l=0, j=0, i = s.Length;

for (j = 0; j < i; j++ )

{

s1 = s.Substring(j, 1);

l=l+System.Convert.ToInt16(s1);

}

System.Console.WriteLine(l);

System.Console.ReadLine();

Графика на c#, масштабируемые изображения

Платформа .NET обеспечивает целый набор пространства имен для поддержки визуализации двумерной графики. Для рисования используется пространство имен Drawing для рисованияп простейшие рисунки. Для рисования используется карандаш Pen

Pens.Blue;//карандаш синего цвета

Для заливки используем кисть Brush

Brushes.Blue;//кисть синего цвета.

Непосредственно для рисования используются следующие объекты:

Линия: DrawLine();.// Для рисования необходимы 5 параметров: 1.цвет линии, используем семейство Pens. 2.Координаты верхнего левого угла 3.Координаты нижнего правого угла Например: DrawLine(Pens.Black, 100, 100, 500, 500);

Прямоугольник: (не забываем что сначала заливка а потом обаодка) FillRectangle();Для рисования необходимы 5 параметров: 1.цвет заливки, используем семейство Brushes. 2.Координаты верхнего левого угла 3.Ширина и высота Например: FillRectangle(Brushes.Beige, 100, 100, 500, 500);//залили прямоугольную область DrawRectangle(Pens.Red, 100, 100, 500, 500);// выполнили обводку

Эллипс: FillEllipse();Для рисования необходимы 5 параметров: 1.цвет заливки, используем семейство Brushes. 2.Координаты верхнего левого угла 3.Ширина и высотаНапример: FillEllipse(Brushes.Beige, 100, 100, 500, 500);//залили прямоугольную область DrawEllipse(Pens.Red, 100, 100, 500, 500);// выполнили обводку

Сектор эллипса: FillPie();Для рисования необходимы 7 параметров: 1.Цвет заливки, используем семейство Brushes. 2.Координаты верхнего левого угла 3.Ширина и высота4.Угол начала сектора 5.Угол конца сектора Например: FillPie(Brushes.Beige, 100, 100, 500, 500, 0, 90);//залили прямоугольную область DrawPie(Pens.Red, 100, 100, 500, 500, 0, 90);// выполнили обводкуМногоугольник:

Многоугольник, строится по массиву точек, поэтому сначала нужно создать массив Point [] tt={new Point(20, 10), new Point(10, 40),new Point(45,100),new Point(50б 80)}; А после нарисовать многоугольник g.DrawPolygon(Pens.Green,tt); И при необходимости его заливаем g.FillPolygon(Pens.Green,tt);

Масштабируемое изображение

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

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

Необходимо решить, сколько будет по вертикали и по горизонтали. Допустим форма представляет поле 10х10, тогда запишем const int x = 10, y=10; Далее выбираем 2 переменные типа int для хранения координат x и y Int dx, dy;//переменные глобальные)))) Теперь нужно пересчитать наши dx и dy. dx = (this.ClientSize.Width)/x; dy = (this.ClientSize.Height)/y; Делать это придется в 2 случаях: 1.При загрузке формы в событие Load 2.Во время изменения размера формы в событии Resize Отображение рисунка на форме происходит в событии Paint. Это событие срабатывает автоматически при вызове события Load, а вот при изменении размеров его нужно вызвать вручную при помощи команды Refresh(); Далее в событии Paint рисуем обычными методами, но уже используя новые единицы измерения. Например: нам нужно нарисовать прямую из точки (2,2) в точку (5,5) Graphics g =e.Graphics;//инициализация графики g.DrawLine(Pens.Black, 2 * dx, 2 * dy, 5 * dx, 5 * dy);//рисование прямой