815338A Ohjelmointikielten periaatteet 2014-2015



Samankaltaiset tiedostot
Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Tietueet. Tietueiden määrittely

Tieto- ja tallennusrakenteet

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Ohjelmoinnin perusteet Y Python

Olio-ohjelmointi Syntaksikokoelma

Muistutus aikatauluista

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssi Y1

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

Tutoriaaliläsnäoloista

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Groovy. Samuli Haverinen, Aki Hänninen. 19. marraskuuta 2015

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Ohjelmoinnin peruskurssien laaja oppimäärä

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Harjoitustyö: virtuaalikone

Ohjelmoinnin perusteet Y Python

C++11 lambdat: [](){} Matti Rintala

Rajapinta (interface)

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 6 Kerta Toteuta Pythonilla seuraava ohjelma:

Olio-ohjelmointi Javalla

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Common Lisp Object System

Kokeellista matematiikkaa SAGE:lla

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

1. Omat operaatiot 1.1

Loppukurssin järjestelyt C:n edistyneet piirteet

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Loppukurssin järjestelyt

Kysymyksiä koko kurssista?

Ohjelmoinnin jatkokurssi, kurssikoe

Ohjelmoinnin peruskurssi Y1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Ohjelmoinnin peruskurssi Y1

14. Poikkeukset 14.1

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Imperatiivisen ohjelmoinnin peruskäsitteet. Meidän käyttämän pseudokielen lauseiden syntaksi

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Java-kielen perusteet

Tie Principles of Programming Languages Seminar Essay. Lua. Group 23 Miikka Koskinen Joose Sainio

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Ohjelmoinnin perusteet Y Python

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

18. Abstraktit tietotyypit 18.1

Muuttujat ja kontrolli. Ville Sundberg

Ohjelmoinnin peruskurssi Y1

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

812341A Olio-ohjelmointi, I Johdanto

Ohjelmoinnin peruskurssien laaja oppimäärä

Taulukot. Jukka Harju, Jukka Juslin

Tietorakenteet ja algoritmit

Ohjelmoinnin perusteet Y Python

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Nimike Määrä YksH/EI-ALV Ale% ALV Summa

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

14. Poikkeukset 14.1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssien laaja oppimäärä

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

T Ohjelmoinnin perusteet Y (Python). Tentti

Transkriptio:

815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi

Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2

X.1 Johdanto Tähän asti käsitelty järjestelmäohjelmointikieliä Tuottavat itsenäisiä ohjelmia Usein tarvitaan monien itsenäisten ohjelmien yhteistoimintaa -> tarve skriptikielille Ousterhout (1998): Skriptikielet olettavat muiden kielten sisältävän hyödyllisiä komponentteja. Niitä ei ole tarkoitettu luomaan ohjelmia alusta alkaen, vaan kokoamaan ne olemassa olevista komponenteista. Skriptikielillä voidaan tuottaa ohjelmia noin 5-10 kertaa nopeammin, mutta ohjelmat toimivat noin 10-20 kertaa hitaammin 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 3

X.2 Skriptikielten yleispiirteitä Skriptikielillä kaksi edeltäjäjoukkoa 1. Komentokehotteiden ohjauskielet 2. Tekstinmuokkauksen ja raporttien muodostamisen työkalut Perintö näkyy nykyisissä skriptikielissä Skriptikieli hankala määritellä; yleensä seuraavia ominaisuuksia 1. Sekä ositus- että interaktiivinen käyttö 2. Taloudellinen ilmaisutapa 3. Esittelyjen puuttuminen 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 4

X.2 Skriptikielten yleispiirteitä (2) 4. Yksinkertaiset säännöt näkyvyysalueen määräytymiseen 5. Dynaaminen tyypin määräytyminen 6. Helppo pääsy järjestelmän palveluihin 7. Kehittynyt hahmontunnistus ja merkkijonojen käsittely 8. Korkean tason tietotyypit 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 5

X.3 Python Guido van Rossum 1990-luvun alkupuolella Yleiskäyttöinen skriptikieli Pieni, sisältää laajan standardikirjaston Tukee monia ohjelmointiparadigmoja Imperatiivinen Olio-ohjelmointi Funktionaalinen Rinnakkainen Näkyvyysalueet määrää sisennys 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 6

