Listák, szótárak, fájlok Listák, szótárak, fájlok

Hasonló dokumentumok
van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Programozási nyelvek Python

.Net adatstruktúrák. Készítette: Major Péter

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

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

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

Python tanfolyam Python bevezető I. rész

Programozási nyelvek Java

Programozási nyelvek Java

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Szkriptnyelvek II. Perl programok

7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

3. Osztályok II. Programozás II

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

ELTE SAP Excellence Center Oktatóanyag 1

INFORMATIKA javítókulcs 2016

Választó lekérdezés létrehozása

Smalltalk 2. Készítette: Szabó Éva

Láncolt lista. az itt adott nevet csak a struct deklaráción belül használjuk

Vezérlési szerkezetek Vezérlési szerkezetek: feltételes elágazás és ciklusok

2018, Funkcionális programozás

Python bevezető foglalkozás Python bevezető foglalkozás

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

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

Scratch bevezető foglalkozás Scratch bevezető foglalkozás

7. Strukturált típusok

A Python programozási nyelv

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Debreceni Egyetem Matematikai és Informatikai Intézet. 13. Védelem

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

1. numere.txt n (1 n 10000) n növekvő kilenc a) Pascal/C++ Például: NUMERE.TXT

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus változók. Dinamikus változók. Dinamikus változók. Dinamikus változók. 7.

Animáció készítése Scratch-ben

Adatbázis rendszerek Gy: Az adattárolás fejlődése

Pénzügyi algoritmusok

BASH script programozás II. Vezérlési szerkezetek

Függvények Függvények

Adatbázisrendszerek I. File-szintű adattárolás C-ben. 1. gyakorlat

10. ÓRA. Fájlok használata

Készítette: Nagy Tibor István

Függvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

Programozási nyelvek II. JAVA

Lekérdezések az SQL SELECT utasítással

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

LEGO robotok. XII. rész

Imperatív programozás

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Access gyakorlati feladatok lépésről lépésre

BASH SCRIPT SHELL JEGYZETEK

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Fájlkezelés. Szöveges fájlok kezelése

1. Alapok. #!/bin/bash

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

Adatbázis kezelés Delphiben. SQL lekérdezések

Komputeralgebra Rendszerek

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Szövegek C++ -ban, a string osztály

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

Access alapok. Megnevezés Művelet Minta. Új adatbázis létrehozása. Új / Üres adatbázis.. Tábla létrehozása tervező nézetben.

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

HÁZI FELADAT PROGRAMOZÁS I. évf. Fizikus BSc. 2009/2010. I. félév

Generikus Típusok, Kollekciók

2018, Funkcionális programozás

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

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

Szkriptnyelvek. 1. UNIX shell

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Gyakorló feladatok Gyakorló feladatok

A C programozási nyelv VI. Parancssori argumentumok File kezelés

I. Specifikáció készítés. II. Algoritmus készítés

Programozás I. zárthelyi dolgozat

Fogalmak: Adatbázis Tábla Adatbázis sorai: Adatbázis oszlopai azonosító mező, egyedi kulcs Lekérdezések Jelentés Adattípusok: Szöveg Feljegyzés Szám

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

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

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Adatbázisrendszerek I. Fájlszintű adattárolás C-ben

Tájékoztató. Használható segédeszköz: -

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

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

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Programozás I gyakorlat. 10. Stringek, mutatók

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Programozás I. Szöveges fájlok kezelése Felsorolástípus Objektumtömb Gyakorló feladatok

Adatbázis, adatbázis-kezelő

Szöveges fájl kezelése (a Caesar-kód feltörése) A kód feltörésének statisztikai háttere

Lekérdezések I. Egyszerű választó lekérdezések

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

adatbázis-táblázat, számítások

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Programozási nyelvek II.: JAVA, 4. gyakorlat


Járműfedélzeti rendszerek II. 4. előadás Dr. Bécsi Tamás

Átírás:

lista fogalma, használata listák másolása (alap szintű, teljes körű) szótárak fogalma, használata adatbázis alkalmazás fejlesztése műveletek fájlokkal (megnyítás, írás, olvasás, lezárás) rejtjelező alkalmazás fejlesztése

Lista a lista egy összetett adattípus egy lista elemek sorozatából áll, ahol az elemek bármilyen típusú adatok lehetnek (akár listák is!) például: >>> L = ["János", 16, True] >>> L ['János', 16, True] 2

