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

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Введение

 

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

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

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

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

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

Для подсвечивания ключевых слов необходимо решить следующие задачи:

1)чтение ключевых слов из файла словаря;

2)открытие, редактирование и сохранение файлов;

)поиск и выделение ключевых слов.

 

Теоретический материал

 

В программе используются дополнительные данные - такие как текст. Эти дополнительные данные неудобно хранить в исходном коде программы - они хранятся в отдельных файлах. Именно для получения доступа к этим данным и используются возможности ввода/вывода языка C++.

В C++ есть два способа получить доступ к файлам: потоки (streams) и доступ к файлам, унаследованный от C. В программе будут использоваться только потоки. Рассмотрим один из важных операторов - sizeof.

Оператор sizeof возвращает размер в байтах объекта или типа данных. Синтаксис его таков:

 

sizeof (type name);(object);object;

 

Результат имеет специальный тип size_t, который определен как typedef в заголовочном файле cstddef. Вот пример использования обеих форм оператора sizeof:

 

#include ia[] = {0, 1, 2};

// sizeof возвращает размер всего массива_t array_size = sizeof ia;

// sizeof возвращает размер типа int_t element_size = array_size / sizeof(int);

 

Применение sizeof к массиву дает количество байтов, занимаемых массивом, а не количество его элементов и не размер в байтах каждого из них. Так, например, в системах, где int хранится в 4 байтах, значением array_size будет 12. Применение sizeof к указателю дает размер самого указателя, а не объекта, на который он указывает:

 

int *pi = new int[3];_t pointer_size = sizeof (pi);

 

Здесь значением pointer_size будет память под указатель в байтах (4 в 32-битных системах), а не массива ia. Вот пример программы, использующей оператор sizeof:

 

#include

#include

#include main() {_t ia;= sizeof(ia); // правильно= sizeof ia; // правильно

// ia = sizeof int; // ошибка= sizeof(int); // правильно*pi = new int[12];<< "pi: " << sizeof(pi)

<< " *pi: " << sizeof(pi)

<< endl;

// sizeof строки не зависит от

// ее реальной длины

string stl("foobar");

string st2("a mighty oak");*ps = &stl;<< " st1: " << sizeof(st1)

<< " st2: " << sizeof(st2)

<< " ps: sizeof(ps)

<< " *ps: " << sizeof(*ps)

<< endl;<< "short :\t" << sizeof(short) << endl;<< "shorf" :\t" << sizeof(short*) << endl;<< "short& :\t" << sizeof(short&) << endl;<< "short[3] :\t" << sizeof(short[3]) << endl;

}

Результатом работы программы будет:: 4 *pi: 4

st1: 12 st2: 12 ps: 4 *ps:12: 2

short* : 4& : 2[3] : 6

 

Из данного примера видно, что применение sizeof к указателю позволяет узнать размер памяти, необходимой для хранения адреса. Если же аргументом sizeof является ссылка, мы получим размер связанного с ней объекта. Гарантируется, что в любой реализации С++ размер типа char равен 1.

 

// char_size == 1_t char_size = sizeof(char);

 

Значение оператора sizeof вычисляется во время компиляции и считается константой. Оно может быть использовано везде, где требуется константное значение, в том числе в качестве размера встроенного массива. Например:

// правильно: константное выражение

int array[sizeof(some_type_T)];

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

Список может быть сформирован строка за строкой, или загружен из большой строки разделенной запятой или даже из текстового файла. TStringList происходит от TStrings. Допускается использование и TStrings, но это не рекомендуется, так как он не полный - некоторые из его методов абстрактны. TStringList осуществляет эти абстрактные методы (Clear, Delete и Insert). Мы рассмотрим основные свойства и методы TStringList, включая полученные из TStrings.

Свойство Count возвращает число строк в списке. Свойство Capacity устанавливает или получает текущую вместимость строкового списка. Вы можете управлять этой вместимостью по необходимости.

Свойство Strings получает или корректирует строку по данному индексу в списке (первый элемент списка имеет индекс 0). Свойство Strings является свойством, заданным по умолчанию. Это означает, что вы можете использовать его без его указания:

:= names.Strings[4];

 

является эквивалентны