Adattípusok és deklarációk

Slides:



Advertisements
Hasonló előadás
Vezérlő utasítások.
Advertisements

Koordináták, függvények
Eljárások és függvények
 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.
Számítástechnika I. 2.konzultáció
Összetett adattípusok 8/b tétel
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Tömbök C#-ban.
Algoritmus és programozás
ADATBÁZIS KEZELÉS – Adattípusok
Halmazok, műveletek halmazokkal
Műveletek logaritmussal
Programozás alapjai.
Turbo Pascal Változók.
Programozás alapjai.
Sztringek.
Adatbázis-kezelés.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Mutatók, tömbök, függvények
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Vizuális és web programozás II.
Egyszerű típusok csoportosítása
Microsoft Excel Függvények VII..
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.
szakmérnök hallgatók számára
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Összetett adattípusok
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
Kifejezések. Algoritmus számol; Adott összeg; összeg:=0; Minden i:=1-től 5-ig végezd el Ha 2 | i akkor összeg:=összeg+2*i Ha vége Minden vége Algoritmus.
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
Szabványos függvények a Pascalban. Bevezetés Pascalban a függvények feladata, hogy a bemenő paraméterekből előállítsák a függvényértékeket Függvényeket.
Tömbök és programozási tételek
Ciklusok (iterációk).
Szintaktikai, szemantikai szabályok
Összetett adattípusok
Operátorok Értékadások
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.
Visual Basic 2008 Express Edition
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
Objektum orientált programozás
A Visual Basic nyelvi elemei
ACCESS Lekérdezések, űrlapok, jelentések
Feladatok (értékadás)
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
C Programozási alapok.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Free pascal feladatok
Algoritmizálás, adatmodellezés
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Programtervezés, programozás I. 2.5 tömbök,stringek
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
Kifejezések C#-ban.
Programozás C# -ban Elágazások.
Változók.
Előadás másolata:

Adattípusok és deklarációk Változók deklarációi, végrehajtható műveletek

Adattípusok Egyszerű Mutató Strukturált adattípusok adattípus adattípus String Valós Sorszámozott Array Boolean File Char Record Egész Set Felsorolt Object Résztartomány

1. Egyszerű adattípusok Egyszerre egyetlen adatot tárolnak Numerikus adatok tárolása: Számokat tárolnak, aritmetikai műveleteket végezhetünk velük Egész típusok: mind egész számokat tárolnak, azonban értékkészletük és helyfoglalásuk különböző shortint -128…127 előjeles 8 bit (1 bájt) integer -32768…32767 előjeles 16 bit (2 bájt) longint -2147483648…2147483647 előjeles 32 bit (4 bájt) byte 0…255 előjel nélküli 8 bit word 0…65535 előjel nélküli 16 bit

Egész típusú változókkal a következő műveletek végezhetőek el, az eredmény minden esetben egész: +, -, * Egész osztás: div – az eredmény egész és a maradék elvész pl.: 123 div 4 = 30 Maradékképzés: mod – az egész osztásból eredő maradékot adja pl.: 2 mod 6= 2

succ(i) - a visszaadott érték egyel nagyobb, mint az átadott (követő) eljárások: dec(i,n) - az i értékét csökkenti n- el, egyenértékű a következő utasítással: i:=i-n; inc(i,n) - i értékét növeljük n- el, egyenértékű a következő utasítással: i:=i+n; pl. : i:=8; inc(i,2); i=i+2=8+2=10 dec(i); i=i-1=10-1=9 függvények: pred(i) - a visszaadott egész érték egyel kisebb mint az átadott (megelőző) pl.: i:=65; i:=pred(i); i=64 succ(i) - a visszaadott érték egyel nagyobb, mint az átadott (követő) pl.: i:=succ(i); i=65 abs(i) – az i abszolút értékét adja vissza pl.: i:= - 88; i:=abs(i); i=88 sqr(i) – az i egész érték négyzetét adja vissza pl.: i:=9; i:=sqr(i); i=81

