1 / 50

Delphi programozás SRTNB020

Delphi programozás. Delphi programozás SRTNB020. Delphi programozás. Elérhetőség. Boszorkány utca 2. B138-as iroda anettn@morpheus.pte.hu http://morpheus.pte.hu/~anettn. Delphi programozás. Alkalmazott programok. FreePascal Turbo Delphi 2006 Explorer (full, english)

Télécharger la présentation

Delphi programozás SRTNB020

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Delphi programozás Delphi programozásSRTNB020

  2. Delphi programozás Elérhetőség Boszorkány utca 2. B138-as iroda anettn@morpheus.pte.hu http://morpheus.pte.hu/~anettn

  3. Delphi programozás Alkalmazott 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

  4. Delphi programozás Tematika • 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érlők • Internet-, webes-alkalmazások • 2D-, 3D-grafika

  5. Delphi programozás Ajá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] Benkő Tiborné : Programozási feladatok és algoritmusok Delphi rendszerben Computer Books, Budapest, 2002

  6. Delphi programozás Ajánlott irodalom [4] Ray Lischner: Delphi kézikönyv Kossuth Kiadó, 2001 [6] Paul Kimmel: Delphi 6 fejlesztők kézikönyve Panem Kft. , Budapest, 2002 [5] Dr. Fercsik János : Programozás – Delphi Dunaújvárosi Főiskola - jegyzet, 2001 [6] Marco Cantú : Delphi 7 mesteri szinten I. –II. Kiskapu Kft, 2003

  7. 1. ELŐADÁS Bevezetés a programozásba Pascal ismeretek felelevenítése Algoritmikus gondolkodás Programszerkesztés

  8. Szá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égű számjegyből fog állni • Bit - az információ legkisebb egysége (kettes számrendszer egy számjegyének felel meg) • Byte – 8 bit • 1 kB=210 bit = 1024bit • Szó - egyszerre feldolgozható bitek száma (pl.: 32 bites processzor) 210 = 0000 00012

  9. Kettes számrendszer - átváltás 10100110112 = =1·29 + 0·28 + 1·27 + 0·26 + 0·25 + 1·24 + + 1·23 + 0·22 + 1·21 + 1·20 = =29 + 27 + 24 + 23 + 21 + 20 = = 512 + 128 + 16 + 8 + 2 + 1 = = 667

  10. A szoftverfejlesztés lépései • elemzés – problémaelemzés, helyzetfelmérés, igényfelmérés, célok felállítása, idő é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élsősé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

  11. Keretrendszer - turbo.exe Állományok: Turbo.TPL – turbo pascal library, magasszintű rutinok gyűjtemé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épernyő minta *.PAS – pascal forrásprogram *.BAK – biztonsági másolat

  12. A Pascal program szerkezete program nev;{Programfej} uses egysegnev;{Beépített utasítások} var valtozonev:tipus;{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.

  13. Vá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ésőbbiekben a változóban lévő 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.

  14. Változó típusok – egészek Shortint: -128 - 127, előjeles, 8 bites Integer: -32768 - 32767, előjeles, 16 bites Longint: -2147483648 - 2147483647, előjeles, 32 bites Byte: 0 - 255, előjel nélküli, 8 bites Word: 0 - 65535, előjel nélküli, 16 bites

  15. Vá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.

  16. Tö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

  17. Deklaráció - szintaktika Változó var valtozonev1 : tipus; valtozonev2, valtozonev3 : tipus; Tömb nev : array[1..10] of integer; matrix : array[1..10,1..10] of integer; Típusdefniálás type nev = setof elemek felsorolása; Record típus type nev = record a,b,c,d:típus; end; Konstans const konstansvaltozo = ertek;

  18. Iteráció elöl tesztelős ciklus while kifejezes do utasitas; hátul tesztelős ciklus repeat utasitas until feltetel; növekményes ciklus fel for kezdo to veg do utasitas; növekményes ciklus le for kezdo downto veg do utasitas;

  19. Szelekció választás case kifejezes of ertek:utasitas; ertek:utasitas; … else utasitas; end; feltételes utasítás if feltetel then utasitas; if feltetel then utasitas else utasitas;

  20. Műveletek maradékos osztás mod egészosztás div és and léptetés balra shl igaz, hamis true, false

  21. Fü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, Kezdőszög, Zárószög, Sugár); eljárás grafikus módban - körcikket rajzol

  22. Függvények adatbevitel Readln[(változóaz.)]; Read[(változóaz.)]; megjelenítés képernyőn Write[(kifejezés)]; Writeln[(kifejezés)]; képernyő pozíció GotoXY(Xpoz, Ypoz); képernyő törlés ClrScr; képernyő 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);

  23. Karakterlánc függvények: lánc hossza length(karakterlánc); a lánc egy darabját adja copy(karakterlánc,kezd,darab); részláncot keres pos(részlánc, karakterlánc);

  24. Karakterlá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);

  25. Egyéb a karakterrel visszatérő fv ReadKey; billentyűzet puffert vizsgáló boolean fvKeyPressed; késleltetés delay(ezredmásodperc); zenélés sound(frekvencia);

  26. Fájlkezelés Lépései programozási nyelvtől 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

  27. Szövegesfá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ó

  28. Szövegesfá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 műveletek

  29. Szövegesfá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étezőt append(fájl_változó); létező fájlt nyit meg csak hozzáírásra

  30. Szövegesfájlok –I/O műveletek Í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);

  31. Szövegesfájlok – eof, eoln - Fájl végének ellenőrzé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 ellenőrzé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) jelzőn á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/delphi5.htm

  32. Fá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

  33. Hibakezelés - I/O műveleteknél fellépő 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éből 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 művelet sikeres volt run-time hiba kódja, ha sikertelen

  34. Hibakezelés - példa {$I-} Reset(f); {megnyitás} Ior:=IOResult; {változóba mentés} if Ior<>0 then begin WriteLn('A fájl nem létezik!'); Exit; end; {$I+}

  35. Grafika Grafikus képernyő 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 alacsonyszintű parancsokat tartalmazza

  36. Grafika DetectGraph(gd,gm); gd a grafikus meghajtó, a monitor típus kódja gm a képernyőfelbontás kódja InitGraph(gd,gm,'c:\tp\bgi'); kapcsolja be a grafikus képernyőt ReadLn; az ábra megjelenítése CloseGraph; a grafikus képernyő bezárása

  37. Grafika SetBkColor(white); beállítja a háttérszínt, majd ezzel a színnel töröljük a képernyőt: ClearDevice; SetColor(red); eljáráshívással a rajz színét állítjuk be SetTextStyle(0,0,2); a megjelenítendő szöveg karaktertípusát, irányát és a nagyítás mértékét

  38. Grafikai függvények putpixel(x,y:integer;szin:word); az (x,y) koordinátájú pontot szin színűre 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(szin:word); aktuális szín beállítása (16 szín 0-15ig, konstansok) getcolor:szin; é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)

  39. Grafikai alakzatok rectangle(x1,y1,x2,y2); téglalapot rajzol circle(x,y,radius:integer); kört rajzol x,y középponttal és radius sugárral drawpoly(p:word; var pontok); sokszöget rajzol

  40. Feladatok 1. Számok bekérése, sorrendben való kiíratása 2. Osztás adott pontossággal 3. Maximumelem kiválasztás tömbből 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 érintkező 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

  41. Megoldás 1.Számok bekérése, sorrendben való kiíratása if n<30 then begin {sorrend} for i:= 1 to n do begin for j :=1 to n do begin if A[i]<A[j] then begin tmp:=A[i]; A[i]:=A[j]; A[j]:=tmp; end; end; end; {kiiratas} for i:= 1 to n do begin if A[i]<>A[i+1] then write(' ' ,A[i], ''); end; readln; end else readln; end. Program hf1; {szam beolvasasa, sorrenben kiiratasa} uses Crt; var i,j,n,tmp: integer; A : array[1..30] of integer; begin clrscr; {bekeres} for i:=1 to n do A[i]:=0; write('mennyi n erteke?'); readln(n); if n>30 then writeln('tul sok a szam') else for i:=1 to n do begin write('kerem ezt az ',i,'szamot'); readln(A[i]); end;

  42. Megoldás 2.Osztás adott pontossággal Str(osztando div oszto, t); eredmeny:=eredmeny+t; end; writeln('az eredmeny',eredmeny); { masik} writeln; writeln; writeln('kerem az osztot'); readln(szam1); writeln('kerem az osztandot'); readln(szam2); writeln('hany tizedesig'); readln(hanytizedesig); tmp:= szam1 div szam2; write('az eredmeny: ',tmp,','); maradek:=szam1 mod szam2; tmp:= (maradek*10) div szam2; write(tmp); for j:=1 to hanytizedesig do begin maradek:=maradek mod szam2; tmp:=(maradek*10) div szam2; write(maradek); end; readkey; end. program osztas; uses crt; var eredmeny,t:string; osztando, oszto:longint; pontossag:byte; i:byte; {ciklusvaltozo} szam1,szam2:longint; hanytizedesig,tmp,maradek,j:integer; begin clrscr; writeln('kerem az osztot'); readln(oszto); writeln('kerem az osztandot'); readln(osztando); writeln('hany tizedesig'); readln(pontossag); Str(osztando div oszto, eredmeny); eredmeny:=eredmeny+','; for i:=1 to pontossag do begin osztando:=10*(osztando mod oszto);

  43. Megoldás 3.Jelszóbekérő PROGRAM CiklusDemo2;{Jelsz˘ beˇr sa} Uses CRT; VAR jelszo,tipp:string; c:char; BEGIN jelszo:='TM'; Repeat tipp:=''; Write('K‚rem a jelsz˘t (Enter=kil‚p‚s): '); repeat c:=Readkey; if c<>#13 then begin Write('*'); tipp:=tipp+c; end; until c=#13; Writeln; Until (tipp=jelszo) or (tipp=''); if tipp=jelszo then Writeln('Bel‚pett!') else Writeln('Nem l‚pett be'); END.

  44. Megoldás 4. Maximumelem kiválasztás tömbből PROGRAM maximumkivalasztas; Uses CRT; CONST n=10; a:array[1..n] of integer=(2,20,2,2,2,-2,5,2,2,2); VAR m,cv:integer; BEGIN clrscr; m:=1; for cv:=2 to n do if a[cv]>a[m] then m:=cv; writeln('a legnagyobb elem helye: ', m, ' erteke', a[m]); readkey; END.

  45. Megoldás 5. Buborékrendezés PROGRAM buborekrendezes; Uses CRT; CONST n=10; a:array[1..n] of integer=(2,20,2,2,2,-2,5,2,-5,2); VAR m,cv,temp:integer; volt:Boolean; {false, true} BEGIN clrscr; repeat volt:=false; for cv:=1 to n-1 do if a[cv]>a[cv+1] then begin temp:=a[cv]; a[cv]:=a[cv+1]; a[cv+1]:=temp; volt:=true; end; until not volt; for cv:=1 to n do write(a[cv]:5); writeln; readkey; END.

  46. Megoldás 6.Lotto – legtöbbször kisorsolt elem program lotto_proceduras; uses crt; CONST N=90; { Huzas:array[1..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);} Huzas:array[1..N] of word= (137,115,161,128,118,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, 136,127,107,157,134,149,141,129,149,121, 145,146,141,128,157,140,164,139,135,129, 141,126,133,133,139,155,121,111,121,142); var temp,tmp,osszhuzas:word; i,m,cv,valt,Kevesebbszer,Tobbszor,Atlag:integer; PROCEDURE Huzasszam; var i:integer; Begin tmp:=0; for i:=1 to N do tmp:=tmp+Huzas[i]; writeln('A huzasok szama', tmp div 90); End;

  47. Megoldás 6. – folyt.Fájlkezelés – a rejtö.txt fájl tartalmát átmásolni egy másik fájlba var i:integer; Begin Atlag:= tmp div 90; Kevesebbszer:=0; for i:=1 to N do if Huzas[i]<Atlag then Inc(Kevesebbszer); Tobbszor:= N-Kevesebbszer; writeln('atlagnal kevesebbszer kihuzott: ',Kevesebbszer); writeln('ill. tobbszor kihuzott ',Tobbszor); End; PROCEDURE Maximum; var i:integer; Begin PROCEDURE Atlagszamitas; tmp:=0; for i:=1 to N do if (tmp<Huzas[i]) then begin tmp:=Huzas[i]; valt:=i; end; writeln('a leggyakrabban kihuzott szam:',valt); End; PROCEDURE Minimum; Procedure maxkereses(var m:integer); {hogy tmp valt honnet induljon} Begin m:=1; for cv:=2 to N do if Huzas[cv]>Huzas[m] then m:=cv; End; Begin maxkereses(m); tmp:=Huzas[m]; for i:=1 to N do if (tmp>Huzas[i]) then begin tmp:=Huzas[i]; valt:=i; end; writeln('a legritkabban kihuzott szam:',valt); End; BEGIN clrscr; Huzasszam; Atlagszamitas; Maximum; Minimum; readkey; END.

  48. Megoldás 7.Menürajzolás PROGRAM menu_keszites; Uses CRT; VAR m:char; a,b:integer; Begin TextBackGround(Blue); TextColor(Black); clrscr; GotoXY(33,12); write('╔══════════╗'); GotoXY(33,13); write('║ ║ '); GotoXY(33,14); write('╚══════════╝'); a:=0; b:=0; a:=random(21); b:=random(11)+5; if ((a<10) and (b<10)) then begin GotoXY(33,13); write('║',a,' ',b,'║'); end; if ((a>9) and (b>9)) then begin GotoXY(33,13); write('║',a,' ',b,'║'); end; readkey; End.

  49. Megoldás 8.Vonal, kör, rúd kirajzoltatása PROGRAM grafik; Uses CRT,GRAPH; VAR videokartya,Grafikusmod:integer; BEGIN videokartya:=Detect; 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.

  50. Megoldás 9.Egy pontba érintkező koncentrikus körök kirajzolása program KOROK; uses GRAPH; var gd,gm,i:integer; begin DetectGraph(gd,gm); InitGraph(gd, gm,''); for i:=1 to 10 dobegin Circle(200+i*10,200,60+i*10); end; ReadLn; CloseGraph; end.

More Related