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

Hasonló dokumentumok
Algoritmizálás és adatmodellezés tanítása 1. előadás

Adatszerkezetek I. 1. előadás

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

Készítette: Nagy Tibor István

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

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

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

8. gyakorlat Pointerek, dinamikus memóriakezelés

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Struktúra nélküli adatszerkezetek

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

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

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

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

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Egyirányban láncolt lista

ELEMI PROGRAMOZÁSI TÉTELEK

Programozás alapjai. 5. előadás

LEGO robotok. XII. rész

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Java II. I A Java programozási nyelv alapelemei

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

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

Bevezetés az informatikába

Egyszerű programozási tételek

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.

Programozási tételek. Dr. Iványi Péter

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

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

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

Bevezetés a programozásba I.

Occam 1. Készítette: Szabó Éva

Programozás alapjai. 10. előadás

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Java II. I A Java programozási nyelv alapelemei

Webprogramozás szakkör

Programozas 1. Strukturak, mutatok

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

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

Szoftvertervezés és -fejlesztés I.

Web-programozó Web-programozó

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

Amortizációs költségelemzés

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

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Algoritmusok és adatszerkezetek I. 1. előadás

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

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Készítette: Nagy Tibor István

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

Pásztor Attila. Algoritmizálás és programozás az emeltszintű érettségin

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

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

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

Programozás II. előadás

A C programozási nyelv III. Pointerek és tömbök.

Sorozatok határértéke SOROZAT FOGALMA, MEGADÁSA, ÁBRÁZOLÁSA; KORLÁTOS ÉS MONOTON SOROZATOK

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Halmaz típus Értékhalmaz:

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Bevezetés az informatikába gyakorló feladatok Utoljára módosítva:

A C programozási nyelv III. Pointerek és tömbök.

Dinamikus modellek szerkezete, SDG modellek

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

A C# programozási nyelv alapjai

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

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

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

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

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Bevezetés a C++ programozási nyelvbe

Adatszerkezetek 1. Dr. Iványi Péter

AWK programozás, minták, vezérlési szerkezetek

Bevezetés a programozásba

Komputeralgebra Rendszerek

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Algoritmusok és adatszerkezetek I. 4. előadás

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

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

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

Programozási segédlet

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

Algoritmusok, adatszerkezetek, objektumok

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

Gyakorló feladatok az 1. nagy zárthelyire

3 A C programozási nyelv szintaktikai egységei

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

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

Programozás I gyakorlat

Átírás:

Pásztor Attila Algoritmizálás és programozás tankönyv az emeltszintű érettségihez 3. ADATTÍPUSOK...26 3.1. AZ ADATOK LEGFONTOSABB JELLEMZŐI:...26 3.2. ELEMI ADATTÍPUSOK...27 3.3. ÖSSZETETT ADATTÍPUSOK...28 3.4. A SPECIFIKÁCIÓ PONTOSÍTÁSA...29 3.5. ÖSSZEFOGLALÁS...30 3.6. KÉRDÉSEK, FELADATOK...30

