ProgramozásMódszertan
1.
előadás’2005[SzP1] 
(vázlat)

1. Adatok jellemzői

1.1. Azonosító

Az a jelsorozat, amellyel hivatkozhatunk a tartalmára, amely által módosíthatjuk tartalmát.

Például:

            i, j, n, a

változók nevei (szimbolikus nevek)

            p, -128, 3.14, "Eredmény=", IGAZ

konstansokat azonosító jelsorozat

 

Megjegyzés:

x

:=

x+1

 

címhivatkozás

 

értékhivatkozás

 

vagy

 

 

 

Feldolgoz(x)

eljáráshívásnál nem lát­szik, hogy x az adat címét vagy értékét jelenti

 

Eljárás Feldolgoz(Konstans x:TX):

Ez már világos beszéd!

1.2. Hozzáférési jog

Adatokat módosítani, illetve értéküket lekérdezni, használni lehet; eszerint egy adat hozzá­férés szempontjából négyféle lehet:

 

módosítható

lekérdezhető

 

Független

Nem

Nem

Független

Input

Nem

Igen

Konstans

Output

Igen

Nem

Virgin

I/O

Igen

Igen

Változó

Háttértár-adat

 

 

Memória-adat

1.3. Kezdőérték

A születéskor hozzárendelt érték. Változóknál deklarációban kaphat értéket, vagy eleve van típushoz rendelt kezdőérték, esetleg speciális ’nem definiált’ érték, s így akkor mód van hivat­kozás ellenőrzésre is (virgin)!

1.4. Hatáskör

A programszöveg azon tartománya, amelyben az adathoz a hozzáférés lehetséges.

Gondoljunk a blokkstruktúrájú programozási nyelvek egymásba ágyazódó adatdeklarációira! Így beszélhetünk: globális és lokális (sőt saját) adatokról.

A hatáskört „színezi” a láthatóság kérdése: ha egy adat azonosítója megegyezik egy olyan adatéval, amelynek hatáskörébe esik, akkor azt elérhetetlenné teszi a saját hatáskörében, hi­szen az adott név alatt neki van elsősége.

Példa:


Változó

  x:TX

Konstans
  y:TY(…)


  [
itt az x TX, az y TY típusú]

Eljárás E1(Változó x:TX2):
  Változó
    y:TY2
  [
itt az x TX2, az y TY2 típusú]
 
Eljárás vége.


  [
itt az x TX, az y TY típusú]

1.5. Élettartam

A futási időnek az az intervalluma, amelyben az adat azonosítója mindvégig ugyanazt az objektumot jelöli.

Meggondolandó a hatáskörrel való kapcsolat! (Globális, lokális adatok hatásköre és élettarta­ma, továbbá a „dinamikus”, azaz futásközben a programozó döntése szerint születő és meg­szűnő adatok. L. később!)

1.6. Értéktípus

Az adatoknak az a tulajdonsága, hogy értékei mely halmazból származnak (értékhalmaz) és tevékenységeknek (eljárások, függvények, operátorok) mely „készlete, amely létrehozza, fel­építi, lerombolja és részekre bontja”, alkalmazható rá (asszociált műveletek).

2. Az értéktípus

2.1. Az értéktípusról általánosságban

Összetettség (strukturáltság) szempontjából:

Adatstrukturálási módok:

Strukturálási mód

Adatszerkezet

Keresztszorzat

A´B…

Rekord

(Megkülönböztetett) egyesítés

A´B´…(C´DÈE´FÈ…)

Alternatív rekord

Halmazképzés

2A

Halmaz

Iterált-képzés

A*

Sorozatfélék

2.2. Az asszociált műveletek osztályozása

Az asszociálható műveleteket csoportosítjuk:

Példa:


Típus

  TPont=Rekord(x,y,z:Valós)
Változó
  Origó,Egys:TPont

  Eltol(Origó,Egys)

Eljárás Eltol(Változó p:TPont;Konstans D:TPont):
  [értékmegosztás jön létre a p és az aktuális
   paraméterpárja között,
D-ba az aktuális para­-
   méterpár másolata kerül]
  p.x:+
