Language
Lt :: En

Programavimo kalba Python

 

Programavimo kalba Python

Atnaujinta informacija išryškinta raudonai.

2006 m. ruduo

Laisvai pasirenkamas dalykas.

Paskaitos vyko trečiadieniais 14:00, 301 auditorijoje.

Pratybos vyko penktadieniais 14:00, 16:00 bei 18:00 val. 3-oje kompiuterių klasėje.

Per paskaitas dėsčiau teoriją (žr. skaidres), per pratybas priiminėjau atsiskaitymus.

Visa svarbi informacija turėtų būti surašyta šiame puslapyje

http://gedmin.as/python

Atsiskaitymai

Per pratybas reikėjo atsiskaityti tris mažas programėles (arba vieną didelę). Sąlygas reikėjo susigalvoti patiems -- aš tik pateikiau bendrus reikalavimus, tematiką, bei sąlygų pavyzdžius. Prieš pradėdami jas daryti, sąlygą parodykite man (el. paštu -- mgedmin@b4net.lt -- arba per pratybas asmeniškai), kad aš ją patvirtinčiau. Visos sąlygos turi būti pakankamai skirtingos (kad du žmonės nedarytų tos pačios užduoties). Jei sąlygą nusiuntėte man paštu, o aš per pakankamai greitą laiką (porą dienų) neatsiliepiau, galite pakartotinai mane krutinti emailu arba tiesiog pradėti ją daryti. Jei iškyla problemų su paštu (jūsų siųstas laiškas grįžta), bandykite mano darbo adresą -- marius@pov.lt.

Siųsdami laišką paminėkite savo vardą pavardę, kursą, grupę ir studijų kryptį.

Prieš atsiskaitymą norėčiau padarytą užduotį gauti paštu.

Deadlainai: viską reikėjo atsiskaityti iki semestro galo. Atsižvelkite į tai, kad jūsų daug, aš vienas, ir atsiskaitymas užima laiko (bent 5 minutes).

Įskaitai reikėjo trijų programėlių ir testuko. Arba projektuko ir testuko. Testukas nesunkus, jei žinote esminius principus. Jis vyko gruodžio 20 d. paskaitos metu.

Čia galite rasti atsiskaitymų rezultatus ir pasirinktas užduotis

Pirmoji užduotis. Parašyti programą, kuri apdoroja tekstinį failą (ar kelis failus).

Mano tikslai šiai užduotėlei: noriu, kad būtų proga susipažinti su ciklais, duomenų įvedimu ir išvedimu, sąrašais ir/arba žodynais.

Sąlygų pavyzdžiai (kai kurie iš praėjusių metų, kiti šiaip į galvą atėję):

Nesirinkite užduoties, kuri jau yra pasirinkta.

Antroji užduotis.

Siūlau tokią temą: mažas tekstinis nuotykinis žaidimukas (interactive fiction/MUD). Komandų eilutėje įvedate veiksmus ("go north" arba "paimti akmenį"), nedidukas pasaulio modelis jos vykdo.

Arba dar viena mintis: geometrija/grafika. Pvz., tekstiniame faile aprašytos geometrinės figūros, kurias reikia pavaizduoti ekrane grafiškai. Arba išspręsti kokią geometrinę užduotėlę.

Mano tikslai šiai užduotėlei: noriu, kad apsirašytumėte porą klasių, modeliuojančių kažkokius pasaulio objektus.

Nesirinkite užduoties, kuri jau yra pasirinkta.

Trečioji užduotis. Visų reikalavimų dar nesugalvojau (tai reiškia, kad galite sąlygą susigalvoti patys), bet norėsiu unit testų.

Mano tikslai šiai užduotėlei: noriu, kad pasitreniruotumėte rašyti testus; stipriai rekomenduoju Test-Driven Developmentą.

Galima (bet nebūtina) atiskaitinėti tą pačią pirmąją ar antrąją užduotėlę, pridėjus jai testus. Tokiu atveju lengviau bus, jei kodą rašysite iš naujo, naudodami testai pirma metodiką, egzistuojantį kodą naudodami tik kaip prototipą. Bus įdomu palyginti kodo, rašyto be testų, ir kodo, rašyto testai pirma būdu, kokybę.