3.1. Az adatok legfontosabb jellemzői: 3. Adattípusok 3. Adattípusok 3.1. Az adatok legfontosabb jellemzői: Azonosító: Hozzáférési jog: Kezdőérték: Hatáskör: Láthatóság:: Élettartam: Típus: A változóhoz rendelt név, így hivatkozhatunk rá. Az adat módosíthatósága és lekérdezhetősége. A deklarációval kap-e kezdőértéket, vagy sem. A programszöveg azon része, ahol a hozzáférés megengedett. Globális: minden eljárásból elérhető. Lokális: Csak az őt közvetlenül tartalmazó eljárásban használható. Saját: Csak az adott eljárásban használható. A program azon része, ahol lehetséges a hozzáférés (egy lokális változó eltakarhat egy külső változót. A futási idő azon része, ahol az azonosító ugyanazt az adatot jelenti. Az alábbi adattulajdonságok összessége: értékhalmaz, műveletek, ábrázolás. Az a halmaz, amelyből a változó értéket vehet fel. Megkülönböztetünk elemi és összetett típust. Értékhalmaz szempontjából az adat lehet: - Elemi típus: Szerkezetileg nem bontható tovább, például: egész, valós, logikai, karakter, mutató (adat címe), felsorolás, intervallum. - Összetett típus: Szerkezettel rendelkezik, például: rekord (különböző típusú, de logikailag összetartozó típusok együttes kezelése), halmaz, szöveg (karakterek sorozata), sorozat, tömb (mátrix). A bonyolultabb adatszerkezetekkel (verem, sor, lista, fa, táblázat, gráf) ebben a könyvben nem foglalkozunk. A típus meghatározza azt is, hogy milyen műveleteket értelmezhetünk rajta. Az elemi adattípusok lehetséges műveleteit 3 csoportba szokás sorolni: értékadó, típusátviteli: o relációs, o szelekciós (egy elem kiválasztásának módja), o konstrukciós (hogyan képezzük), o számosság (hány elemű az értékhalmaz), transzformációs (ugyanarra a típusra képez le, például +,-,min, előző,.). Az összetett adattípusok műveletei további csoportokat alkothatnak: o lekérdező (egy-egy érték kiolvasása), o bővítő (új adat felvétele), o szűkítő (adat törlése), o mozgató (kívánt adat kiválasztása), o egyéb (hibakezelés, hány eleme van, ). A típus harmadik jellemzőjével, az adatok memóriában történő tárolásának módjával ebben a könyvben csak nagyon felületesen foglalkozunk. Tekintsük át a középiskolás algoritmus és programozás feladatokban leggyakrabban használt adattípusokat! 26 Pásztor Attila

3. Adattípusok 3.2. Elemi adattípusok 3.2. Elemi adattípusok Ebben a fejezetben áttekintjük az elemi adattípusok legfontosabb jellemzőit. Egész ábrázolástól függ, például -32768.. 32767 értékadás, relációk, +,-,DIV,MOD,-,^(egész kit. hatvány) például 2 byte, 2-es komplemens (erre vonatkozik a megadott értékhalmaz) Változó i: egész Valós Logikai Karakter Felsorolás ábrázolástól függ, többféle értékhalmazzal szokás realizálni értékadás, relációk,+,-,*,/,-,^ például 6 byte, exponenciális normalizált alak Változó x: valós igaz, hamis (true, false) nem (NOT), és (AND), vagy (OR), kizáró vagy (XOR), értékadás (:=) 1 biten, vagy (1 byte-on) Változó L: logikai 0..255 kódú jelek halmaza értékadás, ord (hányadik a kódja szerint), chr (kódból karakter), relációk (kód alapján), + (konkatenáció, azaz összefűzés) általában 1 byte Változó c: karakter c:= a konstansok felsorolásával adjuk meg értékadás, relációk, ord (hányadik), pred (előző), succ (következő) Figyelem! Az előző és a következő nem ciklikusan értendő! Beolvasni, kiírni nem lehet! Szimulációra jó. sorszámot ábrázoljuk Konstans hétvége=(szombat,vasárnap) Intervallum az alaptípus összefüggő részhalmaza megegyezik az alaptípus műveleteivel 1..8, A.. Z Mutató nem negatív egész értékadás, new (lefoglal), dispose (felszabadít) például 4 byte Pásztor Attila 27

3.3. Összetett adattípusok 3. Adattípusok Egy memóriacím, ha nem definiált, akkor NIL értékű (ez nem azonos a nullával). Adott típusú változó tárolásához lehet memóriát foglalni, felszabadítani. Típus mutató=^karakter (karakterre mutat) Változó p: mutató Ez egyúttal példa arra is, hogy új típust hogyan adhatunk meg. A mutató típus byte-nyi adatra mutat. A p nevű változó egy ilyen mutató. Az adatterületet a new(p) utasítással lehet majd lefoglalni és a dispose(p) utasítással lehet felszabadítani. 3.3. Összetett adattípusok Az értékhalmaz mellett a szerkezete (struktúrája) is lényeges, ábrázolásukat a legtöbb esetben már meg sem említem. Rekord Halmaz Szöveg Sorozat Akkor használjuk, ha különböző típusú, de logikailag össze tartozó adatokat szeretnénk kezelni. alaptípus direktszorzata (például: szöveg x egész) értékadás, reláció (csak =, <>), kiválasztás (pont-tal jelöljük) mezőnként folytonos memóriaterületen Típus tanuló=rekord (név: szöveg; kor: egész) Változó: valaki: tanuló valaki.név a tanuló nevét jelenti, valaki.kor a tanuló korára hivatkozik. az alaptípus iteráltja, amely rendelkezik a halmaz tulajdonsággal (minden elem különböző, nincs sorrendiség) értékadás, halmaz relációk, unio, metszet, különbség, eleme-e (in), üreshalmaz (ez hozza létre), jele: [] Típus napok=(hétfő,kedd, szerda, csütörtök, péntek, szombat, vasárnap) Típus Halmaztípus= Halmaz(napok), vagy SET OF napok karakterek direktszorzata, lehet fix hosszúságú, vagy változó. értékadás, relációk (karakter kódra), + (konkatenáció), Jele(szöveg,i) a szöveg i-edik karaktere, melyet általában 1-től számolunk, esetleg szövegkezelő függvények Változó s: szöveg s := Ez egy példa. alaptípus iteráltja és a lineáris rendezettség jellemzi: pontosan egy megelőző és következő létezik. 28 Pásztor Attila

3. Adattípusok 3.4. A specifikáció pontosítása Tömb Megadása: az alaptípussal megegyezik, kiválasztás Megadása: név(indextípus:értéktípus) alakban történik A sorozatot egydimenziós tömbbel valósítjuk meg. Változó s: sorozat(1..10:egész) NEM használatos, helyette: Változó s: tömb(1..10:egész), vagy tömb[1..10:egész] Ki: s(1) alaptípus iteráltja és a lineáris rendezettség jellemzi: pontosan egy megelőző és következő létezik. az alaptípussal megegyezik, kiválasztás név(indextípusok felsorolása:értéktípus) alakban történik Változó t: tömb(1..10,1..10:egész), vagy: Változó t: tömb[1..10,1..10:egész] ez egy egészekből álló 10x10-es mátrix. Ki: t(2,4) 3.4. A specifikáció pontosítása A korábban tárgyalt két példa specifikációja és algoritmusa a változók megadásával, mondatszerű leírással: Feladat: Számold ki a háromszög területét, ha adott az egyik oldala és a hozzá tartozó magasság! Bemenet: a (alap, valós szám), m (magasság, valós szám) Kimenet: t (terület, valós szám) Előfeltétel: a és m pozitív Utófeltétel: t=a*m/2 Program Háromszög_terület: Változó a,m: valós [pozitív] Be: a,m t:= a*m/2 Ki: t Program vége. Az algoritmus elegánsabb, ha az adatok bekérésekor tudjuk, hogy mit is kell megadnunk. Az értékadó utasítás is elhagyható, hiszen az adatkiviteli utasítás tartalmazhat kifejezést: Program Háromszög_terület: Változó a,m: valós Ki: Alap: ; Be: a Ki: Magasság: Be: m Ki: A háromszög területe: Ki, a*m/2 Program vége. Pásztor Attila 29

3.5. Összefoglalás 3. Adattípusok A számkitaláló program specifikációja és algoritmusa: Feladat: Készíts algoritmust a következő számkitaláló játék ra! Gondolj egy egész számot 0 és 100 között, és jelöld Ezt g-vel. Aki ki akarja találni a számot, a következő módszer szerint jár el: A játékos mond egy számot (jelöljük ezt x-szel), te pedig megmondod, hogy a gondolt szám ennél nagyobb, vagy kisebb. Ezt mindaddig ismétlitek, amíg a kérdező kitalálja a gondolt számot! Bemenet: x [a tipp, egész] Kimenet: Szöveges üzenet, hogy a gondolt szám nagyobb, kisebb, vagy egyenlő a tippel. Előfeltétel: x 0 és 100 közötti Utófeltétel: A gondolt szám nagyobb., ha g>x A gondolt szám kisebb., ha g<x Kitaláltad a számot., ha g=x Változó: x,g: egész x:= véletlenszám [1 és 100 között] Program Számkitaláló: Ciklus Ki: Mondj egy számot! Be: g Ha g>x akkor Ki: A gondolt szám nagyobb. Ha g<x akkor Ki: A gondolt szám kisebb. Ha g=x akkor Ki: amíg g<>x Ciklus vége Program vége. 3.5. Összefoglalás Ebben a fejezetben megismertük az adatok legfontosabb jellemzőit. A legfontosabb elemi és összetett típusok értékhalmazát, műveleteit áttekintettük, valamint megismertünk alkalmazásukra néhány pédát. 3.6. Kérdések, feladatok Keress ábrázolásokat az egész számok kettes komplemensére! Keress konkrét példákat exponenciális alakú normalizált valós szám ábrázolásra! Keress példákat, amikor egy adott értékhalmazon megvalósított művelet kivezethet az értékhalmazból! Ismételd át amit a komplemens kóddal ábrázolt számok összeadásáról, kivonásáról, szorzásáról általános iskolában tanultál! 30 Pásztor Attila