D.x; p.y:+D.y; p.z:+D.z
  [„tiszta” értékmásolások]
Eljárás vége.

·        típusátviteli függvények:

o       Konstrukciós műveletek (strukturált érték létrehozása)

Példa:


Típus

  TPont=Rekord(x,y,z:Valós)
  TVárakozók=Sor(TEmber)   [l. később]
  TPMut=TPont’Mutató   [l.
később]
Változó
  p,q:TPont
  v:TVárakozók
  pm:TPMut

  p:=TPont(1.0,0.0,0.0)
  Üres(v)   [l. később]
  Létrehoz(pm,p); q:=TPMut(pm)   [l.
később]

o       Szelekciós operációk

Példa:


  hossz:=SQRT(p.x
^2+p.y^2+ p.z^2)
  vevő:=Sorból(v)   [l. később]

o       Azonosság és más relációk

Példa:


Típus
  TNap=(hétfő,kedd,szerda,csütörtök,péntek,
        szombat,vasárnap) [l.
később]
Konstans
  napSzám:Egész(Számosság’TNap) [l.
később]

Típus
  TNapNév=Tömb(1..napSzám:Szöveg)

Konstans
  SNapHu:TNapNév=
         (’hétfő’,’kedd’,’szerda’,’csütörtök’,
          ’péntek’,’szombat’,’vasárnap’)

  SNapEn=
         (’Monday’,’Tuesday’,’Wednesday’,
          ’Thursday’,’Friday’,
          ’Saturday’,’Sunday’)
Változó
  nN:TNapNév
  mn:TNap
  c:Karakter


  Ha c=’E’ és nN=SNapHu akkor nN:=SNapEn

  Ciklus amíg mn
péntek

o       Számosság-függvény

Példa:


Típus
  TNap=(hétfő,kedd,szerda,csütörtök,péntek,
        szombat,vasárnap)

Konstans
  napSzám:Egész(Számosság’TNap)
  SNap:Tömb(1..napSzám:Szöveg)=
       (’hétfő’,’kedd’,’szerda’,’csütörtök’,
        ’péntek’,’szombat’,’vasárnap’)

o       Min- és Max-függvény, amelyek értelemszerűen csak rendezett típusok esetén léteznek.

Példa:


Típus
  TNap=(hétfő,kedd,szerda,csütörtök,péntek,
        szombat,vasárnap)

Konstans
  SNap:Tömb(Min’TNap..Max’TNap:Szöveg)=
       (’hétfő’,’kedd’,’szerda’,’csütörtök’,
        ’péntek’,’szombat’,’vasárnap’)

Példa:


  első:=Sorszám(hétfő) [első:=0]
  utsó:=Sorszám(vasárnap) [utsó:=6]
  A_Kód:=Sorszám(’A’) [A_Kód:=65]

o       Be/Ki műveletek (konverzió az input/output és belsőábrázolás között)

Példa:


Változó
  nap:TNap

  Be: nap   [nap<Max’TNap]
  Ki: Következő(nap)

Példa:


Típus
  TPont=Rekord(x,y,z:Valós)
Változó
  kövNap,nap:TNap
  p,q:TPont

  kövNap:=Következő(nap)
  táv:=Hossz(p)-Hossz(q)  [Hossz a programozó
                           által definiált fv.]

3. Egyszerű Adattípusok

Alábbiakban definiáljuk az „eredendően” szerkezetnélküli ún. skalár típusokat, megadva ezek értékhalmazát, a hozzátapadó műveletek, relációk halmazát. Két típus „lóg ki” ezek közül. A szöveg (string) és a mutató típus. A szöveg típust azért soroljuk ide, mert a programozási nyelvek majd mindegyike fölkínálja, s így hozzátartozik az ún. elemi (natív) típusokhoz, más­részt abban jócskán eltér a későbbiekben tárgyalt összetettektől (s így oda még kevésbé illik), hogy elemeinek típusa nem választható meg szabadon. A mutató típus valóban szerkezet nél­küli, hisz értékhalmaza a memóriacímek egy részhalmaza (ezért tárgyaljuk itt), de az is két­ségtelen, hogy oly szorosan tapad valamely összetett típushoz, amely címét tartalmazza, hogy anélkül értelme sem lenne bevezetni.

