Разработка программы на языке Borland Object Pascal

История разработки и особенности построения языка программирования С++. Программа проверки объявления и использования функций в среде программирования Borland Object Pascal (IDE Borland Delphi), методика ее разработки, листинг, запуск и проверка работы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 10.12.2009
Размер файла 620,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

53

Задание на курсовую работу

Исходным файлом для проверки является текст программы на языке С++.

Проверить правильность объявления и использования в программе указателей на функцию.

Программа должна быть разработана на языке Borland Object Pascal (IDE Borland Delphi).

Содержание

Введение

1 Подготовка исходного файла

2 Разработка программы

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

4 Запуск приложения

Перечень ссылок

Приложения

Введение

В начале 80-х годов сотрудник фирмы AT&T Bell Laboratories Бьярн Страуструп (Bjarne Siroustrup) разработал язык программирования С++. Этот язык был построен на базе языка программирования С и включал объектно-ориентированные конструкции, такие как классы, производные классы и виртуальные функции, заимствованные из языка simula67. Целью разработки С++ было «ускорить написание хороших программ и сделать этот процесс более приятным для каждого отдельно взятого программиста» (Б. Страус труп. «Язык программирования С++». -М., Наука, 1991).

Название С++, которое придумал Рик Маскити (Rick Mascitti) в 1983 году, отражает факт происхождения этого языка от С (вначале он назывался «С с классами»). С момента своего появления С++ получил широкое распространение и завоевал признание многих тысяч профессиональных программистов. В 1989 году Бьярн Страуструп опубликовал вместе с Маргарет Эллис «Справочное руководство но языку С++», послужившее основой для разработки проекта стандарта ANSI С++, разработанного комитетом ANSI X3J16. В начале 90-х годов к работе этого комитета подключился комитет WG21 Международной организации по стандартизации (ISO), и была начата работа по созданию единого стандарта ANSI/ISO С++. Результатом этой работы стал стандарт International Standard for Information Systems -Programming Language С++ (ISO/IEC JTC1/SC22/WG21), опубликованный в начале 1998 года. Большинство новейших компиляторов С++ сейчас в большей или меньшей мере соответствуют этому стандарту. И нет сомнения в том, что в ближайшее время все компиляторы этого языка будут приведены в соответствие стандарту.

Основная цель курсовой работы - закрепление и обобщение знаний полученных при изучении дисциплины «Программирование».

1 Подготовка исходного файла

Сформируем текстовый документ с именем function.cpp.

Содержимое документа возьмем из интернет-документации по описанию функций.

void swap(int i, int j)

{

int temp = i;

i = j;

j = temp;

}

int main()

{

int a = 10, b = 3;

swap(a, b);

cout << "а = " << a << " and b = " << b;

return 0;

}

2. Разработка программы

В среде программирования Borland Delphi создадим новое приложение (пункт меню File \ New \ Application). Свойству формы Caption присвоим значение «Проверка объявления и использования функций». Разместим на форме визуальные и невизуальные компоненты.

Невизуальный компонент - это диалоговое окно выбора файла для открытия. Компонент класса TOpenDialog становится видимым только в режиме запущенного приложения после вызова метода Execute. Присвоим компоненту имя odFile.

Размещаем на форме три компонента класса TButton с именами buOpen, buProverka buClose. Обработчик нажатия на кнопку buOpen открывает исходный файл (строки 33 - 41) и отображает его содержимое на компоненте Memo1 класса TMemo. Свойство Lines этого компонента содержит набор строк исходного файла.

Кнопка buProverka выполняет непосредственную проверку правильности использования безусловного оператора (строки 59 - 207). На первом шаге происходит запись содержимого файла в строковую переменную sFile (строка 62). Затем, при условии, что файл не пустой (строка 63), происходит инициализация переменный (строки 65-68). Далее происходит поиск самого первого описания переменной или функции, т.е. поиск типа переменных (строка 69-86). Далее выделяется имя переменной или функции (строки 87-109). Если после этого скобка не найдена, то значит мы нашли описание переменной а не функции, а противном случае ищется закрывающая скобка и подсчитывается число передаваемых параметров (строки 110-129). Имя функции и число параметров заносится с отдельные строковые массивы. Затем удаляется тело функции (строки 130 - 145). Далее проверка продолжается циклически, пока находится ссылка на тип переменной или функции. Если в ходе описания функция была найдена ошибка, то дальнейшая проверка не выполняется (строки 146 - 154). Если ошибок описания не было то происходит циклическое выделение в теле программы имен функции (поочередно) и подсчитывается количество вхождений. Первое вхождение имени функции - при ее описании, а все дальнейшие - вызовы функции (строки 161 - 164). При вызове функции подсчитывается число передаваемых параметров и вывод сообщение при несоответствии с описанием функции (строки 183 - 198). По окончании проверки выдается сообщение о количестве вызова описанных функций (строки 202 - 203).

Кнопка buClose (строки 209-212) выполняет закрытие программы.

Рис.1 - Форма в режиме Design

3. Листинг программы

1

unit Unit1;

2

3

interface

4

5

uses

6

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

7

Dialogs, StdCtrls;

8

9

type

10

TForm1 = class(TForm)

11

Memo1: TMemo;

12

buOpen: TButton;

13

buProverka: TButton;

14

lbRezultat: TLabel;

15

odFile: TOpenDialog;

16

buClose: TButton;

17

procedure buOpenClick(Sender: TObject);

18

procedure buProverkaClick(Sender: TObject);

19

procedure buCloseClick(Sender: TObject);

20

private

21

{ Private declarations }

22

public

23

{ Public declarations }

24

end;

25

26

var

27

Form1: TForm1;

28

msTypePosition: array [1..5]of integer;

29

msFunctionName: array of string;

30

msFunctionKolParam: array of integer;

31

iFunctionKol: integer;

32

33

const

34

msType: array [1..5] of string= ('void', 'int', 'double', 'char', 'bool');

35

msError: array[1..6]of string= ('Ошибка!!! Отсутсвует задание функции',

36

'Ошибка!!! Некоректное задание функции',

37

'Ошибка!!! Отсутсвует тело функции',

38

'Ошибка!!! Некоректное задание тела функции',

39

'Ошибка!!! Некоректный вызов функции',

40

'Ошибка!!! Некоректное задание параметров');

41

42

implementation

43

44

{$R *.dfm}

45

46

procedure TForm1.buOpenClick(Sender: TObject);

47

begin

48

if odFile.Execute then

49

begin

50

Memo1.Lines.Clear;

51

Memo1.Lines.LoadFromFile(odFile.FileName);

52

lbRezultat.Caption:= '';

53

end;

54

end;

55

56

procedure TForm1.buProverkaClick(Sender: TObject);

57

var

58

sFile, sFunctionName, sFunctionParam: string;

59

i, iKol, j, iminPos, iminNom, iKodError, iKolParam: integer;

60

