- •Лекция на тему Внутреннее проектирование и разработка программных средств.
- •3.1. Табличный вариант модели предметной области
- •1. Определение пакета прикладных программ.
- •2.Составные части ппп.
- •3. Модель предметной области.
- •3.1. Табличный вариант модели предметной области
- •3.2. Граф предметной области.
- •4. Использование теории формальных грамматик, для описания встроенного языка пакета прикладных программ.
- •5. Конструирование управляющей программы ппп.
- •5.1 Модуль лексического разбора.
- •5.2 Модуль синтаксического анализа
- •5.3 Модуль управления
- •5.4 Информатор
5. Конструирование управляющей программы ппп.
Центральным элементом управляющей программы является ведущий модуль. Ведущий модуль организует выполнение требуемой последовательности других модулей управляющей программы. Ведущий модуль обеспечивает выполнение следующих действий (но сам не выполняет):
во-первых, осуществление лексического разбора ПВЯ;
во-вторых, проверку синтаксической правильности ПВЯ;
в-третьих, определение множества модулей, подлежащих выполнению;
в-четвертых, реализацию обращения к модулям тела ППП.
При реализации ведущего модуля в среде DELPHI, файл, содержащий ведущий модуль, может иметь следующую структуру:
Unit Unit_VED; INTERFACE Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TForm_VED = class(TForm) CMDINPUT: TButton; CMDPROCESS: TButton;
CMDEXIT: TButton;
LbPVJA: TLabel;
EdPVJA: TEdit;
MESINF: TMemo;
LbHELP1: TLabel;
LbHELP2: TLabel;
CMDHELP: TButton;
procedure CMDPROCESSClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure CMDEXITClick(Sender: TObject);
procedure CMDINPUTClick(Sender: TObject);
procedure CMDHELPClick(Sender: TObject);
End;
Var
Form_VED: TForm_VED;
PVJA: String; {Программа на входном языке}
IMPLEMENTATION
{$R *.DFM}
Procedure TForm_VED.FormActivate(Sender: TObject);
begin
Caption:='Управляющая программа';
CmdInput.Caption:='ВВОД ПВЯ';
CmdProcess.Caption:='ВЫПОЛНЕНИЕ';
CmdExit.Caption:='ВЫХОД';
CmdHelp.Caption:='СПРАВКА';
LbPVJA.Caption:='Программа на встроенном языке';
LbPVJA.Autosize:=True;
MESINF.TEXT:='Выполняется управляющая программа';
LbHelp1.Visible:=False;
LbHelp2.Visible:=False;
EDPVJA.TEXT:= '';
EDPVJA.SetFocus;
end;
Procedure TForm_VED.CMDINPUTClick(Sender: TObject);
{Ввод программы на встроенном языке пакета} Begin PVJA:= EDPVJA.TEXT; CMDPROCESS.SetFocus; End; Procedure TForm_VED.CMDPROCESSClick(Sender: TObject); {Обработка события: нажатие клавиши "ВЫПОЛНЕНИЕ"}
Type
TypeTinf= Record
KV: Integer; {Код возврата}
PB: Integer; {Признак блока}
End; { TypeTinf }
T_YV= Array[1..40] Of Integer;{Тип для управляющего вектора}
T_PAR= Array[ 1..40] Of String;{Тип для вектора параметров}
Var
YV: T_YV; {Управляющий вектор}
PAR: T_PAR; {Вектор параметров}
KSL: Integer; {Количество расшифрованных слов ПВЯ}
TINF: TypeTinf; {Таблица информатора}
Procedure Lan (PVJA: String; {Программа на
входном языке}
Var YV: T_YV; {Управляющий вектор}
Var Par: T_Par; {Вектор параметров}
Var Ksl: Integer; {Количество
расшифрованных слов ПВЯ} Var Tinf: TypeTinf {Таблица информатора});
Begin { Блок лексического разбора}
End; {Procedure}
Procedure San ( YV: T_YV;
Ksl: Integer;
Var Tinf: TypeTinf) ;
{Блок синтаксического анализа}
Begin
End;
Procedure Yprava (YV: T_YV; Par: T_PAR; Ksl: Integer;
Var Tinf: TypeTinf);
{Модуль управления}
Begin
End; {Procedure}
Procedure Inform (Tinf: TypeTinf);
{ Блок информатора}
Begin
End;
Begin
With TINF DO
Begin
Lan ( PVJA,YV,Par,Ksl,Tinf);
{ Выполнение блока лексического разбора}
Inform ( Tinf );
If KV =0 then
Begin
San (YV,Ksl,Tinf);
{Выполнение блока синтаксического анализа}
Inform ( Tinf );
If KV=0 Then
Begin
Yprava( YV,Par,Ksl,Tinf);
{Выполнение блока управления}
Inform ( Tinf );
End;
End;
End; { With }
MESINF.LINES.ADD('Завершение работы управляющей программы');
END;
Procedure TForm_VED.CMDEXITClick(Sender: TObject); Begin Close; End; Procedure TForm_VED.CMDHELPClick(Sender: TObject);
{ Метод, обеспечивающий помощь пользователю} Begin
End;
End.