A tárgyalt típusokról a következőket adjuk meg:

A rövid leírás kedvéért időnként alkalmazni fogjuk a Típ jelölést az éppen tárgyalt típusra va­ló hivatkozásra. (Értelemszerűen akkor, amikor a típus nevét a programozó feladata megadni.) Származtatott típus esetén pedig gyakorta a TB az ún. bázistípusra (amelyből kiindulunk) utal.

3.1. Elemi adattípusok

3.1.1. Egész

Értékhalmaz

-32768..32767 Ì Z
(MinEgész..MaxEgész)

Kezdőérték

0

Műveletek

+, -, *, Div (egészosztás), Mod, - (unáris mínusz), ^ (pozitív egészkitevős hatványozás)
:=

=, <, , , >,
Be:, Ki:

Ábrázolás

ún. kettes komplemens kódú

Megjegyzés:

A programozási nyelvek többféle értékhalmazzal is felkínálnak efféle típusokat. Pl. a Turbo Pascal megkülönböztet BYTE, SHORTINT (8 bites); INTEGER, WORD (16-bi­tes); LONGINT (24 bites)… Ennek ellenére nem tartjuk fontosnak az algoritmikus nyelvben ezeket megkülönböztetni, annál is inkább szükségtelennek gondoljuk, mert ha kell a „szélsőséges értékeire” tudunk hivatkozni a Min’Egész és Max’Egész típusfügg­vénnyel anélkül, hogy letennénk a voksunkat bármelyik konkrét értékhalmaz mellett.

3.1.2. Valós

Értékhalmaz

???..??? Ì R
(MinValós..MaxValós)

Kezdőérték

0.0

Műveletek

+ , - , * , /, - (unáris mínusz), ^
:=

=, <, , , >,
Be:, Ki:

Ábrázolás

ún. lebegőpontos ábrázolás (pontosabb lenne, ha e típust racionálisnak nevez­nénk, mert csak racionális számot képes ábrázolni), vagy
ún. pakolt decimális ábrázolás

Megjegyzések:

Vegyük észre, hogy ugyanazok a műveleti jelek most –ha hasonló jelentéssel is, de– mégsem egészen ugyanazzal a jelentéssel bírnak. (Polimorfizmus.)

Itt már föl sem vállaltuk az értékhalmaz pontosítását, mivel ez sokkal inkább implemen­táció-függő, mint az egész számoké.

3.1.3. Logikai

Értékhalmaz

Hamis..Igaz Ì L
(MinLogikai..MaxLogikai)

Kezdőérték

Hamis

Műveletek

nem, és, vagy
:=

=, <, ≤, ≥, >, ≠
Be:, Ki:

Ábrázolás

0 ≡ Hamis, –1 ≡ Igaz – azaz (valamely) egész típusra visszavezetés;
néha 1 ≡ Igaz – ekkor 1 bites az ábrázolás

3.1.4. Karakter

Értékhalmaz

0..255 -kódú jelek
(MinKarakter..MaxKarakter)

Kezdőérték

Min’Karakter

Műveletek

Karakter(.) Karakter: Egész→Karakter
Sorszám(.) – Sorszám: Karakter→Egész  (belső kód)
:=

=, <, ≤, ≥, >, ≠
Be:, Ki:

Ábrázolás

Valamely kódrendszer szerinti kód, mint előjelnélküli szám. (Fix bitszámú kód.)

Megjegyzés:

Sokfajta kód rendszer létezik (legismertebbek: ASCII, UNICODE). Többségük fix bit­számú (ASCII 8 bites, UNICODE 16 bites), de el­képzelhető változó bitszámmal dolgo­zó is. (L. Huffman-kódolás.)

3.1.5. (Absztrakt)Felsorolástípus

Értékhalmaz

