Bevezetés a programozásba. 5. Előadás: Tömbök

Hasonló dokumentumok
Számítógép és programozás 2

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Bevezetés a programozásba I.

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Bevezetés a programozásba I.

Egyszerű programozási tételek

Felvételi tematika INFORMATIKA

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Struktúra nélküli adatszerkezetek

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

1. Jelölje meg az összes igaz állítást a következők közül!

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Készítette: Nagy Tibor István

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Algoritmizálás és adatmodellezés tanítása 2. előadás

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Algoritmizálás, adatmodellezés tanítása 1. előadás

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Bevezetés a programozásba. 4. Előadás Sorozatok, fájlok

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Algoritmizálás, adatmodellezés 1. előadás

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Lineáris algebra gyakorlat

Digitális jelfeldolgozás

8. Előadás. Megyesi László: Lineáris algebra, , oldal. 8. előadás Mátrix rangja, Homogén lineáris egyenletrendszer

Bevezetés a programozásba. 9. Előadás: Rekordok

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

1. Feladat: beolvas két számot úgy, hogy a-ba kerüljön a nagyobb

Algoritmizálás és adatmodellezés 2. előadás

1. Generátorrendszer. Házi feladat (fizikából tudjuk) Ha v és w nem párhuzamos síkvektorok, akkor generátorrendszert alkotnak a sík vektorainak

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Bevezetés a programozásba

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

4-1. ábra. A tipikus jelformáló áramkörök (4-17. ábra):

Adatszerkezetek 1. Dr. Iványi Péter

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

1. gyakorlat

Lineáris algebra. (közgazdászoknak)

Bevezetés az informatikába

hatására hátra lép x egységgel a toll

Programozási alapismeretek 3. előadás

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

PROGRAMOZÁSI TÉTELEK

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

ELEMI PROGRAMOZÁSI TÉTELEK

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Algoritmizálás, adatmodellezés tanítása 1. előadás

Programozási Módszertan definíciók, stb.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

A számítógép alapfelépítése

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Adatszerkezetek I. 1. előadás

Algoritmizálás, adatmodellezés tanítása 2. előadás

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

A félév során előkerülő témakörök

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Érdekes informatika feladatok

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

8. gyakorlat Pointerek, dinamikus memóriakezelés

1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás)

5. Fejezet : Lebegőpontos számok

Programozás alapjai (ANSI C)

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Programozas 1. Strukturak, mutatok

7. Előadás. Megyesi László: Lineáris algebra, oldal. 7. előadás Elemi bázistranszformáció

Gyakorló feladatok az 1. nagy zárthelyire

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Programozási segédlet

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Kifejezések. Kozsik Tamás. December 11, 2016

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Vektorok. Octave: alapok. A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István

Bevezetés a programozásba I.

1. Határozzuk meg, hogy mikor egyenlő egymással a következő két mátrix: ; B = 8 7 2, 5 1. Számítsuk ki az A + B, A B, 3A, B mátrixokat!

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

7. fejezet: Mutatók és tömbök

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Véges állapotú gépek (FSM) tervezése

Hatékonyság 1. előadás

I. VEKTOROK, MÁTRIXOK

Átírás:

Bevezetés a programozásba 5. Előadás: Tömbök

ISMÉTLÉS Specifikáció Előfeltétel: milyen körülmények között követelünk helyes működést Utófeltétel: mit várunk a kimenettől, mi az összefüggés a kimenet és a bemenet között Ezek feltételek, tehát vagy teljesülnek, vagy nem. Ha teljesülnek, akkor a program megoldja a feladatot. A specifikáció feltételekből áll, nem utasításokból, mert a feladatot írja le, és nem a programot.

ISMÉTLÉS Összegzés tétele Változók: összeg, a : T összeg := 0 CIKLUS AMÍG nincs vége a sorozatnak a := következő elem összeg := összeg + f(a) CIKLUS_VÉGE

