Tétel adatlapja

CÍMLAP

Gérard Swinnen

Tanuljunk meg programozni Python nyelven

TARTALOM, BEVEZETÉS



Tartalom

Bevezetés
Az első programozási nyelv kiválasztása
A Python nyelv - bemutatja Stéfane Fermigier
Több különböző verzió?
A Python terjesztése - Bibliográfia
A tanárnak, aki oktatási segédletként akarja használni a könyvet
A könyv példái
Köszönetnyilvánítás
A fordító előszava

1. Fejezet: Programozóként gondolkodni
1.1 A programozás
1.2 Gépi nyelv, programozási nyelv
1.3 Compilálás és interpretálás
1.4 Programfejlesztés Hibakeresés ("debug")
1.5 Hibakeresés és kísérletezés
1.6 Természetes és formális nyelvek

2. Fejezet: Az első lépések
2.1 Számolás a Pythonnal
2.2 Adatok és változók
2.3 Változónevek és foglalt szavak
2.4 Hozzárendelés (vagy értékadás)
2.5 Változó értékének a kiírása
2.6 A változók típusadása
2.7 Többszörös értékadás
2.8 Operátorok és kifejezések
2.9 A műveletek prioritása
2.10 Kompozíció

3. Fejezet: Az utasításfolyam vezérlése
3.1 Utasítás szekvencia
3.2 Kiválasztás vagy feltételes végrehajtás
3.3 Relációs operátorok
3.4 Összetett utasítások - Utasításblokkok
3.5 Egymásba ágyazott utasítások
3.6 A Python néhány szintaktikai szabálya

4. Fejezet: Ismétlődő utasítások
4.1 Ismételt értékadás
4.2 Ciklikus ismétlődések - a while utasítás
4.3 Táblázatkészítés
4.4 Egy matematikai sor megalkotása
4.5 Az első scriptek, avagy: Hogyan őrizzük meg programjainkat?
4.6 Ékezetes és speciális karakterekre vonatkozó megjegyzés

5. Fejezet: A fő adattípusok
5.2 Az alfanumerikus adatok
5.3 A listák (első megközelítés)

6. Fejezet: Előre definiált függvények
6.1 Interakció a felhasználóval: az input() függvény
6.2 Függvénymodul importálása
6.3 Egy kis pihenő a turtle (teknős) modullal
6.4 Egy kifejezés igaz/hamis értéke
6.5 Ismétlés

7. Fejezet: Saját függvények
7.1 Függvény definiálása
7.2 Lokális változók, globális változók
7.3 "Igazi" függvények és eljárások
7.4 Függvények használata scriptben
7.5 Függvénymodulok
7.6 Paraméterek típusadása
7.7 Alapértelmezett értékek adása a paramétereknek
7.8 Argumentumok címkével

8. Fejezet: Az ablakok és a grafika használata
8.1 Grafikus interface-ek (GUI)
8.2 Első lépések a Tkinter-rel
8.3 Eseményvezérelt programok
8.4 A Tkinter widget-osztályai
8.5 A grid() metódus alkalmazása widgetek pozícionálására
8.6 Utasítások komponálása a tömörebb kód érdekében
8.7 Objektum tulajdonságainak módosítása - Animáció
8.8 Automatikus animáció - Rekurzivitás

9. Fejezet: A file-ok
9.1 A file-ok haszna
9.2 Munkavégzés file-okkal
9.3 File-nevek - Aktuális könyvtár
9.4 A két import forma
9.5 Szekvenciális írás file-ba
9.6 File szekvenciális olvasása
9.7 A ciklusból való kilépésre szolgáló break utasítás
9.8 Szövegfile-ok
9.9 Különböző változók mentése és visszaállítása
9.10 Kivételkezelés. A try - except - else utasítások

10. Fejezet: Az adatstruktúrák mélyebb tárgyalása
10.1 A karakterláncok lényege
10.2 A listák lényege
10.3 A tuplek
10.4 A szótárak

11. Fejezet: Osztályok, objektumok, attributumok
11.1 Az osztályok haszna
11.2 Egy elemi osztály (class) definíciója
11.3 Példányattribútumok vagy -változók
11.4 Objektumok argumentumként történő átadása függvényhíváskor
11.5 Hasonlóság és egyediség
11.6 Objektumokból alkotott objektumok
11.7 Az objektumok mint függvények visszatérési értékei
11.8 Az objektumok módosíthatók

12. Fejezet: Osztályok, metódusok, öröklés
12.1 A metódus definíciója
12.2 A "constructor" metódus
12.3 Osztályok és objektumok névterei
12.4 Öröklés
12.5 Öröklés és polimorfizmus
12.6 Osztálykönyvtárakat tartalmazó modulok

13. Fejezet: Osztályok és grafikus interface-ek
13.1 "Színkódok": egy egységbe zárt project
13.2 "Kisvasút": öröklés, osztályok közötti információcsere
13.3 "OscilloGraphe": egy testre szabott widget
13.4 "Kurzorok": egy kompozit widget
13.5 A kompozit widgetek beépítése egy összetett alkalmazásba

14. Fejezet: És még néhány widget
14.1 A rádiógombok
14.2 Ablak összeállítása keretekből (frame-ekből)
14.3 Hogyan mozgassunk az egérrel rajzokat
14.4 Python Mega Widgetek
14.5 Ablakok menükkel

15. Fejezet: Konkrét programok elemzése
15.1 Ágyúpárbaj
15.2 A Ping játék

