http://wiki.math.bme.hu/history/Informatika2-2019/Gyakorlat11?feed=atom&Informatika2-2019/Gyakorlat11 - Laptörténet2024-03-28T14:37:57ZAz oldal laptörténete a wikibenMediaWiki 1.18.1http://wiki.math.bme.hu/index.php?title=Informatika2-2019/Gyakorlat11&diff=13927&oldid=prevGaebor: /* Számológép */2019-05-02T10:01:16Z<p><span class="autocomment">Számológép</span></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Régebbi változat</td>
<td colspan='2' style="background-color: white; color:black;">A lap 2019. május 2., 10:01-kori változata</td>
</tr><tr><td colspan="2" class="diff-lineno">18. sor:</td>
<td colspan="2" class="diff-lineno">18. sor:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Számoljuk ki egy ilyen műveletsor értékét!</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Számoljuk ki egy ilyen műveletsor értékét!</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Szeretnénk hatványozni is, építsük bele ezt a ^ jellel!</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>* Szeretnénk hatványozni is, építsük bele ezt a ^ jellel!</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="background: #ffa; color:black; font-size: smaller;"><div>* Írjunk hozzá <tt><del class="diffchange diffchange-inline">__repr__</del></tt> metódust, ami kiírja fát.</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>* Írjunk hozzá <tt><ins class="diffchange diffchange-inline">__str__</ins></tt> metódust, ami kiírja fát.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** Ez volt előadáson, most metódusként írjuk meg.</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** Ez volt előadáson, most metódusként írjuk meg.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** Implementáljuk az ú.n. [https://en.wikipedia.org/wiki/Polish_notation lengyel normál alakot]</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>** Implementáljuk az ú.n. [https://en.wikipedia.org/wiki/Polish_notation lengyel normál alakot]</div></td></tr>
</table>Gaeborhttp://wiki.math.bme.hu/index.php?title=Informatika2-2019/Gyakorlat11&diff=13916&oldid=prevGaebor: Új oldal, tartalma: „előző fel következő =Feladatok= A feladatok megoldásához szükség lesz…”2019-04-23T12:03:23Z<p>Új oldal, tartalma: „<a href="/view/Informatika2-2019/Gyakorlat10" title="Informatika2-2019/Gyakorlat10">előző</a> <a href="/view/Informatika2-2019" title="Informatika2-2019">fel</a> <a href="/view/Informatika2-2019/Gyakorlat12" title="Informatika2-2019/Gyakorlat12">következő</a> =Feladatok= A feladatok megoldásához szükség lesz…”</p>
<p><b>Új lap</b></p><div>[[Informatika2-2019/Gyakorlat10|előző]] [[Informatika2-2019|fel]] [[Informatika2-2019/Gyakorlat12|következő]]<br />
<br />
=Feladatok=<br />
A feladatok megoldásához szükség lesz az előadáson használt kódra!<br />
==Bevezető==<br />
Másoljuk be a bináris fa definícióját. Ezen az osztályon fogunk dolgozni.<br />
* Írjunk egy <tt>count(self)</tt> metódust, ami megszámolja a fa elemeinek a számát!<br />
* Írjunk egy <tt>sum(self)</tt> metódust, ami a fa összes csúcsában lévő értékeket összegezi!<br />
* Írjunk egy <tt>height(self)</tt> metódust, ami megmondja, hogy milyen magas a fa!<br />
* Írjunk egy <tt>is_list(self)</tt> metódust, ami megmondja, hogy a bináris fa listává fajult-e. Egy bináris fa akkor fajult listává, ha minden csúcsának legfeljebb egy gyereke van.<br />
<br />
==Számológép==<br />
Az előadáson mutatott számológép-kezdeményt fejlesztjük tovább. Kezdjük új fájlba. Először hozzunk létre egy üres Node osztályt!<br />
* Írjuk meg a konstruktort a következőképp. A bemenet egy sztring, ezt kell értelmeznünk. Egyelőre a bemeneti sztring nem tartalmazhat zárójelet, sem negatív számokat.<br />
** Ha a sztring egy szám, akkor egyszerűen eltároljuk a self.data változóban mint számot.<br />
** Ha nem szám (azaz a négy alapművelet egyike szerepel a sztringben), akkor szétvágjuk a sztringet két részre a legalacsonyabb precedenciájú művelet mentén.<br />
Mivel zárójeleket nem engedünk meg, a legalacsonyabb szintű művelet az első + vagy - jel, ha nincs ilyen, akkor pedig az első '''*''' vagy '''/'''. A <tt>self.data</tt> értéke a műveleti jel lesz mint karakter, a bal, illetve a jobb gyereke pedig a sztring két széthasított része alapján épüljön fel!<br />
* Számoljuk ki egy ilyen műveletsor értékét!<br />
* Szeretnénk hatványozni is, építsük bele ezt a ^ jellel!<br />
* Írjunk hozzá <tt>__repr__</tt> metódust, ami kiírja fát.<br />
** Ez volt előadáson, most metódusként írjuk meg.<br />
** Implementáljuk az ú.n. [https://en.wikipedia.org/wiki/Polish_notation lengyel normál alakot]<br />
<br />
Tanuljunk meg zárójeleket kezelni. Ehhez használjuk az előző órán implementált "zárójelkitörlő" függvényt!<br />
* Ha a bemeneti sztring teljes egészében zárójelben van (ez részfaépítésnél bizony megtörténik), szedjük le róla!<br />
* Keressük meg azt a műveletet, amit utoljára kell elvégeznünk. Ezt a karaktert a sztring azon részében keressük, ami nincs zárójelek között!<br />
* Rekurzió!<br />
<br />
[[Informatika2-2019/Gyakorlat10|előző]] [[Informatika2-2019|fel]] [[Informatika2-2019/Gyakorlat12|következő]]</div>Gaebor