flagFunction: boolean;

61

begin

62

sFile:= Memo1.Lines.Text;

63

if sFile<>'' then

64

begin

65

iFunctionKol:= 0;

66

iKodError:= 0;

67

SetLength(msFunctionName, iFunctionKol+1);

68

SetLength(msFunctionKolParam, iFunctionKol+1);

69

// поиск задания типа функции

70

iminPos:= 10000;

71

while iminPos<>0 do

72

begin

73

for i:= 1 to 5 do msTypePosition[i]:= 10000;

74

iminPos:= 1000;

75

iminNom:= 0;

76

for i:= 1 to 5 do

77

begin

78

msTypePosition[i]:= pos(msType[i], sFile);

79

if (msTypePosition[i]<>0)and(msTypePosition[i]<iminPos) then

80

begin

81

iminPos:= msTypePosition[i];

82

iminNom:= i;

83

end;

84

end;

85

if iminNom=0 then break;

86

delete(sFile, 1, iminPos+ length(msType[iminNom]));

87

// Выделение имени функции до скобки

88

i:= pos('(', sFile);

89

if i=0 then

90

begin

91

if iFunctionKol=0 then

92

begin

93

iKodError:= 1;

94

Break;

95

end

96

else

97

Continue;

98

end;

99

sFunctionName:= copy(sFile, 1, i-1);

100

delete(sFile, 1, i);

101

flagFunction:= true;

102

for i:=1 to length(sFunctionName) do

103

if not(sFunctionName[i] in ['A'..'Z', 'a'..'z', '0'..'9'])then flagFunction:= false;

104

if not flagFunction then Continue; // выход если нашли задание переменной а не функции

105

inc(iFunctionKol);

106

SetLength(msFunctionName, iFunctionKol+1);

107

SetLength(msFunctionKolParam, iFunctionKol+1);

108

msFunctionName[iFunctionKol]:= sFunctionName;

109

msFunctionKolParam[iFunctionKol]:= 0;

110

// выделение параметров передоваемых в функцию

111

i:= pos(')', sFile);

112

if i=0 then

113

begin

114

iKodError:= 2;

115

Break;

116

end;

117

sFunctionParam:= copy(sFile, 1, i-1);

118

delete(sFile, 1, i);

119

i:= pos(',', sFunctionParam);

120

//подсчет числа запятых

121

while i<>0 do

122

begin

123

msFunctionKolParam[iFunctionKol]:= msFunctionKolParam[iFunctionKol]+1;

124

delete(sFunctionParam, 1, i);

125

i:= pos(',', sFunctionParam);

126

end;

127

// число параметров на 1 больше числа запятых

128

if msFunctionKolParam[iFunctionKol]<>0 then

129

msFunctionKolParam[iFunctionKol]:= msFunctionKolParam[iFunctionKol]+1;

130

// удаление тела функции

131

i:= pos('{', sFile);

132

if i=0 then

133

begin

134

iKodError:= 3;

135

Break;

136

end;

137

delete(sFile, 1, i);

138

i:= pos('}', sFile);

139

if i=0 then

140

begin

141

iKodError:= 4;

142

Break;

143

end;

144

delete(sFile, 1, i)

145

end;

146

// выход при ошибке задания функции

147

if iKodError<>0 then

148

begin

149

lbRezultat.Font.Color:= clRed;

150

lbRezultat.Caption:= msError[iKodError];

151

exit;

152

end;

153

lbRezultat.Font.Color:= clBlack;

154

lbRezultat.Caption:= 'Правильно заданы функции: ';

155

for i:= 1 to iFunctionKol do

156

lbRezultat.Caption:= lbRezultat.Caption+' '+ msFunctionName[i];

157

lbRezultat.Caption:= lbRezultat.Caption+#13;

158

// проверка на правильный вызов описанных функций

159

for i:= 1 to iFunctionKol do

160

begin

161

sFile:= Memo1.Lines.Text;

162

j:= pos(msFunctionName[i], sFile);// поиск описания функции в теле программы

163

delete(sFile, 1, j+length(msFunctionName[i]));

164

j:= pos(msFunctionName[i], sFile);// поиск вызова функции в теле программы

165

iKol:= 0;

166

while j<>0 do

167

begin

168

Inc(iKol);

169

delete(sFile, 1, j+length(msFunctionName[i])-1);

170

if sFile[1]<>'(' then

171

begin

172

lbRezultat.Font.Color:= clRed;

173

lbRezultat.Caption:= lbRezultat.Caption+#13+ msError[5]+' '+msFunctionName[i];

174

Exit;

175

end;

176

j:= pos(')', sFile);

177

if j=0 then

178

begin

179

lbRezultat.Font.Color:= clRed;

180

lbRezultat.Caption:= lbRezultat.Caption+#13+msError[5]+' '+msFunctionName[i];

181

Exit;

182

end;

183

sFunctionParam:= copy(sFile, 1, j);

184

iKolParam:= 0;

185

j:= pos(',', sFunctionParam);

186

while j<>0 do

187

begin

188

Inc(iKolParam);

189

delete(sFunctionParam, 1, j);

190

j:= pos(',', sFunctionParam);

191

end;

192

if iKolParam<>0 then iKolParam:= iKolParam+1;// если запятые найдены, то число параметров на 1 больше

193

if iKolParam<> msFunctionKolParam[i] then

194

begin

195

lbRezultat.Font.Color:= clRed;

196

lbRezultat.Caption:= lbRezultat.Caption+#13+msError[6]+' '+msFunctionName[i];

197

Exit;

198

end;

199

delete(sFile, 1, j);

200

j:= pos(msFunctionName[i], sFile);// поиск очередного вызова функции в теле программы

201

end;

202

lbRezultat.Caption:= lbRezultat.Caption+'Функция'+ msFunctionName[i]+ ' вызвана '+

203

IntToStr(iKol)+' раз(а,ов)'+#13;

204

end;

205

206

end;

207

end;

208

209

procedure TForm1.buCloseClick(Sender: TObject);

210

begin

211

Close;

212

end;

213

214

end.

4 Запуск приложения

Выполняется нажатием клавиши F9. После компиляции запускается программа на выполнение. Окно программы с результатами работы представлены на рис.2-7.

Рис.2 - Окно программы

Рис.3 - Окно открытия файла

Рис.4 - Проверка файла

Рис.6 - Проверка файла

Рис.7 - Проверка файла

Перечень ссылок

1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988.

2. Довгаль С.И., Литвинов Б.Ю., Сбитнев А..И. Персональные ЭВМ : Турбо Паскаль V7.0, объектное программирование, локальные сети. - Киев: Информсиситема сервис, 1993.

3. Епанешников А.М., Епанешникова В.А. Программирование в среде Turbo Pascal 7.0.-М.: Диалог -МИФИ,1999.

4. Зуев Е.А. Программирование на языке Turbo Pascal 6.0,7.0. - М.: Радио и связь, Веста,1993.