Listák létrehozása 1. az elemeket szögletes zárójelek között, vesszővel elválasztva felsoroljuk (lásd előbbi példát) 2. a list() függvénnyel, melynek argumentuma olyan dolog, melynek elemei felsorolhatók 3. [ kifejezés for elem in objektum ] >>> L = ["János", 16, True] >>> L ['János', 16, True] >>> L = list(range(5)) >>> L [0, 1, 2, 3, 4] >>> L = list("helló!") >>> L ['H', 'e', 'l', 'l', 'ó', '!'] >>> L = [x**2 for x in range(5)] >>> L [0, 1, 4, 9, 16] 3

Műveletek listákkal a karakterláncokhoz hasonlóan listákat összeadhatunk és számmal szorozhatunk alkalmazhatjuk a len() függvényt alkalmazhatjuk az in és a not in operátorokat >>> [0] + [1, 2, 3] + [4, 5, 6] [0, 1, 2, 3, 4, 5, 6] >>> ['A']*5 ['A', 'A', 'A', 'A', 'A'] >>> L = [0, 1, 2, 3, 4] >>> len(l) 5 >>> 1 in L True >>> 10 in L False >>> 10 not in L True 4

Műveletek listákkal append() elem hozzáadása a lista végéhez extend() másik lista hozzáfűzése a lista végéhez insert() elem beszúrása a lista tetszőleges helyére >>> L = [1, 2, 3] >>> L.append(4) >>> L [1, 2, 3, 4] >>> L.extend([5, 6]) >>> L [1, 2, 3, 4, 5, 6] >>> L.insert(0, 0) >>> L [0, 1, 2, 3, 4, 5, 6] >>> L.insert(3, 'közepe') >>> L [0, 1, 2, 'közepe', 3, 4, 5, 6] 5

Műveletek listákkal pop() adott indexű elem eltávolítása a listából remove() eltávolítja az argumentum-ként adott elemet a listából (az első előfordulást keresi) index() visszaadja azt a pozíciót, ahol először elődordul egy adott elem a listában >>> L = [1, 2, 3, 4, 5] >>> L.pop(2) 3 >>> L [1, 2, 4, 5] >>> >>> L.remove(2) >>> L [1, 4, 5] >>> L.index(4) 1 6

Műveletek listákkal count() visszaadja, hogy egy adott elem hányszor fordul elő a listában reverse() megfordítja a lista elemeinek sorrendjét sort() növekvő (vagy csökkenő) sorba rendezi a lista elemeit >>> L = [1, 2, 3, 4, 5, 5] >>> L.count(5) 2 >>> L.count(6) 0 >>> L.reverse() >>> L [5, 5, 4, 3, 2, 1] >>> L = [1, 3, 5, 2, 4] >>> L.sort() >>> L [1, 2, 3, 4, 5] >>> L.sort(reverse=True) >>> L [5, 4, 3, 2, 1] 7

Listaelem elérése és lista szeletelése a karakterláncokhoz hasonlóan egy lista egy adott elemére az elem indexének [ ]-be írásával hivatkozhatunk ha az x. és y. elemek közötti elemekre akarunk hivatkozni, akkor [x:y]-t írunk >>> L = [0, 1, 2, 3, 4, 5] >>> L[0] 0 >>> L[3] 3 >>> L[-1] 5 >>> L[-2] 4 >>> L[1:4] [1, 2, 3] >>> L[2:] [2, 3, 4, 5] >>> L[:-2] [0, 1, 2, 3] 8

Többdimenziós lista ha a lista elemei is listák, akkor többdimenziós listákat kapunk: >>> L0 = [1, 2, 3] >>> L1 = [4, 5, 6] >>> L2 = [7, 8, 9] >>> L3 = ['*', 0, '#'] >>> L = [L0, L1, L2, L3] >>> L [[1, 2, 3], [4, 5, 6], [7, 8, 9], ['*', 0, '#']] >>> L[1][2] 6 >>> L[-1][1] 0 9

Szótárak a szótár (dictionary) is egy összetett adattípus a szótár ún. kulcs-érték párokból áll például: >>> D = { "név": "Józsi", "foglalkozás": "úthengeres", "kor": 47 } >>> D {'név': 'Józsi', 'foglalkozás': 'úthengeres', 'kor': 47} 10