Nesirinkite užduoties, kuri jau yra pasirinkta.

Projektas. Vietoje trijų mažų programėlių galima rašyti vieną didelę. Reikalavimai:

Pavyzdys: mp3 serveris -- galima prisijungti prie jo per telnetą (arba per webinį interfeisą), ieškoti dainų pagal failo pavadinimą ir/arba ID3 atributus, peržiūrinėti dainų sąrašą, pridėdinėti dainas į playlistą ir jas groti (galima paleisti mpg123 su os.system).

Pavyzdys: grafinė programa laiko žymėjimui -- vartotojas pasižymi, kada pradeda, ir kada baigia daryti tam tikrą užduotį ir gali pasiųsti dienos ar savaitės darbų ataskaitą emailu.

Pavyzdys: MagicPoint -> PDF konverteris. MagicPoint yra įrankis, kuriuo aš rengiu skaidres paskaitoms. MagicPoint skaidrės aprašomos tekstiniame faile labai paprastu formatu. PDFų generacijai apsimoka naudoti Reportlab biblioteką. Nei GUI nei tinklo čia nėra -- bet PDFą galima laikyti kaip ir GUI... programa tikrai bus pakankamai sudėtinga.

Nesirinkite užduoties, kuri jau yra pasirinkta.

Literatūra

Python kalbos interpretatorių įvairioms operacinėms sistemoms galite rasti www.python.org. Daugelyje Linux distribucijų bei naujesnėse Mac OS X versijose Python interpretatorius ateina su operacine sistema ir jo atskirai siųstis nereikia.

Įžanga

Python -- dinaminė aukšto lygio programavimo kalba. Python yra griežtai tipizuota (neturi typecastų), bet nėra statiškai tipizuota (tipus turi ne kintamieji, o reikšmės). Python leidžia naudoti struktūrinio, objektinio, bendro (generic) bei, šiek tiek, funkcinio programavimo paradigmas. Python yra interpretuojama kalba, panašiai kaip Java (programa pirma kompiliuojama į baitinį kodą, o paskui virtuali mašina tą kodą interpretuoja). Skirtingai nuo Java, Pytohn kompiliavimas atliekamas automatiškai, paleidus interpretatorių.

Štai kaip atrodo trumpa tradicinė Hello, World programėlė:

print "Hello, world!"

Štai kaip atrodo daug rimtesnė tos pačios programėlės versija:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
Labas, pasauli.

Demonstracinė programėlė Python kursui.

Autorius -- Marius Gedminas
"""

def main():
    """Spausdina ekrane žodžius "Hello, world!"."""
    print "Hello, world!"

if __name__ == "__main__":
    main()

Pirmoji eilutė -- specialus komentaras, nurodantis, jog tai yra Python kalbos skriptas. Unix šeimos operacinės sistemos pagal šią eilutę nustato, kokį interpretatorių reikia paleisti.

Antroje eilutėje -- dar vienas specialus komentaras, nurodantis failo koduotę (jo reikia, jei faile pasitaiko raidžių, nepatenkančių į US-ASCII).

Trigubomis kabutėmis Pythone apibrėžiamos ilgos simbolių eilutės (multiline strings). Tradiciškai tokios eilutės naudojamos dokumentacijai, analogiškai Javos dokumentaciniams komentarams. Kiekvieno failo, klasės, funkcijos pradžioje verta įrašyti dokumentacinę eilutę. Egzistuoja programų (pvz., pydoc), kurios iš Pythono programų ištraukia ir gražiai suformatuoja tokiu pavidalu pateiktą dokumentaciją.

Toliau matome funkcijos main apibrėžimą. Funkcijos kūną sudaro visos eilutės, kurios yra pastumtos į dešinę (keturiais tarpais). Ši funkcija nieko negražina.

Programos pabaigoje -- idiomatiškas patikrinimas, ar programa yra vykdoma, ar tik importuojama. Apie tai detaliau parašysiu vėliau.

Paskaitos

Šių metų skaidrės.

Istorija


Valid XHTML 1.1! Valid CSS! Paskutiniai pakeitimai: 2012-01-08