Programozási és szoftverfejlesztési ismeretek I. PENF511

Slides:



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

C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Koordináták, függvények
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
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.
Hatékonyságvizsgálat, dokumentálás
Gyakorló feladatsor eljárásokra Készítette: Rummel Szabolcs Elérhetősé:
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Algoritmus és programozás
Programozás alapjai.
Turbo Pascal Változók.
Programozás alapjai.
Bevezetés a Java programozásba
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:
Készítette: Pető László
Nat Pedellus Informatika 8. osztály óra.
Delphi programozás alapjai
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
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.
Összetett adattípusok
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
Szintaktikai, szemantikai szabályok
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
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Programozási nyelvek.
Delphi programozás SRTNB020
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
A képernyő kezelése: kiíratások
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.
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)
Programozás, programtervezés
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ó)
Az 5,6,7 laborok VBA anyagának összefoglalása
Programozási és szoftverfejlesztési ismeretek I..
Programozási alapok.
A CLIPS keretrendszer
Bevezetés a programozásba Algoritmikus gondolkodás
1. Bevezetés A programozásba
Előadás másolata:

Programozási és szoftverfejlesztési ismeretek I. PENF511 Nagyváradi Anett

Elérhetőség Nagyváradi Anett Boszorkány utca 2. B138-as iroda Programozási és szoftverfejlesztési ismeretek I. Elérhetőség Nagyváradi Anett Boszorkány utca 2. B138-as iroda anettn@morpheus.pte.hu http://morpheus.pte.hu/~anettn http://e-oktat.pmmf.hu/delphi_programozas Időpontok 6-11. heteken (7. hét őszi szünet) 14:30-17:30-ig (4 x 45 perc) - A119-e sterem

Alkalmazott programok Programozási és szoftverfejlesztési ismeretek I. Alkalmazott programok TurboPascal - ingyenes http://www.kobakbt.hu/index.html > Letöltés programok > > Programnyelvek > tp70.exe Turbo Delphi 2006 Explorer (full, english) http://cc.codegear.com/free/turbodelphi Borland Delphi 7.0 - licenszköteles

Tematika Programozás I. Programozás II. Programozási és szoftverfejlesztési ismeretek I. Tematika Programozás I. 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 Programozás II. Adatbáziskezelés – megvalósítás Delphi környezetben SQL - adathozzáférési komponensek, adat-érzékeny vezérlők

Ajánlott irodalom [1] Angster Erzsébet : Programozás tankönyv I.- II. Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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

Programozási és szoftverfejlesztési ismeretek I. Félévi követelmények 1 db zárthelyi dolgozat – az utolsó előadás időpontjában (írásban és számítógépen) témakörök: - számábrázolás, számrendszerek - folyamatábra - egyszerűbb programozási problémák megoldása (feltételes utasítások, ciklusutasítások) - egy meghatározott feladatra Delphi program elkészítése Pótlás: vizsgaidőszakban az ETR szerint meghirdetett időpontokban

Bevezetés a programozásba Algoritmikus gondolkodás Programozási és szoftverfejlesztési ismeretek I. 1. ELŐADÁS Bevezetés a programozásba Pascal ismeretek Algoritmikus gondolkodás Programszerkesztés

Programozási és szoftverfejlesztési ismeretek I. Számábrázolás A szg. a számokat mindig meghatározott számú számjeggyel ábrázolja Bináris/kettes számrendszer (van feszültség, nincs feszültség) 0 és 1 Tizes számrsz. 1 2 3 4 5 6 7 8 9 10 11 100 101 110 111 1000 1001 1010 Kettes számrsz. Bináris szám általános alakja:

Számrendszerek – bináris átváltás Programozási és szoftverfejlesztési ismeretek I. Számrendszerek – bináris á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 = = 66710 3510 = 35 : 2 = 17, maradék: 1 17 : 2 = 8, 8 : 2 = 4, maradék: 0 4 : 2 = 2, 2 : 2 = 1, 1 : 2 = 0, = 1000112

Számrendszerek – hexa átváltás Programozási és szoftverfejlesztési ismeretek I. Számrendszerek – hexa átváltás 0000 = 0 1000 = 8 0001 = 1 1001 = 9 0010 = 2 1010 = A (10) 0011 = 3 1011 = B (11) 0100 = 4 1100 = C (12) 0101 = 5 1101 = D (13) 0110 = 6 1110 = E (14) 0111 = 7 1111 = F (15) Bináris 1001 1011 0010 0011 Hexadecimális 9 B 2 3

