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

Программная реализация синтаксического анализатора произвольного текста. Матрица и дерево переходов для программы. Код программы с построчным комментарием. Порядок запуска среды разработки Visual Studio. Интерфейс и номера Лихтенштейна, скриншот.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 13.02.2014
Размер файла 855,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. ПОСТАНОВКА ЗАДАЧИ

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

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

АА 000 00А

где «А» - произвольный символ,

«0» - произвольная цифра,

«-» - знак дефиса,

«@»- произвольный символ (кроме букв, цифр, пробелов и знаков препинания).

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

а) АА 0A0 00А,

б) АА 000 A0А,

в) А0 000 00А,

г) 0А 000 00А,

д) АА A00 00А.

2. КОНЕЧНЫЙ АВТОМАТ

Заданная программа реализуется в виде конечного автомата.

Далее рассматривается матрица и дерево переходов для разработанной программы.

Рис. 1

Формализованное описание интегрированного конечного автомата можно представить следующим образом:

КА=(Q = {A1…A10,B0…B9,C0…C8,…,J0…J1,K0},V ={буква, не буква, пробел, не пробел, цифра, не цифра,}A0, д, Z1, Z2={правильная конструкция, неправильная конструкция}

Функция переходов д:

буква

не буква

цифра

не цифра

пробел

не пробел

правильная конструкция

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

A0

B0

A1

B0

C0

B1

C0

D0

C1

D0

E0

D1

E0

F0

E1

F0

G0

F1

G0

H0

G1

H0

I0

I0

J0

I1

J0

K0

J1

K0

Z1

A1

A2

A2

A3

A3

A4

A4

A5

A5

A6

A6

A7

A7

A8

A8

A9

A9

A10

A10

Z2

B1

B2

B2

B3

B3

B4

B4

B5

B6

B6

B7

B7

B8

B8

B9

B9

Z2

C1

C2

C2

C3

C3

C4

C4

C5

C5

C6

C6

C7

C7

C8

C8

Z2

D1

D2

D2

D3

D3

D4

D4

D5

D5

D6

D6

D7

D7

Z2

E1

E2

E2

E3

E3

E4

E4

E5

E5

E6

E6

Z2

F1

F2

F2

F3

F3

F4

F4

F5

F5

Z2

G1

G2

G2

G3

G3

G4

G4

Z2

H1

H2

H2

H3

H3

Z2

I1

I2

I2

Z2

J1

Z2

Состояние

Действие

A0

Исходное состояние

B0

Определение первого символа (буква)

(C0, A2)

Определение второго символа (буква)

(D0, B2, A3)

Определение третьего символа (пробел)

(E0, C2, B3, A4)

Определение четвертого символа (цифра)

(F0, D2, C3, B4, A5)

Определение пятого символа (цифра)

(G0, E2, D3, C4, B5, A6)

Определение шестого символа (цифра)

(H0, F2, E3, D4, C5, B6, A7)

Определение седьмого символа (пробел)

(I0, G2, F3, E4, D5, C6, B7, A8)

Определение восьмого символа (цифра)

(J0, H2, G3, F4, E5, D6, C7, B8, A9)

Определение девятого символа (цифра)

(K0, I2, H3, G4, F5, E6, D7, C8, B9, A10)

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

(A1, B1, J1)

Определение одиннадцатого символа (не буква)

(D1, E1, F1, H1, I1)

Определение двенадцатого символа (не цифра)

(C1, G1)

Определение тринадцатого символа (не пробел)

(Z1, Z2)

Завершение работы конечного автомата

3. АЛГОРИТМ РАЗРАБОТАННОЙ ПРОГРАММЫ

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

Рис. 2

Рассмотрим словесный алгоритм разработанной программы:

Шаг 1: Начало программы.

Шаг 2: Чтение файла.

Шаг 3: Запись текста в строку.

Шаг 4: Разделение строки на массив слов.

Шаг 5: Перебор и запоминание слов с определенным индексом.

Шаг 6: Проверка слов соответствию маске.

Шаг 7: Разделение слов на отдельные элементы.

Шаг 8: Перебор элементов слова.

Шаг 9: Выбор правила по выбранному элементу.

Шаг 10: Проверка первого символа.

Шаг 11-19: Проверка остальных символов аналогично первому.

Шаг 20: В случае выполнения правил, вывод конструкций на экран.

Шаг 21: Определение слов на ошибки.

Шаг 22: Вывод ошибочных конструкций на экран.

Шаг 23: Конец программы

4. КОД ПРОГРАММЫ

Ниже приводится код разработанной программы с построчным комментарием.

public partial class Form1 : Form

{

string filename;

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

Regex rege = new Regex(@"^[a-zA-Z][a-zA-Z]( )[0-9][0-9][0-9]( )[0-9][0-9][a-zA-Z]$"); // маска

if (filename == null)

{

MessageBox.Show("Файл не выбран!\n Выберите файл!");

}

else

{

Regex reg;

int def = 0;

string TempWord;

string[] TempWord1;

string text1 = "";

String line;

StringBuilder str = new StringBuilder(); // изменяемая стока

StringBuilder str1 = new StringBuilder();

using (StreamReader sr = new StreamReader(filename))

{

line = sr.ReadToEnd();

TempWord = line;

TempWord1 = TempWord.Split(new char[] { '.', ',', '\r', '\n' });

}

for (int i = 0; i < TempWord1.Length; i++) // идем по массиву

{

text1 = TempWord1[i];

foreach (Match match in rege.Matches(text1))

{

str1.AppendLine(match.Value);

textBox1.Text = str1.ToString();

}

char[] b = text1.ToCharArray();

for (int j = 0; j < b.Length; j++)

{

char Temp;

Temp = b[j];

int a = 0;

switch (j)

{

case 0:

reg = new Regex(@"^[a-zA-Z]$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

case 1:

reg = new Regex(@"^[a-zA-Z]$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

case 2:

reg = new Regex(@"^( )$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

case 3:

reg = new Regex(@"^[0-9]$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

case 4:

reg = new Regex(@"^[0-9]$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

case 5:

reg = new Regex(@"^[0-9]$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

case 6:

reg = new Regex(@"^( )$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

case 7:

reg = new Regex(@"^[0-9]$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

case 8:

reg = new Regex(@"^[0-9]$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

case 9:

reg = new Regex(@"^[a-zA-Z]$");

foreach (Match match in reg.Matches(Convert.ToString(b[j])))

{

a++;

}

if (a == 0)

{

def++;

}

break;

default: MessageBox.Show("Нет вхождений");

break;

}

}

if (def > 1)

{

str.AppendLine(text1);

textBox3.Text = str.ToString();

}

else if (def == 1)

{

str.AppendLine(text1);

textBox2.Text = str.ToString();

}

str = new StringBuilder();

def = 0;

}

}

}

private void button2_Click(object sender, EventArgs e)

{

OpenFileDialog openFileDialog1 = new OpenFileDialog() { Filter = "Текстовые файлы(*.doc)|*.doc" };

if (openFileDialog1.ShowDialog() == DialogResult.OK)

filename = openFileDialog1.FileName;

}

программа анализатор код интерфейс

5. ПРИМЕР РАБОТЫ РАЗРАБОТАННОЙ ПРОГРАММЫ

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

Представить пару вариантов тестирования программы для разных входных данных.

А) Чтобы запустить программу, необходимо запустить среду разработки Visual Studio и открыть файл программы. После чего скомпилировать программу (комбинация клавиш (ctrl + F5)).

Рис. 3 - Интерфейс запущенной программы

Б) Чтобы программа давала результат нужно загрузить документ, в котором находятся номера Лихтенштейна и номера, содержащие одну ошибку.

Рис. 4 - Пример работы программы

СПИСОК ЛИТЕРАТУРЫ

1. Тенишев Д.Ш. Лингвистическое и программное обеспечение автоматизированных систем [Текст] / Д.Ш. Тенишев. - СПб.: ЦОП «Профессия», 2010. - 48 с.

2. Заболеева-Зотова А.В., Камаев В.А. Лингвистическое обеспечение автоматизированных систем [Текст] / А.В. Заболеева-Зотова, В.А. Камаев. - М.: Высш. шк., 2008. - 244 с.

3. Мозговой М.В. Классика программирования: языки, автоматы, компиляторы. Практический подход [Текст] / М.В. Мозговой. - СПб.: «Наука и техника», 2006. - 320 с.

4. Ахо А., Сети Р., Ульман Д. Компиляторы: принципы, технолигии, инструменты [Текст]: пер. с англ. / А. Ахо, Р. Сети, Д. Ульман. - М.: Изд. дом «Вильямс», 2003. - 768 с.

Размещено на Allbest.ru


Подобные документы

  • Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.

    курсовая работа [585,5 K], добавлен 24.03.2009

  • Разработка технического задания на проектирование, определение требований к программе. Предварительный выбор метода решения синтаксического анализатора, проектирование программного приложения, конфигурация технических средств программы и её тестирование.

    курсовая работа [28,5 K], добавлен 28.06.2011

  • Характеристика интегральной среды разработки Microsoft Visual Studio NET, ее особенности. Анализ программ "Сетевой чат", программа-клиент. Основные функции программы-сервера, порядок ее запуска. Влияние персонального компьютера на организм человека.

    дипломная работа [1,1 M], добавлен 11.07.2012

  • Описание структуры бинарного дерева поиска на языке C# среды Visual Studio. Требования к интерфейсу пользователя, структуре данных и программным средствам. Компоненты программных средств, результаты тестирования, диаграммы вариантов использования классов.

    курсовая работа [968,2 K], добавлен 26.01.2013

  • Синтаксически ориентированная трансляция: общие понятия; транслятор, интерпретатор, препроцессор. Программная реализация трансляции, основанной на структуре текста; идея Н. Хомского; языковые процессоры. Заголовочные файлы, алгоритмы и функции программы.

    курсовая работа [734,3 K], добавлен 04.06.2013

  • Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

    методичка [2,1 M], добавлен 11.09.2014

  • Изучение принципов построения линейных алгоритмов и простых расчетных программ на языке программирования C. Разработка программы расчета математических выражений на основе вводимых данных. Создание консольных приложений в среде Microsoft Visual Studio.

    лабораторная работа [254,4 K], добавлен 23.11.2014

  • Технология разработки и тестирования программного обеспечения в среде Visual Studio на примере создания программы моделирования систем массового обслуживания. Аналитические и имитационные методы моделирования с разными дисциплинами обслуживания заявок.

    дипломная работа [1,1 M], добавлен 09.09.2012

  • Методология и технология разработки программного продукта. Решение задачи поиска кратчайших путей между всеми парами пунктов назначения, используя алгоритм Флойда. Разработка интерфейса программы, с использованием среды Delphi Borland Developer Studio.

    курсовая работа [2,0 M], добавлен 26.07.2014

  • Создание программы, реализующей игру "Линии". Среда разработки программы, описание ее общего вида. Основные алгоритмы программы. Реализация программы в среде разработки Microsoft Visual Studio 2008 на языке объектно-ориентированного программирования С++.

    курсовая работа [639,0 K], добавлен 16.03.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.