Выполнить задание на применение регулярных выражений. Выбрать одно по заданному номеру

 

1. Задан текст. Определить входит ли в него заданное слово и сколько раз.

2. Задан текст. Определить является ли он кодом HTML: содержит теги <html>, <form>, <h1>.

3. Задан текст. Определить является ли он текстом на английском языке.

4. Задан текст. После каждой буквы «о» вставить сочетание «Oк».

5. Задан текст. Определить является ли он текстом на русском языке.

6. Задан текст. Определить содержит ли он цифры.

7. Задан текст. Определить сколько предложений начинается со слова “Информатика”.

8. Задан текст. Выбрать из него все 7-значные номера телефонов.

9. Задан текст. Определить содержит ли он цифры.

10. Задан текст. Выбрать из него все e-mail адреса.

11. Задан текст, содержащий буквы и цифры. Найти произведение все чисел в тексте.

12. Задано предложение. Распечатать все слова в столбик.

13. Задан текст. Определить количество согласных букв в нем и распечатать их.

 

Лабораторная работа 2

Тема: Структуры и перечисления как частные виды классов.

Классы. Интерфейсы

Цель работы:

- Научиться создавать типы данных структуры и перечисление.

- Изучить методы работы со структурами и перечислениями в программе на С#.

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

 

Теоретические сведения

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

 

[атрибуты][модификаторы]enum имя_перечисления[: базовый класс]

{список_возможных_значений}

Особенности объявления перечислений:

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

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

· константы могут задаваться словами русского языка;

· разрешается задавать базовый класс перечисления.

· разрешается задавать не только базовый класс, но и указывать начальный элемент подмножества, на которое проецируется множество значений перечисления.

Часто бывает удобным создать набор значимых имен, которые будут представлять числовые значения. Представим себе, что вы создаете систему расчета заработной платы для сотрудников. Скорее всего, вам покажется более удобным вместо значений {0, 1, 2, 3} использовать понятные имена VP, Manager, Grunt и Contractor. Создание перечисле­ния для наших целей может выглядеть так:

