Title: Delphi programoz
1Delphi programozás alapjai
2Elérhetoség
-
- Boszorkány utca 2 B138-as iroda
- anettn_at_morpheus.pte.hu
- http//morpheus.pte.hu/anettn
3Alkalmazott programok
- FreePascal
- Turbo Delphi 2006 Explorer (full, english)
- http//cc.codegear.com/free/turbodelphi
- Borland Delphi 7.0
- Megjegyzés
- a ppt-ben található színkódok
- forráskód általános szintaxisa
- példaprogram részlet
4Tematika
- Pascal alapok - tömbkezelés, függvények,
eljárások, fájlkezelés - Objektum orientált programozás
- Delphi környezet formok, unitok, komponensek
- Alkalmazás fejlesztése tulajdonságok,
események - Adatbáziskezelés SQL, adathozzáférési
komponensek, adat-érzékeny vezérlok - Internet-, webes-alkalmazások
- 2D-, 3D-grafika
5Ajánlott irodalom
- 1 Angster Erzsébet
- Programozás tankönyv I.- II.
- Akadémia nyomda, Martonvásár, 1999
- 2 Baga Edit Delphi másképp
- Akadémia nyomda, Martonvásár, 1999
- 3 Benko Tiborné
- Programozási feladatok és algoritmusok
Delphi rendszerben - Computer Books, Budapest, 2002
6Ajánlott irodalom
- 4 Ray Lischner Delphi kézikönyv
- Kossuth Kiadó, 2001
- 6 Paul Kimmel Delphi 6 fejlesztok
- kézikönyve
- Panem Kft. , Budapest, 2002
- 5 Dr. Fercsik János Programozás Delphi
- Dunaújvárosi Foiskola - jegyzet, 2001
- 6 Marco Cantú Delphi 7 mesteri
szinten I. II. - Kiskapu Kft, 2003
71. ELOADÁS
- Bevezetés a programozásba
- Pascal ismeretek felelevenítése
- Algoritmikus gondolkodás
- Programszerkesztés
8Számábrázolás
- A szg. a számokat mindig meghatározott számú
számjeggyel ábrázolja - Kiegészítve balról a számot nullákkal, a kívánt
mennyiségu számjegybol fog állni - Bit - az információ legkisebb egysége (kettes
számrendszer egy számjegyének felel meg) - Byte 8 bit
- 1 kB210 bit 1024bit
- Szó - egyszerre feldolgozható bitek száma (pl.
32 bites processzor)
210 0000 00012
9Kettes számrendszer - átváltás
- 10100110112
- 129 028 127 026 025 124 123
022 121 120 - 29 27 24 23 21 20
- 512 128 16 8 2 1
- 667
10A szoftverfejlesztés lépései
- elemzés problémaelemzés, helyzetfelmérés,
igényfelmérés, célok felállítása, ido és
költségbecslés - tervezés adatstruktúrák és algoritmusok
kialakítása, ez a legnehezebb, legösszetettebb
része a fejlesztésnek - kódolás az elkészült terv implementálása, azaz
a forráskód elkészítése adott nyelven - tesztelés próbafuttatások végzése, ilyenkor
merülnek fel a felhasználás közbeni problémák,
melyeket orvosolni kell szélsoséges helyzetek
vizsgálata - dokumentálás igen fontos része a fejlesztésnek
az egyes fázisok pontos leírása, a felhasználói
leírás ez a továbbfejlesztésnél,
felhasználásnál játszik fontos szerepet
11Keretrendszer - turbo.exe
- Állományok
- Turbo.TPL turbo pascal library, magasszintu
rutinok gyujteménye - Turbo.TPH help, a súgó állományok találhatók
itt (F1) - Turbo.TP a pascal konfigurációs állománya
- Turbo.DSK desktop állomány , legutóbb használt
képernyo minta - .PAS pascal forrásprogram
- .BAK biztonsági másolat
12A Pascal program szerkezete
- program nev Programfej
- uses egysegnev Beépített utasítások
- var valtozonevtipus Deklarációs rész
- ide kerül a konstans, eljárás, függvény
deklaráció is - begin Végrehajtó rész
- programtörzs
- end.
13Változók
- Egy hely, ami alkalmas egy érték tárolására a
számítógép memóriájában - Nevet kap - segítségével a késobbiekben a
változóban lévo objektumra hivatkozni lehet - Érvényességi kör (lokális, globális változók)
- Tartalom szám, szöveg, boolean kifejezés,
konstans, stb.
14Változó típusok egészek
- Shortint
- -128 - 127, elojeles, 8 bites
- Integer
- -32768 - 32767, elojeles, 16 bites
- Longint
- -2147483648 - 2147483647, elojeles, 32 bites
- Byte
- 0 - 255, elojel nélküli, 8 bites
- Word
- 0 - 65535, elojel nélküli, 16 bites
15Változó típusok valósak
- Real
- -2.9-39- 1.738, 11-12 számjegy, 6 byte-os.
- Single
- -1.5-45- 3.438, 7-8 számjegy, 4 byte-os.
- Double
- -5.0-324- 1.7308, 15-16 számjegy, 8 byte-os.
- Extended
- -3.4-4932- 1.14932, 19-20 számjegy, 10
byte-os. - Comp
- -9.2-18- 9.218, 19-20 számjegy, 8 byte-os.
16Tömb, rekord, típus
- Tömb
- Ugyanolyan típusú változók tárolására szolgáló
adathalmaz - Rekord
- Összetartozó adatokat, de többféle típusú
változót tudunk eltárolni benne (például egy
személy neve, címe, születési ideje és helye,
stb) - Pointer
- A pointer a memória meghatározott címére mutat
- Text
- Típus nélküli file
- File of-
- Típusos file
17Deklaráció - szintaktika
- Változó
- var valtozonev1 tipus
- valtozonev2, valtozonev3 tipus
- Tömb
- nev array1..10 of integer
- matrix array1..10,1..10 of integer
- Típusdefniálás
- type nev set of elemek felsorolása
- Record típus
- type nev record a,b,c,dtípus end
- Konstans
- const konstansvaltozo ertek
18Iteráció
- elöl tesztelos ciklus
- while kifejezes do utasitas
- hátul tesztelos ciklus
- repeat utasitas until feltetel
- növekményes ciklus fel
- for kezdo to veg do utasitas
- növekményes ciklus le
- for kezdo down to veg do utasitas
19Szelekció
- választás
- case kifejezes of
- ertekutasitas
- ertekutasitas
-
- else utasitas
- end
- feltételes utasítás
- if feltetel then utasitas
- if feltetel then utasitas else utasitas
20Muveletek
- maradékos osztás mod
- egészosztás div
- és and
- léptetés balra shl
- igaz, hamis true, false
21Függvények, eljárások
- Használatuk
- - többször szeretnénk meghívni
- - máshol is használni szeretnénk
- - paraméterek adhatók át (lokálisak)
- - a függvény visszatér egy értékkel
- Függvények
- function nev(argumentumok)tipus
- Pl. Abs(numerikus kifejezés)
- függvény valós vagy egész szám abszolút értékét
adja vissza - Eljárások
- procedure nev (argumentumok)
- Pl. Arc(X, Y, Kezdoszög, Zárószög, Sugár)
eljárás grafikus módban - körcikket rajzol
22Függvények
- adatbevitel Readln(változóaz.)
- Read(változóaz.)
- megjelenítés képernyon Write(kifejezés)
- Writeln(kifejezés)
- képernyo pozíció GotoXY(Xpoz, Ypoz)
- képernyo törlés ClrScr
- képernyo sor törlése ClrEol /crt unit/
- véletlen szám (0- h) Radom(h)
- négyzet Sqr(i)
- négyzet gyökvonás Sqrt(i)
- kerekítés Round(i)
23Karakterlánc függvények
- lánc hossza
- length(karakterlánc)
- a lánc egy darabját adja copy(karakterlánc,kezd,da
rab) - részláncot keres
- pos(részlánc, karakterlánc)
24Karakterlánc eljárások
- törlés delete(karlánc,kezd, darab)
- beszúrás
- insert(részlánc,karlánc,pozíció)
- számot karakterlánccá alakítja
- str(szám, karakterlánc)
- karláncot számmá alakítja val(karlánc, szám,
kód)
25Egyéb
- a karakterrel visszatéro fv
- ReadKey
- billentyuzet puffert vizsgáló boolean
fv KeyPressed - késleltetés
- delay(ezredmásodperc)
- zenélés
- sound(frekvencia)
26Fájlkezelés
- Lépései programozási nyelvtol függetlenek
- - fájl megnyitása
- - adatok írása, olvasása
- - fájl lezárása
- Fajtái
- - szöveges fájlok
- - típusos fájlok
- - típus nélküli fájlok
27Szöveges fájlok
- - Karaktereket tartalmazó sorokból épülnek fel
- - Lezárása CR/LF (kocsi vissza/soremelés)
- (ASCII kódja 13 és 10)
- - Szekvenciális elérés és használat
- - Vagy csak olvasható vagy csak írható
28Szöveges fájlok
- - Használatakor deklarálni kell egy változót,
típusa text - var fájl_változó Text
- - A fájlváltozóhoz hozzá kell rendelni a fájlt
- Assign(fájl_változó, fájl_név)
- - Ezek után jöhetnek a muveletek
29Szöveges fájlok - megnyitás
- reset(fájl_változó)
- csak olvasásra nyitja
- eof függvény true értékkel jelzi, ha a fájl
üres. - rewrite(fájl_változó)
- új szövegfájlt hoz létre, vagy felülír egy
létezot - append(fájl_változó)
- létezo fájlt nyit meg csak hozzáírásra
30Szöveges fájlok I/O muveletek
- Írás
- write(fájl_változó, kifejezéslista)
- writeln(fájl_változó, kiflista)
- Olvasás
- read(fájl_változó, kifejezéslista)
- readln(fájl_változó, kifejezéslista)
31Szöveges fájlok eof, eoln
- - Fájl végének ellenorzése
- eof(fájl_változó)
- true az aktuális pozíció a fájl utolsó
eleme után helyezkedik el - - Sor végének ellenorzése
- eoln(fájl_változó)
- függvény true értékkel tér vissza, ha az
aktuális pozíció az end-of-line (sorvége -
CR/LF) jelzon áll - seekeoln(fájl_változó) (true sor vége)
- seekeof(fájl_változó) (trueállomány vége)
- http//www.lib.uni-miskolc.hu/digital/0001/html/de
lphi5.htm
32Fájlkezelés
- Assignfile hozzárendelés
- Reset nyitás csak olvasásra
- Rewrite nyitás írásara, felülírásra
- Read I/O olvasás
- Write I/O írás
- Closefile lezárás
-
33Hibakezelés
- - I/O muveleteknél fellépo hibák kezelése
lehetséges - - programrészletet a I- és I direktívák
közé kell helyezni - - IOResult függvény visszaadott értékébol
következtethetünk a hiba megjelenésére (tároljuk
integer változóba!) - - IOResult visszatérési értéke
- 0, ha a legutolsó I/O muvelet sikeres volt
run-time hiba kódja, ha sikertelen
34Hibakezelés - példa
- I-
- Reset(f) megnyitás
- IorIOResult változóba mentés
- if Iorltgt0 then
- begin
- WriteLn('A fájl nem létezik!')
- Exit
- end
- I
35Grafika
- Grafikus képernyo használatához
- - GRAPH unit
- - .BGI fájlok
- - a TP/BGI könyvtárban található
- - az általunk használt VGA üzemmódhoz az
EGAVGA.BGI fájlra lesz szükség - - ez a fájl a videokártya vezérléséhez
szükséges alacsonyszintu parancsokat
tartalmazza
36Grafika
- DetectGraph(gd,gm)
- gd a grafikus meghajtó, a monitor típus kódja
- gm a képernyofelbontás kódja
- InitGraph(gd,gm,'c\tp\bgi')
- kapcsolja be a grafikus képernyot
- ReadLn
- az ábra megjelenítése
- CloseGraph
- a grafikus képernyo bezárása
37Grafika
- SetBkColor(white)
- beállítja a háttérszínt, majd ezzel a színnel
töröljük a képernyot ClearDevice - SetColor(red)
- eljáráshívással a rajz színét állítjuk be
- SetTextStyle(0,0,2)
- a megjelenítendo szöveg karaktertípusát, irányát
és a nagyítás mértékét
38Grafikai függvények
- putpixel(x,yintegerszinword)
- az (x,y) koordinátájú pontot szin színure festi
- getpixel(x,y)word
- visszaadja az (x,y) koord. pont színét
- line(x1,y2,x2,y2)
- adott színnel és stílussal vonalat húz két pont
között - setcolor(szinword)
- aktuális szín beállítása (16 szín 0-15ig,
konstansok) - getcolorszin
- értéke 0 és 15 között lehet, visszaadja az
aktuális színt - setlinestyle(stilus, minta, vastagsag)
- a húzott vonalak stílusát SolidLn (0,normál),
DottedLn (1,pontozott), CenterLn (2,szaggatott),
DashedLn (3,szaggatott), UserBitLn (4, a
minta-ban definiált mintájú) vastagságát
NormWidth (0,1,2), illetve ThickWidth (3)
39Grafikai alakzatok
- rectangle(x1,y1,x2,y2)
- téglalapot rajzol
- circle(x,y,radiusinteger)
- kört rajzol x,y középponttal és radius
sugárral - drawpoly(pword var pontok)
- sokszöget rajzol
40Feladatok
- 1. Számok bekérése, sorrendben való kiíratása
- 2. Osztás adott pontossággal
- 3. Maximumelem kiválasztás tömbbol
- 4. Buborékrendezés
- 5. Lotto legtöbbször kisorsolt elem
- 6. Fájlkezelés a rejtö.txt fájl tartalmát
átmásolni egy másik fájlba - 7. Menürajzolás
- 8. Vonal, kör, rúd kirajzoltatása
- 9. Egy pontba érintkezo koncentrikus körök
kirajzolása - Hf.
- 1. Mátrix szorzása (tükrözése)
- 2. Bekért személyi adatok fájlba mentése
- 3. Alakzatok kirajzolása bekért paraméterek
szerint
41Megoldás 1.Számok bekérése, sorrendben való
kiíratása
if nlt30 then begin sorrend for i 1
to n do begin for j 1 to n do
begin if AiltAj then
begin tmpAi
AiAj
Ajtmp end end
end kiiratas for i 1 to n do
begin if AiltgtAi1 then write(' '
,Ai, '') end readln end else
readln end.
- Program hf1 szam beolvasasa, sorrenben
kiiratasa - uses Crt
- var
- i,j,n,tmp integer
- A array1..30 of integer
- begin
- clrscr
- bekeres
- for i1 to n do Ai0
- write('mennyi n erteke?')
- readln(n)
- if ngt30 then writeln('tul sok a szam')
- else
- for i1 to n do
- begin
- write('kerem ezt az ',i,'szamot')
- readln(Ai)
42Megoldás 2.Osztás adott pontossággal
Str(osztando div oszto, t)
eredmenyeredmenyt end writeln('az
eredmeny',eredmeny) masik writeln writeln
writeln('kerem az osztot') readln(szam1) writel
n('kerem az osztandot') readln(szam2) writeln('h
any tizedesig') readln(hanytizedesig) tmp
szam1 div szam2 write('az eredmeny
',tmp,',') maradekszam1 mod szam2 tmp
(maradek10) div szam2 write(tmp) for j1 to
hanytizedesig do begin maradekmaradek
mod szam2 tmp(maradek10) div szam2
write(maradek) end readkey end.
- program osztas
- uses crt
- var
- eredmeny,tstring
- osztando, osztolongint
- pontossagbyte
- ibyte ciklusvaltozo
- szam1,szam2longint
- hanytizedesig,tmp,maradek,jinteger
- begin
- clrscr
- writeln('kerem az osztot')
- readln(oszto)
- writeln('kerem az osztandot')
43Megoldás 3.Jelszóbekéro
- PROGRAM CiklusDemo2Jelsz? be?r sa
- Uses CRT
- VAR jelszo,tippstring
- cchar
- BEGIN
- jelszo'TM'
- Repeat
- tipp''
- Write('Krem a jelsz?t (Enterkilps) ')
- repeat
- cReadkey
- if cltgt13
- then
- begin
- Write('')
- tipptippc
- end
- until c13
- Writeln
44Megoldás 4. Maximumelem kiválasztás tömbbol
- PROGRAM maximumkivalasztas
- Uses CRT
- CONST
- n10
- aarray1..n of integer(2,20,2,2,2,-2,5,2
,2,2) - VAR m,cvinteger
- BEGIN
- clrscr
- m1
- for cv2 to n do
- if acvgtam then mcv
- writeln('a legnagyobb elem helye ', m, '
erteke', am) - readkey
- END.
45Megoldás 5. Buborékrendezés
- PROGRAM buborekrendezes
- Uses CRT
- CONST
- n10
- aarray1..n of integer(2,20,2,2,2,-2,5,2
,-5,2) - VAR m,cv,tempinteger
- voltBoolean false, true
- BEGIN
- clrscr
- repeat
- voltfalse
- for cv1 to n-1 do
- if acvgtacv1 then
- begin
- tempacv
- acvacv1
- acv1temp
- volttrue
46Megoldás 6.Lotto legtöbbször kisorsolt elem
- program lotto_proceduras
- uses crt
- CONST
- N90
- Huzasarray1..N of word(133,112,156,124,115,
131,140,128,117,156, - 130,150,151,129,140,
124,122,136,136,139, - 131,141,140,133,140,
125,126,122,156,112, - 115,133,125,138,139,
131,127,127,111,116, - 135,148,135,121,131,
133,149,125,145,131, - 146,134,124,141,126,
144,123,124,126,130, - 129,125,107,154,130,
143,136,125,146,116, - 138,143,135,120,155,
134,160,135,129,125, - 138,125,129,132,131,
152,118,109,116,138) - Huzasarray1..N of word (137,115,161,128,11
8,133,146,130,118,158, - 132,155,156,130,141,125,127,142,136,147,
- 136,145,146,139,145,127,127,128,160,116,
- 118,137,133,142,142,134,132,129,113,122,
- 138,154,137,123,134,138,152,126,147,135,
- 149,136,127,146,133,151,124,127,133,138,
47Megoldás 6. folyt.Fájlkezelés a rejtö.txt
fájl tartalmát átmásolni egy másik fájlba
- var iinteger
- Begin
- Atlag tmp div 90
- Kevesebbszer0
- for i1 to N do
- if HuzasiltAtlag then Inc(Kevesebbszer)
- Tobbszor N-Kevesebbszer
- writeln('atlagnal kevesebbszer kihuzott
',Kevesebbszer) - writeln('ill. tobbszor kihuzott ',Tobbszor)
- End
- PROCEDURE Maximum
- var iinteger
- Begin
- PROCEDURE Atlagszamitas
- tmp0
- for i1 to N do if (tmpltHuzasi) then
PROCEDURE Minimum Procedure maxkereses(var
minteger) hogy tmp valt honnet induljon
Begin m1 for cv2 to N
do if HuzascvgtHuzasm then mcv
End Begin maxkereses(m) tmpHuzasm
for i1 to N do if (tmpgtHuzasi) then
begin tmpHuzasi valti
end writeln('a legritkabban kihuzott
szam',valt) End BEGIN clrscr Huzasszam Atla
gszamitas Maximum Minimum readkey END.
48Megoldás 7.Menürajzolás
- PROGRAM menu_keszites
- Uses CRT
- VAR mchar
- a,binteger
- Begin
- TextBackGround(Blue)
- TextColor(Black)
- clrscr
- GotoXY(33,12) write('----------')
- GotoXY(33,13) write('
') - GotoXY(33,14) write('----------')
- a0
- b0
- arandom(21)
- brandom(11)5
- if ((alt10) and (blt10)) then
49Megoldás 8.Vonal, kör, rúd kirajzoltatása
- PROGRAM grafik
- Uses CRT,GRAPH
- VAR videokartya,Grafikusmodinteger
- BEGIN
- videokartyaDetect
- InitGraph(videokartya,Grafikusmod,'C\tp\bgi')
- SetBkColor(9)
- SetLineStyle(3,3,1)
- SetFillStyle(HatchFill,1)
- Bar(300,300,350,350)
- Line(10,10,200,200)
- Circle(250,250,20)
- readkey
- CloseGraph
- END.
50Megoldás 9.Egy pontba érintkezo koncentrikus
körök kirajzolása
- program KOROK
- uses GRAPH
- var gd,gm,iinteger
- begin
- DetectGraph(gd,gm)
- InitGraph(gd, gm,'')
- for i1 to 10 do begin
- Circle(200i10,200,60i10)
- end
- ReadLn
- CloseGraph
- end.