Elemi programozási tételek középiskolásoknak, a Python 3 nyelvet alapul véve
|
|
- Albert Illés
- 7 évvel ezelőtt
- Látták:
Átírás
1 Elemi programozási tételek középiskolásoknak, a Python 3 nyelvet alapul véve Koós Antal, (CC BY-NC-SA 4.0) 2016 Ajánlott olvasmányok: A Python 3 dokumentációja angolul: docs.python.org A Python a gépben c. könyv: Tartalom FOGALMAK...2 KERESÉSI TÉTEL...5 MEGSZÁMLÁLÁSI TÉTEL...7 ÖSSZEGZÉSI TÉTEL...9 A MINIMUM KIVÁLASZTÁSÁNAK TÉTELE...10 KIVÁLOGATÁSI TÉTEL...12 RENDEZÉS BESZÚRÁSSAL...14 BUBORÉKRENDEZÉS...16 RENDEZÉS A MINIMUM KIVÁLASZTÁSÁVAL...17 RENDEZÉS A PYTHON 3-BAN...18 HALMAZMŰVELETEK A PYTHON 3-BAN...19 BINÁRIS KERESÉS...22 Érettségi feladatok megoldásai: sites.google.com/site/eutlantis/erettsegi
2 FOGALMAK Az általános programozási elvek tanításánál célszerűnek tűnik egy programnyelv specialitásaiban nem elmélyedve olyan ismereteket átadni, amelyek bármelyik másik nyelvben is hasznosíthatóak. Ilyen téma a tömbök és azok indexeléssel történő kezelése, ami egyaránt alkalmazható az alacsony és a magas szintű programozási nyelvekben. A magasabb szintű nyelvekből mostanra már igen sok létezik, s egyre újabbak megalkotására történnek próbálkozások. Ezekben a nyelvekben közös, hogy a tömbökön túlmenően, a nyelvhez tartozóan, olyan előre definiált objektumtípusokkal bírnak, amelyek a tömbökhöz képest sokkal több funkcionalitást hordoznak és így gyorsabb fejlesztést tesznek lehetővé, illetve megkönnyíthetik a logikai tervezést. Ezen objektumtípusoknak egy része (valószínűleg) az összes magas szintű nyelvben megtalálható, és bár más-más nevet viselnek, az alapvető tulajdonságaik azonosak, például ilyenek a szótárak, asszociatív tömbök, listák, karakterláncok, halmazok, készletek, sorok, vermek stb. Az ilyen objektumokkal kapcsolatos, az egyik nyelvben megszerzett összes ismeret ugyan nem vihető át egy az egybe egy másik nyelv tanulási folyamatába, de megkönnyítheti azt az alapvető tulajdonságok általánosításával. Ebben az írásban a Python 3 nyelvet alapul véve néhány példát mutatunk a középiskolában tanított elemi programozási elvek megfogalmazására, de nem célunk az összes tétel ismertetése. Az algoritmusok megadásánál nem valamilyen pszeudokódot használunk, hanem magát a Python 3-t, s ehhez előzetesen megadjuk bizonyos fogalmak és nyelvi elemek rövid magyarázatát. Kezdjük az objektumokkal: Iterálható objektum: Olyan objektum, amelyből más objektumokat tudunk kinyerni. A kiolvasott objektumokat a továbbiakban elemnek fogjuk nevezni. Az elemeket az objektumon történő iterálással, más kifejezéssel az objektum bejárásával egymásután sorban elérhetjük. Az iterálható objektumok sokfélék lehetnek: van amelyik 2/22
3 eleve tartalmazza az összes elemét, és van, amelyik csak a bejárás folyamán állítja azokat elő; némelyik indexelhető, némelyik nem; egyesekben módosíthatóak az elemek, másokban nem; és olyanok is léteznek, amelyek a bejárás után kiüresednek stb. A bejáráshoz mindig előállítható egy ún. iterátor objektum, de speciális esetekben alkalmazható az indexelés vagy az ún. kulcs szerinti hivatkozás is. Példák: listák, bájt-tömbök, karakterláncok, sokaságok, szótárak, generátorobjektumok stb. Indexelhető objektum: Az ilyen objektum elemeit a természetes számok sorozatának 0-val induló és eggyel növekedő tagjaival párosíthatjuk, s az ezekre történő hivatkozással (indexeléssel) az elemeket el is érhetjük. Ha egy objektum indexelhető, akkor iterálható is, de egy iterálható objektum nem feltétlen indexelhető, az indexelhetőség egy erősebb megszorítás. Példák: listák, karakterláncok (string), sokaságok (tuple-k), bájt-tömbök (bytes) stb. Ellenpéldák: készletek, szótárak, egész számok stb. Leképező (mapping) típusú objektum: Ezen objektum elemeit kulcs-érték párok alkotják. Egy elemhez tartozó értéket a kulcs indexszerű megadásával érhetünk el. Kulcs nagyon sokféle objektum lehet, például számok, karakterláncok stb., és ezek keverten is alkalmazhatók. Ezek az objektumok a kulcsok szerint iterálhatók. (Ha egy konkrét szótár kulcsai egymásután következő egész számok, 0-val kezdődően, és csak ezek, akkor úgy tűnhet, hogy ez a szótár indexelhető, de az elemek elérésének belső mechanizmusa ekkor is eltér a "valódi" indexeléstől.) Példa: szótár. Ellenpélda: listák, készletek stb. 3/22
4 Az algoritmusok leírásában felhasznált nyelvi elemek: A blokkokat a sorok behúzásával jelöljük. A for és while szerkezetekhez tartozhat egy else ág is, amely akkor hajtódik végre, ha a ciklustörzsből nem történt kilépés a break utasítással. enumerate(bejárható): Az iterálható bejárható objektum elemeit szolgáltatja egymásután, és minden elemhez ad egy sorszámot is, a sorszámozás 0-val kezdődik. Ha az objektum indexelhető, akkor a sorszám megegyezik az indexszel. (A sorszám és az index kapcsolatának megvilágítására vegyük azt a példát, amikor egy hivatalban a szolgáltatást igénybe venni kívánó személyeknek sorszámot kell húzniuk, és akkor mehetnek az ügyintéző pultjához, ha az információs tábla megjeleníti azt. Addig azonban tetszés szerint leülhetnek a szabad székekre, illetve ácsoroghatnak a helyiségben bárhol. A sorszám tehát a személyek érkezési (korábbi-későbbi) idejének a leképezése, de nem ad semmilyen felvilágosítást a személyek elhelyezkedéséről. Ám, ha ez a hivatal egy szigorú intézmény, akkor megkövetelheti, hogy az emberek rögtön álljanak sorba amint megérkeznek, s ekkor a sorszám már a helyet is meghatározza, indexeli. Az enumerate() az elemek kiolvasásának idejét képezi le a sorszámra. Egy indexelhető objektum esetén az elemek az indexüknek megfelelően, 0-tól kezdve egyenként kerülnek felsorolásra, azaz a sorszám meg fog egyezni az indexszel.) len(bejárható): A bejárható objektum elemszámát adja meg. range(n): 0-tól n-1 -ig szolgáltatja az egész számokat egymásután. A range(m,n,l) kifejezésben az egész számok sorozata m-től indul, n-1-ig tart, és l a növekményük. A range(m,n) esetén a lépésköz 1 lesz. True, False: Az igaz és a hamis értékek. A következőkben a tulajdonság(elem)/kifejezés(elem) kifejezéseket ott szerepeltetjük, ahol vagy egy előzetesen definiált függvényt alkalmazhatunk, amelynek az elem az argumentuma, vagy ahová egy az elemet tartalmazó kifejezést közvetlenül beírhatunk. 4/22
5 KERESÉSI TÉTEL Egy iterálható objektumban keresünk egy adott tulajdonságú elemet. Nem szükséges, hogy az objektum indexelhető vagy módosítható legyen. A kimenet hamis lesz, ha az objektum nem tartalmaz a kívánt tulajdonságú elemből. Ha tartalmaz, akkor egy többelemű sokaság (tuple) az eredmény, amelynek első eleme az igaz értékű True, a többit pedig a feladat természetének megfelelően választhatjuk, például a második lehet maga a keresett elem, a harmadik pedig annak sorszáma, illetve indexe, ha az objektum indexelhető. Az algoritmus első változatában nem vagyunk kíváncsiak a sorszámra (indexre), a másodikban igen: for elem in bejárható: if tulajdonság(elem): kimenet= True,elem break else: kimenet= False for sorszám,elem in enumerate(bejárható): if tulajdonság(elem): kimenet= True,elem,sorszám break else: kimenet= False Ha nincs szükségünk magára az elemre, csak arra az információra, hogy van-e ilyen tulajdonságú az objektumban, akkor elegendő csak a True-False értékeket használnunk kimenetként (döntési tétel). Ha bizonyosak vagyunk benne, hogy a keresett tulajdonságú elemből legalább egy van az objektumban, akkor elhagyhatjuk az else blokkot és a kimenetből a True értéket (kiválasztási tétel). (Megjegyzés: Amennyiben valamely programnyelvben nem lehetséges egynél több értéket adni egy változónak vagy egy függvény visszatérési értékének, akkor ott egy olyan adatstruktúra címét kell megadni, amit feltölthetünk a kívánt értékekkel.) 5/22
6 Az alábbiakban bemutatjuk a fenti algoritmus indexeléses változatát is, amely nyilván csak indexelhető objektumokkal használható: for index in range(len(bejárható)): if tulajdonság(bejárható[index]): kimenet= True,bejárható[index],index break else: kimenet= False Példák: # lista: iterálható, indexelhető, módosítható bejárható= [1,2,3,4,5,6,16] for elem in bejárható: if elem%3==1 and elem>5: kimenet= True,elem break else: kimenet= False print(kimenet) # befagyasztott készlet: # iterálható, nem indexelhető, nem módosítható bejárható= frozenset({1,3,42,2.7,5,42,42,3.14}) for sorszám,elem in enumerate(bejárható): if elem>3 and elem<4: kimenet= True,elem,sorszám break else: kimenet= False print(kimenet) Amennyiben egy elemnek csak az objektumbeli meglétére vagyunk kíváncsiak, akkor a Pythonban elegendő az in operátor használata (for nélkül), amire példákat a halmazműveletekről szóló fejezetben találhatunk. 6/22
7 MEGSZÁMLÁLÁSI TÉTEL A keresési tételnél egy iterálható objektumban kerestünk egy adott tulajdonságú elemet, s ha találtunk ilyent, akkor megálltunk. Most megszámláljuk ezeket, a kimenet a darabszám lesz. Nem szükséges, hogy az objektum indexelhető vagy módosítható legyen, de megadjuk a hagyományos indexelős változatát is az algoritmusnak. darab=0 for elem in bejárható: if tulajdonság(elem): darab=darab+1 darab=0 for index in range(len(bejárható)): if tulajdonság(bejárható[index]): darab=darab+1 Példák: bejárható= [ 2,4,6,5,7,8] párosak=0 for elem in bejárható: if elem%2==0: párosak+=1 print(párosak) bejárható= ["alma","körte","meggy","alma","alma"] darab=0 for elem in bejárható: if elem=="alma": darab+=1 print(darab) 7/22
8 Megjegyzés: Az ún. asszociatív tömbök segítségével könnyen megtehetjük, hogy egy bejárható objektumban nem csak az egy adott tulajdonsággal bíró elemek számát határozzuk meg, hanem több tulajdonság alapján végzünk számlálást. Nem kell előre megbecsülnünk a változatok számát, azaz nem szükséges előzetesen helyet foglalni a darabszámokat nyilvántartó változóknak. A Pythonban ezt a szótár (dictionary) objektummal kivitelezhetjük. Nézzük a példát: bejárható= ["alma","körte","meggy",1,2,3,"alma","alma",-10] darabok=dict() for elem in bejárható: if type(elem)== int: darabok["egész_számok"]= darabok.get("egész_számok",0)+1 else: darabok[elem]= darabok.get(elem,0)+1 print(darabok) A kimenet: { 'meggy': 1, 'körte': 1, 'alma': 3, 'egész_számok': 4 } A get() metódus az első argumentumként megadott kulcshoz tartozó értéket olvassa ki a szótárból, de ha még nincs ilyen kulcs, akkor a második argumentum kerül a kifejezésbe helyettesítő értékként. Listák esetében a count(elem) metódussal egyszerűen megkaphatjuk a megadott elem darabszámát. 8/22
9 ÖSSZEGZÉSI TÉTEL Egy bejárható és csak számokat tartalmazó objektum elemeiből származtatott értékek összegét képezzük. Nem szükséges, hogy az objektum indexelhető vagy módosítható legyen. Megadjuk az indexelős változatot is. eredmény=0 for elem in bejárható: eredmény=eredmény+kifejezés(elem) eredmény=0 for index in range(len(bejárható)): eredmény= eredmény+kifejezés(bejárható[index]) Példa: bejárható= [1,2,3,4] eredmény=0 for elem in bejárható: eredmény+= elem*elem print(eredmény) # eredmény+= elem print(sum(bejárható)) Megjegyzés: Amikor csupán az elemek összegére vagyunk kíváncsiak, használhatjuk a Python sum() függvényét bármely bejárható objektumon. 9/22
10 A MINIMUM KIVÁLASZTÁSÁNAK TÉTELE Egy bejárható, nem üres objektum elemei közül kiválasztjuk a legkisebbet. Nem szükséges, hogy az elemek számok legyenek, elegendő ha az elemek között értelmezhető a kisebb-nagyobb viszony. Például két karakterlánc közül kisebb az, amelyik az ábécé szerinti sorba rendezésnél előbbre kerül (lexikografikus összehasonlítás). minimum= kifejezés(bejárható) for elem in bejárható: if elem<minimum: minimum= elem minimum=bejárható[0] for index in range(1,len(bejárható)): if bejárható[index]<minimum: minimum= bejárható[index] minimum,index= bejárható[0],0 for index in range(1,len(bejárható)): if bejárható[index]<minimum: minimum,index= bejárható[index],index Megadtuk az algoritmus indexeléses verzióit is, amelyek közül a második nem csak a minimumot, hanem annak indexét is előállítja. Az indexelésnek most megvan az az előnye, hogy a minimum nevű változónak könnyű kezdeti értéket adni. A nem indexelős algoritmus általánosabban van megfogalmazva, de ha az objektum indexelhető, akkor a kifejezés(bejárható) szerkezet lecserélhető az indexeléses változatban szereplő kezdeti értékadásra. Kezdőértékként mindig megadhatunk egy elég nagy véges értékű konstanst is, ami biztosan nagyobb lesz a bejárható objektum bármely eleménél. Sok nyelvben eleve rendelkezésre áll olyan 10/22
11 konstans vagy objektum, amely a műveletekben úgy viselkedik, mintha végtelen nagy lenne, a Pythonban ezt így állíthatjuk elő: float('inf') (a legkisebbhez pedig a float('-inf') szükséges). A Pythonban a kezdeti értékadást a nem indexelhető esetben egy ún. iterátor objektummal is elvégezhetjük: a minimum=next(iter(bejárható)) kifejezés a felsorolás első elemét állítja be. Ha nincs szükségünk a minimális elem indexére, akkor a Pythonban a standard min() függvény mindent elvégez helyettünk. (Természetesen a min() alkalmazása után, a minimum ismeretében, egy második bejárás során az indexet, sőt az összes minimális értékkel bíró elem indexét is meghatározhatjuk). A függvénynek bemeneti értékként megadhatjuk, ha szükséges, hogy a bejárható objektum elemeihez hogyan kell képezni az összehasonlításhoz szükséges értékeket (kulcsokat). Ezt egy ún. kulcsfüggvény megadásával tehetjük meg, amire az alábbiakban példát mutatunk. (A maximum megkeresésének végiggondolását az olvasóra bízzuk.) bejárható= [10,1,5,0.2,3] print(min(bejárható)) # diákok=[ ("János",17,4.9),("Etel",18,4.2),("Viola",19,4.1) ] def hasonlítandó(elem): név,kor,átlag= elem return átlag #return elem[2] #return név A kimenet az alábbi lesz: 0.2 ('Viola', 19, 4.1) print(min(diákok,key=hasonlítandó)) 11/22
12 KIVÁLOGATÁSI TÉTEL Adott egy bejárható Abej nevű objektum és egy meghatározott tulajdonság, az Abej-ben lévő és az adott tulajdonsággal bíró elemekről másolatot kell készíteni egy másik bejárható Bbej objektumba. Nem szükséges hogy az Abej indexelhető legyen, de megadjuk az algoritmus indexelős változatát is. Az sem szükséges, hogy az Abej módosítható legyen, de a Bbej-nek értelemszerűen annak kell lennie. A nem indexelős, általánosabb érvényű változatban a Bbej egy lista típusú objektum lesz, amelyhez az append() metódussal lehet elemeket hozzáfüggeszteni. Az algoritmus indexelős változatában a feltöltendő objektum létrehozását nem mutatjuk be, csak az írási indexének adunk kezdőértéket. Bbej=[] for elem in Abej: if tulajdonság(elem): Bbej.append(elem) bindex=0 for index in range(len(abej)): if tulajdonság(abej[index]): Bbej[bindex]= Abej[index] bindex=bindex+1 Példák: # Abej: indexelhető lista Abej=[0,1,1,2,3,5,8] Bbej=[] # Bbej: indexelhető lista for elem in Abej: if elem*elem>20: Bbej.append(elem) A kimenet: [5, 8] print(bbej) 12/22
13 # Abej egy set: nem indexelhető Abej= {"alma","körte","meggy","kiwi"} Bbej=[] for elem in Abej: if len(elem)==4: Bbej.append(elem) A kimenet: ['kiwi', 'alma'] print(bbej) Abej= ["alma","körte","alma","meggy","kiwi"] # Az írandó objektum nem indexelhető, de nincs is rá szükség: Bbej=set() for elem in Abej: if len(elem)==4: Bbej.add(elem) A kimenet: {'kiwi', 'alma'} print(bbej) A fenti utolsó példában az írandó objektumot listáról készletre cseréltük, az append() metódust pedig a megfelelő add()-ra. Az alábbi példa bemutatja, hogy a Python ún. listaépítő (list comprehension) szerkezetével milyen tömören lehet a kiválogatást kódolni (ugyanez készletépítés lesz, ha a [] helyett {} használunk): Abej=[0,1,1,2,3,5,8] Bbej= [ elem for elem in Abej if elem*elem>20 ] print(bbej) 13/22
14 RENDEZÉS BESZÚRÁSSAL Egy módosítható és indexelhető objektum elemeinek a sorrendjét szeretnénk megváltoztatni úgy, hogy a legkisebb elem a 0-s indexű helyre kerüljön, majd azt kövesse a második legkisebb stb. Amint a minimum kiválasztásának tételénél megemlítésre került, itt sem szükséges, hogy az elemek számok legyenek, elegendő ha az elemek között értelmezhető a kisebb-nagyobb viszony. Az alábbi algoritmusokban az objektumot A-val jelöltük: N=len(A) for k in range(1,n): T= A[k] i=k-1 while i>=0 and T<A[i]: A[i+1]=A[i] i=i-1 A[i+1]=T N=len(A) for k in range(1,n): i=k-1 while i>=0 and A[i+1]<A[i]: A[i],A[i+1]=A[i+1],A[i] i=i-1 Tekintsük előbb a bal oldali eljárást. Az algoritmusban az objektumot két tartományra bontva képzeljük el: az alsó tartományban, a 0-s indextől kezdve az elemek valameddig már rendezve vannak, a felső tartomány még rendezetlen. Ekkor vesszük a felső tartomány legalsó elemét, aminek az értéke bármilyen nagy vagy kicsi is lehet, és megnézzük, hogy az alsó rendezett tartományba hová szúrhatjuk be, hogy ott a rendezettség fenn is maradjon. A beszúrás helye a már rendezett tartományt két részre bontja: az alsó részt változatlanul hagyjuk, utána beírjuk a beszúrandó elemet, de előtte a felső részt feltoljuk egy pozícióval, hogy az a 14/22
15 beszúrandó elem eredeti helyét, ami még a rendezetlen tartományban van, magába foglalja. Így a felső rendezetlen tartomány eggyel kevesebb elemmel fog bírni, és az eljárást ismételve az egész objektum rendezett lesz. A külső (k) ciklus az 1-es indexel kezdődik, mert úgy vesszük, hogy a 0-s indexű elem önmagában már egy rendezett tartományt képez. A beszúrás helye fölötti rendezett rész eltolását nem egyben végezzük, hanem egyesével, mert ezt megtehetjük lépésenként, amikor a beillesztendő elem új helyét keressük, és így nem kell kétszer bejárni ezt a részt. A jobb oldali algoritmusban nem emeljük ki a beszúrandó elemet (például egy T változóba), hanem a lépésenkénti összehasonlítás során megcseréljük a nála nagyobbakkal, azaz az eljárást akár egyfajta cserélő algoritmusnak is nevezhetjük. Nézzünk néhány példát: a=[10,3,8,1,2,8,5,-1] b=["xyz","efgh","abc","ab","ab"] c=[] def rendez(a): N=len(A) for k in range(1,n): i=k-1 while i>=0 and A[i+1]<A[i]: A[i],A[i+1]=A[i+1],A[i] i=i-1 A kimenet: [-1, 1, 2, 3, 5, 8, 8, 10] ['Ab', 'ab', 'abc', 'efgh', 'xyz'] [] rendez(a) rendez(b) rendez(c) print("\n",a,"\n",b,"\n",c) 15/22
16 BUBORÉKRENDEZÉS Egy módosítható és indexelhető objektumról van szó. A buborékos rendezés egy nem túl hatékony cserélő algoritmus, de az elve érdekes. Minden lépésben egy elemet a helyére viszünk, az első lépésben a legnagyobb elemet, a másodikban a második legnagyobbat stb. Így a k-adik lépés után az objektum legnagyobb első k eleme már a helyén lesz, és ha N elem van, akkor a külső ciklust N-szer kell végrehajtani. A belső ciklusban mindig a 0-ás elemtől indulunk (technikailag a range az i=1-től kezdődik, de utána A[i-1]-re történik hivatkozás), amelyet összehasonlítunk a következővel, és ha az előbbi a nagyobb, akkor megcseréljük őket, majd ezt folytatjuk az 1-es és a 2-es indexűekkel stb. Így mindig a nagyobb elem száll felfelé, mint egy buborék. Az első lépésben, k=0 és még egyetlen elem sincs a helyén, most buborékoltatjuk az elsőt, a második (k=1) lépésben már a legnagyobb elem az objektum legtetején van és az összehasonlításokkal meg lehet előtte állni, a k-adik lépésben pedig csak az első N-k elemmel kell foglalkoznunk. N=len(A) for k in range(0,n): for i in range(1,n-k): if A[i-1]>A[i]: A[i],A[i-1]= A[i-1],A[i] 16/22
17 RENDEZÉS A MINIMUM KIVÁLASZTÁSÁVAL Egy módosítható és indexelhető objektumot fogunk rendezni. Az első lépésben kiválasztjuk a legkisebb elemet és az objektum 0-s indexű pozíciójába írjuk, a második lépésben a második legkisebbet keressük meg és írjuk az 1-es indexű helyre stb. A k-adik lépésben már az első k darab legkisebb elem a helyén van, elegendő a következő legkisebbet a k+1-es és magasabb indexűek között keresni. Figyeljük meg, hogy a belső ciklusban nem végzünk elemcserét, amivel hatékonyabbá válik az eljárás: N=len(A) for k in range(0,n-1): minindex=k for i in range(k+1,n): if A[i]<A[minindex]: minindex=i A[k],A[minindex] = A[minindex],A[k] 17/22
18 RENDEZÉS A PYTHON 3-BAN A Python legrugalmasabban használható objektumának, a listának van egy sort() metódusa, amivel helyben lehetséges a rendezést végrehajtani. A felhasználásához nem szükséges tudnunk (bár utána lehet nézni), hogy ez milyen algoritmus szerint működik, és az eljárás mibenléte érdektelen (amennyiben a tudásvágyunk kielégítésétől eltekintünk), ha a megoldandó feladatokkal számunkra megfelelő idő alatt végez. Az előzőekben megadott rendezési algoritmusokat csak olyan objektumokra tudjuk alkalmazni, amelyek egyidejűleg módosíthatóak és indexelhetőek. Más típusú, de bejárható objektumok elemeit egy külön listában tudjuk rendezetten előállítani. Egyrészt készíthetünk az objektumból egy listát, amit a sort()-tal már tudunk kezelni, vagy a sorted() alapfüggvényt is alkalmazhatjuk. Mindkét esetben megadhatunk egy kulcsfüggvényt, illetve fordított sorrendet is kérhetünk. Íme néhány példa: diákok=frozenset( { ("Etel",18,4.2),("János",17,4.9),("Viola",19,4.1)} ) def hasonlítandó(elem): név,kor,átlag= elem return átlag #return név ldiák= list(diákok) ldiák.sort(key=hasonlítandó) # (key=hasonlítandó, reverse=true) print(ldiák) ldiák2= sorted(diákok, key=hasonlítandó, reverse=true) print(ldiák2) A kimenet: [('Viola', 19, 4.1), ('Etel', 18, 4.2), ('János', 17, 4.9)] [('János', 17, 4.9), ('Etel', 18, 4.2), ('Viola', 19, 4.1)] 18/22
19 HALMAZMŰVELETEK A PYTHON 3-BAN A Python azon objektumaira, amelyek más objektumokat, azaz elemeket tartalmaznak, halmazokként is tekinthetünk. Érdemes megjegyezni, hogy ezek közül a készlet típusú (set) objektumoknak az az alapvető tulajdonsága, hogy nincs bennük két azonos értékű elem, a hozzájuk adott duplikátumokat szó nélkül kidobják. Az alábbiakban bemutatjuk néhány halmazművelet kivitelezését: A= [ 1, 2, 99,99,99, 3,3, 5,5, "Python" ] # lista B= ( "Python", 99, 5,5,5, 42,42 ) # sokaság C= "Python 3" # karakterlánc D= { "Python", 99, 5, 42, "3" } # készlet print("lista:",a,"\nsokaság:",b,"\nkarakterlánc:",c,"\nkészlet:",d,"\n") # Tartalmazás: print("tartalmazás:") van= "t" in C print(van) print( 99 in A ) print( "Python" in B ) print( "Python" in C ) print( 2016 in A ) print() # Két lista uniója: U1= A+list(B) print(" Unió listaként:",u1) U2= set(u1) # U2= set(a+list(b)) print(" Unió készletként:",u2) print() 19/22
20 # Metszetek, amelyek az ismétlődésekben különbözhetnek: M1= [ elem for elem in A if elem in B ] print(" Metszet ismétlődésekkel(1) listában:",m1) M2= [ elem for elem in B if elem in A ] print(" Metszet ismétlődésekkel(2) listában:",m2) M3= { elem for elem in A if elem in B } print(" Metszet ismétlődések nélkül, készletben:",m3) M4= list(m3) print(" Metszet ismétlődések nélküli listában:",m4) print() # Különbségek, amelyek az ismétlődésekben eltérhetnek: S= [ elem for elem in A if elem not in B ] print(" A-B ismétlődésekkel listában:",s) S= [ elem for elem in B if elem not in A ] print(" B-A ismétlődésekkel listában:",s) print() # Készletek uniója készletként: U= set(a) set(b) D print(" Készletek uniója készletként:",u) # Készletek metszete készletként: U= set(a) & set(b) & D print(" Készletek metszete készletként",u) 20/22
21 A kimenet: Lista: [1, 2, 99, 99, 99, 3, 3, 5, 5, 'Python'] Sokaság: ('Python', 99, 5, 5, 5, 42, 42) Karakterlánc: Python 3 Készlet: {'Python', '3', 99, 42, 5} Tartalmazás: True True True True False Unió listaként: [1, 2, 99, 99, 99, 3, 3, 5, 5, 'Python', 'Python', 99, 5, 5, 5, 42, 42] Unió készletként: {1, 2, 3, 5, 'Python', 42, 99} Metszet ismétlődésekkel(1), listában: [99, 99, 99, 5, 5, 'Python'] Metszet ismétlődésekkel(2), listában: ['Python', 99, 5, 5, 5] Metszet ismétlődések nélkül, készletben: {'Python', 99, 5} Metszet ismétlődések nélküli listában: ['Python', 99, 5] A-B ismétlődésekkel, listában: [1, 2, 3, 3] B-A ismétlődésekkel, listában: [42, 42] Készletek uniója készletként: {1, 2, 3, 5, 'Python', 42, '3', 99} Készletek metszete készletként {'Python', 99, 5} A készletekkel még további halmazműveletek is végezhetők (például szimmetrikus differencia, részhalmaz tartalmazása stb.), de ezek bemutatására itt nem térünk ki. 21/22
22 BINÁRIS KERESÉS A keresést jelentősen meggyorsítja, ha az objektum, amiben keresünk rendezve van. Az objektumnak indexelhetőnek kell lennie, maga a keresés nem igényli a módosíthatóságot, de az előzetes rendezés igen. Az eljárás végén az elem megtalálása esetén a True értéket és az elem indexét fogjuk megkapni, az elem hiányában pedig a False értéket. Az első lépésben az objektum közepén lévő elemet vetjük össze a keresett elemmel, és ha egyeznek, akkor az algoritmus véget ér, egyébként az összehasonlítástól függően a keresés alsó vagy felső indexének határát módosítjuk és ezen szűkített tartományban megismételjük az eljárást stb. Az algoritmus a legrosszabb esetben is log 2 N lépésben véget ér, ahol N az elemek száma. N=len(A) # Csak rendezett objektumon működik jól! alsó,felső=0,n-1 while alsó<=felső: k=(felső+alsó)//2 # a // egész számú hányadost ad if keresett < A[k]: felső=k-1 elif keresett > A[k]: alsó=k+1 else: kimenet=true,k break else: kimenet=false 22/22
Programozási segédlet
Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen
Bánsághi Anna 2014 Bánsághi Anna 1 of 68
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.
Informatika 1 2011 Második előadás, vezérlési szerkezetek Szabó Adrienn 2011. szeptember 14. Tartalom Algoritmusok, vezérlési szerkezetek If - else: elágazás While ciklus For ciklus Egyszerű típusok Összetett
Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.
Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom 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
Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)
Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),
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
Keresés Rendezés Feladat 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 2016. november 7. Farkas B., Fiala
Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):
Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt
Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás, rendezések 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok és programozási tételek
Python tanfolyam Python bevezető I. rész
Python tanfolyam Python bevezető I. rész Mai tematika Amiről szó lesz (most): Interpretált vs. fordított nyelvek, GC Szintakszis Alaptípusok Control flow: szekvencia, szelekció, iteráció... Függvények
ELEMI PROGRAMOZÁSI TÉTELEK
ELEMI PROGRAMOZÁSI TÉTELEK 1. FELADATMEGOLDÁS PROGRAMOZÁSI TÉTELEKKEL 1.1 A programozási tétel fogalma A programozási tételek típusalgoritmusok, amelyek alkalmazásával garantáltan helyes megoldást adhatunk
BASH script programozás II. Vezérlési szerkezetek
06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van
Komputeralgebra Rendszerek
Komputeralgebra Rendszerek Programozás Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2014. február 23. TARTALOMJEGYZÉK 1 of 28 TARTALOMJEGYZÉK I 1 TARTALOMJEGYZÉK 2 Értékadás MAPLE -ben SAGE -ben 3
Programozási tételek. Dr. Iványi Péter
Programozási tételek Dr. Iványi Péter 1 Programozási tételek A programozási tételek olyan általános algoritmusok, melyekkel programozás során gyakran találkozunk. Az algoritmusok általában számsorozatokkal,
Szövegek C++ -ban, a string osztály
Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string
Imperatív programozás
Imperatív programozás 6. Előadás Python típusok (folytatás) Függvények Típusok + műveleteik Listák - mutable (változtatható) - heterogén lista >>> lista = ["szo", 12, 3.5] >>> lista[1] 12 >>> lista[1:3]
Programozási nyelvek Python
Programozási nyelvek Python A nyelv története és jellemzői 2 A nyelv története Tervező Guido van Rossum (1956, Hollandia) Befolyásoló nyelvek ABC (pl. blokkok jelölése behúzással); Modula-3; C; C++; Unix
Adatbázis és szoftverfejlesztés elmélet. Programozási tételek
Adatbázis és szoftverfejlesztés elmélet Témakör 8. 1. Egy sorozathoz egy érték hozzárendelése Az összegzés tétele Összefoglalás Programozási tételek Adott egy számsorozat. Számoljuk és írassuk ki az elemek
Struktúra nélküli adatszerkezetek
Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A
Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás Programozási tételek, rendezések 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Algoritmusok
2018, Diszkrét matematika
Diszkrét matematika 3. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: természetes
Imperatív programozás
Imperatív programozás 2. Előadás Python alapok Elérhetőség Tejfel Máté Déli épület, 2.616 matej@elte.hu http://matej.web.elte.hu Python Script nyelv Értelmezett (interpretált) Dinamikus típusrendszer Gyors
Java II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
Ö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.
Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,
Felvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):
Javascript Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása
van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk
függvények ismétlése lista fogalma, használata Game of Life program (listák használatának gyakorlása) listák másolása (alap szintű, teljes körű) Reversi 2 Emlékeztető a függvények lényegében mini-programok,
Egyszerű programozási tételek
Egyszerű programozási tételek 2. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 15. Sergyán (OE NIK) AAO 02 2011. szeptember 15.
Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)
Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből
Összetett programozási tételek
Összetett programozási tételek 3. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 19. Sergyán (OE NIK) AAO 03 2011. szeptember
INFORMATIKA javítókulcs 2016
INFORMATIKA javítókulcs 2016 ELMÉLETI TÉTEL: Járd körbe a tömb fogalmát (Pascal vagy C/C++): definíció, egy-, két-, több-dimenziós tömbök, kezdőértékadás definíciókor, tömb típusú paraméterek átadása alprogramoknak.
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 alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok
Webprogramozás szakkör
Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás
Amortizációs költségelemzés
Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük
Hálózatok építése és üzemeltetése
Hálózatok építése és üzemeltetése Python 1 Python nyelv Alapok 2 Általános jellemzők A Python programozási nyelv egy általános célú magas szintű nagyon széles körben elterjedt ingyenes program nyelv, amely
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 Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi
Smalltalk 2. Készítette: Szabó Éva
Smalltalk 2. Készítette: Szabó Éva Blokkok Paraméter nélküli blokk [műveletek] [ x := 5. 'Hello' print. 2+3] Kiértékelés: [művelet] value az értéke az utolsó művelet értéke lesz, de mindet kiírja. x :=
Objektum Orientált Programozás VII.
Objektum Orientált Programozás VII. Összetett programozási tételek Programozási tételek összeépítése Feladatok ÓE-NIK, 2011 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk
Egyszerű programozási tételek
Egyszerű programozási tételek Sorozatszámítás tétele Például az X tömbben kövek súlyát tároljuk. Ha ki kellene számolni az összsúlyt, akkor az S = f(s, X(i)) helyére S = S + X(i) kell írni. Az f0 tartalmazza
Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1
Halmazelmélet 1. előadás Farkas István DE ATC Gazdaságelemzési és Statisztikai Tanszék Halmazelmélet p. 1/1 A halmaz fogalma, jelölések A halmaz fogalmát a matematikában nem definiáljuk, tulajdonságaival
1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata.
1. tétel Halmazok és halmazok számossága. Halmazműveletek és logikai műveletek kapcsolata. HLMZOK halmaz axiomatikus fogalom, nincs definíciója. benne van valami a halmazban szintén axiomatikus fogalom,
6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok
6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok 1. feladat: Az EURO árfolyamát egy negyedéven keresztül hetente nyilvántartjuk (HUF / EUR). Írjon C programokat az alábbi kérdések
Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék
9. előadás Wagner György Általános Informatikai Tanszék Leszámoló rendezés Elve: a rendezett listában a j-ik kulcs pontosan j-1 kulcsnál lesz nagyobb. (Ezért ha egy kulcsról tudjuk, hogy 27 másiknál nagyobb,
PROGRAMOZÁSI TÉTELEK
PROGRAMOZÁSI TÉTELEK Összegzés tétele Adott egy N elemű számsorozat: A(N). Számoljuk ki az elemek összegét! S:=0 Ciklus I=1-től N-ig S:=S+A(I) Megszámlálás tétele Adott egy N elemű sorozat és egy - a sorozat
Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása
Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző
Apple Swift kurzus 3. gyakorlat
Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()
Vezérlési szerkezetek
Vezérlési szerkezetek Szelekciós ok: if, else, switch If Segítségével valamely ok végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if segítségével valamely tevékenység () végrehajtását
Programozás alapjai. 5. előadás
5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk
Java II. I A Java programozási nyelv alapelemei
Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
Ismerkedés a Python programnyelvvel. és annak micropython változatával
Ismerkedés a Python programnyelvvel és annak micropython változatával A Python programozási nyelv története Az alapötlet 1980-ban született, 1989 decemberében kezdte el fejleszteni Guido van Rossum a CWI-n
Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.
HA 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) HA 2 Halmazok HA 3 Megjegyzések A halmaz, az elem és az eleme fogalmakat nem definiáljuk, hanem alapfogalmaknak
1. Jelölje meg az összes igaz állítást a következők közül!
1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.
Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).
Edényrendezés Tegyük fel, hogy a rendezendő H = {a 1,...,a n } halmaz elemei a [0,1) intervallumba eső valós számok. Vegyünk m db vödröt, V [0],...,V [m 1] és osszuk szét a rendezendő halmaz elemeit a
A Python programozási nyelv
A Python programozási nyelv Takács Gábor Széchenyi István Egyetem Matematika és Számítástudomány Tanszék 1 / 47 Jellemzők + értelmezett nyelv + típusai dinamikusak + szintaxisa tömör,
Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1
Halmazok 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 2 A fejezet legfontosabb elemei Halmaz megadási módjai Halmazok közti műveletek (metszet,
Készítette: Nagy Tibor István
Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke
Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs
Programozás I. 3. előadás Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember
Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,
Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás OE-NIK, 2013 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk
A félév során előkerülő témakörök
A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok
Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez
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
Algoritmuselmélet 2. előadás
Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés
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
1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június
AAO 3. Csink László 2007
AAO 3 Csink László 2007 Algoritmus fogalma - ismétlés Az algoritmus egy eljárás (jóldefiniált utasítások véges halmaza), amelyet valamely feladat megoldására készítünk. A feladat egy adott kezdeti állapotból
Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu
Programozás I. 3. előadás Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember
Algoritmizálás és adatmodellezés tanítása 1. előadás
Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az
Programozási módszertan. Mohó algoritmusok
PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás
Felvételi vizsga mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) Felvételi vizsga mintatételsor Informatika írásbeli vizsga 1. (5p) Egy x biten tárolt egész adattípus (x szigorúan pozitív
1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje
1. Alapfogalmak 1.1. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt
BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli. A versenyzők figyelmébe:
BABEŞ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR BBTE Matek-Infó verseny 1. tételsor INFORMATIKA írásbeli A versenyzők figyelmébe: 1. A tömböket 1-től kezdődően indexeljük. 2. A rácstesztekre
Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan
Láncolt listák Témakörök. Lista alapfogalmak
Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök
Web-programozó Web-programozó
Az Országos Képzési Jegyzékről és az Országos Képzési Jegyzékbe történő felvétel és törlés eljárási rendjéről szóló 133/2010. (IV. 22.) Korm. rendelet alapján. Szakképesítés, szakképesítés-elágazás, rész-szakképesítés,
.Net adatstruktúrák. Készítette: Major Péter
.Net adatstruktúrák Készítette: Major Péter Adatstruktúrák általában A.Net-ben számos nyelvvel ellentétben nem kell bajlódnunk a változó hosszúságú tömbök, listák, sorok stb. implementálásával, mert ezek
BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) 1. (5p) Tekintsük a következő alprogramot: Alprogram f(a): Ha a!= 0, akkor visszatérít: a + f(a - 1) különben visszatérít
Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
PYTHON. Avagy hosszú az út a BioPythonig
PYTHON Avagy hosszú az út a BioPythonig Miért a Python? Mert ez áll a legközelebb az ember által beszélt nyelvhez. Mert ez a leggyorsabb az ismert script nyelvek közül Mert rengeteg modul érhető el hozzá
Listák, szótárak, fájlok Listák, szótárak, fájlok
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
Adatbázis rendszerek Gy: Algoritmusok C-ben
Adatbázis rendszerek 1. 1. Gy: Algoritmusok C-ben 53/1 B ITv: MAN 2015.09.08 Alapalgoritmusok Összegzés Megszámlálás Kiválasztás Kiválasztásos rendezés Összefésülés Szétválogatás Gyorsrendezés 53/2 Összegzés
Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája
Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból
Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik
6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének
6. Függvények I. Elméleti összefoglaló A függvény fogalma, értelmezési tartomány, képhalmaz, értékkészlet Legyen az A és B halmaz egyike sem üreshalmaz. Ha az A halmaz minden egyes eleméhez hozzárendeljük
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t
Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat
9. Előadás Rendezések A rendezési probléma: Bemenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat Kimenet: a bemenő sorozat olyan (a 1, a 2,,a n ) permutációja, hogy a 1 a 2 a n 2 Rendezések Általánosabban:
AWK programozás, minták, vezérlési szerkezetek
10 AWK programozás, minták, vezérlési szerkezetek AWK futtatási módok AWK parancs, közvetlen programkódmegadás: awk 'PROGRAMKÓD' FILE példa: ls -l awk '{print $1, $5}' a programkód helyére minden indentálás
Halmaz típus Értékhalmaz:
Halmaz, multihalmaz Halmaz féleségek 1. Halmaz Gyümölcsök: {alma,körte,szilva,barack} 2. Multihalmaz Állatok: {(macska,4),(rigó,2),(galamb,3)} 3. Intervallumhalmaz diszjunkt Óráim: {[8-10],[13-14],[16-20)}
4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI
4. Fuzzy relációk Gépi intelligencia I. Fodor János BMF NIK IMRI NIMGI1MIEM Tartalomjegyzék I 1 Klasszikus relációk Halmazok Descartes-szorzata Relációk 2 Fuzzy relációk Fuzzy relációk véges alaphalmazok
Számjegyes vagy radix rendezés
Számláló rendezés Amennyiben a rendezendő elemek által felvehető értékek halmazának számossága kicsi, akkor megadható lineáris időigényű algoritmus. A bemenet a rendezendő elemek egy n méretű A tömbben
2018, Diszkrét matematika
Diszkrét matematika 5. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? Python alapfogalmak:
Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból
ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév
14. Mediánok és rendezett minták
14. Mediánok és rendezett minták Kiválasztási probléma Bemenet: Azonos típusú (különböző) elemek H = {a 1,...,a n } halmaza, amelyeken értelmezett egy lineáris rendezési reláció és egy i (1 i n) index.
A C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
Kereső függvények és használatuk a Microsoft Excel programban. dr. Nyári Tibor
Kereső függvények és használatuk a Microsoft Excel programban dr. Nyári Tibor FKERES, VKERES melyik táblában kell keresni az értéket a tábla azon oszlopának táblán belüli sorszáma, amelyből az eredményt
1. Alapok. #!/bin/bash
1. oldal 1.1. A programfájlok szerkezete 1. Alapok A bash programok tulajnképpen egyszerű szöveges fájlok, amelyeket bármely szövegszerkesztő programmal megírhatunk. Alapvetően ugyanazokat a at használhatjuk
Szkriptnyelvek. 1. UNIX shell
Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek
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
Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
Algoritmusok bonyolultsága
Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,
Adatbáziskezelés. Indexek, normalizálás NZS 1
Adatbáziskezelés Indexek, normalizálás NZS 1 Fáljszervezés módjai Soros elérés: a rekordok a fájlban tetszőleges sorrendben, például a felvitel sorrendjében helyezkednek el. A rekord azonosítója vagyis
Algoritmusok és adatszerkezetek 2.
Algoritmusok és adatszerkezetek 2. Varga Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Nyílt címzéses hash-elés A nyílt címzésű hash táblákban a láncolással ellentétben egy indexen
INFORMATIKAI ALAPISMERETEK
Informatikai alapismeretek középszint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM
Gyakorló feladatok Gyakorló feladatok
Gyakorló feladatok előző foglalkozás összefoglalása, gyakorlató feladatok a feltételes elágazásra, a while ciklusra, és sokminden másra amit eddig tanultunk Változók elnevezése a változók nevét a programozó