(konstans1, konstans2, ... , konstansN)  (Típ jelölje a típus azonosítóját)
(MinTíp=konstans
1..MaxTíp=konstansN)

Kezdőérték

Min’Típ vagy NemDef

Műveletek

Következő(Típ-típusbeli kifejezés), Következő: Típ→Típ U {NemDef}
Előző(Típ-típusbeli kifejezés), Előző: Típ→Típ U {NemDef}
Sorszám(Típ-típusbeli kifejezés), Sorszám: Típ→Egész
Típ(egész típusú kifejezés), Típ: [0..Sorszám(Max’Típ)]→Tip
:=

=, <, ≤, ≥, >, ≠ (a felsorolás sorrendje egyben rendezés is)
Be:, Ki:

Ábrázolás

A minimálisan szükséges bitszámú (»log2(Számosság’Típ)) kód, mint előjelnélküli szám.

Megjegyzések:

Az értékhalmazban szereplő ismétlődés nélküli, szimbolikus nevek (a típus konstansai) nem lehetnek más típus (pl. egy másik felsorolástípus) értékhalmazában, ez a feltétel amiatt szükséges, mert a fordítóprogram így mindig egyértelműen el tudja dönteni a konstans „hovatartozását”. Természetesen „…” nem szerepelhet a felsorolásban, mivel a fordítónak nincsenek „előzetes elképzelései” arról, hogy mik lehetnének ott a felsoro­lásban.

Mindazon típusokat, amelyek értékkészletét konstansainak egyszerű fölsorolásával ad­hatunk vagy adhatnánk meg diszkrét típusnak hívjuk. Tehát ilyen az Egész, a Logi­kai, a Karakter, de lehet bármilyen –a program írója által kreált– absztrakt kons­tansokat tartalmazó fenti absztrakt felsorolástípus is.

Példa:

Típus
  TNap=(hétfő, kedd, szerda, csütörtök, péntek, szombat,
       
vasárnap)
Változó
 
tegnap,ma,holnap: TNap
Konstans
 
ünnepnap: TNap(vasárnap)

  Ha ma=Min’TNap akkor  tegnap:=Max’TNap
               különben holnap:=Előző(ma)
  Ha ma=Max’TNap akkor  holnap:=Min’TNap
               különben holnap:=Következő(ma)
  első:=Sorszám(hétfő) [első:=0]
  utsó:=Sorszám(vasárnap) [utsó:=6]

3.1.6. (Rész)Intervallumtípus

Csak diszkrét típusból származtatható egyszerű típus. Jelöljük a bázistípust TB-vel.

Értékhalmaz

konstans1..konstans2  Í TB
(MinTíp=konstans
1..MaxTíp=konstans2)

Kezdőérték

Min’Típ vagy NemDef

Műveletek

TB-vel megegyező műveletek (korlátozva persze az értékhalmazra)

Ábrázolás

TB-vel megegyező ábrázolás

 

Példa:

Típus
  TNap=(hétfő, kedd, szerda, csütörtök, péntek, szombat,
       
vasárnap)
  TMunkanap=hétfő..péntek
  THétvége=szombat..vasárnap
Változó
 
tegnap,ma,holnap: TNap
Konstans
 
ünnepnap: TNap(vasárnap)

  Ha ma=Min’TNap akkor  tegnap:=Max’TNap
               különben holnap:=Előző(ma)
  Ha ma=Max’TNap akkor  holnap:=Min’TNap
               különben holnap:=Következő(ma)
  első:=Sorszám(hétfő) [első:=0]
  utsó:=Sorszám(vasárnap) [utsó:=6???
[SzP2] ]

Megjegyzések:

1.      Érdekes anomáliára vezet a Sorszám és Típ típuskonstrukciós függvény követ­kezetes bevezetése. Miért?

2.      Ha a diszkrétségtől eltekintünk, kiterjeszthető a Valósakra is az intervallumtípus-képzés. Ez persze csak azzal a többlettel képzelhető el, hogy egy lépésközt is meg­adunk a származtatáshoz (amelyre vannak persze elvárások).