5. Кандзюба С.П., Громов В.Н. Delphi 7.Базы данных и приложения. Лекции и упражнения. - К.: Издательство "ДиаСофт", 2001.

6. Климова Л.М. Pascal 7.0. Практическое программирование. Решение типовых задач. -М.:КУДИУ ОБРАЗ, 2000.

7. Марченко А. И., Марченко Л.А.. Программирование в среде Turbo Pascal 7.0.-К.: Век+,1999.

8. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. - М.: Нолидж, 2000.

9. Глушаков С.В., Коваль А.В., Смирнов С.В. Практикум по С++- Х., Фолио, 2006 - 525 с.

10. Методические указания к выполнению курсовой работы по дисциплине "Программирование" для студентов специальностей 7.091501 "Компьютерные системы и сети" и 7.091502 «Системное программирование» дневной и заочной форм обучения. /Сост.: Н.С. Семенова, С.А. Сафонова - Северодонецк: Изд-во СТИ ВНУ, 2006. - 37с.

Приложение А

// Исходным файлом для проверки является текст программы на языке С++.

// Проверить правильность объявления и использования в программе указателей на функцию.

// Программа должна быть разработана на языке Borland Object Pascal (IDE Borland Delphi).

void swap(int i, int j)

{

int temp = i;

i = j;

j = temp;

}

int main()

{

int a = 10, b = 3;

swap(a, b);

cout << "а = " << a << " and b = " << b;

return 0;

}

Приложение Б

-$A8

-$B-

-$C+

-$D+

-$E-

-$F-

-$G+

-$H+

-$I+

-$J-

-$K-

-$L+

-$M-

-$N+

-$O+

-$P+

-$Q-

-$R-

-$S-

-$T-

-$U-

-$V+

-$W-

-$X+

-$YD

-$Z1

-cg

-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;

-H+

-W+

-M

-$M16384,1048576

-K$00400000

-LE"c:\program files\borland\delphi7\Projects\Bpl"

-LN"c:\program files\borland\delphi7\Projects\Bpl"

-w-UNSAFE_TYPE

-w-UNSAFE_CODE

-w-UNSAFE_CAST

Приложение В

[FileVersion]

Version=7.0

[Compiler]

A=8

B=0

C=1

D=1

E=0

F=0

G=1

H=1

I=1

J=0

K=0

L=1

M=0

N=1

O=1

P=1

Q=0

R=0

S=0

T=0

U=0

V=1

W=0

X=1

Y=1

Z=1

ShowHints=1

ShowWarnings=1

UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;

NamespacePrefix=

SymbolDeprecated=1

SymbolLibrary=1

SymbolPlatform=1

UnitLibrary=1

UnitPlatform=1

UnitDeprecated=1

HResultCompat=1

HidingMember=1

HiddenVirtual=1

Garbage=1

BoundsError=1

ZeroNilCompat=1

StringConstTruncated=1

ForLoopVarVarPar=1

TypedConstVarPar=1

AsgToTypedConst=1

CaseLabelRange=1

ForVariable=1

ConstructingAbstract=1

ComparisonFalse=1

ComparisonTrue=1

ComparingSignedUnsigned=1

CombiningSignedUnsigned=1

UnsupportedConstruct=1

FileOpen=1

FileOpenUnitSrc=1

BadGlobalSymbol=1

DuplicateConstructorDestructor=1

InvalidDirective=1

PackageNoLink=1

PackageThreadVar=1

ImplicitImport=1

HPPEMITIgnored=1

NoRetVal=1

UseBeforeDef=1

ForLoopVarUndef=1

UnitNameMismatch=1

NoCFGFileFound=1

MessageDirective=1

ImplicitVariants=1

UnicodeToLocale=1

LocaleToUnicode=1

ImagebaseMultiple=1

SuspiciousTypecast=1

PrivatePropAccessor=1

UnsafeType=0

UnsafeCode=0

UnsafeCast=0

[Linker]

MapFile=0

OutputObjs=0

ConsoleApp=1

DebugInfo=0

RemoteSymbols=0

MinStackSize=16384

MaxStackSize=1048576

ImageBase=4194304

ExeDescription=

[Directories]

OutputDir=

UnitOutputDir=

PackageDLLOutputDir=

PackageDCPOutputDir=

SearchPath=

Packages=

Conditionals=

DebugSourceDirs=

UsePackages=0

[Parameters]

RunParams=

HostApplication=

Launcher=

UseLauncher=0

DebugCWD=

[Language]

ActiveLang=

ProjectLang=

RootDir=

[Version Info]

IncludeVerInfo=0

AutoIncBuild=0

MajorVer=1

MinorVer=0

Release=0

Build=0

Debug=0

PreRelease=0

Special=0

Private=0

DLL=0

Locale=1049

CodePage=1251

[Version Info Keys]

CompanyName=

FileDescription=

FileVersion=1.0.0.0

InternalName=

LegalCopyright=

LegalTrademarks=

OriginalFilename=

ProductName=

ProductVersion=1.0.0.0

Comments=

Приложение Д

program proverka;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

Приложение Ж

[Closed Files]

File_0=SourceModule,'D:\Projects\Delphi\sti\check_goto\Unit1.pas',0,1,64,1,55,1,0

File_1=SourceModule,'D:\Projects\Delphi Studio\SKSMiK\ZarPlata\units\UData.pas',0,1,545,15,558,1,0

File_2=SourceModule,'D:\Projects\Delphi Studio\SKSMiK\ZarPlata\units\UTablNU.pas',0,1,681,50,698,1,0

File_3=SourceModule,'D:\Projects\Delphi Studio\SKSMiK\ZarPlata\units\UMain.pas',0,1,148,31,155,1,0

File_4=SourceModule,'D:\Projects\Delphi Studio\SKSMiK\ZarPlata\units\UPerson.pas',0,1,99,34,116,1,0

File_5=SourceModule,'D:\Projects\Delphi Studio\SKSMiK\ZarPlata\units\UFunction.pas',0,1,479,1,492,0,0

File_6=SourceModule,'D:\Projects\Delphi Studio\SKSMiK\ZarPlata\units\UEtalon.pas',0,1,800,40,825,0,0

File_7=SourceModule,'D:\Projects\Delphi Studio\SKSMiK\ZarPlata\units\UCreateAllReport.pas',0,1,406,51,407,0,0

File_8=SourceModule,'D:\Projects\Delphi Studio\SKSMiK\ZarPlata\units\USprNa.pas',0,1,1,17,9,1,0

File_9=SourceModule,'D:\Projects\Delphi Studio\SKSMiK\ZarPlata\units\USprUd.pas',0,1,305,1,308,1,0

[Modules]

Module0=D:\Projects\Delphi\sti\check_function\Unit1.pas

Count=1

EditWindowCount=1

[D:\Projects\Delphi\sti\check_function\Unit1.pas]

ModuleType=SourceModule

FormState=1

FormOnTop=1

[C:\Program Files\Borland\Delphi7\Projects\ProjectGroup1.bpg]

FormState=0

FormOnTop=0

[D:\Projects\Delphi\sti\check_function\proverka.dpr]

FormState=0

FormOnTop=0

[EditWindow0]

ViewCount=1

CurrentView=0

View0=0

CodeExplorer=CodeExplorer@EditWindow0

MessageView=MessageView@EditWindow0

Create=1

Visible=1

State=2

Left=294

Top=140

Width=986

Height=505

MaxLeft=-4

MaxTop=108

MaxWidth=1288

MaxHeight=666

ClientWidth=1280

ClientHeight=632

LeftPanelSize=0

LeftPanelClients=CodeExplorer@EditWindow0

LeftPanelData=00000400010000000C000000436F64654578706C6F726572000000000000000000000000000000000001000000000000000000000000FFFFFFFF

RightPanelSize=0

BottomPanelSize=0

BottomPanelClients=MessageView@EditWindow0

BottomPanelData=00000400010000000B0000004D657373616765566965770005000000000000025500000000000000010000000000000000000000000100000000000500000B0000004D65737361676556696577FFFFFFFF

[View0]

Module=D:\Projects\Delphi\sti\check_function\Unit1.pas

CursorX=53

CursorY=106

TopLine=184

LeftCol=1

[Watches]

Count=0

[WatchWindow]

WatchColumnWidth=100

WatchShowColumnHeaders=1

Create=1

Visible=0

State=0

Left=0

Top=138

Width=265

Height=638

MaxLeft=-1

MaxTop=-1

ClientWidth=257

ClientHeight=612

TBDockHeight=612

LRDockWidth=257

Dockable=1

[Breakpoints]

Count=1

Breakpoint0='D:\Projects\Delphi\sti\check_goto\Unit1.pas',102,'',0,1,'',1,0,0,'',1,'','',''

[AddressBreakpoints]

Count=0

[Main Window]

Create=1

Visible=1

State=0

Left=0

Top=0

Width=1280

Height=112

MaxLeft=-1

MaxTop=-1

ClientWidth=1272

ClientHeight=78

[ProjectManager]

Create=1

Visible=0

State=0

Left=369

Top=372

Width=438

Height=303

MaxLeft=-1

MaxTop=-1

ClientWidth=430

ClientHeight=277

TBDockHeight=303

LRDockWidth=438

Dockable=1

[CPUWindow]

Create=1

Visible=0

State=0

Left=96

Top=114

Width=959

Height=635

MaxLeft=-1

MaxTop=-1

ClientWidth=951

ClientHeight=601

DumpPane=79

DisassemblyPane=187

RegisterPane=231

FlagPane=64

[AlignmentPalette]

Create=1

Visible=0

State=0

Left=200

Top=107

Width=156

Height=84

MaxLeft=-1

MaxTop=-1

ClientWidth=150

ClientHeight=60

[PropertyInspector]

Create=1

Visible=1

State=0

Left=9

Top=203

Width=274

Height=559

MaxLeft=-1

MaxTop=-1

ClientWidth=266

ClientHeight=533

TBDockHeight=429

LRDockWidth=190

Dockable=1

SplitPos=144

ArrangeBy=Name

SelectedItem=Caption

ExpandedItems=

HiddenCategories=

[ObjectTree]

Create=1

Visible=0

State=0

Left=958

Top=125

Width=190

Height=669

MaxLeft=-1

MaxTop=-1

ClientWidth=182

ClientHeight=643

TBDockHeight=290

LRDockWidth=190

Dockable=1

[CodeExplorer@EditWindow0]

Create=1

Visible=0

State=0

Left=0

Top=12

Width=140

Height=459

MaxLeft=-1

MaxTop=-1

ClientWidth=140

ClientHeight=459

TBDockHeight=305

LRDockWidth=140

Dockable=1

[MessageView@EditWindow0]

Create=1

Visible=0

State=0

Left=12

Top=0

Width=1268

Height=85

MaxLeft=-1

MaxTop=-1

ClientWidth=1268

ClientHeight=85

TBDockHeight=85

LRDockWidth=443

Dockable=1

[DockHosts]

DockHostCount=0

Приложение З

яя яя и_ яя_ яя_ ____ ( @ _ _ _ Ђ Ђ ЂЂ Ђ Ђ Ђ ЂЂ ЂЂЂ ААА я я яя я я я яя яяя 1______ ?33331_ _??3333_ 33333_ ?????? 33331 _DD ??і? _FvvD ??і1 Gggfv@ ??і1_&vvggd ?і1_wwgbvt ?і1wwwr"gf@ _??1wwwr"vv@ ??3_wr""gf@ ??3_wr""&f@ ??і_ww"w""@ _?і1Џwr'""@ _?і1?чw""$ _??1rwr"ы_ ??3_'w"/? ??3_"ww$? _?і__"" ? _?і1 ? ??1 ?? ??3_ ???p ?31 ?? і3333;?31 ?? ?33333?і3 ??? ?і333???3 ?? ????????і ??ё????????і ???????????? ? ? Ђ_яяЂ_яяЂ_яяА_яяА_яяр_ѓяр_ яр

р_ ?ш_ ?ш _ш _ь _ь _ь _ю _ю ?ю ?я ?я _яЃѓЏяЂяЗяАь_яА~_яа>_ ?_ ?_ ?Ѓ ?А ?Б ?гяяяч_ 0 яя_ M A I N I C O N ____ _ _ _ _ _ и_ _

Приложение К

Я _ћ# Bљ†;Ѓ^с˜ _- <pUnit1.pas1љ†; rUnit1.dfm_u„;_d_StdCtrlsИCТп f_TMemoй ЪMf_TButton7кИef_TLabel-‡r»g_.TMemoР®L0g_.TButton_x;Hg_.TLabel__еќcd_DialogsИCТп f TOpenDialogЖвЇРg

.TOpenDialogp"іg_TOpenDialog.GetFileNameЗҐќфcd_FormsИCТп f_TForm_и±Ig_.TFormпu$,g_TCustomForm.AlignControlsmgaИg_TCustomForm.CreateParamspgaИg_TCustomForm.CreateWindowHandleqgaИg_TCustomForm.CreateWndrgaИg_TCustomForm.DefinePropertiestgaИg_TCustomForm.DestroyWindowHandleugaИg_TCustomForm.DoCreatewgaИg_TCustomForm.DoDestroyxgaИg_TCustomForm.GetClientRect{gaИg_TCustomForm.GetFloating}gaИg_TCustomForm.LoadedgaИg_TCustomForm.NotificationЂgaИg_TCustomForm.PaintWindow‚gaИg_TCustomForm.QueryInterface„gaИg_TCustomForm.ReadState…gaИg_TCustomForm.SetParentBiDiMode€gaИg_TCustomForm.SetParentЉgaИg_TCustomForm.UpdateActions‹gaИg_TCustomForm.ValidateRenameЌgaИg_TCustomForm.WndProcЏgaИg_TCustomForm.ResizingђgaИg_TCustomForm.CreateЗgaИg_TCustomForm.CreateNewИgaИg_TCustomForm.DestroyЙgaИg_TCustomForm.AfterConstructionКgaИg_TCustomForm.BeforeDestructionЛgaИg_TCustomForm.CloseQueryНgaИg_TCustomForm.DefaultHandlerОgaИg_TCustomForm.SetFocusЪgaИg_TCustomForm.SetFocusedControlЫgaИg_TCustomForm.ShowModalЭgaИg_TCustomForm.WantChildKeyЮgaИg%TScrollingWinControl.AdjustClientRectё(_#g&TScrollingWinControl.AutoScrollEnabledє(_#g%TScrollingWinControl.AutoScrollInView»(_#g_TCustomForm.CloseМgaИcd_ControlsИCТп g_TWinControl.AssignToЏк.Їg_TWinControl.CanAutoSize“к.Їg_TWinControl.CanResize”к.Їg_TWinControl.ConstrainedResize-к.Їg_TWinControl.CreateHandle™к.Їg#TWinControl.CustomAlignInsertBeforeћк.Їg_TWinControl.CustomAlignPositionџк.Їg_TWinControl.DestroyWndЈк.Їg_TWinControl.GetClientOriginік.Їg_TWinControl.GetControlExtentsµк.Їg_TWinControl.GetDeviceContext¶к.Їg_TWinControl.SetParentBackgroundПк.Їg_TWinControl.ShowControlСк.Їg_TWinControl.Invalidate_л.Їg_TWinControl.Repaint_л.Їg_TWinControl.SetBounds л.Їg_TWinControl.Update

л.Їg_TControl.GetAction6†`)g_TControl.GetDragImages<†`)g_TControl.GetEnabled=†`)g!TControl.GetFloatingDockSiteClass?†`)g_TControl.SetAutoSizeN†`)g_TControl.SetDragModeO†`)g_TControl.SetEnabledP†`)g_TControl.SetNameQ†`)g_TControl.SetBiDiModeU†`)g_TControl.InitiateAction”†`)g_TControl.SetTextс…`)g_TControl.GetTextК…`)cd_GraphicsИCТп g_TFont.SetColork_ЅЬg_clRedъ«Zеg_clBlackыЄZеcd_ClassesИCТп g_TComponent.UpdateRegistryЋЋтмg_TComponent.WriteState'Ћтмg_TComponent.SafeCallExceptionЄЋтмg_TPersistent.Assign§N_`cd_VariantsИCТп cd_SysUtilsИCТп g_IntToStr_i5Ћcd_MessagesИCТп cd_WindowsИCТп cd_SysInitИCТп cd_SystemИCТп f_TObjectј„©_g_TObject.DispatchАG--ѓg_TObject.NewInstanceВG--ѓg_TObject.FreeInstanceГG--ѓf_Integer¶Ё§

f

AnsiStringФяЧf_StringФяЧg_@LStrClrСЁ}µg_@HandleFinallyEуa‚f_BooleanW_~8gSetLength g_Pos g_@LStrPosEуa‚g_Break g_Delete g_Length g_@LStrLen‹_М_g @LStrDeleteEуa‚g_Continue g_Copy g@LStrCopyEуa‚g_True°№таg_FalseЇ№таg_Inc g_Exit g_@DynArraySetLengthEуa‚g_@LStrAsgѓ4_µg@LStrCatNEуa‚g_@LStrCatEуa‚g

@LStrArrayClrzYњґg_@FinalizeArrayBBґјg_@DynArrayClearxB)Іc4_Unit1Ђiif@_c4_Windows ѕc4_Messages јc4_SysUtils ёc4_Variants ¶c4_Classes ¬c4_Graphics ¤c4_Controls hc4_Forms _c4_Dialogs _c4_StdCtrls _c&_.TForm1Ђ>›Љ _ *_TForm1€W

_)_ _Form1жes1)_6 _msTypePositionжaW,1_8 _msFunctionNameжLV§,_:*_.2Ђяяяя_ _msFunctionKolParamжѓ*Ob_<*_.3Ђяяяя_

iFunctionKolжД_Б

_>*_.4Ђяяяя '_msTypeвBоЈ_ Ѓ( _ ˜*_.5Ђяяяя"'_msErrorвссЈ_"Q ( _ Ѓ_ _.6f$ (_TForm1.buOpenClickЂMР_M ___&!_Self___!_Sender_