ISMÉTLÉS Számlálás tétele VÁLTOZÓK: sz: EGÉSZ, a:t sz := 0 CIKLUS AMÍG nincs vége a sorozatnak a:= következő elem HA feltétel(a) AKKOR sz := sz + 1 HA_VÉGE CIKLUS_VÉGE

ISMÉTLÉS Lineáris keresés tétele VÁLTOZÓK: hol,i: EGÉSZ, van: LOGIKAI, a: T van := HAMIS hol := 0 i := 0 CIKLUS AMÍG nincs vége a sorozatnak ÉS NEM van a := következő elem i := i + 1 HA feltétel(a) AKKOR van := IGAZ hol := i HA_VÉGE CIKLUS_VÉGE

ISMÉTLÉS Maximum keresés tétele VÁLTOZÓK: i, hol: EGÉSZ, a, max: T i := 1 a := első elem max := f(a) hol := 1 CIKLUS AMÍG nincs vége a sorozatnak a := következő elem i := i + 1 HA max < f(a) AKKOR max := f(a) hol := i HA_VÉGE CIKLUS_VÉGE

ISMÉTLÉS Ismert hosszú sorozat A sorozat hossza ismert, vagy beolvasható Számoljuk az olvasások számát, és ha elérjük a sorozat hosszát, abbahagyjuk Változók: i,n : egész, X : T n := Sorozat hossza, (pl: BE: n) i := 0 CIKLUS AMÍG i<n BE: X X feldolgozása... i:=i+1 CIKLUS_VÉGE

ISMÉTLÉS Végjeles sorozat Változók: X : T BE: X CIKLUS AMÍG X nem végjel X feldolgozása... BE:X CIKLUS_VÉGE

Fájl kezelése általában PLanG-ban ISMÉTLÉS VÁLTOZÓK: fb: BEFÁJL, a: T MEGNYIT fb: "fájlnév" BE fb: a CIKLUS AMÍG NEM VÉGE fb a feldolgozása BE fb: a CIKLUS_VÉGE LEZÁR fb

Mi a közös az eddigiekben? Tetszőlegesen hosszú sorozat feldolgozása Kevés (max 5-6) változóval Kizárólag elemenként feldolgozható feladatok Minden elemet pontosan egyszer kezelünk A sorrend kötött: csak abban a sorrendben tudunk olvasni, ahogy a sorozatban egymást követik Ezeknek a fő oka, hogy a feldolgoznivaló adatsor sokszor nem fér a memóriába, tehát spórolni kell a memóriaigénnyel

A tömb A tömb egy típuskonstrukció: egy egyszerű típust megsokszorozunk, adott hosszú sorozatát, mint típust kezeljük A tömb típusú változót közvetlenül ritkán, inkább a hordozott sorozat egy-egy tagját kezeljük VÁLTOZÓK: a: EGÉSZ[10] a[2]:=3 a 2 =3 Lényegében (nullától) indexelt, egyforma típusú változók egységes kezeléséről van szó

Példa tömbre PROGRAM tömb VÁLTOZÓK: a: EGÉSZ[10], i: EGÉSZ i := 0 CIKLUS AMÍG i < 10 a[i] := RND 5 + 1 i := i + 1 CIKLUS_VÉGE PROGRAM_VÉGE

Tömbök A tömb szabadon címezhető, tetszőleges sorrendben bejárható, átírható, kezdeti értéket nem tartalmazó változósorozat, ellentétben a bemeneten kapott sorozatokkal Viszont előre, fordítási időben tudni kell a méretét. Hallgatók rendszeresen abba a hibába esnek, hogy mindent tömbökkel akarnak megoldani. Ennek tipikus jele, hogy sorozatot akarnak beolvasni egy 1000 méretű tömbbe..

Tömbök A tételek tömbökön is alkalmazhatóak, mivel ismert hosszú sorozatokról van szó, ahol az adott elem a sorszámával hivatkozható... sum := 0 i := 0 CIKLUS AMÍG i < 10 sum := sum + a[i] i := i + 1 CIKLUS_VÉGE...