Значения по умолчанию: еnиm ЕmрТуре { Manager, // = 0 Grunt, // = 1 Contractor, // = 2 VP // = 3 } При необходимости можно задать значения: enum EmpType { Manager = 102, Grunt, // = 103 Contractor, // = 104 VP // = 105 }

Для элементов перечисления вовсе не обязательно использовать строго после­довательные числовые значения.

class EnumClass {

public static void AskForBonus(EmpType e) {

switch(e) {

case EmpType.Contractor:

Console.WriteLine(“You are already get enough cash..."); break;

case EmpType.Grunt:

Console.WriteLine("You havve got to be kidding..."); break;

case EmpType.Manager:

Console.WriteLine(“How about stock options instead?"); break;

case'EmpType.VP:

Console.WriteLine(“VERY GOOD. Sir!"); break;

default: break;

} }

public static int Main(string[] args) {

EmpType fred;

fred = EmpType.Contractor;

AskForBonus(fred);

return 0;

}}

Структуры С# можно рассматривать как особую разновидность классов. С классами структуры роднит многое: для структур можно определять конструк­торы (только с параметрами), структуры могут реализовывать интер­фейсы. Синтаксис объявления структуры аналогичен синтаксису объявления класса:

[атрибуты][модификаторы]struct имя_структуры [:список_интерфейсов]

{тело_структуры}

 

// Программа 1. Использование перечислений и структур в программах на C#

enum EmpType: byte {

Manager = 10,

Grunt = 1,

Contractor = 100,

VP = 9

}

struct Employee {

public EmpType title; // Одно из полей структуры – перечисление

public string name;

public short deptID:

}

class StructTester {

public static int Main(string[] args) {

Employee fred;

fred.deptID = 40;

fred.name = "Fred";

fred.title = EmpType.Grunt;

return 0;

}}

 

Для структур можно определить конструкторы, но все созданные вами конструкторы должны принимать параметры:

struct Employee {

public EmpType title;

public string name;

public short deptID;

// Конструктор

public Employee (EmpType et, string n, short d) {

title = et;

name = n;

deptID = d;

}}

 

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

class StructTester {

public static int Main(string[] args) {

Employee maгу =new Employee (EmpType.VP, "Mary", 10);

return 0;

}}

 

Конечно же, структуры могут быть использованы в качестве принимаемых и возвращаемых методами параметров. Например, пусть в нашем классе StructTester будет предусмотрен метод DisplayEmpStats():

public void DisplayEmpStats (Employee e) {

Console.WriteLine(“Here is {0}\'s info:", e.name);

Console.WriteLine("Department ID: {0}", e.deptID);

Console.WriteLine(“Title: {0}", Enum.Format(typeof(EmpType), e.title, "G"));

}

 

Так можно выполнить программу с использованием DisplayEmpStats(). Выведем данные о Мэри и Фреде:

public static int Main(string[] args) {

StructTester t = new StructTester();

t.DisplayEmpStats(mary);

t.DisplayEmpStats(fred);

return 0;

}

 

Упаковка и распаковка — это наиболее удоб­ный способ преобразования структурного типа в ссылочный, и наоборот. Основное назначение структур — возможность получения некоторых преимуществ объектной ориентации, но при более высокой производительности за счет размещения в стеке. Чтобы преобразовать структуру в ссылку на объект, необходимо упако­вать ее экземпляр:

Employee stan = new Employee (EmpType.Grunt, "Stan", 10);

object stanlnBox = stan;

 

// можно распаковать и производить операции с содержимым

public void UnboxThisEmployee(object о) {

Employee temp = (Employee)o;

Console.WriteLine(temp.name + "is alive!");

}

 

Классы в C#

[атрибуты][модификаторы]class имя_класса [:список_родителей]

{тело_класса}

 

Возможными модификаторами в объявлении класса могут быть модификаторы new, abstract, sealed, которые связаны с наследованием, и четыре модификатора доступа, два из которых - private и protected - могут быть заданы только для вложенных классов. Обычно класс имеет атрибут доступа public, являющийся значением по умолчанию. Так что в простых случаях объявление класса выглядит так:

public class Employee {тело_класса}

 

В теле класса могут быть объявлены:

· константы;

· поля;

· конструкторыидеструкторы;

· методы;

· события;

· делегаты;

· вложенные классы (структуры, интерфейсы, перечисления).

 

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

 

Члены классов С# и бывают следующих видов:

- Поле. Так называется член-переменная, содержащий некоторое значение. В ООП поля иногда называют данными объекта. К полю можно применять несколько модификаторов в зависимости от того, как вы собираетесь его использовать. В число модификаторов входят static, readonly и const.

- Метод. Это реальный код, воздействующий на данные объекта (или поля).

- Свойства. Их иногда называют «разумными» полями (smart fields), поскольку они на самом деле являются методами, которые клиенты класса воспринимают как поля. Это обеспечивает клиентам большую степень абстрагирования за счет того, что им не нужно знать, обращаются ли они к полю напрямую или через вызов метода-аксессора.

- Константы. Как можно предположить, исходя из имени, константа — это поле, значение которого изменить нельзя.

- Индексаторы. Если свойства — это «разумные» поля, то индексаторы —это «разумные» массивы, так как они позволяют индексировать объекты методами-аксессорами get и set. С помощью индексатора легко проиндексировать объект для установки или получения значений.

- События. Событие вызывает исполнение некоторого фрагмента кода. События — неотъемлемая часть программирования для Microsoft Windows. Например, события возникают при движении мыши, щелчке или изменении размеров окна.

class Employee {

// Внутренние закрытые данные класса

private string fullName;

private int empID;

private float currPay;

// Конструкторы

public Employee() {}

public Employee(string fullName, int empID, float currPay) {

this. fullName = fullName;

this.empID = empID;

this. currPay = currPay;

}

// Метод для увеличения зарплаты сотрудника


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: