РефератыИнформатика, программированиеРаРазработка программы на языке Borland Object Pascal (Ide Borland Delphi)

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

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ


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


СОДЕРЖАНИЕ


1.ВВЕДЕНИЕ


2.ВЫПОЛНЕНИЕ ЗАДАНИЯ


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


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


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


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


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

ПРИЛОЖЕНИЯ


1.
ВВЕДЕНИЕ


Система программирования Турбо Паскаль, разработанная американской корпорацией Воrland, остается одной из самых популярных систем программирования в мире. Придуманный швейцарским ученым Никласом Виртом как средство для обучения студентов программированию, язык Паскаль стараниями А. Хейлсберга превратился в мощную современную профессиональную систему программирования, которой по плечу любые задачи – от создания простых программ, предназначенных для решения несложных вычислительных задач, до разработки сложнейших реляционных систем управления базами данных. Появление Windows и инструментальных средств Borland Pascal with Objects и Delphi для разработки программ в среде Windows лишний раз показало, какие поистине неисчерпаемые возможности таит он в себе: и Borland Pascal, и используемый в Delphi язык Object Pascal основываются на Турбо Паскале и развивают его идеи.


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


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


2.
ВЫПОЛНЕНИЕ ЗАДАНИЯ


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


Сформируем текстовый документ с именем goto.cpp. Содержимое документа возьмем из русифицируемой справки MSDN по оператору безусловного перехода.


int i, j;


for(i = 0; i < 10; i++)


{


// ...


if(condition1)


{


j = 4;


goto label1;


}


// ...


for(j = 0; j < 10; j++)


{


// ...


label1:


// ...


if(condition2)


{


i = 6;


goto label2;


}


}


// ...


label2:


// ...


}


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


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


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


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


Кнопка buProverka выполняет непосредственную проверку правильности использования безусловного оператора (строки 43 - 94). На первом шаге происходит запись содержимого файла в строковую переменную sFile (строка 48). Затем, при условии что файл не пустой (строка 49), происходит циклический поиск подстроки “goto” в переменной sFile (строки 52-54). Удаляется содержимое проверяемого файла до слова “goto” и выделяется имя метки перехода (строка 55). Имя метки должно удовлетворять требованию задания имени идентификатора. Для этой проверки используются строки 56-77. Затем ищется имя метки и символ «:» - это непосредственный переход на метку. В случае отсутствия такой подстроки выдается сообщение об ошибке (строки 78 - 84). В случаи успешной проверки использования одного безусловного перехода происходит инкрементирование счетчика и новый поиск конструкции goto (строки 85-86). По окончании проверки (в случае отсутствия ошибок) выдается число найденный инструкций безусловного перехода (строки 88-92).



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


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


2.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


29


implementation


30


31


{$R *.dfm}


32


33


procedure TForm1.buOpenClick(Sender: TObject);


34


begin


35


if odFile.Execute then


36


begin


37


Memo1.Lines.Clear;


38


Memo1.Lines.LoadFromFile(odFile.FileName);


39


lbRezultat.Caption:= '';


40


end;


41


end;


42


43


procedure TForm1.buProverkaClick(Sender: TObject);


44


var


45


sFile, sLabelName: string;


46


i, iKol, j: integer;


47


begin


48


sFile:= Memo1.Lines.Text;


49


if sFile<>'' then


50


begin


51


iKol:= 0;


52


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


53


while i<>0 do


54


begin


55


delete(sFile, 1, i+4);


56


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


57