Programozási és szoftverfejlesztési ismeretek I. Számábrázolás 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

Programozási és szoftverfejlesztési ismeretek I. Algoritmus utasítássorozat, részletes útmutatás, mely valamely probléma megoldására alkalmas struktúráját szekvenciák, szelekciók illetve iterációk adják, amelyeket tetszőleges mélységben egymásba lehet ágyazni algoritmus leírásának egyértelműnek, pontosnak, lépésenként végrehajthatónak kell lennie Cél: bemenő (input) adatokból kimenő (output adatokat állítson elő)

Programozási és szoftverfejlesztési ismeretek I. Folyamatábra Segítségével a program viselkedését, folyamatát részletekbe menően ábrázolhatjuk – algoritmus leíró eszköz Nyilak, csomópontok Tevékenység csomópont: Tevékenység végrehajtódik Döntés csomópont Igaz, hamis elágazás

Folyamatábra – folyt. Egyéb jelölések: Programozási és szoftverfejlesztési ismeretek I. Folyamatábra – folyt. Egyéb jelölések: Példa: ciklusutasítások megvalósítása Elöltesztelős ciklus Hátultesztelős ciklus i : ciklusváltozó i < 10 : feltétel

Programozási és szoftverfejlesztési ismeretek I. Folyamatábra – Példa 1

Programozási és szoftverfejlesztési ismeretek I. Folyamatábra – Példa 2 Megkérdezem, vállalkozik-e valaki arra, hogy bemenjen krétáért a Tanszékre. Ha igen, menjen be a Tsz-re. Kérje meg Editet, adjon egy darab krétát. Ha nincs Edit, keressen valaki mást, s kérjen tőle krétát. Jöjjön vissza a krétával, adja ide. Ha nem talál senkit, jöjjön vissza üres kézzel. Ha nem vállalkozik senki a hallgatók közül, bemegyek én. Kiveszek a szekrényből egy darab krétát. Visszajövök az előadóba, s folytatjuk az órát. Forrás: Dr. Szabó László: A Pascal programnyelv

Programozási és szoftverfejlesztési ismeretek I. Folyamatábra – Példa 3 Forrás: http://www.berzsenyi.hu/erben/www/C05/inf/progalap/alap05/progleir.pdf

Szoftverfejlesztés lépései Programozási és szoftverfejlesztési ismeretek I. 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

A Pascal nyelv Niklaus Wirth (Zürich) 1960-as évek Programozási és szoftverfejlesztési ismeretek I. A Pascal nyelv Niklaus Wirth (Zürich) 1960-as évek Blaise Pascalról, a nagy 17. századi francia matematikusról szoftvercégek Pascal változatai közül Borland cégé lett a legsikeresebb

A Pascal nyelv építőelemei Programozási és szoftverfejlesztési ismeretek I. A Pascal nyelv építőelemei Szimbólumok (műveleti, relációs jelek, stb.) Fenntartott szavak (a rsz. által használt kulcsszavak) Azonosítók (programnév, változók, konstansok, eljárások, függvények nevei) Címkék (label kulcsszóval adható meg, goto utasítással elérhető) Elválasztójelek (szóelválasztó a szóköz, sorvég jel a pontosvessző, a program végén lévő end után pont) - lásd késöbb -

Keretrendszer – turbo.exe Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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, főprogram} programtörzs end.

Programozási és szoftverfejlesztési ismeretek I. Változók Egy hely, ami alkalmas egy érték tárolására a számítógép memóriájában Név - nevet kap, mely segítségével a későbbiekben a változóban lévő objektumra hivatkozni lehet Érvényességi kör - lokális változók - globális változók Tartalom, típus - szám, szöveg, boolean kifejezés, konstans, stb. - fontos megadni, hogy mekkora memóriaterületen tároljuk az adatot

Változó típusok Egész típusok shortint 8 bit előjeles -128...127 Programozási és szoftverfejlesztési ismeretek I. Változó típusok Egész típusok shortint 8 bit előjeles -128...127 integer 16 bit -32768…32767 longint 32 bit -2147483648…2147483647 byte előjel nélküli 0...255 word 0...65535 Valós típusok real 6 bájt 11-12 j. -2.9E-39...17E38 single 4 bájt 7-8 j. -1.5E-45...3.4E38 double 8 bájt 15-16 j. -5.0E-324...1.7E308 Karakter típus char 1 bájt ASCII (0 ... 255) Karakterlánc típus string h max:255 Logikai típus boolean 0, 1 False,True