3.      További általánosítás lehetséges: nem első és utolsó elem által meghatározott része egy értékhalmaznak, hanem valamilyen (predikátummal definiált) tulajdonságnak eleget tevő elemeinek részhalmaza.

Példa:

Típus
  TTermSzám=Egész
            [Típusinvariáns: i:TTermSzám : i>0]
  TPrímek=TTermSzám
          [Típusinvariáns: n:TTermSzám : Prím?(n)]
          Függvény Prím?(Konstans x:Egész):Logikai
           
          Függvény vége.

3.1.7. Szövegtípus

Értékhalmaz

MaxHossz darabnyi jelből álló karakterláncok halmaza Ì Karakter*
(MinSzöveg..
MaxSzöveg)alfabetikus rendezés szerinti első (=üres szöveg); az utolsó erősen reprezentáció-függő, ezért nem definiáljuk.

Kezdőérték

’’ azaz üres-szöveg (Min’Szöveg)

Műveletek

+, Hossz(.), Balrész(.), Jobbrész(.), Jele(.)

:=

=, <, ≤, ≥, >, ≠
Be:, Ki:

Ábrázolás

Rekord(hossz:Egész, jel:Tömb(1..MaxHossz:Karakter)) – Pascal-stílusú
Karakter*
´ SzövegVégJel – C-stílusú

3.2. Mutató típusok

Az alcímbeli többes szám jogos, mert valójában tetszőleges (többnyire összetett) típushoz, mint bázistípushoz (TB) szervesen tartozhat egy-egy ilyen típus. Egy konkrét mutató típusú objektum csak egyfajta (nevezetesen TB-típusú) elemek kezdőcímeit hordozhatja. E szigo­rúság oka: az ellenőrizhetőség, biztonságosság.

Értékhalmaz

Memóriacím, amely valamely TB-típusú elem kezdőcíme, vagy Sehova
(rendezésnek nincs értelme
Þ Ø$MinTíp, MaxTíp)

Kezdőérték

Sehova

Műveletek

Lefoglal(Változó m:Típ, Konstans e:TB) – az eljárás létrehoz a memóriá­ban egy TB-elemet, amelynek értéke éppen ’e’, és a címét teszi ’m’-be; ha nincs elegendő hely, akkor ’m’-be Sehova érték kerül. Elhagyható a kezdő­értéket definiáló paraméter, ekkor a TB-beli iniciális értékű elem keletkezik.

Típ(Konstans m:Típ):TB – a függvény az ’m’-beli címnél kezdődő TB-ele­met adja vissza értékként

Felszabadít(Változó m:Típ) – az eljárás felszabadítja a memória ’m’-ben lévő címtől kezdődő TB-elemnyi tartományát, majd ’m’-be a Sehova érték kerül.

:=

=,, <, £, ³, >

Be:, Ki:

Ábrázolás

Memóriacím

Megjegyzések:

A Lefoglal művelet fent taglalt szemantikája is indokolja a szigorú típusosság kívá­nalmát!

A Pascal-beli Lefoglal művelet, a New, nem foglalkozik kezdőértékadással, sőt a helyfoglalás sikertelenségét sem közli a Sehova, vagyis a Nil értékkel. A Fel­szabadít, Dispose művelet sem törli a mutatót.

Példa:


Típus

  TBlokk=Tömb(1..MaxM:TElem)
  TBMut=TBlokk’Mutató
  TBlokkok=Tömb(1..MaxN:TBMut)

Változó
  e:TElem;    i:Egész
  b:TBlokk;   bk:TBlokkok;   bm:TBMut

  Ciklus i=1-től MaxN Div 2-ig
    Lefoglal(bm)  [bm-be kerül a lefoglalt TBlokk-nyi
                   terület címe, és a bm-nél kezdődő
                   tömb elemei TElem-kezdőértékűek]
    bk(i):=bm     [bk i. eleme a dinamikusan lefoglalt
                   tömb címe; értékmegosztás]
    … [a bk(i) tömbbe értékek kerülnek] …
  Ciklus vége
  b:=TBlokk(bk(1))  [az első blokk b-be]
  bm:=bk(1)         [az első blokk címe bm-be]
  Ciklus
i=1-től MaxM-ig
   
TBlokk(bm)(i):=e  [TBlokk(bm) bm-nél kezdődő blokk
                       mint tömb,
                       TBlokk(bm)(i) a tömb i. eleme]
  Ciklus vége

  [vajon milyen értékek vannak a bk(2..MaxN) elemekben;
   és mit mondhatunk a TBlokk(bk(2..MaxN)) értékéről?]

4. Összetett adattípusok – típuskonstrukciók

Helyesebb összetett típusok helyett típuskonstrukciókról beszélni, mivel valahány összetevő típusból hozunk létre, konstruálunk egy újat; s az ilyeneket létrehozni képes eszközöket típus­konstrukciós eszközöknek hívni.

Többnyire nem magától értetődő az ilyen struktúrák rendezése, ezért sem a Min’, sem a Max’ típusfüggvényt nem jelezzük. (Megjegyezzük: természetesen nem elképzelhetetlen –sőt!–, hogy utólag valamilyen rendezést rájuk is definiáljuk. Erről később még szó esik.)

A korábbi szokásos mondanivalók mellé bekerül a „konstrukció”, amelyben tisztázzuk az al­kalmazás szintaxisát.

Rövidítés miatt a bázistípusokat sorszámozzuk és így jelöljük: TB1, TB2, …

4.1. Összetett típusok osztályozásai

A bázistípusok sokfélesége szerint –

Rákövetkezési reláció az elemei között –

4.2. Rekord

Konstrukció

Rekord(mező1: TB1, mező2: TB2)

Értékhalmaz

TB1´TB2´

Kezdőérték

Az egyes komponensekhez tartozó kezdőérték.

Műveletek

Típ(Konstans m1: TB1, m2: TB2) – létrejön egy Típ típusú konstans m1, m2… mezőértékekből (konstrukciós operáció)

objTip.mezői:TBi – a „szokatlan” szintaxisú művelet értéke az adott Típ tí­pusú objektum (objTip) mezői mezőjének értéke… (szelekciós operáció)

objTip.mezői:TBi:=ei – a „szokatlan” szintaxisú értékadás eredménye az adott Típ típusú objektum (objTip) mezői mezőjének értékül adja ei-t…

:=

=,

Be:, Ki:

Ábrázolás

A mezők folytonos memóriaterületre képezve, a felsorolás sorrendjében.

4.3. Alternatív rekord

Olyan rekordféléről van szó, amelynek valamely mezőjétől (mezőitől) függ további mezőinek típusbesorolása.

Konstrukció

Rekord(
  mező1
: TB1, … mezőK: TBK,
 
Alternatívák
    felt1(mező1,…)
esetén (mező-k sorozata),
   
    feltm(mező1,…)
esetén (mező-k sorozata)
Alternatívák vége)

Értékhalmaz

TB1´…TBK´È(i=1..m)TBi,1´…TBi,ki

Kezdőérték

A nem egyértelműsége miatt NemDef.

Műveletek

A rekordhoz hasonlóan.

Ábrázolás

A mezők folytonos memóriaterületre képezve, a felsorolás sorrendjében, a hosszat a leghosszabb alternatívával számolva.

 

Példa:


Konstans
 
ffi: Egész(1)
 
: Egész(2)

Típus
  TDátum=...
  TNem=ffi..nő
  TKontroll=Függvény(TNem,Dátum,0..999):0..9

  Függvény Kontroll(Konstans n:TNem
                             d:TDátum
                             x:0..999):0..9
    [Kontroll: egy TKontroll típusú konkrét függvény]
   
  Függvény vége.

Típus

  TSzemSzám=Rekord(
    nem:TNem
    szülidő:TDátum
    sorszám:Egész
    ellenőr:TKontroll [itt csak olyan fv-típus képzelhető
                       el, amely értelmezési tartománya:
                       TNem
´TDátum´Egész; értékkészlete
                       most nincs megkötve])

  TSzemély=Rekord(
    szsz:TSzemSzám
    név:Szöveg
    Alternatívák
      nem=nő  esetén (lnév :Szöveg)
      nem=ffi esetén (katsz:Egész)
    Alternatívák vége)

