Обработка текстовых файлов в среде Lazarus

     Министерство  образования и науки Украины

     Восточноукраинский  национальный университет

       имени Владимира Даля

     Технологический институт

     м. Севередонецьк

     Кафедра компьютерной инженерии

       
 
 
 
 
 
 

     ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОЙ РАБОТЕ ПО ПРОГРАММИРОВАНИЮ 
 
 
 

на  тему: «Обработка текстовых файлов» 
 
 
 
 
 

     Выполнил  студентка группы КИ-29з   Лагода Т.Н..

     Проверил                                                Софонова С.А.. 
 
 

Северодонецк 2010

ЗАДАНИЕ 
 

РЕФЕРАТ

       Пояснительная записка к курсовой работе содержит 23 страницы,  8 рисунков и 3 приложения.

       Цель  работы: Обработка текстовых файлов в среде Lazarus. Исходным файлом для проверки является текст программы на языке Паскаль.

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

       Программа разработана с использованием среды визуального программирования Lazarus и языка Object Pascal. Результаты работы программы выводятся на экран. 
 

   ТЕКСТОВЫЙ ФАЙЛ, ИСХОДНЫЕ ДАННЫЕ, ИТОГОВЫЕ ДАННЫЕ, УСЛОВИЯ, СТРОКИ. 
 
 
 

СОДЕРЖАНИЕ

Введение 5

1. Постановка задачи 6

2. РАЗРАБОТКА АЛГОРИТМА 8

3. ОПИСАНИЕ СТРУКТУРЫ  ПРОГРАММЫ 9

4. ИНСТРУКЦИЯ ОПЕРАТОРУ 10

5. ОПИСАНИЕ ПОЛУЧКНЫХ  РЕЗУЛЬТАТОВ……………………………………..14

6. ВЫВОД………………………………………………………………………………..14

ПЕРЕЧЕНЬ  ССЫЛОК 15

ПРИЛОЖЕНИЕ  А 16

ПРИЛОЖЕНИЕ  Б 19

ПРИЛОЖЕНИЕ  В 24

ВВЕДЕНИЕ

       Cреда Lazarus включает в себя полный набор визуальных инструментов для скоростной разработки приложений, поддерживающей разработку пользовательского интерфейса и подключение к корпоративным базам данных. VCL - библиотека визуальных компонент, включает в себя стандартные объекты построения пользовательского интерфейса, объекты управления данными, графические объекты, объекты мультимедиа, диалоги и объекты управления файлами, управление DDE и OLE. Единственное, что можно поставить в вину Delphi, это то, что готовых компонент, поставляемых Borland, могло бы быть и больше. Однако, разработки других фирм, а также свободно распространяемые программистами freeware-компоненты уже восполнили этот недостаток [1].

       Инструментальные  средства Lazarus предоставляют разнообразные возможности для создания информационных приложений в различных типах архитектуру программного обеспечения. Интегрированная среда Lazarus позволяет быстро и просто создавать визуальные интерфейсы приложений и использовать возможности языков программирования для их построения.

       Lazarus использует структурный объектно-ориентированный язык (Object Pascal), который сочетает с одной стороны выразительную мощь и простоту программирования, характерную для языков 4GL, а с другой стороны эффективность языка 3GL. Программисты немедленно могут начать производить работающие приложения, и им не придется для этого изучать особенности программирования событий в Windows. Lazarus полностью поддерживает передовые программные концепции включая инкапсуляцию, наследование, полиморфизм и управление событиями.

       Lazarus обладает мощнейшим, встроенным в редактор графическим отладчиком, позволяющим находить и устранять ошибки в коде. Можно установить точки останова, проверить и изменить переменные, при помощи пошагового выполнения в точности понять поведение программы. Если же требуются возможности более тонкой отладки, можно использовать отдельно доступный Turbo Debugger, проверив ассемблерные инструкции и регистры процессора [2]. 

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

       Целью курсового проекта является разработка программы для Обработки текстовых файлов в среде Lazarus.

    Файлэто поименованная область памяти на диске или другом  внешнем запоминающем устройстве. 

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

       Текстовый файл рассматривается как последовательность символов, разбитая на строки.

       Срока – набор символов заключенных  в апострофы.

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

На форме  находиться 5 кнопок и компонент Group Box :

 «Открыть»  – открывает сохраненный исходный  файл, используем процедуру

TForm1.Button1Click(Sender: TObject); [39]

 «Сохранить» – сохранение текстового файла, используем процедуру TForm1.Button3Click(Sender: TObject);[ 108]

«Очистить»  – очистить содержание файла, используем процедуру TForm1.Button4Click(Sender: TObject);[35]

 «Выполнить»  – выполнение условия программы,  используем процедуру TForm1.Button5Click(Sender: TObject);[44]