Tömbök és rekordok Rekord Tömb Programozási és szoftverfejlesztési ismeretek I. Tömbök és rekordok Datum = record Ev : 1900..2000; Ho : 1..12; Nap: 1..31;e end; Hallgato = record VezNev, KerNev : string[20]; SzulIdo : Datum; TanKor : string[4]; TanAtlag : real; end; 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) Tömb Ugyanolyan típusú változók tárolására szolgáló adathalmaz Oszlop = [1..10] of real; Sor = array[1..20] of real; Tomb = array[1..10,1..20,1..4] of real;

Delkaráció - szintaktika Programozási és szoftverfejlesztési ismeretek I. Delkará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ó - szintaktika Programozási és szoftverfejlesztési ismeretek I. Iteráció - szintaktika Elöl tesztelős ciklus while kifejezes do utasitas;

Iteráció - szintaktika Programozási és szoftverfejlesztési ismeretek I. Iteráció - szintaktika hátul tesztelős ciklus repeat utasitas until feltetel;

Iteráció - szintaktika Programozási és szoftverfejlesztési ismeretek I. Iteráció - szintaktika növekményes ciklus fel for kezdo to veg do utasitas; növekményes ciklus le for kezdo down to veg do utasitas;

Szelekció - szintaktika Programozási és szoftverfejlesztési ismeretek I. Szelekció - szintaktika választás case kifejezes of ertek:utasitas; … else utasitas; end;

Szelekció - szintaktika Programozási és szoftverfejlesztési ismeretek I. Szelekció - szintaktika 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 Programozási és szoftverfejlesztési ismeretek I. 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 Függvények - visszatérési értéke van Programozási és szoftverfejlesztési ismeretek I. Függvények, eljárások Függvények - programrészleteket foglal össze egy egységbe - visszatérési értéke van 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

Függvények, eljárások Eljárások Programozási és szoftverfejlesztési ismeretek I. Függvények, eljárások Eljárások - végrehajt egy műveletet anélkül, hogy visszaadna értéket - hívása utasításként viselkedik 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 - példa adatbevitel Readln[(változóaz.)]; Programozási és szoftverfejlesztési ismeretek I. Függvények - példa 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 eljárások Programozási és szoftverfejlesztési ismeretek I. Karakterlánc eljárások 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 Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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);

Megjegyzés - uses Beillesztett állományok Programozási és szoftverfejlesztési ismeretek I. Megjegyzés - uses Beillesztett állományok Pl.: ablakkezelés, a billentyűzetkezelés, a lemezkezelés, a menükezelő eljárások Uses newdelay, crt;

Feladatok 1. Olvasson be két számot és az összegükkel térjen vissza! Programozási és szoftverfejlesztési ismeretek I. Feladatok 1. Olvasson be két számot és az összegükkel térjen vissza! program osszeg; uses newdelay, crt; var a,b,c: integer;{bekért számok és eredmény tárolására} begin clear; c:= 0; {lenullázott kezdőérték} readln(a); {beolvassuk az egyik adatot } readln(b); {beolvassuk a következő adatot } c:= a+b; {összeg } writeln(‘A megoldás: ’,c); {kiírjuk a végeredményt} readkey; end.

Programozási és szoftverfejlesztési ismeretek I. Feladatok 2. Megadott számú valós szám átlagát számolja meg! Az adatokat a standard bemenetről olvassa. program atlag1; var n: integer; i: integer; sum: real; x: real; begin end. sum:= 0; readln(n); writeln(sum/n:8:2); for i:= 1 to n do begin readln(x); sum:= sum + x; end; { kiírjuk a végeredményt 8 helyiértékre és 2 tizedesjegyre }

Programozási és szoftverfejlesztési ismeretek I. Feladatok 3. A standard bementről olvasott számok közül kiválasztja a legnagyobbat és a legkisebbet. var elso: boolean; { jelzi, hogy ez a legelsõ szám } min, max: real; { pillanatnyi legkisebb és legnagyobb } x: real; { aktuális adat } begin elso:= true; { elsõ adat következik } while not eof do begin { amíg nincs file vége } readln(x); { beolvassuk a következõ adatot } if elso then begin { legelsõ adat jön } min:= x; { ez lesz a pillanatnyi legkisebb } max:= x; { es a pillanatnyi legnagyobb is } elso:= false; { bejött az elsõ szám } end else begin if x < min then { ha az új adat kisebb a mimimumtól } min:= x; { ez lesz az új minimum } if x > max then { ha nagyobb a maximumtól } max:= x; { ez lesz az új maximum } end end; writeln('Min:', min:8:3, ' Max:', max:8:3); end.