j:= pos(#13, sFile);


58


if ((j<>0)and(j<i))or(i=0) then


59


begin


60


lbRezultat.Caption:= 'Ошибка: Отсутствует ;';


61


lbRezultat.Font.Color:= clRed;


62


Exit;


63


end;


64


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


65


if not (sLabelName[1] in ['A'..'Z', 'a'..'z'])then


66


Begin


67


lbRezultat.Caption:= 'Ошибка: Неверное имя метки '+ sLabelName;


68


lbRezultat.Font.Color:= clRed;


69


Exit;


70


end;


71


for i:= 2 to length(sLabelName) do


72


if not(sLabelName[i] in ['0'..'9', 'A'..'Z', 'a'..'z']) then


73


begin


74


lbRezultat.Caption:= 'Ошибка: Неверное имя метки '+ sLabelName;


75


lbRezultat.Font.Color:= clRed;


76


Exit;


77


end;


78


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


79


if i=0 then


80


begin


81


lbRezultat.Caption:= 'Ошибка: Отсутсвует переход на метку '+ sLabelName;


82


lbRezultat.Font.Color:= clRed;


83


Exit;


84


end;


85


inc(iKol);


86


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


87


end;


88


if lbRezultat.Caption='' then


89


begin


90


lbRezultat.Caption:= 'Правильное задание '+ IntToStr(iKol)+ ' инструкций безусловного перехода';


91


lbRezultat.Font.Color:= clNavy;


92


end;


93


end;


94


end;


95


96


procedure TForm1.buCloseClick(Sender: TObject);


97


begin


98


Close;


99


end;


100


101


end.



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


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



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




Рис.3 – Проверка файла




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




Рис.5 – Проверка файла


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

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.


ПРИЛОЖЕНИЯ


Приложение А


int i, j;


for(i = 0; i < 10; i++)


{


// ...


if(condition1)


{


j = 4;


goto label1;


}


// ...


for(j = 0; j < 10; j++)


{


// ...


label1:


// ...


if(condition2)


{


i = 6;


goto label2;


}


}


Приложение Б


-$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 filesborlanddelphi7ProjectsBpl"


-LN"c:program filesborlanddelphi7ProjectsBpl"


-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:ProjectsDelphi StudioSKSMiKZarPlataunitsUData.pas',0,1,545,15,558,1,0


File_1=SourceModule,'D:ProjectsDelphi StudioSKSMiKZarPlataunitsUTablNU.pas',0,1,681,50,698,1,0


File_2=SourceModule,'D:ProjectsDelphi StudioSKSMiKZarPlataunitsUMain.pas',0,1,148,31,155,1,0


File_3=SourceModule,'D:ProjectsDelphi StudioSKSMiKZarPlataunitsUPerson.pas',0,1,99,34,116,1,0


File_4=SourceModule,'D:ProjectsDelphi StudioSKSMiKZarPlataunitsUFunction.pas',0,1,479,1,492,0,0


File_5=SourceModule,'D:ProjectsDelphi StudioSKSMiKZarPlataunitsUEtalon.pas',0,1,800,40,825,0,0


File_6=SourceModule,'D:ProjectsDelphi StudioSKSMiKZarPlataunitsUCreateAllReport.pas',0,1,406,51,407,0,0


File_7=SourceModule,'D:ProjectsDelphi StudioSKSMiKZarPlataunitsUSprNa.pas',0,1,1,17,9,1,0


File_8=SourceModule,'D:ProjectsDelphi StudioSKSMiKZarPlataunitsUSprUd.pas',0,1,305,1,308,1,0


File_9=SourceModule,'D:ProjectsDelphi StudioSKSMiKZarPlataunitsUSprOtdel.pas',0,1,1,1,1,1,0


[Modules]


Module0=D:ProjectsDelphisticheck_gotoUnit1.pas


Count=1


EditWindowCount=1


[D:ProjectsDelphisticheck_gotoUnit1.pas]


ModuleType=SourceModule


FormState=1


FormOnTop=0


[C:Program FilesBorlandDelphi7ProjectsProjectGroup1.bpg]


FormState=0


FormOnTop=0


[D:ProjectsDelphisticheck_gotoproverka.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=868


Height=505


MaxLeft=-4


MaxTop=108


MaxWidth=1288


MaxHeight=666


ClientWidth=1280


ClientHeight=632


LeftPanelSize=0


LeftPanelClients=CodeExplorer@EditWindow0


LeftPanelData=00000400010000000C000000436F64654578706C6F72657200000000000000000000000000000000000100000000000000000C000000436F64654578706C6F726572FFFFFFFF


RightPanelSize=0


BottomPanelSize=0


BottomPanelClients=MessageView@EditWindow0


BottomPanelData=00000400010000000B0000004D657373616765566965770000000000000000000000000000000000FFFFFFFF


[View0]


Module=D:ProjectsDelphisticheck_gotoUnit1.pas


CursorX=13


CursorY=57


TopLine=64


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=0


[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=Name


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=-100


Top=-534


Width=443


Height=85


MaxLeft=-1


MaxTop=-1


ClientWidth=443


ClientHeight=85


TBDockHeight=85


LRDockWidth=443


Dockable=1


[DockHosts]


DockHostCount=0


Приложение
К


object Form1: TForm1


Left = 320


Top = 139


Width = 520


Height = 500


Caption = #1055#1088#1086#1074#1077#1088#1082#1072' Goto'


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 = 210


Top = 424


Width = 52


Height = 13


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


end


object Memo1: TMemo


Left = 8


Top = 48


Width = 497


Height = 353


ScrollBars = ssBoth


TabOrder = 0


end


object buOpen: TButton


Left = 16


Top = 8


Width = 169


Height = 33


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


TabOrder = 1


OnClick = buOpenClick


end


object buProverka: TButton


Left = 16


Top = 416


Width = 185


Height = 33


Caption = #1055#1088#1086#1074#1077#1088#1082#1072' Goto'


TabOrder = 2


OnClick = buProverkaClick


end


object buClose: TButton


Left = 365


Top = 8


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;


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, sLabelName: string;


i, iKol, j: integer;


begin


sFile:= Memo1.Lines.Text;


if sFile<>'' then


begin


iKol:= 0;


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


while i<>0 do


begin


delete(sFile, 1, i+4);


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


j:= pos(#13, sFile);


if ((j<>0)and(j<i))or(i=0) then


begin


lbRezultat.Caption:= 'Ошибка: Отсутсвует ;';


lbRezultat.Font.Color:= clRed;


Exit;


end;


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


if not (sLabelName[1] in ['A'..'Z', 'a'..'z'])then


begin


lbRezultat.Caption:= 'Ошибка: Неверное имя метки '+ sLabelName;


lbRezultat.Font.Color:= clRed;


Exit;


end;


for i:= 2 to length(sLabelName) do


if not(sLabelName[i] in ['0'..'9', 'A'..'Z', 'a'..'z']) then


begin


lbRezultat.Caption:= 'Ошибка: Неверное имя метки '+ sLabelName;


lbRezultat.Font.Color:= clRed;


Exit;


end;


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


if i=0 then


begin


lbRezultat.Caption:= 'Ошибка: Отсутствует переход на метку '+ sLabelName;


lbRezultat.Font.Color:= clRed;


Exit;


end;


inc(iKol);


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


end;


if lbRezultat.Caption='' then


begin


lbRezultat.Caption:= 'Правильное задание '+ IntToStr(iKol)+ ' инструкций безусловного перехода';


lbRezultat.Font.Color:= clNavy;


end;


end;


end;


procedure TForm1.buCloseClick(Sender: TObject);


begin


Close;


end;


end.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Разработка программы на языке Borland Object Pascal (Ide Borland Delphi)

Слов:2886
Символов:36494
Размер:71.28 Кб.