16. Fejezet: Adatbázis kezelés
16.1 Adatbázisok
16.2 Egyszerű adatbázis készítése Gadfly-val
16.3 Egy MySQL kliensprogram váza

17. Fejezet: Webalkalmazások
17.1 Interaktív weblapok
17.2 A CGI interface
17.3 Egy webserver Pythonban!

18. Fejezet: Kommunikáció a hálózaton keresztül
18.1 A socketek
18.2 Egy elemi server készítése
18.3 Egy elemi kliens konstruálása
18.4 Több párhuzamos task kezelése threadek (szálak) segítségével
18.5 Egyidejű küldést és fogadást kezelő kliens
18.6 Több klienskapcsolatot párhuzamosan kezelő server
18.7 Ágyúpárbaj hálózati változat
18.8 Threadek (szálak) alkalmazása az animációk optimalizálására.

19. Fejezet: Függelék
19.1 A Python telepítése
19.2 Telepítés Windows alatt
19.3 A SciTE (Scintilla Text Editor) telepítése
19.4 A Python mega-widgetek telepítése
19.5 A Gadfly telepítése (adatbázisrendszer)
19.6 A gyakorlatok megoldásai
19.7 A "How to think like a computer scientist" függelékének kivonatai


Bevezetés

Ez a jegyzet eredetileg a belga középfokú oktatásban résztvevő, Tudomány és informatika fakultáción "Programozás és programnyelvek" tantárgyat tanuló 3. osztályosok számára készült. Egy kísérleti szöveg, amit az interneten szabad licenc alatt publikált számos más dokumentum nagymértékben inspirált.

A jegyzetben egy nem lineáris tanítási eljárást javaslunk, ami biztos hogy kritizálható. Tudatában vagyunk annak, hogy ez egy kicsit kaotikusnak fog tűnni egyes puristák szemében, de mi akartuk így, mert meg vagyunk róla győződve, hogy többféle (nemcsak programozás, hanem egyéb) tanítási módszer létezik és el kell fogadni azt a tényt, hogy a különböző emberek ugyanazokat a fogalmakat nem ugyanabban a sorrendben tanulják meg. Mindenekelőtt a figyelemfelkeltésre törekedtünk és arra, hogy a következő vezérelvek betartásával a kapukat szélesre tárjuk:

- A tanításnak egy átlagos diák értelmi szintjéhez és általános ismereteihez kell alkalmazkodni. Azt elutasítjuk, hogy kis zsenikből álló "elit"-nek oktassunk. Ezen a szemüvegen át nézve a dolgokat az az általános törekvésünk, hogy bármiféle specializáció nélkül nyilvánvalóvá tegyük a programozás és az informatika invariánsait.

- A tanítás során alkalmazott eszközöknek korszerűeknek és versenyképeseknek kell lenni, de az is szükséges, hogy a diákok személyes használatra legálisan jussanak hozzájuk. Tanítási módszerünk azon az elképzelésen alapul, hogy a tanulóknak nagyon korán el kell kezdeniük saját projektjeik megvalósítását, amiket a saját elképzeléseik szerint fejlesztenek és használnak fel.

- A tanulónak nagyon hamar képesnek kell lenni kis grafikus alkalmazások megvalósítására.

Nagyon fiatalokhoz szólunk (elvileg éppen abba a korba érkeztek, amikor képesek elkezdeni absztrahálni). Amellett foglaltunk állást, hogy nagyon korán térjünk rá a grafikus interface programozásra, még a rendelkezésre álló adatszerkezetek bemutatása előtt, mert megfigyelhető, az osztályainkba érkező fiatalok már egy ablakokon és más interaktív grafikus interface-eken alapuló informatikai kultúrában "lubickolnak".

Ha a programozás tanulást választják, természetesen szeretnének minél előbb (lehet, hogy nagyon egyszerű) alkalmazásokat készíteni, melyekben a grafikus megjelenés már masszívan jelen van. Azért választottuk ezt a kissé szokatlan megközelítést, hogy növendékeinknek nagyon korán lehetőségük legyen kis, személyes projektekbe kezdeni, melyek révén érezhetik, hogy értékelik őket. Azt viszont megköveteljük, hogy a munkáikat automatikus kódgeneráló, fejlett programfejlesztő környezetek alkalmazása nélkül írják meg, mert nem akarjuk a programozás összetettségét sem elfedni.

Egyesek azzal kritizálnak bennünket, hogy módszerünk nem állítja eléggé középpontba a tiszta és kemény algoritmizálást. Úgy gondoljuk, hogy egy ilyen megközelítés a fentebb már említett okok miatt nincs a fiatalokra adaptálva. Ráadásul ez a megközelítés kevésbé lényeges, mint a múltban volt. Úgy tűnik, az objektumokkal történő modern programozás tanulása inkább azt igényli, hogy a tanuló amilyen korán csak lehet kerüljön kapcsolatba már létező objektumokkal és osztálykönyvtárakkal. Így nagyon korán megtanulja, hogy inkább objektumok közötti interakciókban gondolkozzon, mint eljárásokban és ez lehetővé teszi, hogy elég gyorsan kiaknázza az olyan konstrukciók előnyeit, mint az öröklés és a polimorfizmus.

Egyébként elég jelentős teret biztosítottunk a különböző típusú adatszerkezetek kezelésének, mert úgy véljük, hogy az adatszerkezetek átgondolásának kell képezni minden programfejlesztés gerincét.


×