Adatt pusok s deklar ci k
This presentation is the property of its rightful owner.
Sponsored Links
1 / 41

Adattípusok és deklarációk PowerPoint PPT Presentation


  • 90 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Adattípusok és deklarációk

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Adatt pusok s deklar ci k

Adattípusok és deklarációk

Változók deklarációi, végrehajtható műveletek


Adatt pusok s deklar ci k

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

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


Adatt pusok s deklar ci k

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


Adatt pusok s deklar ci k

  • 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


Adatt pusok s deklar ci k

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

Amennyiben szeretnénk változatni a műveletvégzés sorrendjén, akkor zárójeleket kell használjunk.


Adatt pusok s deklar ci k

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 poharas m dszer

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

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.


Adatt pusok s deklar ci k

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*10386 bájt

single 1,5*10-45…3,4*10384 bájt

double 5,0*10-324…1,7*103088 bájt

extended 3,4*10-4932…1,1*10493210 bájt

comp -2-63+1…263-1 8 bájt


Adatt pusok s deklar ci k

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


Feladatok1

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


Adatt pusok s deklar ci k

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


Adatt pusok s deklar ci k

1.feladat:


Adatt pusok s deklar ci k

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

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


Adatt pusok s deklar ci k

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


Adatt pusok s deklar ci k

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


Adatt pusok s deklar ci k

  • 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


Feladatok2

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

1.feladat


Adatt pusok s deklar ci k

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


Adatt pusok s deklar ci k

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

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


Adatt pusok s deklar ci k

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] oftí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.


Adatt pusok s deklar ci 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

x11x12x13

x21x22x23

- hivatkozás egyik elemére: x[1, 1]

x11 oszlopindex

sorindex


Adatt pusok s deklar ci k

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


Adatt pusok s deklar ci k

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;


Adatt pusok s deklar ci k

c)Halmaztípusok:

- bizonyos tulajdonságú elemek összessége

- deklarálása:

var halmazváltozó: set ofalaptípus;

pl.: var abc: setof ‘a’..’z’;

ascii: setof 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 ofkomponenstípus;

pl.: var adat: file of integer;


Adatt pusok s deklar ci k

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

Konstansnevek létrehozása


Adatt pusok s deklar ci k

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.


Adatt pusok s deklar ci k

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;


Adatt pusok s deklar ci k

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

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

Típusnevek létrehozása


Adatt pusok s deklar ci k

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;


Adatt pusok s deklar ci k

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;


Adatt pusok s deklar ci k

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;


Adatt pusok s deklar ci k

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;


  • Login