Műveletek szótárakkal adott kulcsú elem kiolvasása létező elem módosítása új elem hozzáadása a szótárhoz elem törlése a szótárból >>> D["kor"] 47 >>> D["kor"] = 51 >>> D {'név': 'Józsi', 'foglalkozás': 'úthengeres', 'kor': 51} >>> D["lakóhely"] = "Szentendre" >>> D {'név': 'Józsi', 'foglalkozás': 'úthengeres', 'kor': 51, 'lakóhely': 'Szentendre'} >>> del D["foglalkozás"] >>> D {'név': 'Józsi', 'kor': 51, 'lakóhely': 'Szentendre'} 11

Adatbázis alkalmazás Készítsünk egy egyszerű adatbázis alkalmazást, ami a jobb oldalon látható funkciókat valósítja meg! Minden rekord legyen egy szótár, melyben a következő kulcsú elemek szerepelnek: név, születési_év, lakóhely! Az adatbázis legyen ilyen rekordokból álló lista! Üdvözöljük az adatbázisban! Főmenü ================== 1. Betöltés 2. Új rekord 3. Listázás 4. Mentés 0. Kilépés Választás: 12

Adatbázis alkalmazás Kezdjük az új rekord felvételével és a rekordok listázásával! Választás: 2 Új rekord felvétele ------------------- Név: Levi Születési év: 1970 Cím: Szentendre Választás: 3 Adatbázis lista --------------- [1] Levi; 1970; Szentendre 13

Fájlok használata a program futása során a memóriában eltárolt értékek elvesznek mikor a programból kilépünk az adatok hosszabb távú tárolására fájlokat használunk a fájlok a számítógép háttértárolóján találhatók, és névvel hivatkozunk rájuk 14

Fájl megnyitása és bezárása a fájl megnyitása az open() függvénnyel történik, melynek paraméterként meg kell adni a fájl nevét és a hozzáférés módját (r = olvasás, w = írás) a fájl bezárása a fájl objektum close() függvényével történik >>> f = open("db.txt", "r") >>> f.readline() 'Boti; 2005; Szentendre\n' >>> f.close() 15

Fájl olvasása a fájlból a fájl objektum read() függvényével lehet olvasni f.read() beolvas mindent f.read(n) csak n karaktert olvas be f.readline() beolvassa a következő sort a fájlból >>> f.read() 'Levi; 1970; Szentendre\nBoti; 2005; Szentendre\n' >>> f.read(16) 'Levi; 1970; Szen' >>> f.read(16) 'tendre\nboti; 200' >>> >>> f.readline() 'Levi; 1970; Szentendre\n' >>> f.readline() 'Boti; 2005; Szentendre\n' 16

Fájl írása a fájlba a fájl objektum write() függvényével lehet írni, melynek paraméterként meg kell adni a kiírandó adatot >>> f = open("test.txt", "w") >>> f.write("hello World!") 12 >>> f.close() 17

Adatbázis alkalmazás Az adatbázis mentéséhez kérjünk be egy fájlnevet, majd írjuk ki az összes rekordot az adott fájlba! Az adatbázis betöltéséhez kérjük be az adatbázist tároló fájl nevét, majd olvassuk be a rekordokat! Választás: 4 Adatbázis mentése ----------------- Fájl neve: db.txt Adatbázis elmentve! Választás: 1 Adatbázis betöltése ------------------- Fájl neve: db.txt Adatbázis betöltve! 18

Listák másolása Próbáld ki! Mit tapasztalsz? >>> L1 = ['alma', 'körte', 'szilva'] >>> L1 ['alma', 'körte', 'szilva'] >>> L2 = L1 >>> L2 ['alma', 'körte', 'szilva'] >>> L2[0] = 'barack' >>> L2 ['barack', 'körte', 'szilva'] >>> L1 ['barack', 'körte', 'szilva'] Vesd össze ezzel! >>> A = 12 >>> A 12 >>> B = A >>> B 12 >>> B = 14 >>> B 14 >>> A 12 19

Listák másolása >>> L1 = ['alma', 'körte', 'szilva'] >>> L1 ['alma', 'körte', 'szilva'] >>> L2 = L1 >>> L2 ['alma', 'körte', 'szilva'] >>> L2[0] = 'barack' >>> L2 ['barack', 'körte', 'szilva'] >>> L1 ['barack', 'körte', 'szilva'] L1 L2 alma barack körte szilva 20

