Delphi programozás alapjai

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Algoritmusok.
 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Algoritmus és programozás

Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Programozás alapjai.
Turbo Pascal Változók.
Programozás alapjai.
Bevezetés a Java programozásba
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Nat Pedellus Informatika 8. osztály óra.
Alapok 2013/2014, őszi szemeszter gyakorlati foglalkozás Automatizálási tanszék.
Az információ és kódolása Kovácsné Lakatos Szilvia
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Programozási és szoftverfejlesztési ismeretek I. PENF511
Programozás I. Adatállományok dr Póder Margit f. docens Rendszer és Szoftvertechnológia Tanszék.
Vizuális és web programozás II.
ISZAM III.évf. részére Bunkóczi László
Egyszerű típusok csoportosítása
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Programozás Az adatokról C# -ban.
108 A kísérletek célja egy speciális anyag optimális előállítási körülményeinek meghatározása volt. A célfüggvény a kihozatal %. melynek maximális értékét.
Turbo Pascal 11..
Programozási nyelvek Páll Boglárka.
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Karakterláncok Páll Boglárka.
Összetett adattípusok a Pascal nyelvben
Programozási nyelvek Páll Boglárka.
A Pascal programozási nyelv alapjai
Ismétlés A pascal program szerkezete: program programnev; Programfej
Karakterláncok Páll Boglárka. Karakterláncok Karakterlánc olyan karakterek sorozata amelyek az ASCII táblázatban találhatók. Maximális hossza rögzített,
Karakterláncok Páll Éva Boglárka. Ismétlés Deklaráció var s:string; Length(karlánc) Concat(karlánc1,...,karláncn) Copy(miből,honnan,hányat) Delete(miből,honnan,hányat)
A Pascal programozási nyelv alapjai
Tömbök és programozási tételek
Programozási nyelvek, Pascal
Rendezések és szövegkezelő függvények
Fájlkezelés Pascalban
Adatállományok.
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
Összetett adattípusok
Pozicionálás 1. Kurzor elhelyezése a képernyőn 2. Színkezelés.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Programozási nyelvek.
Delphi programozás SRTNB020
A képernyő kezelése: kiíratások
A képernyő kezelése: kiíratások (2)
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Programozás. Programozási nyelvek: Gépi nyelv A számítástechnika őskorában egyedüli lehetőség volt a gép bitsorozattal való programozása. Minden processzor.
Webprogramozó tanfolyam
Objektum orientált programozás
A Visual Basic nyelvi elemei
File- típus-konstrukciók Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Pole (array of...).  Zložený datový typ na ukladanie viacerých premených  Zápis: var meno_pola : array [ konce intervala ] of základný typ ; Základné.
Fontos tudnivalók A MATLAB egy fajta objektummal dolgozik (Mátrix)
Török Katalin és Marosi Nóra 11/c. Pascal: Az es években megjelent magas szintű programozási nyelv, közel áll az emberi gondolkodáshoz. Nevét.
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
Nat Pedellus Free Pascal Elágazások..
Free pascal feladatok
Algoritmizálás, adatmodellezés
Excel programozás (makró)
Programozási és szoftverfejlesztési ismeretek I..
Excel programozás (makró)
A CLIPS keretrendszer
Bevezetés a programozásba Algoritmikus gondolkodás
Az információ.
Előadás másolata:

Delphi programozás alapjai Nagyváradi Anett

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

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

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

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

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

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

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

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

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

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

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.

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.

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

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.

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

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 = set of elemek felsorolása; Record típus type nev = record a,b,c,d:típus; end; Konstans const konstansvaltozo = ertek;

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 down to veg do utasitas;

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

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

Függvények, eljárások Használatuk: Függvények - 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

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);

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);

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);

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

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

Szö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ó

Szö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 műveletek

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

Szöveges fá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);

Szöveges fá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

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

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

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+}

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

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

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

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)

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

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

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 for j :=1 to n do if A[i]<A[j] then tmp:=A[i]; A[i]:=A[j]; A[j]:=tmp; end; {kiiratas} if A[i]<>A[i+1] then write(' ' ,A[i], ''); readln; end else 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 write('kerem ezt az ',i,'szamot'); readln(A[i]); end;

Megoldás 2. Osztás adott pontossággal Str(osztando div oszto, t); eredmeny:=eredmeny+t; end; writeln('az eredmeny',eredmeny); { masik} 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); 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 osztando:=10*(osztando mod oszto);

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.

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.

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.

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;

Megoldás 6. – folyt. Fájlkezelés – a rejtö 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; 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); 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; 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); BEGIN clrscr; Huzasszam; Atlagszamitas; Maximum; Minimum; readkey; END.

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 GotoXY(33,13); write('║',a,' ',b,'║'); readkey; End.

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.

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 do begin Circle(200+i*10,200,60+i*10); end; ReadLn; CloseGraph; end.