Többdimenziós tömb A tömb szintaxisa szerint T[méret] a tömb, ahol T tetszőleges típus A tömb is típus Tehát a T[méret1][méret2] is helyes, és tömbök tömbjét jelenti Ez kétdimenziós tömb, két független indexet lehet használni, mint koordinátákat Természetesen tetszőlegesen fokozható a dimenziószám elméletben. Gyakorlatban kifogyunk a memóriából.

Tömb: vektor, mátrix Az egydimenziós tömböt szokás vektornak, kétdimenziósat mátrixnak nevezni VÁLTOZÓK: a: EGÉSZ[10][10], i, j: EGÉSZ i := 0 CIKLUS AMÍG i < 10 j := 0 CIKLUS AMÍG j < 10 a[i][j] := RND 5 + 1 j := j + 1 CIKLUS_VÉGE i := i + 1 CIKLUS_VÉGE

Tömbök jelentősége Olyan feladatoknál, ahol több adatra van szükség annál, mintsem külön változókban kényelmes lenne kezelni, fix számú, és még beleférünk a memóriába többször kell kiértékelni ugyanazt az értéket tetszőleges sorrendben kell hozzáférni az elemekhez az adatokat módosítani is kell, nem csak olvasni.. rákényszerülünk a tömb használatára

Néhány példa Képkezelő szoftverek a képet mátrixként tárolják konkrétan a FF szürkeárnyalatos képeket általában egész számok mátrixával ábrázolják Hagyományos mátrixműveletek, Gauss elimináció, bázistranszformáció Táblázatos adatok A szöveg típus néhány művelettől eltekintve felfogható karakter-vektornak

Tömbök és a PLanG A tömb típusú változók kiírathatóak, de nem beolvashatóak A változók értékeit mutató táblázatban az egész tömb követhető A tömbelemek kezdeti érték nélkül jönnek létre, erről gondoskodni kell

Összefoglaló Tömbök: fix hosszú homogén változósorozat Szintaxis: Típus[méret] Akkor és csak akkor használandó, ha ismert hosszú, többszöri írást vagy olvasást, vagy tetszőleges sorrendben feldolgozást igényel a feladat Lehet több dimenziós

Rövid kitérő a számábrázoláshoz Az EGÉSZ illetve VALÓS típusok nevei azt a látszatot keltik, hogy a típusértékhalmaz a teljes egész illetve valós számokat fedi Ez természetesen lehetetlen, véges hosszú memóriaszeletek állnak rendelkezésre a számok ábrázolásához A fenti típusok tehát nem mindenben viselkednek a várakozásoknak megfelelően

Rövid kitérő a számábrázoláshoz Például az EGÉSZ 32 bites szám, tehát legfeljebb 2 32 féle értéket vehet fel. Ezt praktikusan a -2 31.. +2 31-1 tartományra tolták: -2147483648.. 2147483647 kettes komplemens kódolás Ennek az a következménye, hogy 2147483647 + 1 = -2147483648 Ezt a jelenséget túlcsordulásnak nevezik

Rövid kitérő a számábrázoláshoz A valós számok véges ábrázolása miatt pontatlan Számológépről ismerős lehet: 3 gyökének a négyzete 2.99999999 Ebből kifolyólag soha nem vizsgáljuk programban egy valós típusba tartozó változó egyenlőségét semmivel

Rövid kitérő a számábrázoláshoz A valós számokat X * 2Y alakban tárolják, visszavezetve az egész számokra Pl 32 bites esetben 23 bit X-re, 8 bit Y-ra, plusz előjel Ennek következménye, hogy nem mindenhol egyformán sűrű az ábrázolás, ha 23 kettedesjegynél nagyobb a nagyságrendi különbség, akkor előfordulhat, hogy A 0, de A +B=B

Itt a vége a PLanG képességeinek, legközelebb a C++ alapoktól folytatjuk