Feladatok 4. Írjon programot téglalap területének kiszámítására! Programozási és szoftverfejlesztési ismeretek I. Feladatok 4. Írjon programot téglalap területének kiszámítására! 5. Írjon alkalmazás a másodfokú megoldóképlet megoldására! 6. Üdvözölje a program a felhasználót aszerint, hogy hány éves! (Kérje be az életkort, majd írjon ki egy üdvözlőszöveget tegező vagy magázó hangnemben.) 7. Bővítse ezt több lépcsős vizsgálattal (minimum négy féle köszöntés). Kezdjen minden programozási feladatot a folyamatábra felrajzolásával!

Fájlkezelés Lépései programozási nyelvtől függetlenek: Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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ó

Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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 – I/O műveletek Programozási és szoftverfejlesztési ismeretek I. Szöveges fájlok – I/O műveletek - 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 Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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 {$I-} Reset(f); {megnyitás} Programozási és szoftverfejlesztési ismeretek I. Hibakezelés {$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 Programozási és szoftverfejlesztési ismeretek 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); Programozási és szoftverfejlesztési ismeretek I. 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); Programozási és szoftverfejlesztési ismeretek I. 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); Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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

Nehezebb feladatok 1. Számok bekérése, sorrendben való kiíratása Programozási és szoftverfejlesztési ismeretek I. Nehezebb 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 if n<30 then begin {sorrend} for i:= 1 to n do Programozási és szoftverfejlesztési ismeretek I. Megoldás - 1 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 Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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 PROGRAM maximumkivalasztas; Uses CRT; CONST n=10; Programozási és szoftverfejlesztési ismeretek I. Megoldás - 4 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 Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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. Programozási és szoftverfejlesztési ismeretek I. 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 Programozási és szoftverfejlesztési ismeretek I. 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 PROGRAM grafik; Uses CRT,GRAPH; Programozási és szoftverfejlesztési ismeretek I. Megoldás - 8 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 program KOROK; uses GRAPH; var gd,gm,i:integer; begin Programozási és szoftverfejlesztési ismeretek I. Megoldás - 9 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.

Tömbkezelés Deklarálás: Hivatkozás: vektor: array[1..10] of integer; Programozási és szoftverfejlesztési ismeretek I. Tömbkezelés Deklarálás: vektor: array[1..10] of integer; matrix: array[1..5, 1..4] of integer; Hivatkozás: vektor[3] matrix[2,3] 1 2 3 4 5 6 7 8 9 10 1.1 1.2 1.3 1.4 2.1 2.2 2.3 2.4 3.1 3.2 3.3 3.4 4.1 4.2 4.3 4.4 5.1 5.2 5.3 5.4

Tömb típusú konstans const konst_tomb : array[1..3, 1..4] of byte = Programozási és szoftverfejlesztési ismeretek I. Tömb típusú konstans const konst_tomb : array[1..3, 1..4] of byte = ((1, 3, 4, 1),(2, 3, 4, 2),(1, 6, 3, 5)); 1 3 4 1 2 3 4 2 1 6 3 5

Tömbkezelés - adatfeltöltés Programozási és szoftverfejlesztési ismeretek I. Tömbkezelés - adatfeltöltés for i := 1 to 10 do begin Write('Kérem a tömb ',i,'.elemét: '); Readln(tomb[i]); end; 1 2 3 4 5 6 7 8 9 10

Programozási és szoftverfejlesztési ismeretek I. Feladat Rajzoljunk folyamatábrát majd írjunk programot a következő funkciókkal: A felhasználót kérdezzük meg, hány adatot szeretnénk tárolni majd sorba rendezni. Kérjük be a számokat és tároljuk el őket egy tömbben. A bekérés után billentyű-leütést követően adja vissza a számok közül legkisebb és legnagyobb értékűt, ezt írja ki a képernyőre. Majd kérdezze meg a felhasználót, szeretné-e sorba-rendzeni a számokat? (y/n; yes/no, igen/nem) Ha nem, akkor köszönjön el a felhasználótól aszerint, hogy hány éves (0-20 évig Szia!, 20-60 évig Viszont látásra!, 40 év fölött Csókolom! ) Ha igen, akkor rendezze sorba a számokat növekvő vagy csökkenő sorrendbe!