round(i) – az i- hez közelebbi egész értéket adja vissza, kerekít pl.: i:=23,567 i:=round(i); i=24 trunc(i) – az i egész részét adja vissza, elhagyva a törtrészt pl.: i:=23,79 i:=trunc(i); i=23 Precedencia szabály (műveletek elvégzésének sorrendje): Sorrend Művelet I. előjelváltás II. * Div, mod III. +, - Amennyiben szeretnénk változatni a műveletvégzés sorrendjén, akkor zárójeleket kell használjunk.

1. feladat: Legyen két egész szám. Számítsátok ki a számok összegét, 1.feladat: Legyen két egész szám. Számítsátok ki a számok összegét, különbségét, szorzatát. Alkalmazzátok a fent bemutatott eljárásokat és függvényeket. a:=a-2;

2. feladat: Adott két egész szám. Cseréljétek fel a két szám értékét 2. feladat: Adott két egész szám. Cseréljétek fel a két szám értékét! (Poharas módszer)

Feladatok: Írjatok egy programot amely kiszámítja a háromszög kerületét. Írjatok egy programot amely kiszámítja a háromszög kerületét, területét és magasságát. Írassátok ki a képernyő közepére, színeket használva a neveteket és alája középre igazítva a lakcímeteket. Kérjetek be 2 számot a felhasználótól, majd írassátok ki azok összegét, különbségét, szorzatát, hányadosukat, a két szám négyzetének összegét. Írjatok egy programot amely kiszámítja a négyzet és a téglalap kerületét és területét. Írjatok egy programot amely kiszámítja a rombusz és a trapéz kerületét és területét. Írjatok egy programot amely kiszámítja egy egyenlő szárú trapéz területét.

Valós típusok: Nagyobb számok tárolására alkalmas mint az egész és még ráadásul tizedeseket is képes kezelni. A valós számok ábrázolása lebegőpontos (floating- point) formában történik, matematikai műveleteket végezhetünk velük: +,-,*,/ Ha az operandus valós akkor az eredmény is valós. real 2,9*10-39…1,7*1038 6 bájt single 1,5*10-45…3,4*1038 4 bájt double 5,0*10-324…1,7*10308 8 bájt extended 3,4*10-4932…1,1*104932 10 bájt comp -2-63+1…263-1 8 bájt

abs(i) – az i abszolút értékét adja vissza Valós típusú változókra vonatkozó, leggyakrabban használt függvények és eljárások: int(i) –egész rész függvény, az i egész részét adja vissza, a visszaadott érték valós pl.: i:=4.6; i:=int(i); i=4.0 abs(i) – az i abszolút értékét adja vissza sqr(i) – az i valós szám, valós négyzetét adja vissza sqrt(i) – az i valós szám négyzetgyökét adja vissza pl.: i:=sqrt(16); i=4.0 pi – pi értékét adja vissza, 3.1415926536 random(határ) – véletlen számot generáló függvény pl.: írjunk egy [0,30] közötti véletlen számot Randomize; writeln(random(30+1));

Feladatok: 1. Írj egy programot amely kiszámolja a következő másodfokú egyenlet diszkriminánsát, valamint meghatározza gyökeit: 2x2 + 3x + 1= 0 Megoldáshoz képletek: D= b2 - 4a*c , ahol az egyenletből adódóan a=2, b= 3 és c=1 x1= (- b+ sqrtD)/2*a x2 = (- b - sqrtD)/2*a 2. Írj egy programot amely meghatározza három szám számtani és mértani közepét. 3. Kérjük be Gergő órabérét. Ezután kérjük be a dolgozott időt, órában és percben. Számoljuk ki Gergő bérét kerekítve! 4. Használva Heron képletét számoljátok ki az általános háromszög kerületét és területét, tudván hogy oldalai a, b, c. Megoldáshoz képletek: K=a+b+c p=k/2 T= sqrt (p*(p - a)*(p - b)*(p - c))