Alapszintű másolás (shallow copy) Próbáld ki! Mit tapasztalsz? >>> L1 ['barack', 'körte', 'szilva'] >>> import copy >>> L3 = copy.copy(l1) >>> L3 ['barack', 'körte', 'szilva'] >>> L3.append('alma') >>> L3 ['barack', 'körte', 'szilva', 'alma'] >>> L1 ['barack', 'körte', 'szilva'] 21

Alapszintű másolás (shallow copy) Próbáld ki! Mit tapasztalsz? >>> L0 = [1, 2, 3] >>> L1 = ['alma', 'körte', L0] >>> L1 ['alma', 'körte', [1, 2, 3]] >>> L2 = copy.copy(l1) >>> L2 ['alma', 'körte', [1, 2, 3]] >>> L2[2].remove(3) >>> L2 ['alma', 'körte', [1, 2]] >>> L1 ['alma', 'körte', [1, 2]] 22

Alapszintű másolás (shallow copy) >>> L0 = [1, 2, 3] >>> L1 = ['alma', 'körte', L0] >>> L1 ['alma', 'körte', [1, 2, 3]] >>> L2 = copy.copy(l1) >>> L2 ['alma', 'körte', [1, 2, 3]] >>> L2[2].remove(3) >>> L2 ['alma', 'körte', [1, 2]] >>> L1 ['alma', 'körte', [1, 2]] L1 alma körte L0 1 2 3 L2 alma körte 23

Teljes körű másolás (deep copy) Próbáld ki! Mit tapasztalsz? >>> L0 = [1, 2, 3] >>> L1 = ['alma', 'körte', L0] >>> L1 ['alma', 'körte', [1, 2, 3]] >>> L2 = copy.deepcopy(l1) >>> L2 ['alma', 'körte', [1, 2, 3]] >>> L2[2].remove(3) >>> L2 ['alma', 'körte', [1, 2]] >>> L1 ['alma', 'körte', [1, 2, 3]] 24

Teljes körű másolás (deep copy) >>> L0 = [1, 2, 3] >>> L1 = ['alma', 'körte', L0] >>> L1 ['alma', 'körte', [1, 2, 3]] >>> L2 = copy.deepcopy(l1) >>> L2 ['alma', 'körte', [1, 2, 3]] >>> L2[2].remove(3) >>> L2 ['alma', 'körte', [1, 2]] >>> L1 ['alma', 'körte', [1, 2, 3]] L1 L2 alma körte alma körte L0 1 2 3 1 2 3 25

Összefoglalás egy lista elemek sorozatából áll, ahol az elemek bármilyen típusú adatok lehetnek (akár listák is!) listát létrhozhatunk úgy, hogy [ ]-ek között felsoroljuk az elemeit, vagy a list() függvénnyel 26

Összefoglalás műveletek listákkal: listák összeadása, len(), in, not in append(), extend(), insert(), pop(), remove() index(), count(), reverse(), sort() lista elem elérése és listák szeletelése: L[x], L[x:y] listák másolása: alapszintű másolás: copy.copy() teljes körű másolás: copy.deepcopy() 27

Összefoglalás a szótár kulcs-érték párokból áll egyébként hasonlít a listára, de máshogy kell új elemeket hozzáadni és az elemekre hivatkozni egy lista elemei lehetnek szótárak szótárakat hasonlóan lehet másolni, mint listákat: alapszintű másolás: copy.copy() teljes körű másolás: copy.deepcopy() 28

Összefoglalás hosszú távú tárolásra fájlokba mentjük az adatokat a fájlt használat előtt meg kell nyitni és használat után be kell zárni open(), f.close() fájlba lehet adatot írni, vagy onnan adatot olvasni f.write(), f.read(), f.readline() 29

Rejtjelező alkalmazás Írj egy rejtjelező alkalmazást, mely bekéri egy fájl nevét, majd beolvassa annak tartalmát, rejtjelezi azt, és az eredményt visszaírja a fájlba! A kódolás lehet egyszerű betűhelyettesítés amit egy szótár alapján végezhetsz. A szótárban tárold, hogy melyik betűhöz melyik rejtjeles betű tartozik, majd a fájlból beolvasott szöveg minden betűjét helyettesítsd a szótárban hozzátartozó kódbetűvel! Írd meg a dekódoló alkalmazást is! 30

Készítette: Buttyán Levente Levente.Buttyan@gmail.com CoderDojo Szentendre 2017 31