_c(_TForm1.buProverkaClickЂNР_M !__&!_Selff_ш!_Sender_

_ _sFilef_р

sFunctionNamef_и _sFunctionParamf_а _i___ _iKolf_Ш _j___ _iminPosf_Р _iminNomf_И iKodErrorf_А iKolParam__

flagFunctionf_ѕc(_TForm1.buCloseClickЂOР_M

_&!_Self__ !_Sender_

_c(

FinalizationЂEуa‚ ф! &cћ_(_Unit1Ђ _!_&cћюG _ _Й_F<_9_

A

5_z©юј& ,_Memo1__б ,_buOpen__с ,

buProverka___

lbRezultat___

,_odFile__!

,_buClose__1

- buOpenClick_оu__-_buProverkaClick_оЃ__-

buCloseClick_о№__cL ( _(_E<_I_*E<_Q_,L((Y__._L(0e__0_D _ $_ Ђ_яяяP@ D _ $_

яL ю _2_L ю _4_D _ $_

яD _ $_

яD _ $ юPD _ $ юPl‰3L _ @_ њ_ Щ_ __ _ а_ ш_ _Memo1ь_ _ _buOpen _ _

buProverka__ _

lbRezultat__ _ _odFile

_ _ _buClose_ _ buOpenClick_ _buProverkaClick_

buCloseClick_TForm1_ _ __TForm1L ^ _Unit1 _ __.2_ H _Unit1_ __.3_ _ _Unit1_

_.4_ _ _ _ $ 4 D яяяя_ void яяяя_ int яяяя_ double яяяя_ char яяяя_ bool _

_.5_ _ _ 8 h ” И ф яяяя% Ошибка!!! Отсутствует задание функции яяяя% Ошибка!!! Некоректное задание функции яяяя" Ошибка!!! Отсутствует тело функции яяяя* Ошибка!!! Некоректное задание тела функции яяяя# Ошибка!!! Некоректный вызов функции яяяя( Ошибка!!! Некоректное задание параметров U‹мj S‹Ш3АUh{ dя0d‰ ‹ѓ__ ‹_яR<„Аt@‹ѓш_ ‹Ђ _ ‹_яRDЌUь‹ѓ__ и ‹Uь‹ѓш_ ‹Ђ _ ‹_яQh3Т‹ѓ__ и 3АZYYd‰_h‚ ЌEьи Гй лр[Y]ГU‹м№ j j IuщQSVW‰Eь3АUh__ dя0d‰ ЌUш‹Eь‹Ђш_ ‹Ђ _ ‹_яQ_ѓ}ш _„ђ_ 3АЈ 3А‰EаЎ @Pё №_ ‹_ и ѓД_Ў @Pё №_ ‹_ и ѓД_ЗEи_' ѓ}и _„ђ_ ѕ_ ї З__' ѓЗ_NuфЗEии_ 3А‰Eдѕ_ ЗEФ » ‹EФ‹ ‹Uши ‰_ѓ; t_‹_;Eи}_‹_‰Eи‰uдFѓГ_ѓEФ_ѓю_uРѓ}д _„#_ ‹Eд‹_…ьяяяи ‹И_MиЌEшє_ и ‹Uшё__ и ‹р…цu_ѓ= _…Ш_ ЗEа_ йЦ_ ЌEфP‹ОIє_ ‹Eши ЌEш‹Оє_ и ЖEЯ_‹Eфи …А~+‰EШѕ_ ‹EфЉD0я_Р,

r__щ,_r

_ъ,_r_ЖEЯ FяMШuЭЂ}Я _„d_ я_ Ў @Pё №_ ‹_ и ѓД_Ў @Pё №_ ‹_ и ѓД_Ў ‹_ Ќ_ђ‹Uфи Ў ‹_ 3Й‰

ђ‹Uшё(_ и ‹р…цu

ЗEа_ йе ЌEрP‹ОIє_ ‹Eши ЌEш‹Оє_ и ‹Uрё4_ и ‹р…цt0Ў ‹_ я_ђЌEр‹Оє_ и ‹Uрё4_ и ‹р…цuРЎ ‹_ ѓ<ђ t_Ў ‹_ я_ђ‹Uшё@_ и ‹р…цuЗEа_ лDЌEш‹Оє_ и ‹UшёL_ и ‹р…цuЗEа_ л_ЌEш‹Оє_ и ѓ}и _…pэяяѓ}а t3‹Eь‹Ђ__ ‹@hєя и ‹Eа‹_…ьяяя‹Eь‹Ђ__ и йl_ ‹Eь‹Ђ__ ‹@h3Ти ‹Eь‹Ђ__ єX_ и Ў …А~H‰EШѕ_ ЌUМ‹Eь‹˜__ ‹Ги яuМh|_ Ў я4°ЌEРє_ и ‹UР‹Ги FяMШuАЌUИ‹Eь‹˜__ ‹Ги ЌEИє€_ и ‹UИ‹Ги Ў …А_Ћѕ_ ‰EШѕ_ ЌUш‹Eь‹Ђш_ ‹Ђ _ ‹_яQ_Ў ‹_°‹Uши ‹ШЎ ‹_°и ‹И_ЛЌEшє_ и Ў ‹_°‹Uши ‹Ш3А‰Eм…Ы_„п_ яEмЎ ‹_°и ‹И_ЛIЌEшє_ и ‹EшЂ8(te‹Eь‹Ђ__ ‹@hєя и ЌUА‹Eь‹Ђ__ и яuАh€_ я5_ h|_ Ў я4°ЌEДє_ и ‹UД‹Eь‹Ђ__ и йБ_ ‹Uшё(_ и ‹Ш…Ыue‹Eь‹Ђ__ ‹@hєя и ЌUё‹Eь‹Ђ__ и яuёh€_ я5_ h|_ Ў я4°ЌEјє_ и ‹Uј‹Eь‹Ђ__ и йI_ ЌEрP‹Лє_ ‹Eши 3я‹Uрё4_ и ‹Ш…Ыt#GЌEр‹Лє_ и ‹Uрё4_ и ‹Ш…ЫuЭ…яt_GЎ ;<°te‹Eь‹Ђ__ ‹@hєя и ЌU°‹Eь‹Ђ__ и яu°h€_ я5_ h|_ Ў я4°ЌEґє_ и ‹Uґ‹Eь‹Ђ__ и йЉ ЌEш‹Лє_ и Ў ‹_°‹Uши ‹Ш…Ы_…_юяяЌUЁ‹Eь‹˜__ ‹Ги яuЁh”_ Ў я4°hЁ_ ЌU¤‹Eми яu¤hј_ h€_ ЌE¬є_ и ‹U¬‹Ги FяMШ_…Jэяя3АZYYd‰_h

_ ЌE¤и ЌEЁє и ЌEрє_ и Гй лЦ_^[‹е]Г яяяя_ ( яяяя_ ) яяяя_ , яяяя_ { яяяя_ } яяяя_ Правильно заданы функции: яяяя_ яяяя_

яяяя_ Функция яяяя вызвана яяяя раз(a, ов) и ГU‹м3АUhq dя0d‰ я_ uJё №_ ‹_ и ё №_ ‹_ и ё ‹_ и ё ‹_ и 3АZYYd‰_hx Гй лш]Гѓ- _Гme_ _5_ _5_ _9___5___5___5______І__P__R__Ж__V__И__К__N__j__(__ґ__4__6__<__љ__®__D__°__:__J__n__l__p__Њ__z__0__~__Ћ__ђ__2__'__”__-__˜__@__>__њ__F__ћ__„__†__€__Љ__`__ __r__"__$__&__t__v__*__x__|__8__Ђ__‚__X__b__d__H__,__.__B__L__T__Z__\__^

_5_ј_u_$_Ѓ_,_№_4____________9_ _9___5______I_ _I___Р__Р__Q_ _Q_(_М__Y_ _Y_ _Р__]_ _a___a___a___a___a___a_˜_e_ _e_ _Р__i_ _m___m___m___m___m___m___m_Ѓ__u___u_h__B_ __u___Т

_Ф__Ѓ_4_Ѓ_\_U___U___E___I_

_ц__U___M___Q_

_ц<_A_H_]_

_A___Ьn_]_

_д$_ж__Ѓ_

_Ь__U_N_м__ж__д~_U_

_U___E___I_

_ц__U___M___Q_

_ц__E_

_U___ш

_M_

_U___Ѓ_

_ЬL_м__ж__Ѓ_

_Ь__M_

_U_$_ж__Ѓ_

_Ь__M

_U___M_

_U___Ѓ_

_Ь<_ж__Ѓ_

_Ь<_жL_¦__i___ 0_¦__Ѓ_

_

_U_>_ў__Ѓ_

_E_ _ъ__ 2_ў__Ѓ_

_ь__

_U_X_E___Ь__E___д"_ж

_E___Ь._E___д$_ж<_¦"_ў__Ѓ_

_i_

_Ѓ_

_E_ _ъ"_ __Ѓ_

_Ь8_¦"_ў__Ѓ_

_i_

_Ѓ_

_E_ _ъ"_ 0_м__Ѓ_

_Ь,_ж__Ѓ_

_Ь _M_6_¦"_ў__Ѓ_

_i_

_Ѓ_

_E_ _ъ"_ (_ж

_E___Ь:_ў__Ѓ_

_E___Ѓ___є__Ѓ_

_Ѓ___ъ__?._Ѓ___Т__ю__ю

_Ф__?___f

_Е___Е___q___i___Р

___

_]___Р

___

_M_

_Q_

___

_E_

_I_

_____Е_

_Ф_____q_

__ђт^1__,___"_D_T___H_._____

_>_>_____,___

_"_____

__р__

___B________

_(_____(ю<_

_>_>_,_ _______

_(__________ш____"____________________Эю_1___

_,_0_

_&_&_"юv_

_T_*_._$_<_$_

_____>___,_?_

_____,_?_

_&__________ш_

___,_?_

__ј$H__??_`Ђ_с__

_ц _?__]_ ?__ __?NZ_ _ _9_ _ _9___ _9___ _9___ _9___ _9_

_ _9_

_ u_ __$"\9___ "Ѓ_ __&$p9___ $?_ __(&E_9___ &=_ _ 6A_ _ 8E_ _ :M_ _ <U_ _ >]_ _ Di_ _ Fy_ _ Јі_}_ _ \?_ _ ___?_ _ pЌ_ _ t?_ _ t?_ _ t?_ _ vќ_ _ vЎ_ _ vҐ_ _ v?_ _ v?_ _ v?_ _ vµ_ _ xЅ_ _ Јz_Б_ _ E_Е_ _ Y_??u_@_ __y_,_y__юЃ_Б_ё p_?_M__?_

_ю?_х__?___ю?_i__?_х_ю?_U__?_б_ю?_н__?_э_ю?_-_?_?ю?_х_?_y

ю?_µ

_?_Е

ю?_} _?_Ќ ю?_? _?_н ю?_)

_?_9

ю?_]

_?_?

ю?_Ѓ__?_Ѓ_ю?_}__Ў_!__Ў_?_юЎ_б__Ў_ќ_ю?_=_ю?_Q__Ў_Ќ__Ў_ќ_ю?___юЎ_1__?_1__Ў_}_ю?_?_

Ў_Б__Ў___юЎ_M__Ў_?_ю?_?_ю?___юЎ_-__?_-__Ў_i_юЎ_?__Ў_С_ю?_1_ю?_@ Ѕ_ Ѕ_

юЕ_ __ a

Приложение Л

__DELPHI.DIAGRAM.PORTFOLIO_ а@___Untitled1_ _ _

Приложение М

object Form1: TForm1

Left = 320

Top = 139

Width = 520

Height = 572

Caption = #1055#1088#1086#1074#1077#1088#1082#1072' '#1086#1073#1098#1103#1074#1083#1077#1085#1080#1103' '#1080' '#1080#1089#1087#1086#1083#1100#1079#1086#1074#1072#1085#1080#1103' '#1092#1091#1085#1082#1094#1080#1081

Color = clBtnFace

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS Sans Serif'

Font.Style = []

OldCreateOrder = False

PixelsPerInch = 96

TextHeight = 13

object lbRezultat: TLabel

Left = 154

Top = 464

Width = 52

Height = 13

Caption = #1056#1077#1079#1091#1083#1100#1090#1072#1090

end

object Memo1: TMemo

Left = 8

Top = 8

Width = 497

Height = 393

ScrollBars = ssBoth

TabOrder = 0

end

object buOpen: TButton

Left = 8

Top = 408

Width = 137

Height = 33

Caption = #1054#1090#1082#1088#1099#1090#1100' '#1092#1072#1081#1083

TabOrder = 1

OnClick = buOpenClick

end

object buProverka: TButton

Left = 8

Top = 448

Width = 137

Height = 33

Caption = #1042#1099#1087#1086#1083#1085#1080#1090#1100' '#1087#1088#1086#1074#1077#1088#1082#1091

TabOrder = 2

OnClick = buProverkaClick

end

object buClose: TButton

Left = 8

Top = 496

Width = 137

Height = 33

Caption = #1042#1099#1093#1086#1076

TabOrder = 3

OnClick = buCloseClick

end

object odFile: TOpenDialog

Filter = 'C++ '#1092#1072#1081#1083'|*.cpp'

Left = 208

Top = 16

end

end

Приложение Н

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Memo1: TMemo;

buOpen: TButton;

buProverka: TButton;

lbRezultat: TLabel;

odFile: TOpenDialog;

buClose: TButton;

procedure buOpenClick(Sender: TObject);

procedure buProverkaClick(Sender: TObject);

procedure buCloseClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

msTypePosition: array [1..5]of integer;

msFunctionName: array of string;

msFunctionKolParam: array of integer;

iFunctionKol: integer;

const

msType: array [1..5] of string= ('void', 'int', 'double', 'char', 'bool');

msError: array[1..6]of string= ('Ошибка!!! Отсутствует задание функции',

'Ошибка!!! Некоректное задание функции',

'Ошибка!!! Отсутствует тело функции',

'Ошибка!!! Некоректное задание тела функции',

'Ошибка!!! Некоректный вызов функции',

'Ошибка!!! Некоректное задание параметров');

implementation

{$R *.dfm}

procedure TForm1.buOpenClick(Sender: TObject);

begin

if odFile.Execute then

begin

Memo1.Lines.Clear;

Memo1.Lines.LoadFromFile(odFile.FileName);

lbRezultat.Caption:= '';

end;

end;

procedure TForm1.buProverkaClick(Sender: TObject);

var

sFile, sFunctionName, sFunctionParam: string;

i, iKol, j, iminPos, iminNom, iKodError, iKolParam: integer;

flagFunction: boolean;

begin

sFile:= Memo1.Lines.Text;

if sFile<>'' then

begin

iFunctionKol:= 0;

iKodError:= 0;

SetLength(msFunctionName, iFunctionKol+1);

SetLength(msFunctionKolParam, iFunctionKol+1);

// поиск задания типа функции

iminPos:= 10000;

while iminPos<>0 do

begin

for i:= 1 to 5 do msTypePosition[i]:= 10000;

iminPos:= 1000;

iminNom:= 0;

for i:= 1 to 5 do

begin

msTypePosition[i]:= pos(msType[i], sFile);

if (msTypePosition[i]<>0)and(msTypePosition[i]<iminPos) then

begin

iminPos:= msTypePosition[i];

iminNom:= i;

end;

end;

if iminNom=0 then break;

delete(sFile, 1, iminPos+ length(msType[iminNom]));

// выделение имени функции до скобки

i:= pos('(', sFile);

if i=0 then

begin

if iFunctionKol=0 then

begin

iKodError:= 1;

Break;

end

else

Continue;

end;

sFunctionName:= copy(sFile, 1, i-1);

delete(sFile, 1, i);

flagFunction:= true;

for i:=1 to length(sFunctionName) do

if not(sFunctionName[i] in ['A'..'Z', 'a'..'z', '0'..'9'])then flagFunction:= false;

if not flagFunction then Continue; // выход если нашли не функцию а задание переменной

inc(iFunctionKol);

SetLength(msFunctionName, iFunctionKol+1);

SetLength(msFunctionKolParam, iFunctionKol+1);

msFunctionName[iFunctionKol]:= sFunctionName;

msFunctionKolParam[iFunctionKol]:= 0;

// выделение параметров передоваемых в функцию

i:= pos(')', sFile);

if i=0 then

begin

iKodError:= 2;

Break;

end;

sFunctionParam:= copy(sFile, 1, i-1);

delete(sFile, 1, i);

i:= pos(',', sFunctionParam);

// подсчет числа запятых

while i<>0 do

begin

msFunctionKolParam[iFunctionKol]:= msFunctionKolParam[iFunctionKol]+1;

delete(sFunctionParam, 1, i);

i:= pos(',', sFunctionParam);

end;

// число параметров на 1 больше числа запятых

if msFunctionKolParam[iFunctionKol]<>0 then

msFunctionKolParam[iFunctionKol]:= msFunctionKolParam[iFunctionKol]+1;

// удаление тела функции

i:= pos('{', sFile);

if i=0 then

begin

iKodError:= 3;

Break;

end;

delete(sFile, 1, i);

i:= pos('}', sFile);

if i=0 then

begin

iKodError:= 4;

Break;

end;

delete(sFile, 1, i)

end;

// выход при ошибке задания функции

if iKodError<>0 then

begin

lbRezultat.Font.Color:= clRed;

lbRezultat.Caption:= msError[iKodError];

exit;

end;

lbRezultat.Font.Color:= clBlack;

lbRezultat.Caption:= 'Правильно заданы функции: ';

for i:= 1 to iFunctionKol do

lbRezultat.Caption:= lbRezultat.Caption+' '+ msFunctionName[i];

lbRezultat.Caption:= lbRezultat.Caption+#13;

// проверка на правильный вызод описанных функций

for i:= 1 to iFunctionKol do

begin

sFile:= Memo1.Lines.Text;

j:= pos(msFunctionName[i], sFile);// поиск описания функции в теле программы

delete(sFile, 1, j+length(msFunctionName[i]));

j:= pos(msFunctionName[i], sFile);// поиск вызова функции в теле программы

iKol:= 0;

while j<>0 do

begin

Inc(iKol);

delete(sFile, 1, j+length(msFunctionName[i])-1);

if sFile[1]<>'(' then

begin

lbRezultat.Font.Color:= clRed;

lbRezultat.Caption:= lbRezultat.Caption+#13+ msError[5]+' '+msFunctionName[i];

Exit;

end;

j:= pos(')', sFile);

if j=0 then

begin

lbRezultat.Font.Color:= clRed;

lbRezultat.Caption:= lbRezultat.Caption+#13+msError[5]+' '+msFunctionName[i];

Exit;

end;

sFunctionParam:= copy(sFile, 1, j);

iKolParam:= 0;

j:= pos(',', sFunctionParam);

while j<>0 do

begin

Inc(iKolParam);

delete(sFunctionParam, 1, j);

j:= pos(',', sFunctionParam);

end;

if iKolParam<>0 then iKolParam:= iKolParam+1;// если запятые найдены, то на один больше число параметров

if iKolParam<> msFunctionKolParam[i] then

begin

lbRezultat.Font.Color:= clRed;

lbRezultat.Caption:= lbRezultat.Caption+#13+msError[6]+' '+msFunctionName[i];

Exit;

end;

delete(sFile, 1, j);

j:= pos(msFunctionName[i], sFile);// поиск вызова функции в теле программы

end;

lbRezultat.Caption:= lbRezultat.Caption+'Функция '+ msFunctionName[i]+ ' вызвана '+

IntToStr(iKol)+' раз(a, ов)'+#13;

end;

end;

end;

procedure TForm1.buCloseClick(Sender: TObject);

begin

Close;

end;

end.


Подобные документы

  • Методы грамматического разбора. Разработка структуры учебного транслятора на базовом языке программирования Object Pascal в среде объектно-ориентированного визуального программирования Borland DELPHI 6.0 с использованием операционной системы Windows XP.

    курсовая работа [493,8 K], добавлен 12.05.2013

  • Разработка программы в среде программирования Borland Pascal, которая является электронным тестирующим пособием в области химии для 8-10 классов. Написание алгоритма решения задачи, определение необходимых функций, процедур, модулей, файловых переменных.

    контрольная работа [389,3 K], добавлен 19.09.2010

  • Free Pascal как свободная реализация языка Паскаль, совместимая с Borland Pascal и Object Pascal - Delphi, но при этом обладающая и некоторыми дополнительными возможностями. Основы алгоритмизации и программирования, создание визуальных приложений.

    учебное пособие [4,2 M], добавлен 13.12.2011

  • Формирование текстового документа с именем goto.cpp., содержимое которого взято из русифицируемой справки MSDN по оператору безусловного перехода. Выбор оптимального алгоритма решения задачи, разработка интерфейса, отладка и тестирование программы.

    курсовая работа [499,8 K], добавлен 10.11.2009

  • Реализация алгоритма Гомори на языке программирования Object Pascal при использовании среды разработки Borland Delphi 7. Рассмотрение основных способов компьютерного осуществления решения задач целочисленного программирования симплексным методом.

    курсовая работа [1,8 M], добавлен 28.03.2013

  • Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.

    контрольная работа [3,6 M], добавлен 18.10.2012

  • Основные понятия и структура обработчика на языке Pascal. Элективные курсы по информатике в системе профильного обучения. Элективный курс "Программирование в среде Delphi". Методические материалы по изучению программирования на языке Object Pascal.

    методичка [55,4 K], добавлен 08.12.2010

  • История программных продуктов "Borland Software Corporation". Языки программирования Turbo-Pascal, Delphi, CaliberRM, Turbo C++ и основные их принципы работы. Развитие их совместимости с Windows. Создание корпоративных систем на основе Веб-технологий.

    реферат [20,9 K], добавлен 02.04.2010

  • Характеристика вычислительной системы и инструментов разработки. Программирование на языке Pascal в среде Turbo Pascal и на языке Object Pascal в среде Delphi. Использование процедур, функций, массивов, бинарного поиска. Создание базы данных в виде файла.

    отчет по практике [2,1 M], добавлен 02.05.2014

  • Проектирование программного модуля в среде программирования Borland Delphi 7.0. Схемы алгоритмов решения задач по темам "Символьные переменные и строки", "Массивы", "Работа с файлами", "Создание анимации". Реализация программного модуля, код программы.

    отчет по практике [961,6 K], добавлен 21.04.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.