- képernyőnként jelenjenek meg a feladat kérések: 5. Írjatok egy programot amely bemutatja az egyenlőszárú és a szabályos háromszögek kerületének és területének kiszámítását. Majd adjatok példát is hozzá. Írjátok meg a programot, úgy hogy futtatásakor a következő követelményeknek tegyen eleget: - képernyőnként jelenjenek meg a feladat kérések: 1.képernyő: Írjátok ki az üzenetet a felhasználó számára: Háromszögek kerület és terület számítása 2.képernyő: rajzoljatok egy egyenlő szárú háromszöget csillagokból kirakva, a két egyenlő szár legyen egyszínű az alap más színű. Alatta legyen látható a kerület, magasság és terület kiszámításához szükséges képletek. 3.képernyő: adj egy példát 4.képernyő: rajzoljatok egy szabályos háromszöget színes csillagokból kirakva. Alatta legyen látható a kerület, magasság és terület kiszámításához szükséges képletek. 5.képernyő: adj egy példát Megoldáshoz képletek: K=a+b+c m=sqrt (sqr(a)- sqr(b/2)) T= (b*m)/2 a m b

1.feladat:

b) Logikai információk tárolása: - logikai értékek és logikai műveletek tárolására használjuk; - csak kétféle értéket vehet fel true (igaz=1) és false (hamis=0) - tárolása egy bájton történik boolean és a Turbo Pascal 7.0- ban megjelentek: bytebool wordbool longbool

Logikai típusú változókra alkalmazható műveletek: Not (nem), And (és), Or (vagy), Xor (kizáró) B A Or B Hamis Igaz A Not A Hamis Igaz igaz hamis A B A And B Hamis Igaz A B A Xor B Hamis Igaz

Feltételként kell értelmezni, vagyis a kifejezés lehet igaz vagy hamis Feltételként kell értelmezni, vagyis a kifejezés lehet igaz vagy hamis. Bármilyen típusú változóval végezhet műveleteket, ezek lesznek a kifejezések. Ha a feltétel a kifejezésben igaz akkor felveszi a True értéket, ellenkező esetben a False értéket. A logikai értékeket nem lehet beolvasni de kiíratni igen. Pl. figyeljük meg a következő programot

c) Szöveges információk tárolása: char: -egyetlen karakter tárolására alkalmasak -sorszámozott típus, mivel minden karakterhez tartozik egy sorszám (0..255), amely kijelöli a karakter helyét az ASCII kódtáblában string: -karaktersorozatok tárolására használjuk -a karakterek száma változhat, de ez max. 255 lehet -amennyiben nincs szükségünk 255 karakteres sztringekre, a deklarációban szögletes zárójelben megadhatjuk a sztring maximális hosszát (1 és 255 között) pl. var keresztnév: string[10];

+: összefűzést jelent, nem lehet hosszabb 255- nél Karakter típusú változókra vonatkozó, leggyakrabban használt függvények és eljárások: +: összefűzést jelent, nem lehet hosszabb 255- nél pl.: a:=abc b:=efg a+b=abc+ efg=abcefg Ord(i) – a karakter ASCII kódját adja vissza Chr(i) – azt a karaktert adja vissza, amelynek ASCII kódja i UpCase(i) – a karakter nagybetűs változóját adja vissza, ennek akkor van hatása, ha az i „a” és „z” közé esik Lenght(i) – a karakterlánc hosszát adja meg, ahol i:string típusú változó Ugyanakkor alkalmazhatók a következő eljárások is, ugyanaz a jelentésük mint az előzőekben bemutatottaknál, csak karakterekre vonatkozóan: Pred, Succ, Dec, Inc

Feladatok: 1. Olvassunk be egy karaktert, majd írassuk ki a sorszámát az ASCII kódtáblából, valamint az előtte és az utána álló karaktert és nagybetűs formáját. Ezután kérjen be a felhasználótól egy karakterláncot, szót és határozza meg annak hosszát 2. Írd meg azt a programot amelyet egy pénzváltónál tudunk alkalmazni, ha forintot szeretnénk vásárolni. 3. Írj egy olyan programot amely bekéri a felhasználótól a vezetéknevét és keresztnevét külön- külön, majd összefűzi őket egyetlen változóba és kiíratja a képernyő közepére piros színnel és meghatározza ennek hosszát.

1.feladat