Konstans
  Jézus:TSzemély((ffi,
                  1.12.25,
                  123,
                  Kontroll) [szsz mező tartalma],
                  ’Jézus Krisztus’ [név mező],
                  (123456) [nem=ffi
Þkatsz mező])

4.4. (Hatvány-)Halmaz

Csak diszkrét (többnyire nagyon is korlátozott számosságú) típusnak definiálhatjuk a hatvány­halmaz-típusát.

Konstrukció

Halmaz(TB)

(MinTíp=Æ..MaxTíp=TB-értékhalmaz, a tartalmazás alapján rendezve)

Értékhalmaz

TB*

Kezdőérték

Üres halmaz

Műveletek

Î (eleme), Ç (metszet), È (egyesítés), \ (különbség), Æ vagy Üres (üres halmaz létrehozás), Üres? (logikai értékű függvény)

:=

=, < (Ì), ≤ (Í), ≥ (Ê), > (É), ≠

Be:, Ki:

Ábrázolás

Tömb(TB:Logikai) – azaz bitvektor az adott elem tartalmazása vagy nem tartalmazása szerint;

Lista(TB) – tartalmazott elemeinek felsorolása [l. később]

 

Példa:


Típus
 
TÓra=0..23
  TNap=Halmaz(TÓra)

Változó
 
ma,holnap:TNap

Konstans
 
munkanap:TNap(7..12,14..20)

  Üres(ma)  [ma nincs kötött program
Þ ma „szabad”]
  Ha Üres?(holnap) akkor ma:=munkanap

4.5. Tömb

Konstrukció

Tömb(TIndex: TElem)

Értékhalmaz

TElemSzámoság(TIndex)

Kezdőérték

TElem típus kezdőértékei

Műveletek

objTip(i) (a Típ típusú objTip tömb i. TElem típusú eleme),
objTip
(i):=e (a Típ típusú objTip tömb i. eleme legyen ’e’ értékű)

:=

=,
Be:, Ki:

Ábrázolás

Az elemek folytonos memóriaterületre képezve, növekvő index sorrendben.

(L. később)

5. Sorozattípusok

Sorozattípusnak hívjuk azt a típust, amely

  1. homogén (azaz elemei egyetlen bázistípushoz tartoznak),
  2. egyértelmű rákövetkezési reláció van elemei között (az adott elemét legfeljebb egy elem követheti),
  3. egyetlen olyan eleme van, amelyet nem előz meg másik, s egyetlen olyan, amelyet nem követ.

5.1. Sorozatműveletek

Nagyon sokféle sorozattípus alkotható meg, mégha nem különböztetjük meg a különböző bá­zistípusúakat egymástól (azaz a strukturálisan azonosakat). Jellegzetes művelet-együttest ren­delve hozzájuk kapjuk a későbbiekben tárgyalt egyes, fontos alosztályait.

A legfontosabb műveletei, halmozva, a következők:

Művelet

Tevékenység-leírás

Üres

Létrehoz, elemek nélkül.

Létrehoz

Létrehoz, struktúrától függő elemekkel.

Üres?/Teli?

Ellenőrzi, hogy van-e eleme, ill. hogy bővíthető lenne-e?

ElemSzám

Hány eleme van?

Beilleszt

Struktúrától függő helyre új elemet illeszt.

Kihagy

Struktúrától függő helyről elemet hagy el.

Első/Utolsó

Első, utolsó elemének értékét adja.

Elejéről/Végéről

Leválasztja a sorozat első, utolsó elemét, értékét is visszaadja.

ElsőUtániak/UtolsóElőttiek

Eldobja az első, utolsó elemet.

Elejére/Végére

A sorozat első eleme elé, utolsó eleme mögé illeszt egy újat.

Elem

Struktúrától függően meghatározott elemének értékét adja vissza.

ElemMódosít

Struktúrától függően meghatározott elemének új értéket ad.

