Informatika1-2012/Eloadas2
(Új oldal, tartalma: „<!-- <section> <h1>Informatika 1.</h1> <h4>(2012)</h4> <h3 style="margin-top: 50px">Második előadás</h3> <p> …”) |
|||
1. sor: | 1. sor: | ||
− | |||
<h1>Informatika 1.</h1> | <h1>Informatika 1.</h1> | ||
− | < | + | <p>(2012)<br/> |
− | + | Második előadás<br/> | |
− | + | ||
<small>Németh Tibor</small><br> | <small>Németh Tibor</small><br> | ||
<small><i>2012. szeptember 12.</i></small> | <small><i>2012. szeptember 12.</i></small> | ||
</p> | </p> | ||
− | |||
− | |||
<h2>Tartalom</h2> | <h2>Tartalom</h2> | ||
<ul> | <ul> | ||
− | <li | + | <li>Adattípusok</li> |
<ul> | <ul> | ||
− | <li | + | <li>Egyszerű típusok</li> |
− | <li | + | <li>Összetett típusok</li> |
− | <li | + | <li>Listák kezelése</li> |
− | <li | + | <li>Egyéb összetett típusok kezelése</li> |
</ul> | </ul> | ||
− | <li | + | <li>Algoritmusok, vezérlési szerkezetek</li> |
<ul> | <ul> | ||
− | <li | + | <li>IF - ELSE elágazás</li> |
− | <li | + | <li>WHILE ciklus</li> |
− | <li | + | <li>FOR ciklus</li> |
</ul> | </ul> | ||
− | <li | + | <li>Példák</li> |
</ul> | </ul> | ||
− | |||
− | |||
<h2>Visszapillantó</h2> | <h2>Visszapillantó</h2> | ||
<ul> | <ul> | ||
− | <li | + | <li>= vs ==<br/>értékadás vs 'ellenőrzés'</li> |
− | <li | + | <li>függvény vs metódus</li> |
− | <li | + | <li>változó vs 'szimbólum'</li> |
</ul> | </ul> | ||
− | |||
− | |||
<h2>Egyszerű adattípusok</h2> | <h2>Egyszerű adattípusok</h2> | ||
<p>A Sage (és kb. egyben a Python) beépített egyszerű típusai:</p> | <p>A Sage (és kb. egyben a Python) beépített egyszerű típusai:</p> | ||
<table style="margin-left: auto; margin-right: auto; border: 1px solid #777;" border="1"> | <table style="margin-left: auto; margin-right: auto; border: 1px solid #777;" border="1"> | ||
<tr><th>Típus</th><th>Leírás</th><th>Példa</th></tr> | <tr><th>Típus</th><th>Leírás</th><th>Példa</th></tr> | ||
− | <tr | + | <tr><td style="border: 1px solid #777;">None</td><td style="border: 1px solid #777;">"semmi", null típus</td><td style="border: 1px solid #777;">None</td></tr> |
− | <tr | + | <tr><td style="border: 1px solid #777;">int</td><td style="border: 1px solid #777;">egész szám (32-bites)</td><td style="border: 1px solid #777;">6</td></tr> |
− | <tr | + | <tr><td style="border: 1px solid #777;">long</td><td style="border: 1px solid #777;">hosszú egész (tetszőlegesen hosszú)</td><td style="border: 1px solid #777;">2354099L</td></tr> |
− | <tr | + | <tr><td style="border: 1px solid #777;">float</td><td style="border: 1px solid #777;">lebegőpontos szám (törtek)</td><td style="border: 1px solid #777;">3.75</td></tr> |
− | <tr | + | <tr><td style="border: 1px solid #777;">complex</td><td style="border: 1px solid #777;">komplex szám</td><td style="border: 1px solid #777;">3-2*i</td></tr> |
</table> | </table> | ||
− | |||
− | |||
<h2>Összetett adattípusok</h2> | <h2>Összetett adattípusok</h2> | ||
<p>A Sage (és kb. egyben a Python) beépített egyszerű típusai:</p> | <p>A Sage (és kb. egyben a Python) beépített egyszerű típusai:</p> | ||
<table style="margin-left: auto; margin-right: auto; border: 1px solid #333;" border="1"> | <table style="margin-left: auto; margin-right: auto; border: 1px solid #333;" border="1"> | ||
<tr><th>Típus</th><th>Leírás</th><th>Példa</th></tr> | <tr><th>Típus</th><th>Leírás</th><th>Példa</th></tr> | ||
− | <tr | + | <tr><td style="border: 1px solid #333;">str</td><td style="border: 1px solid #333;">karakterlánc (string)</td><td style="border: 1px solid #333;">'alma'</td></tr> |
− | <tr | + | <tr><td style="border: 1px solid #333;">list</td><td style="border: 1px solid #333;">[2,y,'bb']</td><td style="border: 1px solid #333;">6</td></tr> |
− | <tr | + | <tr><td style="border: 1px solid #333;">tuple</td><td style="border: 1px solid #333;">(2,x,'aa')</td><td style="border: 1px solid #333;">2354099L</td></tr> |
− | <tr | + | <tr><td style="border: 1px solid #333;">set</td><td style="border: 1px solid #333;">halmaz</td><td style="border: 1px solid #333;">set(['a','c'])</td></tr> |
− | <tr | + | <tr><td style="border: 1px solid #333;">dict</td><td style="border: 1px solid #333;">szótár<br/>(kulcs:érték)</td><td style="border: 1px solid #333;">dict({'one':1,'two':2})</td></tr> |
</table> | </table> | ||
− | |||
− | |||
<h2>Listák</h2> | <h2>Listák</h2> | ||
− | + | ||
<ul> | <ul> | ||
<li>Listát definiálhatunk úgy, hogy megadjuk az elemeit (akármilyen típusúak lehetnek) szögletes zárójelek között: | <li>Listát definiálhatunk úgy, hogy megadjuk az elemeit (akármilyen típusúak lehetnek) szögletes zárójelek között: | ||
− | <pre | + | <pre>sage: L1 = [pi, 'abc', 35, pi, 12]</pre></li> |
− | <li | + | <li>Hivatkozhatunk a lista egy elemére: |
− | <pre | + | <pre>sage: L1[2] |
− | + | 35</pre></li> | |
− | < | + | <p><i>Figyeljünk arra, hogy 0-tól kezdődik az elemek számozása!</i></p> |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<li>Kiválaszthatunk egy rész-listát: | <li>Kiválaszthatunk egy rész-listát: | ||
− | <pre | + | <pre>sage: L1[1:4] |
− | + | ['abc', 35, pi]</pre></li> | |
− | <li | + | <li>Létrehozhatunk egy listát a range függvény segítségével: |
− | <pre | + | <pre>sage: L2 = range(5) |
− | + | sage: L2 | |
− | + | [0, 1, 2, 3, 4]</pre></li> | |
− | <li | + | <li>Lekérdezhetjük a lista hosszát (hány eleme van): |
− | <pre | + | <pre>sage: len(L2) |
− | + | 5</pre></li> | |
− | + | ||
− | + | ||
<li>A listának bármely elemét felülírhatjuk: | <li>A listának bármely elemét felülírhatjuk: | ||
− | <pre | + | <pre>sage: L2[1] = 'egy' |
− | + | sage: L2 | |
− | + | [0, 'egy', 2, 3, 4]</pre></li> | |
</ul> | </ul> | ||
− | + | ||
− | + | ||
− | + | ||
<h2>A tuple típus</h2> | <h2>A tuple típus</h2> | ||
− | + | ||
− | + | <p>A tuple sokmindenben hasonlít a listához, de az elemei utólag nem módosíthatóak.</p> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<ul> | <ul> | ||
+ | <li>Kerek zárójellel definiáljuk: | ||
+ | <pre>sage: T = (pi, 'abc', 35, pi, 12)</pre></li> | ||
+ | <li>Hivatkozhatunk a tuple egy elemére: | ||
+ | <pre>sage: T[2] | ||
+ | 35</pre></li> | ||
<li>Ha meg akarnánk változtatni a tuple egy elemét: | <li>Ha meg akarnánk változtatni a tuple egy elemét: | ||
− | <pre | + | <pre>sage: T[1]='s' |
− | TypeError: 'tuple' object does not support item assignment | + | TypeError: 'tuple' object does not support item assignment</pre></li> |
</ul> | </ul> | ||
− | |||
− | |||
− | |||
<h2>A halmaz típus</h2> | <h2>A halmaz típus</h2> | ||
− | + | <p>A <code>set</code> típus megfelel a matematikai halmaz fogalomnak: nem rendezett elemek gyüjteménye.</p> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<ul> | <ul> | ||
+ | <li>Definiálható a <code>set</code> kulcsszóval és egy lista megadásával: | ||
+ | <pre>sage: S = set([pi, 'abc', 35, pi, 12])</pre></li> | ||
+ | <li>Megkérdezhetjük, hogy valami benne van-e a halmazban: | ||
+ | <pre>sage: 35 in S | ||
+ | True</pre></li> | ||
<li>Lekérdezhetjük a halmaz méretét (hány eleme van): | <li>Lekérdezhetjük a halmaz méretét (hány eleme van): | ||
− | <pre | + | <pre>sage: len(S) |
− | + | 4</pre></li> | |
− | <li | + | <li>Törlés a halmazból: |
− | <pre | + | <pre>sage: S.remove(pi)</pre></li> |
</ul> | </ul> | ||
− | |||
− | |||
− | |||
<h2>A szótár típus</h2> | <h2>A szótár típus</h2> | ||
− | + | <p>A szótár arra való, hogy kulcs-érték párokat egymáshoz rendelhessünk.</p> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
<ul> | <ul> | ||
+ | <li>Kapcsos zárójellel definiálható a következő módon: | ||
+ | <pre>sage: D = {'one':1, 'two':2, 'three':3}</pre></li> | ||
+ | <li>Kulcshoz tartozó érték lekérdezése: | ||
+ | <pre>sage: D['one'] | ||
+ | 1</pre></li> | ||
<li>Lekérdezhetjük a szótár kulcsait: | <li>Lekérdezhetjük a szótár kulcsait: | ||
− | <pre | + | <pre>sage: D.keys() |
− | + | ['three', 'two', 'one']</pre></li> | |
− | <li | + | <li>Megkérdezhetjük, hogy valami benne van-e a szótárban: |
− | <pre | + | <pre>sage: 'two' in D |
− | + | True</pre></li> | |
− | <li | + | <li>Az értékek között is kereshetünk a <code>values</code> metódussal: |
− | <pre | + | <pre>sage: 2 in D.values() |
− | + | True</pre></li> | |
</ul> | </ul> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
<h2>Algoritmusok</h2> | <h2>Algoritmusok</h2> | ||
<p>Algoritmuson vagy eljáráson olyan megengedett lépésekből álló módszert, utasítás(sorozato)t, részletes útmutatást, | <p>Algoritmuson vagy eljáráson olyan megengedett lépésekből álló módszert, utasítás(sorozato)t, részletes útmutatást, | ||
receptet értünk, amely valamely felmerült probléma megoldasára alkalmas.<br/>Az algoritmust leírhatjuk pszeudokóddal | receptet értünk, amely valamely felmerült probléma megoldasára alkalmas.<br/>Az algoritmust leírhatjuk pszeudokóddal | ||
vagy folyamatábrával, illetve implementálhatjuk (megvalósíthatjuk) egy konkrét programnyelven, hogy működő programot kapjunk.</p> | vagy folyamatábrával, illetve implementálhatjuk (megvalósíthatjuk) egy konkrét programnyelven, hogy működő programot kapjunk.</p> | ||
− | |||
− | |||
<h2>Algoritmus példa</h2> | <h2>Algoritmus példa</h2> | ||
− | Válasszuk ki az a; b; c számok közül a legkisebbet! | + | <p>Válasszuk ki az a; b; c számok közül a legkisebbet!</p> |
<table> | <table> | ||
<tr> | <tr> | ||
<td> | <td> | ||
− | + | <!-- <img width="320" height="300" src="./images/if.png" alt="IF"> --> | |
</td> | </td> | ||
− | <td | + | <td> |
− | <pre | + | <pre>IF a < b: |
IF a < c: | IF a < c: | ||
RETURN a | RETURN a | ||
196. sor: | 149. sor: | ||
ELSE: | ELSE: | ||
RETURN c</pre> | RETURN c</pre> | ||
− | |||
</td> | </td> | ||
<tr> | <tr> | ||
− | <tr | + | <tr> |
<td style="text-align: center;"><small>Folyamatábra (Flowchart)</small></td><td style="text-align: center;"><small>Pszeudokód (Pseudocode)</small></td> | <td style="text-align: center;"><small>Folyamatábra (Flowchart)</small></td><td style="text-align: center;"><small>Pszeudokód (Pseudocode)</small></td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
</table> | </table> | ||
− | |||
− | |||
<h2>Feltételes utasítás</h2> | <h2>Feltételes utasítás</h2> | ||
− | Egy feltételes utasítás így néz ki Sage-ben, ill. Python-ban: | + | <p>Egy feltételes utasítás így néz ki Sage-ben, ill. Python-ban:</p> |
<table> | <table> | ||
<tr> | <tr> | ||
− | <td | + | <td> |
− | <pre | + | <pre>def k(x): |
if x%1O == 0: | if x%1O == 0: | ||
return '0-ra végződik' | return '0-ra végződik' | ||
220. sor: | 170. sor: | ||
return 'Nem 0-ra végződő páros' | return 'Nem 0-ra végződő páros' | ||
else: | else: | ||
− | return 'Nem 5-re végződő páratlan' | + | return 'Nem 5-re végződő páratlan'</pre> |
</td> | </td> | ||
<td> | <td> | ||
− | + | <!-- <img width="350" height="300" src="./images/if2.png" alt="IF2"> --> | |
</td> | </td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
− | |||
− | |||
<h2>While ciklus</h2> | <h2>While ciklus</h2> | ||
− | A while-ciklus belseje addig fog ciklikusan újra és újra végrehajtódni, | + | <p>A while-ciklus belseje addig fog ciklikusan újra és újra végrehajtódni, |
− | amíg a feltétel része teljesül.<br/>Sage-ben: | + | amíg a feltétel része teljesül.<br/>Sage-ben:</p> |
<table> | <table> | ||
<tr> | <tr> | ||
− | <td | + | <td> |
− | <pre | + | <pre>x = 30 |
while x > 15: | while x > 15: | ||
x = x-3 | x = x-3 | ||
− | print x | + | print x</pre> |
</td> | </td> | ||
<td> | <td> | ||
− | + | <!-- <img width="320" height="240" src="./images/while.png" alt="WHILE"> --> | |
</td> | </td> | ||
</tr> | </tr> | ||
</table> | </table> | ||
− | Figyelni kell, hogy ne kerüljön a program végtelen ciklusba! | + | <p>Figyelni kell, hogy ne kerüljön a program végtelen ciklusba!</p> |
− | + | ||
− | |||
<h2>For ciklus</h2> | <h2>For ciklus</h2> | ||
− | A <code>for</code> ciklus valamilyen lista vagy szekvencia elemein megy végig egyesével. | + | <p>A <code>for</code> ciklus valamilyen lista vagy szekvencia elemein megy végig egyesével.</p> |
− | <pre | + | <pre>for x in range(4): |
− | print str(x) + '. elemnél járunk' | + | print str(x) + '. elemnél járunk'</pre> |
− | A fenti kód kimenete: | + | <p>A fenti kód kimenete:</p> |
− | <pre | + | <pre>0. elemnél járunk |
− | 1. | + | 1. elemnél járunk |
− | 2. | + | 2. elemnél járunk |
− | 3. | + | 3. elemnél járunk</pre> |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
<h2>További olvasnivalók</h2> | <h2>További olvasnivalók</h2> | ||
− | Hasznos olvasnivalók, néhol a tananyagon túl: | + | <p>Hasznos olvasnivalók, néhol a tananyagon túl:</p> |
<ul> | <ul> | ||
<li>Programozás bevezető (angolul):<br/> | <li>Programozás bevezető (angolul):<br/> | ||
279. sor: | 218. sor: | ||
http://en.wikipedia.org/wiki/Flow_chart</li> | http://en.wikipedia.org/wiki/Flow_chart</li> | ||
</ul> | </ul> | ||
− | |||
− | |||
− | |||
− |
A lap 2012. szeptember 13., 17:48-kori változata
Tartalomjegyzék |
Informatika 1.
(2012)
Második előadás
Németh Tibor
2012. szeptember 12.
Tartalom
- Adattípusok
- Egyszerű típusok
- Összetett típusok
- Listák kezelése
- Egyéb összetett típusok kezelése
- Algoritmusok, vezérlési szerkezetek
- IF - ELSE elágazás
- WHILE ciklus
- FOR ciklus
- Példák
Visszapillantó
- = vs ==
értékadás vs 'ellenőrzés' - függvény vs metódus
- változó vs 'szimbólum'
Egyszerű adattípusok
A Sage (és kb. egyben a Python) beépített egyszerű típusai:
Típus | Leírás | Példa |
---|---|---|
None | "semmi", null típus | None |
int | egész szám (32-bites) | 6 |
long | hosszú egész (tetszőlegesen hosszú) | 2354099L |
float | lebegőpontos szám (törtek) | 3.75 |
complex | komplex szám | 3-2*i |
Összetett adattípusok
A Sage (és kb. egyben a Python) beépített egyszerű típusai:
Típus | Leírás | Példa |
---|---|---|
str | karakterlánc (string) | 'alma' |
list | [2,y,'bb'] | 6 |
tuple | (2,x,'aa') | 2354099L |
set | halmaz | set(['a','c']) |
dict | szótár (kulcs:érték) | dict({'one':1,'two':2}) |
Listák
- Listát definiálhatunk úgy, hogy megadjuk az elemeit (akármilyen típusúak lehetnek) szögletes zárójelek között:
sage: L1 = [pi, 'abc', 35, pi, 12]
- Hivatkozhatunk a lista egy elemére:
sage: L1[2] 35
- Kiválaszthatunk egy rész-listát:
sage: L1[1:4] ['abc', 35, pi]
- Létrehozhatunk egy listát a range függvény segítségével:
sage: L2 = range(5) sage: L2 [0, 1, 2, 3, 4]
- Lekérdezhetjük a lista hosszát (hány eleme van):
sage: len(L2) 5
- A listának bármely elemét felülírhatjuk:
sage: L2[1] = 'egy' sage: L2 [0, 'egy', 2, 3, 4]
Figyeljünk arra, hogy 0-tól kezdődik az elemek számozása!
A tuple típus
A tuple sokmindenben hasonlít a listához, de az elemei utólag nem módosíthatóak.
- Kerek zárójellel definiáljuk:
sage: T = (pi, 'abc', 35, pi, 12)
- Hivatkozhatunk a tuple egy elemére:
sage: T[2] 35
- Ha meg akarnánk változtatni a tuple egy elemét:
sage: T[1]='s' TypeError: 'tuple' object does not support item assignment
A halmaz típus
A set
típus megfelel a matematikai halmaz fogalomnak: nem rendezett elemek gyüjteménye.
- Definiálható a
set
kulcsszóval és egy lista megadásával:sage: S = set([pi, 'abc', 35, pi, 12])
- Megkérdezhetjük, hogy valami benne van-e a halmazban:
sage: 35 in S True
- Lekérdezhetjük a halmaz méretét (hány eleme van):
sage: len(S) 4
- Törlés a halmazból:
sage: S.remove(pi)
A szótár típus
A szótár arra való, hogy kulcs-érték párokat egymáshoz rendelhessünk.
- Kapcsos zárójellel definiálható a következő módon:
sage: D = {'one':1, 'two':2, 'three':3}
- Kulcshoz tartozó érték lekérdezése:
sage: D['one'] 1
- Lekérdezhetjük a szótár kulcsait:
sage: D.keys() ['three', 'two', 'one']
- Megkérdezhetjük, hogy valami benne van-e a szótárban:
sage: 'two' in D True
- Az értékek között is kereshetünk a
values
metódussal:sage: 2 in D.values() True
Algoritmusok
Algoritmuson vagy eljáráson olyan megengedett lépésekből álló módszert, utasítás(sorozato)t, részletes útmutatást,
receptet értünk, amely valamely felmerült probléma megoldasára alkalmas.
Az algoritmust leírhatjuk pszeudokóddal
vagy folyamatábrával, illetve implementálhatjuk (megvalósíthatjuk) egy konkrét programnyelven, hogy működő programot kapjunk.
Algoritmus példa
Válasszuk ki az a; b; c számok közül a legkisebbet!
IF a < b: IF a < c: RETURN a ELSE: RETURN c ELSE: IF b < c: RETURN b ELSE: RETURN c |
|
Folyamatábra (Flowchart) | Pszeudokód (Pseudocode) |
Feltételes utasítás
Egy feltételes utasítás így néz ki Sage-ben, ill. Python-ban:
def k(x): if x%1O == 0: return '0-ra végződik' elif x%5 == 0: return '5-re végződik' elif x%2 == 0: return 'Nem 0-ra végződő páros' else: return 'Nem 5-re végződő páratlan' |
While ciklus
A while-ciklus belseje addig fog ciklikusan újra és újra végrehajtódni,
amíg a feltétel része teljesül.
Sage-ben:
x = 30 while x > 15: x = x-3 print x |
Figyelni kell, hogy ne kerüljön a program végtelen ciklusba!
For ciklus
A for
ciklus valamilyen lista vagy szekvencia elemein megy végig egyesével.
for x in range(4): print str(x) + '. elemnél járunk'
A fenti kód kimenete:
0. elemnél járunk 1. elemnél járunk 2. elemnél járunk 3. elemnél járunk
További olvasnivalók
Hasznos olvasnivalók, néhol a tananyagon túl:
- Programozás bevezető (angolul):
http://johnstachurski.net/book/sample2.pdf - Sage Tutorial:
http://www.sagemath.org/pdf/SageTutorial.pdf - Algoritmus (Wikipedia oldal):
http://hu.wikipedia.org/wiki/Algoritmus - Folyamatábra (angol Wikipedia oldal):
http://en.wikipedia.org/wiki/Flow_chart