ABSOLUTE
|
EXPORTS
|
LIBRARY
|
SET
|
ASSEMBLER
|
EXTERNAL
|
MOD
|
SHL
|
AND
|
FAR
|
SHR
|
ARRAY
|
FILE
|
NIL
|
STRING
|
ASM
|
FOR
|
NEAR
|
THEN
|
ASSEMBLER
|
FORWARD
|
NOT
|
TO
|
BEGIN
|
FUNCTION
|
OBJECT
|
TYPE
|
CASE
|
GOTO
|
OF
|
UNIT
|
CONST
|
IF
|
OR
|
UNTIL
|
CONSTRUCTOR
|
IMPLEMENTATION
|
PACKED
|
USES
|
DESTRUCTOR
|
IN
|
PRIVATE
|
VAR
|
DIV
|
INDEX
|
PROCEDURE
|
VIRTUAL
|
DO
|
INHERITED
|
PROGRAM
|
WHILE
|
DOWNTO
|
INLINE
|
PUBLIC
|
WITH
|
ELSE
|
INTERFACE
|
RECORD
|
XOR
|
END
|
INTERRUPT
|
REPEAT
|
|
EXPORT
|
LABEL
|
RESIDENT
|
|
Структура проекта
Файл проекта представляет собой
программу, написанную на языке Object Pascal и предназначенную для обработки
компилятором. Программа Delphi-это несколько связанных между собой файлов.
Главный файл проекта, изначально
называется PROJECT1.DPR. Если необходимо переименовать название проекта, нужно
перезаписать этот файл, выбрав в меню File команду Save Project As: При задании
имени следует придерживаться правил задания имен в Object Pascal. Имя не должно
содержать пробелов (используйте в таком случае знак подчеркивания), должно
начинаться с буквы (цифры допустимы, но со второй позиции), не должно содержать
других символов, кроме букв и цифр. Под каким именем вы сохраняете проект, под
таким именем и будет создаваться исполняемый EXE файл, который вы всегда
сможете самостоятельно переименовать.
Модуль программы, который
автоматически появляется в начале работы Unit1. Файл называется UNIT1.PAS по
умолчанию, но его можно назвать любым другим именем, вроде MAIN.PAS. Это
делается аналогично переименованию названия проекта. Необходимо выбрать в меню
File команду Save As: Сохраняется активный модуль в редакторе кода. Файл
главной формы, который по умолчанию называется UNIT1.DFM, используется для сохранения
информации о внешнем виде формы (окна разрабатываемого приложения). При
переименовании названия модуля автоматически меняет свое название. Файл
PROJECT1.RES изначально содержит иконку для проекта. Создается автоматически.
Имеет одноименное название с названием проекта. Файл PROJECT1.DSK содержит
информацию о состоянии рабочего пространства. Состояние окон во время
разработки приложения. Исполняемый EXE файл, который создается в процессе
компиляции проекта. Разумеется, если сохранить проект под другим именем, то
изменят название и файлы с расширением RES и DSK. После компиляции программы
получаются файлы с расширениями: DCU - скомпилированные модули PAS для
последующей быстрой компиляции некоторые файлы не перезаписываются- исполняемый
файл
~PA, ~DP - backup файлы редактора.
Автоматически создаются и содержат информацию, перед последним сохранением.
И так, любая программа всегда
состоит из уже знакомого нам файла проекта (такой файл имеет расширение.dpr) и
одного или нескольких модулей (файлы с расширением.pas) Файл проекта не
предназначен для редактирования пользователем и создаётся автоматически самой
системой программирования Delphi. Для того, чтобы увидеть содержимое файла
проекта, необходимо выполнить команду Project|View Source. Содержимое файла проекта
может быть, например, следующим:
program Project1;
uses
Forms, unit in 'Unit1.pas' {Form};
{$R *.RES}
begin. Initialize;. CreateForm (TForm1, Form1);. Run;
end.
Файл проекта (главный модуль)
начинается словом program, за которым следует имя программы, совпадающее с
именем проекта. Далее за словом uses следуют имена используемых модулей:
стандартного модуля Forms и модуля формы Unit1. Похожая на комментарий
директива {$R *.RES} указывает компилятору, что нужно использовать файл
ресурсов, который содержит описание ресурсов приложения, например, пиктограммы.
Звездочка указывает, что имя файла ресурсов такое же, как и у файла проекта, но
с раширением.res. Исполняемая часть главного модуля находится между
операторными скобками begin:end. Операторы исполняемой части обеспечивают
инициализацию приложения и вывод на экран стартового окна. Помимо главного
модуля каждая программа включает как минимум один модуль формы, который
содержит описание стартовой формы приложения и поддерживающи* * *аботу
процедур. В Delphi каждой форме соответствует свой модуль. Для переключения
между формой и окном редактора кода, содержащего соответствующий модуль,
следует нажать на клавишу F12. Модули-это программные единицы, служащие для
размещения фрагментов программ. При помощи содержащихся в них текстов программ
и реализуется решаемая пользователем задача.
Методы
Методами называются
инкапсулированные в классе процедуры и функции. Например:
function FirstFuns (x: real): real;
procedure SecondProc;
end
Для того чтобы обратиться к методам,
как и для полей, необходимо использовать составные имена:
var: TChildClass;: real;
begin. SecondProc;:= MyObject. FirstFunc
(3.14);
end;
Методы, определенные в классе, могут
быть статическими, виртуальными, динамическими или абстрактными. Тип метода
определяется механизмом перекрытия его в потомках. Для статических методов
перекрытие осуществляется компилятором. Например, пусть у нас имеется описание
родительского класса Tbase и его потомка Tdescedant, содержащих одноименный
метод
MyJoy:
type= class
procedure MyJoy;
end;= class(Tbase)
procedure MyJoy;
end;
var: Tbase;: Tdescedant;
begin. MyJoy;. MyJoy;
end;
В соответствии с принципом
полиморфизма в операторе FirstObject. MyJoy; вызывается метод, описанный в классе
Tbase, а в операторе SecondObject. MyJoy; Вызывается метод, описанный в классе
Tdescedant. По умолчанию все методы, описанные в классе, являются статическими.
Динамические и виртуальные методы отличаются от статических тем, что замещение
родительских методов методами потомков происходит на этапе выполнения прогрммы.
Для обьявления виртуального метода в родительском классе необходимо
использовать зарезервированное слово virtual, а для обьявления динамического
метода-зарезервированное слово dynamic.В классе-потомке в загаловке замещающего
метода должно быть указано зарезервированное слово override. Например:
type= class
Procedure MyJoy; virtual;
end;= class(TBase)
procedure MyJoy; override;
end;
var: Tbase;: Tdescedant;
begin. MyJoy;. MyJoy;
end;
Если бы мы захотели, чтобы метод
MyJoy в классе Tbase был динамическим, слово virtual в заголовке процедуры
следует заменить словом dynamic. Различие между виртуальными и динамическими
методами невилико и связано с особенностями реализации их вызовов. Можно сказать,
что виртуальные методы более эффективны с точки зрения затрат времени, а
динамические методы позволяют более рационально использовать оперативную
память. Абстрактными называются виртуальный или динамические методы, которые
определены в классе, но не содержат никаких действий, никогда не вызываются и
обязательно должны быть переопределены в классах-потомках. Обьявляется
абстрактный метод при помощи зарезервированного слова abstract, расположенного
после слов virtual или dynamic, например: procedure MyMetod; virtual; abstrat;
Основное предназначение абстрактных методов-быть родоначальником иерархий
конкретных методов в классах-потомках. В любом классе содержатся два
специальных метода-конструктор и деструктор. Эти методы содержатся в
классе-родоначальнике всех остальных классов-Tobject и, следовательно,
наследуются потомками. Как и другие методы, они могут быть изменины в
классах-потомках, т.е.перекрыты. В классе Tobject и в большинстве его потомков
конструктор и деструктор называются Create и Destroy соответственно.
Конструкторы предназначены для создания и инициализации обьекта. Дело в том,
что обьект в языке Object Pascal является динамической структурой и
переменная-обьект содержит не сами данныые, а ссылку на них. Конструктор
распределяет обьект в динамической памяти и присваивает полям обьекта начальные
значения. При этом поля порядковых типов в качестве начального значения
получают 0, строкового-пустую строку, поля-указатели-значения nil,
поля-варианты-Unassigned. Кроме того, конструктор помещает ссылку на созданный
обьект в переменную Self, которая автоматически обьявляется в классе. Из
сказанного следует, что обращение к полям, свойствам и методам обьекта должно
осуществляться только после вызова конструктора. Деструктор освобождает
динамическю память и разрушает обьект. Для обьявления конструктора и
деструктора используются зарезервированные слова constructor и destructor
соответственно. Например:
type= classText: string;
constructor Create;
destructor Destroy;
end;
Для того, чтобы создать обьект, необходимо
применить метод-конструктор к классу обьекта: varMyObject: TSample;
begin:= TSample. Create;
end;
Если создается класс-потомок и при
его создании планируется осуществить некоторые дополнительные действия,
отсутствующие у класса-родителя, то в конструкторе класса-потомка следует
сначала вызвать конструктор своего родителя, а уже потом осуществлять
дополнительные действия. Вызвать любой перекрытый метод родительского класса
можно при помощи зарезервированного слова inherited(унаследованный). Например,
если в классе TDescedant имеется свой собственный конструктор typeTDescedant =
class(TBase) FMark: Boolean;
constructor Create (Mark: Boolean);
end;
то его реализация могла бы быть
такой: constructor TDescedant. Create
(Mark: Boolean);
begin
inherited Create;:= Mark;
end;
где вызов родительского конструктора
осуществляется оператором inherited Create; а оператор Emark:= Mark;
Осуществляет дополнительные действия. Кроме деструктора Destroy, в базовом
классе Tobject определен метод Free, который прежде проверяет, был ли обьект на
самом деле реализован и только потом вызывает метод Destroy. Если обьект не был
создан конструктором, то обращение к деструктору, приведет к генерации
исключительной ситуации. Следовательно, для уничтожения ненужного обьекта удобнее
использовать метод Free, например: MyObject. Free; В классе могут быть
определены методы, которые могут вызываться без создания и инициализации
обьекта. Эти методы называются методами класса, и для их обьявления
используется зарезервированное слово class. Например:
type= class(Tobject)
class function ChildClassInfo: string;
end;: string;
begin:= ChildClassInfo;
end;
Как правило, методы класса
предназначены для справочной информации о классе-имени класса, предке класса,
размере класса и т.д.
События
Событие-это то, что происходит в
процессе работы программы. В Delphi определенно несколько десятков типовых
событий. Рассмотрим, что представляют собой события с точки зрения языка Object
Pascal. Событие-это свойство процедурного типа, и его значением является
указатель на некоторый метод. Присвоить такому свойству значение означает
указать адрес метода, который будет выполняться в момент наступления события.
Такие методы называются обработчиками событий. В качестве примера рассмотрим,
как описаны стандартные события OnDblClick (возникает при двойном щелчке левой
кнопкой мыши), OnMouseDown (возникает при нажатии кнопки мыши) и OnMouseMove
(возникает при перемещении мыши) в классе TControl: Tcontrol =
class(Tcomponent) Private FonDblClick: TnotifyEvent; FonMouseDown: TmouseEvent;
FonMouseMove: TmouseMoveEvent protected property OnDblClick: Tnotify read
FonDblClick writeFonDblClick; Property OnMouseDown: TmouseEvent read
FonMouseDown writeProperty OnMouseMove: TmouseMoveEvent read FonMouseMove
writeFonMouseMove; end; Назначение зарезервированных слов private и protected
мы рассотрим позже, а пока отметим следующее. Поля FonDblClick, FonMouseDown и
FonMouseMove, используемые при описании свойств-событии, предназначенны для
хранения указателя на метод, являющийся обработчиком соответствующего события.
Используемые при описаний полей процедурные типы определяются следующим
образом: TypeTnotifyEvent = procedure (Sender: Tobject) of object; TmouseEvent
= procedure (Sender: Tobject; Button: TmouseButton; Shift: TshiftState; x, y:
Integer) of object; TmouseMoveEvent = procedure (Sender: Tobject; Shift:
TshiftState; X, y: Integer) of object; Общим для всех процедурных типов
является параметр Sender, содержащий указатель на обьект-источник события.
Параметр Button содержит информацию, какая клавиша мыши была нажата. Параметр
Shift содержит код клавиши, нажатой на клавиатуре.x и y - текущие координаты
мыши в пределах компонента.
Поля
Полями называются инкапсулированные
в классе данные. Поля класса подобны полям записи, но в отличие от них могут
быть любого типа, в том числе классами, например: type TchildClass = class
Fone: Integer; Ftwo: String; Fthree: TObject; end; Исходя из принципа
инкапсуляции, обращение к полям должно осуществляется при помощи методов и
свойств класса. Вместе с тем, в Object Pascal допускается обращаться к полям и
непосредственно. Для того чтобы обратиться к полю, необходимо записать
составные имя, состоящее из имени класса и имени поля, разделенных точкой,
например: var MyObject: TChildClass; begin MyObject. Fone:= 16; MyObject.
Ftwo:= 'Некоторое строковое значение'; end; Обычно имя поля такое же, как и имя
соответствующего свойства, но к имени поля в качестве первой буквы добавляют
букву F.
2. Практическая часть
.1 Постановка задачи
Частотный анализ текста (пословный).
(Подсчитывается относительная частота встречаемости каждого слова в тексте;
границами слов являются символы: точка, запятая, двоеточие, точка с запятой,
пробел, скобки, тире, вопросительный и восклицательный знаки.)
А) Текст вводится из текстового
файла произвольной длины; вывод результатов на экран, принтер или в файле по
желанию пользователя.
Б) Текст вводится с клавиатуры,
должна быть возможность записи его в файл; вывод результатов на экран, принтер
или в файл по желанию пользователя.
В) Текст вводится по выбору
пользователя с клавиатуры (при этом должна быть возможность записи его в файл),
либо из текстового файла; вывод результатов - на экран, принтер или в файл по
желанию пользователя.
Г) Текст вводится по выбору
пользователя с клавиатуры (при этом должна быть возможность записи его в файл),
либо из текстового файла; должна быть возможность анализа как всего текста, так
и любой его части (часть, подлежащая анализу, выделяется с помощью клавиш со
стрелками). Вывод результатов - на экран, принтер или в файл по желанию
пользователя.
2.1.1 Основания для
разработки
Основанием для разработки является
задание преподавателя в соответствии с программой курса «Технология разработки
программных продуктов».
2.1.2 Назначение
программы
Разрабатываемая программа
предназначения для нахождения частотного анализа текста (пословного).
2.1.3 Требования к
программе
Требования к функциональным
характеристикам
Программа должна:
– Позволять работать с
вводимыми значениями в текстовый файл
– Подсчитывать относительную
частоту встречаемости слов разной длины
– По желанию пользователя
выводить ответ на экран, файл или принтер
– Обеспечить удобный
интерфейс, позволяющий даже неподготовленному пользователю с легкостью работать
с программой
Входные данные
Входными данными является текст
произвольной длины.
Выходными данными являются:
Подсчитывается относительная частота
встречаемости каждого слова в тексте, вывод результатов на экран, принтер или в
файл по желанию пользователя
Требования к надежности
Требования к надежности программы
отсутствуют, так как при отказе программы ее можно выполнить повторно.
Требования к условиям эксплуатации
Программа должна эксплуатироваться в
условиях вычислительного центра при температуре от +15 до +35 С и относительной
влажности воздуха от 25 до 85%.
Программа не требует специального
обслуживания, а ее сопровождение выполняется самим автором.
Работа с программой не должна
требовать специальных навыков, кроме умения работать с клавиатурой компьютера и
принтером.
Требования к техническим средствам
Программа должна работать на IBM
PC-совместимых компьютерах с процессором 80386 и выше, объемом оперативной
памяти 1 Мбайт и выше, цветным монитором EGA/VGA и выше под управлением операционной
системы Windows 3.11 и выше. Принтер необходим в тех случаях, когда предусмотрен
вывод результатов на печать.
Требования к транспортировке и
хранению
Диск с программой должен храниться
вдали от электромагнитных полей и не подвергаться механической деформации. Место
и условия хранения должны соответствовать санитарным требованиям отрасли. Сроки
хранения устанавливаются в соответствии с гарантийными сроками поставщика
носителей.
Основные требования к
транспортировке - создание условий, исключающих механические повреждения
носителя.
2.1.4 Требования к
программной документации
Должны быть разработаны следующие
программные документы:
·
Текст программы (ГОСТ 19.401-78)
·
Описание программы (ГОСТ 19.402-78)
·
Руководство оператора (ГОСТ 19.505-79)
·
Программа и методика испытаний (ГОСТ 19.301-79)
·
Описание языка (ГОСТ 19.507-79)
.1.5 Стадии разработки
Разработка программы должна вестись по
следующему графику:
Технический проект срок
сдачи 05.02.2011
Рабочий проект
срок сдачи
.05.2011
Виды испытаний
Приемо-сдаточные испытания проводятся
преподавателем.
2.2 Описание схем
.2.1 Описание схемы
основного модуля
Сначала происходит заполнение поля
«Имя файла».
Далее, если стоит переключатель «Из
файла», то кнопка «Открыть» становится доступной, происходит вызов процедуры Button1Click для открытия файла.
Если стоит переключатель «С клавиатуры», то кнопка «Открыть» становится
недоступной. Затем вызывается процедура Button2Click для сохранения файла, а
потом процедура Button3Click для анализа текста. Результаты анализа выводятся в StringGrid1. Если установлен
переключатель «Вывод в файл» результаты выводятся в файл, если установлен
переключатель «Вывод на принтер» результаты выводятся на печать.
2.2.2 Описание процедуры
Button1Click
Если стоит переключатель «Из файла»,
то происходит считывание из поля Edit 1 имени файла. Далее файл отрывается для чтения. Происходит
проверка результатов последней операции ввода-вывода (открытия файла) с помощью
переменной IOResult.
Далее если ее значение не равно «0»,
то выдается сообщение об ошибке открытия файла и процедура завершает свою
работу.
Если значение IOResult равно «0», то в цикле
построчно считывается информация из файла, и каждая строка добавляется в поле Memo. Затем файл
закрывается.
2.2.3 Описание процедуры
Button2Click
Сначала из поля Edit1 считывается имя файла.
Далее файл открывается для перезаписи. В цикле, который выполняется столько
раз, сколько строк в поле Memo1, каждая строка из поля Memo1 записывается в указанный файл. Далее файл закрывается и выдается
сообщение, что данные были успешно сохранены.
2.2.4 Описание процедуры
Button3Click
Сначала в цикле 1 происходит
обнуление массива Kol и очищение массива slova. Затем в цикле 3 происходит подсчет суммы элементов массива Kol (общего количества
слов). Затем проверяется, какой переключатель установлен, и происходит вывод
результата либо на экран, либо на принтер, либо в файл.
2.2.5 Описание
схемы-процедуры Analiz
В цикле проверяется каждый символ
строки. Ксли он не равен разделителю, то символ добавляется в слово. Если он
равен разделителю, то вызывается функция proverka (проверяется есть ли
данное слово в массиве). Если слова нет, то оно добавляется в массив, а если
оно есть, то увеличивается количество в соответствующей ячейке массива Kol.
2.2.6 Описание схемы
процедуры proverka
В цикле проверяется совпадение слов
в массиве slova с заданным словом. Если слово не найдено, то результатом функции proverka будет 0. Если слово
найдено, то результатом функции proverka будет номер элемента в массиве.
2.4 Описание программы
2.4.1 Общие сведения
Программа Analiz предназначена для
частотного анализа текста (пословного). Программа написана на языке Borland Delphi 7, работает под
управлением операционной системы Windows 3.11 и выше.
2.4.2 Функциональное
назначение
Программа Analiz предназначена для
частотного анализа текста (пословного)
2.4.3 Используемые
технические и программные средства
Программа может работать на IBM
PC-совместимых компьютерах с процессором 80386 и выше, объемом оперативной
памяти 1 Мбайт и выше, наличием цветного монитора EGA/VGA. Наличие жесткого
диска не является обязательным, наличие принтера необходимо, если пользователь
желает выводить на него результаты решения кубического уравнения.
2.4.4 Вызов и загрузка
Программа может быть загружена как с
CD,
так и с жесткого диска. В последнем случае требуется предварительно переписать
программу с CD на жесткий диск.
Исполняемым файлом программы
является файл Analiz.exe.
2.4.5 Входные и выходные
данные
Входные данные
Входными данными является текст
произвольной длины.
Выходными данными являются:
Подсчитывается относительная частота
встречаемости каждого слова в тексте, вывод результатов на экран, принтер или в
файл по желанию пользователя
2.5 Руководство
оператора
.5.1 Назначение
программы
Программа Analiz предназначена для
частотного анализа текста (пословного)
2.5.2 Условия выполнения
Программа работает на IBM PC
совместимых компьютерах с процессором 80386 и выше, объемом оперативной памяти
1 Мбайт и выше, цветным монитором EGA/VGA и выше, дисководом для гибких
магнитных дисков 3.5» (1.44 Мбайт) под управлением операционной Windows 3.11 и
выше.
2.6 Программа и методика
испытаний
.6.1 Объект испытаний
Объектом испытаний является
программа Analiz, предназначенная для подсчета относительной частоты встречаемости
слов разной длины.
2.6.2 Цель испытаний
Целью испытаний является проверка
соответствия программы требованиям Технического Задания.
В процессе испытаний подлежат
проверке следующие требования к программе:
Требования к функциональным
характеристикам
Программа должна:
. Обеспечивать ввод с
клавиатуры исходных данных
. Находить простые множители
числа
. Выводить результаты
программы на экран, в файл или на принтер
Требования к информационной и
программной совместимости
Текстовый файл с результатами работы
программы должен иметь формат, позволяющий просматривать его с помощью
текстовых редакторов типа edit или lexicon
Требования к маркировке и упаковке
Программа должна поставляться на
диске в виде исполняемого Exe файла.
2.6.4 Требования к
программной документации
На испытания должны быть
представлены следующие программные документы:
·
техническое задание
·
текст программы
·
описание программы
·
руководство оператора
·
описание языка
.6.5 Средства и порядок испытаний
Для проведения испытаний необходимы
следующие технические средства:
·
IBM PC совместимый компьютер с процессором 80386 и выше,
оперативной памятью 1 Мбайт и выше, цветным монитором EGA/VGA и выше CD-ROM и матричным принтером.
Для проведения испытаний необходимы
следующие программные средства:
·
Операционная система Windows 3.11 и выше
·
Текстовый редактор NCEDIT
Испытания проводятся в следующем
порядке
) проверяется наличие и
комплектность программной документации (п. 2.6.4)
) проверяется соответствие
требованиям к маркировке и упаковке (п. 2.6.3.3)
) проверяется соответствие
требованиям к функциональным характеристикам (п. 2.6.3.1)
·
способность программы обеспечивать ввод исходных данных
·
способность решать уравнения с точностью 0.001
·
способность выводить результаты по желанию пользователя на экран,
принтер или в файл.
4) проверяется соответствие
требованиям к информационной и программной совместимости (п. 2.6.3.2)
2.6.6 Методы испытаний
– Запустите исполнительный
файл
– Введите исходный текст
– Убедитесь, что после ввода
всех данных, произошло считывание (вычисление) и вывод результатов
Результаты на экран выводятся по
умолчанию после нажатия кнопки «Анализ».
Для проверки способности программы
выводить результаты в файл, введите в качестве вывода результата «В файл».
Убедитесь, что был создан файл для записи результатов.
Заключение
Разработанная в ходе выполнения
курсового проекта программа удовлетворяет всем требованиям задания, что
подтверждается протоколом испытаний.