4. Helyes zárójelezés algoritmusa

Slides:



Advertisements
Hasonló előadás
Sor láncolt ábrázolással
Advertisements

Programozási feladatok
Definíciók: Algoritmus: bármely véges sok lépéssel leírható tevékenység. Olyan pontos előírás, amely megmondja, hogy egy adott típushoz tartozó feladat.
Algoritmusok.
Adatelemzés számítógéppel
Megszámlálás Elemi algoritmusok.
Egyszerű LL grammatika.  Definíciók  Példa. Ábrákkal  MASM program (szó felismerése LL(1) –ben )
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Algoritmus Az algoritmus problémamegoldásra szolgáló elemi lépések olyan sorozata, amely: véges – azaz véges számú lépés után befejeződik, és eredményt.
3. előadás (2005. március 1.) Utasítások, tömbök
Benczúr Zsolt VBA gyorstalpaló Benczúr Zsolt
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Packaging: Az osztályok legyenek logikailag rendezett csomagokban, azaz különüljenek el funkció szerint. Pl: hu.elpaso.example hu.elpaso.example.view hu.elpaso.example.logic.
Algoritmusok Az algoritmus fogalma:
A verem működése fpga-n
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Egy feladat megoldásának gondolatmenete. Feladat: Generáljuk véletlen számokat 1 és 6 között, amíg legalább 10 darab egyes és 10 darab hatos nem lesz.
Gombkötő Attila Lineáris egyenlet.
Készítette: Pető László
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Számoljuk meg rekurzív függvénnyel egy bináris fa leveleit!
16. Verem műveletei Kaszab Gábor.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Prím algoritmus.
Helyes zárójelezés programozási tétele LL.
Programozás I. Ciklusok
Programozás I. Egymásba ágyazott szelekciók, többágú szelekció
A digitális számítás elmélete
Beolvasó utasítás Console.Read();  Int típusú adatot kapunk. Console.ReadLine();  String típusú adatot kapunk. Console.ReadKey();  Tetszőleges billentyű.
2012. február 15. Paulik Áron. i:=0 CIKLUS AMÍG i
Egyszerű gráfok ábrázolása Pascalban:
Átalakítás előltesztelő ciklusból hátultesztelő ciklusba és fordítva.
ismétlődő (azonos vagy hasonló) tevékenységek megvalósítására szolgál
Tömbök és programozási tételek
Ciklusok (iterációk).
Programozási feladatsor ciklusok gyakorlására Készítette: Rummel Szabolcs Elérhetőség:
Készítette: Rummel Szabolcs Elérhetőség:
Algoritmus szerkezetek
Gráf szélességi bejárása SzB(G,p). Tetszőleges gráf, melyben a p csúcsot választottam kiindulónak: A gráfnak megfelelő fa:
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Nevezetes algoritmusok
Java programozási nyelv Vezérlési szerkezetek
Algoritmusok.
A Helyes Zárójelezés Struktogramja
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
A Mikroprocesszor Harmadik rész.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Táblázatkezelés KÉPLETEK.
Feladatok (értékadás)
Programozás, programtervezés
Algoritmizálás és programozás tanítása Balogh Zoltán PTE-TTK IÁTT Az algoritmuskészítés.
Összeállította: Sashalmi Tibor
Vnorené cykly.  Pri riešení problémov sa stáva, že použijeme viac cyklov za sebou, alebo jeden cyklus vnorený do druhohého.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
Összeállította: Gergely János
Informatikai gyakorlatok 11. évfolyam
TÁMOP /1-2F Felkészítés szakmai vizsgára, informatika területre modulhoz II/14. évfolyam Az interaktív vizsga jellegzetes feladattípusainak.
Programozás alapjai Készítette: Csiszár Nóra Anita
Dinamikus adatszerkezetek
Programozási alapok.
Nevezetes algoritmusok
Mediánok és rendezett minták
Dinamikus adatszerkezetek
Halmazműveletek.
Programozás C# -ban Elágazások.
Amortizációs elemzés Alapelv: nem egy-egy művelet lefutási idejét vizsgáljuk, hanem több műveletét együtt, sokszor Eredmény: átlagolt időszükséglet időátlagban.
Nulladrendű formulák átalakításai
Informatikai gyakorlatok 11. évfolyam
Algoritmus készítés.
Előadás másolata:

4. Helyes zárójelezés algoritmusa Kaszab Gábor

Az algoritmus célja: Eldönti egy zárójelezésről, hogy helyes-e Kiírja az összetartozó zárójelpárok sorszámait egymás mellé

Helyes zárójelezés A nyitó és csukó zárójelek száma megegyezik A zárójelezés bármely pontjában nagyobb vagy egyenlő a nyitózárójelek száma, mint a csukó zárójeleké

Az algoritmus működése Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Egy verem segítségével dolgozik A verem műveletei: Empty(v) : létrehoz egy üres vermet Push(v,i) : beteszi a verembe az i elemet Pop(v,j) : kiveszi a veremből a legfelső elemet

Az algoritmus működése Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Létrehoz egy üres vermet Az i-ben tároljuk az aktuális zárójel sorszámát, ami kezdéskor 0

Az algoritmus működése Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Indít egy ciklust, addig, amíg a zárójelezést tartalmazó sorozat ki nem ürül A ciklusmag első lépéseként, kiveszi a sorozat első elemét , és beteszi az x változóba Az i számlálót növeli egyel

Az algoritmus működése Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Egy elágazással megvizsgálja, hogy milyen zárójelet olvastunk ki a sorozatból Nyitó zárójel esetén beteszi a sorszámát a verembe Csukó zárójelnél pedig kiveszi a verem legfelső elemét és kiírja a képernyőre az i változó aktuális értékével együtt

Az algoritmus működése Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Ha az algoritmus lefutása után is marad elem a veremben, a zárójelezés helytelen / pl.: ( ( ) / Ha a verem üres és a sorozat következő eleme „)”, a zárójelezés helytelen / pl.: ( ) ) /

Példa Kezdeti értékek: -Az s sorozat: ( ( ) ) -A v verem: üres Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) Kezdeti értékek: -Az s sorozat: ( ( ) ) -A v verem: üres -Az i számláló: 0 Belelép a ciklusba, mert az s nem üres

Példa -Az s sorozat: ( ) ) -A v verem: üres -Az x változó: ( Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ( ) ) -A v verem: üres -Az x változó: ( -Az i változó: 1

Példa -Az s sorozat: ( ) ) -A v verem: 1 -Az x változó: ( Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ( ) ) -A v verem: 1 -Az x változó: ( -Az i változó: 1

Példa -Az s sorozat: ) ) -A v verem: 1 -Az x változó: ( Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ) ) -A v verem: 1 -Az x változó: ( -Az i változó: 2

Példa -Az s sorozat: ) ) -A v verem: 1 2 -Az x változó: ( Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ) ) -A v verem: 1 2 -Az x változó: ( -Az i változó: 2

Példa -Az s sorozat: ) -A v verem: 1 2 -Az x változó: ) Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ) -A v verem: 1 2 -Az x változó: ) -Az i változó: 3

Példa -Az s sorozat: ) -A v verem: 1 -Az x változó: ) -Az i változó: 3 Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: ) -A v verem: 1 -Az x változó: ) -Az i változó: 3 Kivette a verem legfelső elemét. Kiírja: 2-3

Példa -Az s sorozat: üres -A v verem: 1 -Az x változó: ) Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: üres -A v verem: 1 -Az x változó: ) -Az i változó: 4

Példa -Az s sorozat: üres -A v verem: üres -Az x változó: ) Zarojel(s) Empty(v); i:=o s ≠ ε Read(s,x); i:=i+1 x = „(” x = „)” Push(v,i) Pop(v,j) Write(j,i) -Az s sorozat: üres -A v verem: üres -Az x változó: ) -Az i változó: 4 Kiírja: 1-4 Mivel a sorozat kiürült, kilép a ciklusból és véget ér a algoritmus

Vége