«Выход» – закрытие формы, используем процедуру, TForm1.Button2Click(Sender: TObject);[31] 

 

Рисунок 1.1 - Форма программы и основные компоненты

2 РАЗРАБОТКА  АЛГОРИТМА

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

         

         

       

       

         
 

       Рисунок 2.1 - Схематическая диаграмма, отображающую основные этапы разрабатываемого алгоритма

       1. Создаем разделитель слов и  необходимые массивы – В   этом части устанавливается разделитель  слов – пробел, используя функцию  DelimitedText которая получает или устанавливает список через большую строку. Эта строка содержит список строк разделенных значением Delimiter (по умолчанию - запятая). [2,3]

       2. Проверяем расположены слова  по возрастанию. Если  слова  расположены по возрастанию, то мы продолжаем работать с программой, если же нет, то программа выдает сообщение об ошибке и заканчивает работу.[7]

       3. Выделяем строки с наибольшим  количеством слов– находим максимум  количества слов, после непосредственно  выделяем строки с наибольшим  количеством слов[14,17,19]

       4. Непосредственно выделяем строки с самым длинным словом – выделяем строки с самым длинным словом, находим максимум длины слова, непосредственно выделяем строки с самым длинным словом[13,14,20]

       5. Добавляем информацию о строках  - проверяем нечетность и нумеруем нечетные строки.[23]

3 ОПИСАНИЕ  СТРУКТУРЫ ПРОГРАММЫ

  1. TForm1.Button1Click(Sender: TObject) Процедура события нажатия кнопки. Эта процедура открывает уде готовый исходный файл..
  2. TForm1.Button2Click(Sender: TObject). Процедура события нажатия кнопки. Закрывает форму.
  3. TForm1.Button3Click(Sender: TObject). Процедура события нажатия кнопки. Выполняет операцию сохранений исходного или измененного файла
  4. TForm1.Button4Click(Sender: TObject) Процедура события нажатия кнопки. Очищает форму от текста.
  5. TForm1.Button5Click(Sender: TObject) Процедура события нажатия кнопки. Выполняет следующие функции: создаем разделитель слов и необходимые массивы, проверяем расположены ли слова по возрастанию, непосредственно проверяем на правильность возрастания, выделяем строки с наибольшим количеством слов, выделяем строки с самым длинным словом, находим максимум длины слова, непосредственно выделяем строки с самым длинным словом, добавляем информацию о строках.
 
 
 

4 ИНСТРУКЦИЯ  ОПЕРАТОРУ 

       4.1. При запуске программы на экране  появится окно показанное на  рисунке 4.1. 

 

Рисунок 4.1 – Окно программы 

       4.2. Для открытия файла необходимо нажать кнопку «Открыть». Появится диалоговое окно выбора файла. На рисунке 4.2 приведено окно выбора. Выбираем нужный файл и нажимаем кнопку «Открыть».

Рисунок 4.2 – Окно выбора

На рисунке 4.3 изображено окно программы с открытым файлом.

Рисунок 4.3 – Окно программы с открытым файлом

       4.4. Если файл не был предварительно сохранен, можно вводить текст сразу в форме.

       4.5. После его можно сохранить или непосредственно работать с введенным текстом нажав кнопку «Выполнить». В случае если слова были расположены по возрастанию программа выполниться, и будет иметь вид рисунок 4.4.

Рисунок 4.4 – Окно выполненной программы.

     4.6. Если условие выполнения возрастания слов не выполняется, программа выдаст сообщение об ошибке, рисунок 4.5.

Рисунок 4.5 –Сообщение о невыполнении условия  возрастания.

5 ОПИСАНИЕ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ

    Строки  проверены на возрастание.

    Определенно самое длинное слово, и  самая  длинная строка.

    Перед нечетными строками появилось номер  строки и количество слов во всех строках.

    Самое длинное слово, и  самая длинная  строка выделены звездочками. 

6 ВЫВОДЫ

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

    Так как Lazarus работает с языком Object Pascal, мною были проведены сравнения уже ранее знакомых действий в среде программирования FreePascal. Проанализированные новые возможности Lazarus.

ign="justify">    Результатом курсовой работы является созданная  программа, которая работает с текстовым  файлом.

ПЕРЕЧЕНЬ  ССЫЛОК 

    1. Галисеев  Г.В. Программирование в среде Delphi 7. Самоучитель
    2. Шупрута В.В. Delphi 2005. Учимся программировать, НТ ПРЕСС ООО МОСКВА, – 352 с.
    3. Самофалов К.Г. Прикладная теория цифровых автоматов, Киев, "Вища школа", 1987г.

Приложение А

Приложение  Б