d) Sorszámozott típusok: integer, shortint, longint, byte, word, boolean, char, felsorolt típus, résztartomány típus Felsorolt típus: -kerek zárójelben, vesszővel elválasztva felsoroljuk az egyedi azonosítókat, ezek alkotják a típus értékkészletét. pl. var nyelvek: (angol, német, spanyol, olasz); -az értékkészletet definiáló szimbólumoknak egyedieknek kell lenniük, ugyanaz a név nem szerepelhet két különböző típus elemeként -a Pascal- ban lehetőségünk van arra, hogy mi magunk hozzunk létre sorszámozott típust, a felsorolt típus segítségével Résztartomány típus: -mint intervallumot, az alsó és felső határral adjuk meg, a határokat (..) választjuk el agymástól pl. var i: 1..100; b: ’a’..’z’;

2. Mutató típusok A számítógép memóriája a programok egyik legértékesebb erőforrása. A memória jobb kihasználása érdekében a Turbo Pascal lehetőséget biztosít a dinamikus tárkezelésre. Ennek során nem a fordítóprogram, hanem a program készítője gondoskodik a helyről, a (dinamikus) változók számára. A dinamikus memóriakezelés a mutatók (pointerek) használatára épül. A mutató, a Pascalban 4 bájt a helyfoglalása, memóriacímet tartalmaz. A cím első két bájtja az ofszetet, míg a következő két bájt a szegmenscímet tartalmazza. Deklarálása: vagy a pointer típusnévvel, vagy ^típus – sal pl. var pm, hely: pointer; {csak címet tartalmaz} ipr: ^integer; {címen kívül egy típus is tartozik}

3. Strukturált típusok / Összetett típusok Más típusokból épülnek fel. Összetett típusok: tömb, rekord, halmaz, fájl, objektum Tömbtípusok: - adott számú, azonos típusú elemeket tartalmaz - a deklarációban az array foglalt szó vezeti be pl. Var t: array[1..15] of char; z: array[‘A’..’Z’] of byte; x: array[-5..5, 1..5] of integer; v: array[boolean, char] of integer; Valamely tömb lehet egy-, két, vagy többdimenziós. A szögletes zárójelek között annyi indextípust kell vesszővel elválasztva megadni, ahány dimenziós tömböt akarunk létrehozni. egydimenziós tömb= vektor kétdimenziós tömb= mátrix

var azonosító : array [kezdőindex..végindex] of típus; A tömb meghatározott számú, azonos típusú elemekből álló összetett típus. Deklarálása: var azonosító : array [kezdőindex..végindex] of típus; tömb mérete tömb elemeinek típusa Pl.: var x: array[1..10] of integer; {10elemből álló integer típusú tömb} x[1], x[2],… x[10] -tömb elemeire való hivatkozás x[1]:=3,67; -tömb egy elemének való értékadása Azt a tömböt, ahol csak egy dimenzióban deklaráljuk a tömb elemeit, akkor vektornak nevezzük.

Pl. 1.) var y: array[1..10] of integer; -10 db. egész típusú elemet tartalmaz -egyes elemeire való hivatkozás: y[1], y[2],… 2.) var x: array[1..2, 1..3] of real; -valós számokat tartalmazó 2*3 mátrix, amelynek 2 sora és 3 oszlopa van x11 x12 x13 x21 x22 x23 - hivatkozás egyik elemére: x[1, 1] x11 oszlopindex sorindex

array [Indextípus] of Elemtípus; Szabályok: A tömbnek rögzített számú eleme van Az elemek típusai megegyeznek Indextípus csak sorszámozott típus lehet Indextípus minden értékére létezik egy jól meghatározott tömbelem Az elemek számát a tömbben Indextípus számossága határozza meg Index egy Indextípusú kifejezés Az elemek bármelyike közvetlenül elérhető az indexre való hivatkozással

b) Rekord típus: - legrugalmasabb Pascal adatszerkezet, mivel tetszőleges számú, különböző tulajdonságú rész szerepelhet benne - a rekord típusdeklarációja a record és az end foglalt szavak között helyezkedik el. Pl. Var datum: record ev: 1000..2000; honap: 1..12; nap: 1..31; megjegyzes: string; end;

