Разработка программы, динамически подсвечивающей ключевые слова из загружаемого пользователем словаря
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Введение
Задание на курсовую работу представляет собой программу, в которой нужно: реализовать структуры данных, необходимые для выполнения задания курсового проекта, а также реализация алгоритмов, например, поиска. Структура данных и алгоритмы выбираются самостоятельно, в зависимости от подхода к решению данной курсовой задачи.
Основанием для разработки программы является задание к курсовому проекту по предмету Структуры и алгоритмы компьютерной обработки данных. Получившаяся программа, должна быть максимальна, направлена на пользователя и обладать такими признаками, как легкость в использовании, удобный интерфейс, быстроту работы.
Требуется создать программу, динамически подсвечивающую ключевые слова из загружаемого пользователем словаря.
Выполним постановку задачи и приведем условия, которым должны удовлетворять входные данные, а также требования к необходимому результату: 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];
является эквивалентны