Листинг основной программы 

  1. unit Unit1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, StdCtrls;
 
  1. Type
  2. TForm1 = class(TForm)
  3. GroupBox1: TGroupBox;
  4. Button1: TButton;
  5. Button2: TButton;
  6. Button3: TButton;
  7. Button4: TButton;
  8. txt_source: TMemo;
  9. dlg_open: TOpenDialog;
  10. Button5: TButton;
  11. dlg_save: TSaveDialog;
  12. procedure Button2Click(Sender: TObject);
  13. procedure Button4Click(Sender: TObject);
  14. procedure Button1Click(Sender: TObject);
  15. procedure Button5Click(Sender: TObject);
  16. procedure Button3Click(Sender: TObject);
  17. private
  18. { Private declarations }
  19. public
  20. { Public declarations }
  21. end;
 
  1. var
  2. Form1: TForm1;
  3. implementation
  4. {$R *.dfm}
 
  1. procedure TForm1.Button2Click(Sender: TObject);
  2. begin
  3. Form1.Close();
  4. end;
 
  1. procedure TForm1.Button4Click(Sender: TObject);
  2. begin
  3. txt_source.Clear();
  4. end;
 
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3. if (dlg_open.Execute) then
  4. txt_source.Lines.LoadFromFile(dlg_open.FileName);
  5. end;
 
  1. procedure TForm1.Button5Click(Sender: TObject);
  2. var
  3. x:integer;
  4. s:String; sl:TStringList; n,p:integer;
  5. f:boolean;
  6. words:TStringList;//Массив количества слов в строке
  7. words_len:TStringList;//Массив длины последних слов строк
  8. begin
  9. //Создаем разделитель слов и необходимые массивы
  10. sl:=TStringList.Create;
  11. words:=TStringList.Create;
  12. words_len:=TStringList.Create;
  13. sl.Delimiter:=' ';
  14. p:=0;
  15. f:=false;
  16. //Проверяем расположены ли слова по возврастанию
  17. for x:=0 to txt_source.Lines.Count-1 do
  18. begins:=txt_source.Lines[x];
  19. sl.DelimitedText:=s;
  20. p:=0;
  21. //Массив количества слов в строках
  22. words.Add(IntToStr(sl.Count));
  23. //Непосредственно проверка на правильность возрастания
  24. for n:=0 to sl.Count-1 do
  25. begin
  26. if length(sl.Strings[n])>=p then
  27. p:=length(sl.Strings[n])
  28. else
  29. begin
  30. f:=true;
  31. break;
  32. end;
  33. end;
  34. if f then break;

    //Массив длины  последнего слова в строках

  1. words_len.Add(IntToStr(Length(sl.Strings[sl.Count-1])));
  2. end;
 
  1. if f then
  2. begin
  3. messageBox(Form1.Handle,'Слова не расположены по возврастанию','',0);
  4. exit;
  5. end;

    //Выделяем строки  с наибольшим количеством слов

  1. n:=0;
  2. //Находим максимум количества слов
  3. for x:=0 to words.Count-1 do
  4. if StrToInt(words.Strings[x])>n then
  5. n:=StrToInt(words.Strings[x]);

    //Непосредственно  выделяем строки с наибольшим  количеством слов

  1. for x:=0 to words.Count-1 do
  2. if StrToInt(words.Strings[x])=n then

    begin

txt_source.Lines[x]:='*'+txt_source.Lines[x]+'*';

    end;

    //Выделяем строки  с самым длинным словом

  1. n:=0;
  2. //Находим максимум длины слова
  3. for x:=0 to words_len.Count-1 do
  4. if StrToInt(words_len.Strings[x])>n then n:=StrToInt(words_len.Strings[x]);

    //Непосредственно  выделяем строки с самым длинным  словом

  1. for x:=0 to words_len.Count-1 do
  2. if StrToInt(words_len.Strings[x])=n then
  3. begin
  4. txt_source.Lines[x]:='*'+txt_source.Lines[x]+'*';
  5. end;

    //Добавляем информацию  о строках

  1. for x:=0 to txt_source.Lines.Count-1 do
  2. begin

    //Проверяем нечетность

  1. if x mod 2<>0 then
  2. txt_source.Lines[x]:=IntToStr(x)+txt_source.Lines[x];
  3. txt_source.Lines[x]:=txt_source.Lines[x]+words.Strings[x];
  4. end;
  5. end;
 
  1. procedure TForm1.Button3Click(Sender: TObject);
  2. begin
  3. if (dlg_save.Execute) then
  4. txt_source.Lines.SaveToFile(dlg_save.FileName+'.txt');
  5. end;
  6. end.

 

Приложение  В

Результаты  выполнения программы

Исходный  файл

 

Результирующий  файл.

Обработка текстовых файлов в среде Lazarus