Elsőre/Utolsóra

A struktúra első, utolsó elem lesz az aktuális (ha volt ilyen).

Előzőre/Következőre

A struktúra aktuális eleme (ha volt ilyen) legyen az eddigit megelőző/követő.

Aszerint, hogy mely műveleteket engedjük meg egy sorozatfélénél beszélhetünk az alábbi tí­puskonstrukciókról. Nem jelöljük az „altípus-osztályokat”, továbbá a tevékenységeket nem a „hagyományos” nevükön említjük.

Típuskonstrukció

Tevékenységhalmaz

Tömb

(Létrehoz, ElemSzám,) Elem, ElemMódosít

Lista

Üres, Üres?, Teli?, Beilleszt, Kihagy, Elsőre, Utolsóra, Előzőre, Következőre, Elem, ElemMódosít

Sor

Üres, Üres?, Teli?, ElemSzám, Első, Elejéről, Végére

Verem

Üres, Üres?, Teli?, ElemSzám, Első, Elejére, Elejéről

Táblázat

Üres, Üres?, Teli?, ElemSzám, Elem, ElemMódosít…

InputSzekvenciálisFile

Létrehoz, Üres?, Elejéről

OutputSzekvenciálisFile

Üres, Üres?, Teli?, Végére

DirektFile

Üres, Létrehoz, Üres?, Teli?, ElemSzám, Elem, ElemMódosít…

AsszociatívFile

Üres, Üres?, Teli?, ElemSzám, Elem, ElemMódosít…

5.2. Sorozatok ábrázolásának lehetőségei

Folytonos ábrázolás, amikor az elemeket a memóriában a kezdőcímtől szorosan egymásután helyezzük el.

Memória

 

 

 

 

Elemsorszám:

 

1.

2.

3.

N.

 

 

kezdőcím

 

 

 

 

 

 

Láncolt ábrázolás, amelynél az elemek a memóriában elszórva helyezkednek el, a rákövetke­zést mutatóval biztosítjuk.

 

Blokkolt ábrázolás ötvözi az előbbi kettőt úgy, hogy láncot hoz létre az elemek egy adott szá­mú elemet tartalmazó tömbjéből.


 

Tartalom

ProgramozásMódszertan 1. előadás’2005 (vázlat) 1

1. Adatok jellemzői 1

1.1. Azonosító. 1

1.2. Hozzáférési jog. 1

1.3. Kezdőérték. 1

1.4. Hatáskör 1

1.5. Élettartam.. 2

1.6. Értéktípus. 2

2. Az értéktípus. 2

2.1. Az értéktípusról általánosságban. 2

2.2. Az asszociált műveletek osztályozása. 3

3. Egyszerű Adattípusok. 6

3.1. Elemi adattípusok. 6

3.1.1. Egész. 6

3.1.2. Valós. 7

3.1.3. Logikai 7

3.1.4. Karakter 8

3.1.5. (Absztrakt)Felsorolástípus. 8

3.1.6. (Rész)Intervallumtípus. 9

3.1.7. Szövegtípus. 10

3.2. Mutató típusok. 10

4. Összetett adattípusok – típuskonstrukciók. 12

4.1. Összetett típusok osztályozásai 12

4.2. Rekord. 13

4.3. Alternatív rekord. 13

4.4. (Hatvány-)Halmaz. 14

4.5. Tömb. 16

5. Sorozattípusok. 16

5.1. Sorozatműveletek. 16

5.2. Sorozatok ábrázolásának lehetőségei 17

 

 



[1] És most legkevésbé sem hagyjuk magunkat befolyásolni olyan programozási nyelvektől, amelyben a változók létrejöttét nem kíséri automatikus kezdőértékadás.


 [SzP1]dszeres programozás – Programozási bevezető (μlógia 18) [55-67, 68-74]

Módszeres programozás – Adattípusok (μlógia 34) [10-16, 17-35]

 [SzP2]A Sorszám(vasárnap) melyik típushoz asszociált függvény a vasárnap helyen? (a TNap-é vagy a THétvégé-é)