Egyszerű típusok csoportosítása

Slides:



Advertisements
Hasonló előadás
 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.
Advertisements

Gyakorló feladatsor eljárásokra Készítette: Rummel Szabolcs Elérhetősé:
Ismétlés. Ismétlés: Adatbázisok megnyitása: OPEN DATABASE adatbázis_név OPEN DATABASE ”adatbázis_név elérési útvonallal” Adattábla megnyitása: USE tábla_név.
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Tömbök C#-ban.
Algoritmus és programozás
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
Adatszerkezetek Az adatokat két fő csoportra oszthatjuk: egyszerű és összetett adatok.  Az egyszerű adatot egy érték jellemez, tovább nem bontható. (szám,
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Cells(sor száma, oszlop száma)
Programozás alapjai.
Turbo Pascal Változók.
Programozás alapjai.
Dinamikus tömbök.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
Bevezetés a Java programozásba
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Mutatók, tömbök, függvények
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.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
16. Verem műveletei Kaszab Gábor.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
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:
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
Programozási nyelvek Páll Boglárka.
Alprogramok deklarációja, definíciója és meghívása 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
Egydimenziós tömbök (Vektorok)
A REKORD TIPUS Páll Boglárka. Ismétlés: Feladat Készítsünk kimutatást a XI.B osztály tanulóiról. Minden tanuló esetén a következő adatokat tartjuk nyilván:
A Pascal programozási nyelv alapjai
Adatszerkezetek 1. előadás
Tömbök és programozási tételek
Programozási nyelvek, Pascal
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
Kétdimenziós tömbök Mátrixok
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
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.
Rekordok Dinamikus tárkezelés és pointerek Dinamikusan láncolt listák
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.
Egyenesvonalú (lineáris) adatszerkezetek
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é.
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..
C Programozási alapok.
Free pascal feladatok
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Excel programozás (makró)
Programtervezés, programozás I. 2.5 tömbök,stringek
Informatikai gyakorlatok 11. évfolyam
Programozási nyelvek típusossága.
Excel programozás (makró)
Előadás másolata:

Egyszerű típusok csoportosítása Sorszámozott típusok egész típusok (byte, shortint, word, integer, longint) karakteres típus (char) logikai típus (boolean) felsorolt típus intervallum típus Nem sorszámozott típusok: valós típusok (real)

Felsorolt típus: var Tantargy: (Magyar, Tori, Matek, Tesi); Intervallum típus: var Szamjegy: '0'.. '9'; Honap: 1..12;

Összetett típusok String Tömb Rekord Halmaz Fájl (külön tétel)

A rekord - Record típus A rekord strukturált adattípus, amelyben különböző típusú adatokat (mezőket) fogunk össze. Deklarálásakor a Record és End kulcsszavak között fel kell sorolnunk az egyes mezők neveit valamint típusait. RECORD mezőazonosító [,mezőazonosító...]: típus [;mezőazonosító [,mezőazonosító...]:típus...] END type DolgozoTip = record          Nev: string;          Hazas:boolean;          Fizetes: longint;      end; var Dolgozok: array[1..50]of DolgozoTip;     d1, d2: DolgozoTip; A rekord tartalmazhat egy változó részt is

Hivatkozás a rekord egy mezőjére: rekordazonosító.mezőazonosító Pl. d1.Nev Dolgozok[5].Hazas A With utasítás Ha egy programrészletben gyakran hivatkozunk egy (vagy több) rekord mezőire, akkor a With utasítással ez leegyszerűsíthető, a rekordazonosító elhagyható. Szintaktikája: WITH rekordazonosító DO utasítás Pl. with d1 do begin    ReadLn(Nev);    ReadLn(Fizetes) end;

A halmaz - Set típus A programozásban a halmaz azonos típusú különböző elemek összességét jelenti. A halmazt az elemek felsorolásával adhatjuk meg. Az elemek rendezetlenek. Az összetett adattípusokhoz soroljuk, bár a halmaz egy elemére nem tudunk hivatkozni.

Deklarálása: SET OF alaptípus ahol az alaptípus csak olyan sorszámozott típus lehet, amelynek maximálisan 256 eleme van Halmaz típusú konstans: const Betuk = ['A'..'Z', 'a'..'z']; H1 := [1, 4, 6, 8..12] H2 := [] {üres halmaz}

Logikai típusú eredményt szolgáltatnak: Műveletek: * metszet + egyesítés - különbség Logikai típusú eredményt szolgáltatnak: = egyenlőség <> különbözőség <=, >= tartalmazás (részhalmaz) IN elemvizsgálat

... WriteLn('1: Adatfelvitel'); WriteLn('2: Módosítás'); WriteLn('3: Listázás'); WriteLn('4: Kilépés'); WriteLn('Válasszon!); repeat Valasz := ReadKey until Valasz in ['1'..'4']; case Valasz of '1': ...; '2': ...; '3': ...; ...

program lotto; uses crt; var h:set of byte; i, szam, n:integer; begin clrscr; randomize; h:=[]; n:=0; repeat szam:=random(90)+1; if not (szam in h) then h:=h+[szam]; inc(n) end; until n=5; for i:=1 to 90 do if i in h then writeln(i); end.

Állománykezelés A programok a bemeneti adataikat nem csak a billentyűzetről, hanem a háttértárolókon lévő állományokból is kaphatják, valamint kimeneti adataikat a képernyőn történő megjelenítés mellett állományokban is tárolhatják. A Pascal nyelvben három összetett típus és az ezekhez kapcsolódó szabványos eljárások és függvények valósítják meg az állományok kezelését. Típusos állomány Szöveges állomány Típus nélküli állomány

Típusos állomány Deklarálása: FILE OF alaptípus Összetett típus, fizikailag egy lemezes állomány. Egyforma méretű elemekből (komponensekből) áll. Az elemek számának csak a lemez mérete szab határt. A típusos állományból való olvasás illetve az állományba való írás egysége a komponens. Az elemekhez a rendszer sorszámot rendel 0-tól kezdődően. Az elérés szekvenciálisa (Read, Write) vagy a komponensek sorszáma szerint direkt módon történhet (az állomány mutató mozgatásával).

A program mindig egy logikai állományt kezel, melyet hozzá kell rendelnünk egy fizikai állományhoz (Assign), majd használat előtt meg kell nyitnunk. A Rewrite eljárás létrehozza, és megnyitja a logikai fájlhoz rendelt fizikai állomány. Ha a fizikai fájl már létezett, akkor törli annak tartalmát. A Reset eljárással egy már létező állományt nyithatunk meg. Ekkor az állománymutató az 0. komponensre áll. Használat után a Close eljárással zárjuk le fájlunkat!

Read: a változó típusa egyezzen meg a fájl alaptípusával Read: a változó típusa egyezzen meg a fájl alaptípusával! Beolvasás után az állomány mutató automatikusan a következő komponensre lép (szekvenciális elérés). Write: a változó típusának meg kell egyeznie a fájl elemeinek a típusával, valamint az eljárás után az állomány mutató továbblép. Eof a fájl szekvenciális feldolgozására: Reset(f) while not Eof(f) do begin   Read(f,v); {a v változóban lévő adat feldolgozása}  end;

Az állomány mutató direkt pozicionálását a Seek eljárás valósítja meg. A FilePos függvénnyel lekérdezhetjük az aktuális pozíciót, a FileSize függvény pedig az állomány elemeinek a számát (méretét) adja vissza. Példák: Seek(f, FileSize(f)); Seek(f, FileSize(f) - 1);

Típusnélküli állomány Deklarálása: FILE Általában gyors adatmozgatás vagy ismeretlen állomány esetén használjuk. Hasonló a típusos állományhoz, de az elemeinek nem a típusa, hanem a hossza a lényeges. A komponensek hosszát a fájl megnyitásakor adhatjuk meg (Reset, Rewrite), az alapértelmezés 128 bájt. Az állomány írható, olvasható, az elérés szekvenciálisan (BlockRead, BlockWrite eljárásokkal) vagy az elemek sorszáma szerint direkt módon történhet.

Típusos mutató Deklarálása: azonosító: ^alaptípus Pl. Var p1, p2: ^real; A mutató egy memóriacímet (4 bájtos: szegmens, ofszet) tartalmaz, egy alaptípusú változóra mutat. A mutatóhoz futás közben rendelhetünk memóriacímet és így tárterületet (dinamikus adattárolás). A New eljárás a heap memóriában foglal területet a mutatott változó számára, a Dispose eljárás pedig felszabadítja a lefoglalt területet. Így lehetővé válik, hogy egy nagy helyfoglalású adatstruktúra számára csak akkor kössünk le memóriát, amikor használjuk a változót.

type TTomb = array[1..1000]of real; var t: TTomb; {A rendszer már a program indításakor lefoglal 6000 bájtot az adatszegmensben} pt: ^TTomb; {A rendszer a program indításakor csak 4 bájtot foglal le a mutató számára} begin ... New(pt); {A heap-ben létrejön a mutatott változó} ... {Használhatom a pt által mutatott változót (pt^)} Dispose(pt) {A terület felszabadul a heap-ben} end.

Hivatkozás a mutatott változóra: mutató-azonosító^ (pl.: pt^[12] := 1) Mutató típusú konstans: Nil. A Nil nem mutat sehová. (Pl. láncolt lista végének a jelzésére használhatjuk).

Láncolt listák A különböző típusú láncolt listák nagyon fontos adatszerkezetek a számítástechnikában. Az egyes adatelemek (rekordok) közötti csatolást mutatókkal valósíthatjuk meg, így a rekordnak van egy mutató típusú mezője, melynek alaptípusa maga a rekord Pl: type Mutato = ^Adatelem;      Adatelem = record        Adat: real;        Kovetkezo: Mutato;      end; var Elso, Uj, Aktualis: Mutato;

Fűzzük fel láncolt listára a billentyűzetről beolvasott számokat Fűzzük fel láncolt listára a billentyűzetről beolvasott számokat. Írassuk ki a listát! program Lista1; uses Crt; type TMutato = ^TAdatElem; TAdatElem = record Adat: integer; Kovetkezo: TMutato; end; var Elso, Aktualis, Uj: TMutato; a: integer; begin ClrScr;

ReadLn(a); Elso := nil; while a <> 0 do begin New(Uj); {Az Uj mutatóhoz memóriaterület rendelése} Uj^.Adat := a; Uj^.Kovetkezo := nil; if Elso = nil then Elso:=uj {Első rekord, az Elso mutat az Uj-ra} else Aktualis^.Kovetkezo := Uj; {Az Aktualis-hoz csatoljuk az Uj-at} Aktualis := Uj; {Az Aktualis léptetése} ReadLn(a) end;

{A lista megjelenítése} WriteLn; Aktualis := Elso; while Aktualis <> nil do begin WriteLn(Aktualis^.Adat); Aktualis := Aktualis^.Kovetkezo end; end.

Típusnélküli mutató - Pointer Deklarálása: POINTER Egy négy bájtos memóriacímet tartalmaz. A mutatott változónak nincs típusa. A típusnélküli műveleteknél használjuk (pl. adatmozgatás). A GetMem eljárással foglalhatunk le egy megadott méretű területet a heap-ben a mutatónk számára. Ha a memóriaterületre már nincs szükségünk a FreeMem eljárással azt felszabadíthatjuk.

Saját unit készítése Az egységek (unitok) előre lefordított programmodulok. Általában egy adott területhez tartozó eljárásokat, függvényeket tartalmaznak, illetve deklarálják az általuk használt konstansokat, típusokat, változókat. Mivel a kódszegmens maximálisan 64 kB lehet, így programunk nagysága is korlátozott. Ha elértük a határt (kb. 2-3000 programsor), akkor programunk egyes részeit saját unitokban helyezhetjük el, melyek külön-külön szintén 64 kB méretűek lehetnek.

Az egység felépítése: Egységfej: Unit azonosító; Illesztő rész: INTERFACE Kifejtő rész: IMPLEMENTATION Inicializáló rész: [BEGIN [utasítás [; utasítás...]] END. Példa