X.3.1 Pythonin tietotyypit Dynaamisesti tyypitetty -> muuttujia ei tarvitse esitellä Kaikki data esitetään olioina Numeeriset ja looginen tietotyyppi Korkeamman tason tietotyyppejä Jonot (sequences): Muokattavia mm. listat ja eimuokattavia merkkijonot (strings) Joukkotietotyyppi (set) Assosiatiiviset taulukot eli sanakirjat (dictionaries) Listat Merkkijonot Unicode-arvojen jonoja Ei merkkityyppiä 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 7

X.3.1 Pythonin tietotyypit. Esimerkkejä Sanakirja: paivat = { 'Maanantai':'Lunedi', 'Tiistai':'Martedi', 'Keskiviikko':'Mercoledi','Torstai':'Giovedi','Per jantai':'venerdi', 'Lauantai':'Sabato','Sunnuntai':'Domenica'} paivat[ Maanantai ] -> Lunedi Lista: lista = ['Tammi', 'Helmi', 'Maalis'] lista[2] -> Maalis lista + ['Huhti', 'Touko'] -> ['Tammi', 'Helmi', 'Maalis', 'Huhti', 'Touko ] lista.sort() -> ['Helmi', 'Huhti', 'Maalis', 'Tammi', 'Touko ] 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 8

X.3.1 Pythonin tietotyypit. Esimerkkejä (2) Listakehitelmät mahdollisia: nlista = [x*x for x in range(1,10)] -> nlista = [1,2,9,16,25,36,49,64,81] *x++=*y++ 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 9

X.3.2 Pythonin kontrollilauseet Laskennan eteneminen: if-, while-, for-lauseet Lisäksi with-lause lohkon alustamis- ja päättämisoperaatioihin, try-lause poikkeusten käsittelyyn if-lauseen syntaksi if_stmt ::= "if" expression ":" suite ( "elif" expression ":" suite )* ["else" ":" suite] while-lauseen syntaksi while_stmt ::= "while" expression ":" suite ["else" ":" suite] 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 10

X.3.2 Pythonin kontrollilauseet (2) for-lause iteroi jonorakenteen alkioita for_stmt ::= "for" trgt_list "in" expr_list ":"suite Esimerkki: for kuu in lista: print(kuu) ["else" ":" suite] Tulostaa listan lista alkiot 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 11

X.3.3 Pythonin funktiot Funktion määrittely def tulosta_jono(n): print(n) if n==1: return elif n%2 == 0: else: tulosta_jono(int(n/2)) tulosta_jono(int(3*n+1)) Tulostaa kutsuttaessa 3x+1 probleeman jonon alkuarvolla n 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 12

X.3.3 Pythonin funktiot (2) Funktion parametreilla voi olla oletusarvoja Avainsanaparametrien ansiosta missä tahansa kohtaa parametrilistaa Vaihteleva määrä parametreja: parametri alkaa * -> vaihtelevamittainen monikko (tuple) parametri alkaa ** -> vaihtelevamittainen sanakirja 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 13

X.3.3 Pythonin funktiot (3) Lambda-lausekkeilla nimettömiä funktioita -> funktionaalinen ohjelmointi Esimerkki lambda x,y: x+y Anonyymi funktio, joka palauttaa parametriensa summan Esimerkki käytöstä lista = [5,8,100,101,34,15,99,36] plista = list(filter(lambda x: x%2==0,lista)) Suodattaa listasta parittomat luvut pois 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 14

X.3.4 Olio-ohjelmointi Pythonissa Luokan määrittely class Kello: aika = time.time() def init (self,t): self. aika = t def getaika(self): return self. aika def setaika(self,uusiaika): self. aika = uusiaika def print(self): print('kello on:') print(time.localtime(self. aika)) 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 15

X.3.4 Olio-ohjelmointi Pythonissa (2) Kello-luokan jäsenmuuttuja aika Alkuliite : jäsen tarkoitettu luokan sisäiseen käyttöön Voidaan kuitenkin viitata luokan ulkopuolelta -> Tiedon kätkentä puutteellinen HUOM! Pythonissa ei näkyvyysmääreitä Kello-luokan metodi init (eräänlainen) muodostin Alustaa luokan olion Luokan metodien ensimmäinen parametri self Viittaa olioon itseensä Ei käytetä kutsuttaessa metodia Python tukee moniperiytymistä 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 16