c) Halmaztípusok: - bizonyos tulajdonságú elemek összessége - deklarálása: var halmazváltozó: set of alaptípus; pl.: var abc: set of ‘a’..’z’; ascii: set of char; d) Állománytípusok: - azonos típusú komponensekből álló adatszerkezetek, mely nagy mennyiségű adat tárolását teszi lehetővé a háttértárolón -komponensei lehetnek egyszerű és strukturált típusú adatok, de leggyakrabban a record típust használjuk -deklarálása: var fájlváltozó: file of komponenstípus; pl.: var adat: file of integer;

e) Objektumtípusok: - alapja az újszerű programkészítési módszernek ami az objektum- orientált programozás (OOP) néven vált ismerté - különböző komponensekből épül fel

Konstansnevek létrehozása

Olyan azonosítóval (névvel) ellátott értékek, amelyek nem váltóznak meg a program futása során, emiatt a konstansnevek nem szerepelhetnek az értékadó utasítás bal oldalán. A konstansdefiníciókat a deklarációs részben a const foglalt szó után adjuk meg. A definícióban az egyenlőségjel bal oldalán szerepel a konstans neve, a jobb oldalán pedig a hozzárendelni kívánt érték (konstans kifejezés). Készíthetünk egész, valós, numerikus, szöveges, logikai és halmaz konstansokat.

pl.: const ev=1996; afs=10,71; cím=‘feladat’; betű=‘p’; ures=‘’; hexa=[‘0’..’9’,’A’..’Z’,’a’..’f’]; maxn=100; also=‘A’; felso=‘E’; type tomb=array[1..maxn] of real; halmaz=set of also..felso;

Konstansnevek használatával programunk olvashatóbbá válik és bizonyos változtatások is könnyebben elvégezhetők. Konstansnevek alkalmazását elsősorban az alábbi esetekben ajánljuk: 1) Ha ugyanaz a konstansérték gyakran előfordul a programban pl.: const evszam=2.718282; szokoz=‘’; 2) A konstansértékek a későbbiekben egy másik értékre kívánjuk változtatni (ugyanis ha a konstans a programban több helyen is előfordul, akkor a módosítás lényegesen egyszerűbb és biztonságosabb konstansdefiníció használatával). pl.: const max= 10;

Feladat: Ismervén Pi értékét számoljátok ki a kör kerületété és területét. Készítsetek rajzot is róla. A billentyűzetről beolvasunk egy alfa szög mértékét radiánban. Írassátok ki az alfa szög mértékét fokban, percben és másodpercben. Megoldáshoz segítség: 1fok=60perc 1perc=60másodperc - alfa szög radiánból fokba: pi radiánnak 180 fok alfa radiánnak f fok - 1fok=60 perc, ezért perc=fok*60 - 1perc=60 másodperc, ezért másodperc=perc*60 f= (alfa*180)/ pi

Típusnevek létrehozása

A Turbo Pascal a típus definicíós részben a type foglalt szó után saját típusnevek létrehozását is támogatja. type új típusnév= létező_típus; Először meg kell adjuk a létrehozandó új típus azonosítóját (nevét), majd az egyenlőségjel után egy érvényes típusleírást helyezünk el, amely lehet tetszőleges létező típus. pl.: type egesz=integer; valos=real; st10=string[10]; var i, j: egesz; a, b: valos; nev: st10;

a) A type használata felsorolt típus esetén pl.: type tantargy: (magyar, fizika, matematika); nyelvek: (angol, német, spanyol, olasz); színek: (piros, kék, zöld, sárga, fekete); var ora: tantargy; nyelv: nyelvek; ruha: színek;

b) A type használata résztartománytípus esetén A résztartománytípust valamely létező sorszámozott típus értékeinek részintervallumából állítjuk elő pl.: type kisbetu=‘a’..’z’; szam= ‘0’..’9’; szinek= (piros, kék, zöld, sárga, fekete); szinresz= kek..fekete; index= 1..1000; var i, j: index; alap: szinresz;

c) A type használata tömbök esetén pl.: type szinek=(piros, kék, zöld, sárga, fekete); nev= string[20]; vektor=array[1..100] of real; matrix=array[1..10, 1..10] of integer; adat=array[1..50] of real; osztaly=array[1..32] of nev; szintabla=array[1..8, 1..8] of szinek; var va, vb: vektor; mx, my: matrix; ct: színtábla; mz: matrix;