LISÄSIVUT 1 PYTHON-TYYLISÄÄNNÖISTÄ. Lappeenrannan teknillinen yliopisto 2007 Jussi Kasurinen

Koko: px
Aloita esitys sivulta:

Download "LISÄSIVUT 1 PYTHON-TYYLISÄÄNNÖISTÄ. Lappeenrannan teknillinen yliopisto 2007 Jussi Kasurinen"

Transkriptio

1 LISÄSIVUT 1 PYTHON-TYYLISÄÄNNÖISTÄ Lappeenrannan teknillinen yliopisto 2007 Jussi Kasurinen

2 Python-tyylisäännöistä Alkuperäinen lähde Python Enhancement Proposal 8, Johdanto Tämä asiakirja määrittelee Python-ohjelmointikielelle tyylin, jolla Python-ohjelmointiympäristön mukana toimitettavan perus-moduulikirjaston funktiolle saadaan yhtenäinen ja helposti ymmärrettävissä oleva esitystapa. Tätä tyylisäännöstöä voidaan soveltaa myös lisämoduuleihin, kuten py2exe- tai numpy-moduuliin, mutta niiden kanssa voidaan joutua tekemään joitakin kompromisseja. Asiakirja on vapaasti suomennettu ja koottu alkuperäisestä Python Enhancement Proposalista numero 8. Kyseinen PEP sisältää Guido van Rossumin ja Barry Warsawin tyylioppaista kootun kokonaisuuden, jolla määritellään kielen virallinen tyyliopas. Perusajatus Guido van Rossumin alkuperäinen ajatus ohjelmoinnista on, että ihmiset käyttävät enemmän aikaa koodin tulkitsemiseen kuin sen kirjoittamiseen. Tämän vuoksi Python-ohjelmoinnissa ja ohjelmointityylissä pyritään aina suosimaan kielen ymmärrettävyyttä sekä pitämään lähdekoodin kieliasu yhtenäisenä. Kannattaa kuitenkin pitää mielessä, että joskus on olemassa tilanteita, joihin tietyt tyylisäännöt tai tyylioppaat eivät vain yksinkertaisesti päde. Tällöin tulee kuitenkin pyrkiä pitämään linja yhtenäisenä, ja huolehtia siitä, että Python-koodin tärkein ominaisuus sen ymmärrettävyys ja selkeys pysyy edelleen prioriteettina. 1

3 Tyylisäännöt Sisennyksestä Käytä sisennyksissä koodin tasolta toiselle aina neljää (4) välilyöntiä per taso. Ainoan poikkeuksen tähän tekee erittäin vanhojen lähdekoodien, jotka käyttävät aiemmin voimassa ollutta 8 välilyönnin standardia, ylläpito ja korjaus. Älä koskaan käytä yhtäaikaisesti sisennysmerkkejä ja välilyöntejä. Mikäli et ole varma tallentaako käyttämäsi editoriohjelma sisennysmerkit automaattisesti neljänä välilyöntinä, älä käytä molempia vaan ainoastaan toista merkkiä sisennyksen tekemiseen. Rivien pituudesta ja monirivisistä lauseista Pidä lähdekoodin yhden koodirivin pituus maksimissaan 80 merkkiä pitkänä. Edelleen on olemassa laitteita, joiden näyttökyky rajoittuu 80 merkkiin per rivi; lisäksi pidättäytymällä tässä säännössä on helpompaa tarkastella kahta koodia yhtä aikaa yhdeltä näytöltä. Lisäksi, mikäli kirjoitat funktioillesi dokumentaatiorivejä, käytä näiden tapauksessa rivin pituutena 72 merkkiä. Käytä rivien katkaisemiseen Python-tulkin kenoviivaa ( \ ). Jos välttämättä tarvitset, voit käyttää myös sulkeita, mutta useimmiten kenoviiva näyttää paremmalta. Lisäksi katkaisun jälkeinen rivi on sisennettävä oikealle tasolleen joko alkuperäisen rivin tasalle tai sulkeiden alkamistasolle. Esimerkkejä: class Rectangle(Blob): def init (self, width, height, color='black', emphasis=none, highlight=0): if width == 0 and height == 0 and \ color == 'red' and emphasis == 'strong' or \ highlight > 100: raise ValueError("sorry, you lose") if width == 0 and height == 0 and (color == 'red' or emphasis is None): raise ValueError("I don't think so") Blob. init (self, width, height, color, emphasis, highlight) 2

4 Tyhjistä riveistä Erota määritellyt funktiot ja dynaamiset rakenteet tosistaan vähintään kahdella tyhjällä rivillä. Erottele lisäksi määritellyt funktiot muusta koodista tyhjällä rivillä ennen funktiota ja funktion jälkeen. Lisäksi tyhjiä rivejä voidaan lisätä, mikäli tarkoituksena on erotella koodista toisiinsa liittyvät funktiot. Funktion sisällä tyhjiä rivejä voidaan käyttää erottelemaan koodin loogiset osat toisistaan. Koodisivun valinnasta Mikäli mahdollista, käytä aina pelkkää standardi-ascii-merkistöä. Mikäli tarvitset laajennettua ASCII-merkistöä, käytä koodisivuna joko merkistöjä Latin-1, UTF-8 tai cp1252. Mikäli tarvitset ainoastaan yksittäisiä merkkejä, on suotavampaa käyttää \x, \u tai \U notaatioa koodisivun vaihtamisen sijaan. Sisällyttämisestä Kokonaisten moduulien sisällyttäminen tulee aina toteuttaa erillisillä riveillä: Oikein: import os import sys Väärin: import sys, os Mikäli kuitenkin sisällytät ainoastaan osia moduulista, voidaan käyttää merkintätapaa from subprocess import Popen, PIPE Sisällytyskäskyt tulee aina sijoittaa lähdekoodin alkuun. Ainoastaan koodisivun valinta ja lähdekoodin header-kommentit tulee ennen sisällyttämiskäskyjä. Lisäksi sisällyttämisessä tulisi käyttää seuraavaa järjestystä: 1. Standardikirjastosta sisällytettävät moduulit (sys,os, time ) 2. Lisämoduuleista sisällytettävät moduulit (py2exe, image, numpy ) 3. Paikalliset lähdekooditiedostot (omat ulkopuoliset lähdekooditiedostot) Ryhmät tulee erotella toisistaan tyhjällä rivillä. Kokonaisen moduulin sisällyttämisessä tulee aina pyrkiä käyttämään täydellä nimellä sisällyttämistä (import X). Mikäli sisällytät ainoastaan yksittäisiä funktioita, voit käyttää notaatiota (from X import Y). 3

5 Välilyönneistä Välilyöntien käyttäminen koodin luettavuuden parantamiseksi on hyvä käytäntö, mutta siihen liittyy muutamia sääntöjä, joilla haluttua vaikutusta voidaan tehostaa. Älä käytä välilyöntiä seuraavissa kohdissa: - Välittömästi kaarisulkeiden, hakasulkeiden tai aaltosulkeiden perään. Oikein: spam(ham[1], {eggs: 2}) Väärin: spam( ham[ 1 ], { eggs: 2 } ) -Ennen pilkkua, kaksoispistettä tai puolipistettä: Oikein: if x == 4: print x, y; x, y = y, x Väärin: if x == 4 : print x, y ; x, y = y, x Ennen sulkeita, jotka aloittavat funktiokutsun parametrilistan: Oikein: spam(1) Väärin: spam (1) Ennen sulkeita, jotka määrittelevät leikkauksen tai alkioviittauksen: Oikein: dict['key'] = list[index] Väärin: dict ['key'] = list [index] Enemmän kuin yksi välilyönti viittausten tai sijoitusten ympärillä: Oikein: Väärin: x = 1 y = 2 pitka_nimi = 3 x = 1 y = 2 pitka_nimi = 3 4

6 Käytä välilyöntiä seuraavissa kohdissa: Erottele seuraavat merkit ja vertausoperaatiot aina molemmin puolin välilyönneillä: sijoitus (=), arvoa muuttava sijoitus (+=, -= etc.), vertailut (==, <, >,!=, <>, <=, >=, in, not in, is, is not), Boolean-arvot (and, or, not). Erottele numeroarvot ja muuttajat operaattoreista: Oikein: Väärin: i = i + 1 vastaanotettu += 1 x = x * 2-1 hypot2 = x * x + y * y c = (a + b) * (a - b) i=i+1 vastaanotettu +=1 x = x*2-1 hypot2 = x*x + y*y c = (a+b) * (a-b) Ainoa poikkeus tähän on parametrien avainsanat, joihin välilyöntejä ei tarvitse laittaa: Oikein: def complex(real, imag=0.0): return magic(r=real, i=imag) Ei niin oikein: def complex(real, imag = 0.0): return magic(r = real, i = imag) 5

7 Rivityksestä Usean loogisen lauseen rivittämistä samalle fyysiselle riville tulisi välttää. Oikein: if foo == 'blah': do_blah_thing() do_one() do_two() do_three() Ei niin oikein: if foo == 'blah': do_blah_thing() do_one(); do_two(); do_three() Vaikka joskus yksinkertaisen if-,for-, tai while rakenteen sijoittaminen samalle riville vaikuttaisi hyvältä, tulisi sitä siitäkin huolimatta välttää. Jos rakenteessa on enemmän kuin yksi osio, osiossa enemmän kuin yksi rivi tai rivi pitäisi pituuden vuoksi katkaista epäloogisesta kohdasta, tulee rakenne ehdottomasti sijoittaa fyysesti eri riveille: Mielellään ei: if foo == 'blah': jotain() for x in lst: total += x while t < 10: t = laske() Ehdottomasti ei: if foo == 'blah': tee_jotain() else: jotain_muuta() try: jotain() finally: muuta() yksi(); kaksi(); kolme(pitka, lista, argu, mentteja) if foo == 'blaah': yksi(); kaksi(); kolme() 6

8 Kommentoinnista Yleisesti Kommentit, jotka eivät pidä yhtä koodin toiminnan kanssa ovat suurempi ongelma kuin puutteellinen kommentointi. Huolehdi siitä, että kommentit ovat jatkuvasti ajan tasalla. Kommenttien tulisi olla kokonaisia lauseita. Kirjoita kommenttisi siten, että ne alkavat isolla alkukirjaimella ja päättyvät pisteeseen. Ainoan poikkeuksen tähän tekee se, jos kommentti alkaa muuttujan tai funktion nimellä, joka koodissa kirjoitetaan pienellä; tällöin myös kommentti alkaa pienellä kirjaimella. Jos kommentti on muutaman sanan pituinen, voidaan lauserakenteesta tinkiä. Jos kirjoitat pitkän kommenttitekstin, kirjoita teksti kieliopillisesti oikein. Pyri välttämään lyhenteitä. Kirjoita kommentointi aina englanniksi, mikäli on pienikin todennäköisyys, että koodisi voi päätyä julkisesti saataville ja mikäli sinua ei ole erikseen ohjeistettu tekemään toisin. Koodiosion kommentointi Jos kirjoitat koko koodiosiota koskevan kommentoinnin, sisennetään se samalle tasolle millä koodiosio on. Monirivisessä kommentoinnissa käytä menetelmää, jossa # -merkin jälkeen tulee ainakin yksi välilyönti. Kappaleenvaihto monirivisessä kommentissa merkitään tyhjällä kommenttirivillä, jolla on ainoastaan # -merkki. Koodinsisäinen kommentointi Koodinsisäinen kommentointi tarkoittaa kommentteja, jotka kirjoitetaan koodirivin perään. Koodinsisäinen kommentti erotetaan koodirivistä vähintään kahdella välilyönnillä. Lisäksi koodinsisäiset kommentit häiritsevät koodin lukemista, joten niitä ei tulisi käyttää kuvaamaan itsestään selviä asioita. Esimerkiksi kommentti x = x + 1 # x kasvaa yhdella on turha ja haittaa koodin luettavuutta. Sen sijaan kommentti x = x + 1 # lisataan listan ylarajaa yhdella on tietyissä tapauksissa hyödyllistä tietoa. 7

9 Dokumenttiriveistä Kirjoita dokumenttirivi jokaiselle julkiselle moduulille, funktiolle sekä rakenteelle jonka luot. Jos tekemäsi funktio ei ole julkinen, vaan on tarkoitettu moduulinsisäiseen käyttöön, ei siihen tarvita dokumenttiriviä. Dokumenttirivi tulee välittömästi osion alkuun, heti def-määritelmän jälkeen. Kirjoita dokumenttirivi käyttäen kolmen sitaattimerkin notaatiota. Huomio lisäksi, että monirivisessä dokumentaatiossa sulkevat sitaattimerkit tulevat omalle rivilleen. Muista myös, että dokumenttirivien maksimipituus olisi hyvä rajoittaa 73:een merkkiin. Oikein: """Return a foobang Optional plotz says to frobnicate the bizbaz first. Accepted types: plotz - integer frobnicate string bizbaz list """ """For one liner docstrings, it's okay to keep the closing on the same line. """ Versionumeroinnista Jos koodiprojektissasi toteutetaan versionumeron seurantaa CVS, RCS tai Subversion menetelmillä, merkitse koodisi versionumero seuraavalla notaatiolla. version = "$Revision: xxxxx $" # $Source$ Versionumero yleisesti tulee sijoittaa moduulin dokumenttiriville ennen varsinaisia koodirivejä erotettuna ylä- ja alapuoleltaan tyhjällä rivillä. 8

10 Nimeämiskäytännöistä Vaikka alkuperäinen nimeämiskäytäntö Pythonin moduulikirjastoissa on välillä hieman sekava, on silti tarkoituksena jatkossa pyrkiä nimeämään funktioiden ja muuttujien nimet siten, että ne noudattavat tiettyä kaavaa. Nimeämislogiikasta Käytä muuttujien, funktioiden ja rakenteiden nimeämiseen menetelmää, joka kuuluu johonkin seuraavista kategorioista: - b (yksittäinen pieni kirjain) - B (yksittäinen iso kirjain) - muuttujannimi (pelkkiä pieniä kirjaimia) - muuttujan_nimi_viivalla_erotettuna - MUUTTUJANNIMI (pelkkiä isoja kirjaimia) - MUUTTUJAN_NIMI_VIIVALLA_EROTETTUNA - IsotKirjaimet (muuttujan nimen sanat alkavat isolla kirjaimella) Huomioi tämä: Jos käytät tätä nimeämislogiikkaa, niin käytä isoja kirjaimia myös lyhenteissä: HTTPServerError on parempi kuin HttpServerError. - pienialkukirjain (sama kuin yllä, mutta alkaa pienellä kirjaimella) - Isot_Alkukirjaimet_Viivalla_Erotettuna - _aloittava_alaviiva (plus muut kombinaatiot) Nimiä, joita tulisi välttää Pyri välttämään seuraavia merkkejä muuttujannimissä: - l : pieni L - O : iso o - I, iso i Nämä merkit voidaan joillain fonttityypeillä helposti sekoittaa numeroarvoihin 1 ja 0. Kokonaisina muuttujanniminä olisi suositeltavampaa olla kokonaan käyttämättä kyseisiä kirjaimia (esimerkiksi pientä L-kirjainta toistorakenteen askeltajana). 9

11 Moduulien, muuttujien ja funktioiden nimistä Moduuleilla tulisi olla lyhyt, kokonaan pienillä kirjaimilla kirjoitettu, nimi. Myös alaviivaa voidaan käyttää mikäli sillä voidaan parantaa nimen luettavuutta. Koska tulkki hakee moduuleja niiden tiedostonnimistä, olisi moduulin nimen silloin syytä olla erittäin lyhyt ja yksinkertainen. Mikäli voidaan olettaa, että koodia voidaan käyttää vanhoissa Mac- tai DOS-koneissa, on nimen hyvä olla maksimissaan 7 merkkiä pitkä. Samoin alaviivan käyttöä kannattaa näissä tapauksissa välttää. Rakenteisten tietotyyppien tai luokkien nimissä tulisi käyttää IsotKirjaimet-nimeämislogiikkaa. Jos rakenne tulee vain moduulinsisäiseen käyttöön, voidaan myös aloittavaa alaviivaa käyttää. Itse määritellyissä virhetilanteissa virheen nimen tulisi olla IsotKirjaimet-tyylinen, sekä sisältää päätteenä sana Error. Funktioiden nimien tulisi olla kirjoitettu kokonaan pienillä kirjaimilla. Lisäksi niiden kanssa voi käyttää alaviivaa, mikäli se parantaa nimen ymmärrettävyyttä. Valmiiiden globaalien muuttujien nimeämiskäytäntö nimi (kaksoisalaviiva) on varattu järjestelmän itsensä luomille muuttujannimille. Älä käytä näitä ellet oikeasti tiedä mitä olet tekemässä ja olet varma, että ylikirjoitusvaaraa ei ole olemassa. Mikäli haluamasi muuttujannimi on järjestelmän varattu sana (esimerkiksi except tai print ), on parempi menetelmä jättää muuttujannimestä kirjain pois ( xcept, prnt ) kuin lisätä alaviiva ( except_, _print ). Tietenkin paras tapa on olla käyttämättä varattujen sanojen kaltaisia muuttujannimiä. Edistyneemmistä ohjelmointitavoista Pyri välttämään ohjelmoinnissa kirjoitustapoja, jotka haittaavat merkittävästi muiden ei-cpythonpohjaisten menetelmien käyttämistä. (Esimerkiksi PyPy, Jython, IronPython, Pyrex, Psyco jne...) Vertailuoperaattorit perusarvoihin, kuten None, True tai False, tulisi aina tehdä operaattorilla is tai is not, ei yhtäsuuruusoperaattoreilla ( == tai!= ) Huomaa myös, että if x ei välttämättä tarkoita if x is not None, koska x:n arvoksi on voitu asettaa jotain (kuten säiliö), jonka arvo Boolean-vertailussa on False. 10

12 Virheiden ja poikkeuksien käsittelystä Jos kirjoitat poikkeuksia, tee niistä luokkia. Näiden luokkien tulisi olla Exception-luokasta perittyjä. Lisäksi kirjoita näille luokille aina dokumenttirivit. Kutsu poikkeuksia aina syntaksilla raise ValueError('viesti') Poikkeuksien kiinniottamisessa tulisi aina käyttää spesifistä except-arvoa jolla määritellään mitä virheitä koitetaan ottaa kiinni. Oikein: try: import platform_specific_module except ImportError: platform_specific_module = None Väärin: try: import platform_specific_module except: platform_specific_module = None Pelkkä except rikkoo SystemExit- ja KeyboardInterrupt-poikkeukset, jolloin käyttäjä ei pysty kontrolloimaan ohjelman keskeyttämistä. Jos haluat käyttää yleistermiä, jolla saat kaikki oikeat virheet kiinni, käytä exceptissä notaatiota 'except StandardError:'. Kaikkien poikkeusten kiinniottoa voidaan käyttää ainoastaan kahdessa tapauksessa: - Jos käsin määritelty poikkeuksenkäsittelijä tulostaa virheilmoituksen, eli käyttäjä tietää jotain menneen pieleen. - Jos koodin on tarve siivota jälkiään virheen sattumisen ja lopettamisen välillä. Tällöinkin on suositeltavampaa käyttää try-finally-rakennetta. Lisäksi on hyvä käytännön mukaista sisällyttää try-osioon ainoastaan se osa koodista, joka voi aiheuttaa virheen jolle except-osiossa on määritelty käsittelijä. Jos palautamme jotain, voimme toteuttaa sen else-osiolla. Oikein: Väärin: try: value = collection[key] except KeyError: return key_not_found(key) else: return handle_value(value) try: value = collection[key] return handle_value(collection[key]) except KeyError: # Ottaisi kiinni myös handle_value-funktion KeyErrorin return key_not_found(key) 11

13 Loogisista väittämistä ja arvojen testauksesta Käytä merkkijonojen kanssa aina valmiita muokkausmetodeja. Älä kutsu käsin string-moduulia. Ainoan poikkeuksen tähän tekee koodit, joissa tarvitaan yhteensopivuutta aiempien (Python 2.0 vanhempien) tulkin versioiden kanssa. Merkkijonon alku- ja loppupään arvojen testauksessa tulisi käyttää ennemmin.startswith() ja.endswith() metodeja kuin leikkausten vertailua. Tämä parantaa koodin luettavuutta ja on vähemmän virheherkkä tapa ilmaista sama asia. Oikein: if foo.startswith('bar'): Väärin: if foo[:3] == 'bar': Objektien tyyppien vertailussa tulisi käyttää isinstance()-funktiota suoran vertailun sijaan. Oikein: if isinstance(obj, int): Väärin: if type(obj) is type(1): Jos koodissasi käytetään Unicode-merkkijonoja, joudut tekemään testin seuraavalla tavalla jotta saat oikean vastauksen riippumatta siitä, onko kyseessä normaali- vai unicode-merkkijono: if isinstance(obj, basestring): Sarjallisten muuttujien (merkkijonot, listat, tuplet) testauksessa tulisi hyödyntää sitä tosiseikkaa, että tyhjä sarjallinen muuttuja palauttaa arvon False Oikein: if not seq: if seq: Väärin: if len(seq) if not len(seq) Älä käytä merkkijonojen lopussa välilyöntejä merkkijonon pituuden säännöstelyyn. Kyseinen merkintätapa on visuaalisesti näkymätön eikä sen olemassaoloa huomaa ellei siitä tiedä. Lisäksi jotkin editointiohjelmat poistaa lopusta välilyöntejä sotkien käyttämäsi menetelmän. Älä vertaile Boolean-arvoja käyttäen yhtäsuuruusoperaattoria. Oikein: if greeting: Väärin: if greeting == True: Väärin: if greeting is True: Kun olet tottunut if- ja while-rakenteen kanssa työskentelyyn, olisi hyvä lopettaa Boolean-arvojen toistaminen koodissa. 12

14 Muista tyyliseikoista Lisäsivut Kuten mainittu, on Pythonin ajatus olla nimenomaisesti ohjelmointikieli, jonka lähdekoodia on helppoa tulkita ja ymmärtää. Noudata aina yhdenmukaista ja selkeää esitystapaa. Jos tulet tilanteeseen, johon näissä ohjeissa ei otettu kantaa, on sinun hyvä hetken aikaa miettiä Pythonohjelmoinnin zeniläistä ajatusta, joka on Tim Petersin [1] kehittelemä: The Zen of Python Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those! Näitä mietelauseita kannattaa ajatella kun suunnittelet omaa ohjelmointityyliäsi. Nämä mietelauseet löytyvät myös Python-tulkistasi; kirjoita tulkin interaktiiviseen ikkunaan import this ja kokeile itse. Tärkeintä onkin, että koodaatpa miten tahansa, niin huolehdi että olet johdonmukainen, kommentoit koodisi hyvin ja noudatat itsestäsi luontevimmalta tuntuvaa tapaa. [1] Peters, Tim (2004) Python Enhancement Proposal 20: The Zen of Python. Saatavilla osoitteesta Copyright Kannen kuva: Nila Gurusinghe. Kuva julkaistu Creative Commons - Nimi mainittava lisenssillä. Tähän asiakirjaan sovelletaan Creative Commonsin Vapaa Yleinen Käyttö (Public Domain) lisenssiä. Lappeenrannan teknillinen yliopisto

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

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

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot

MITÄ JAVASCRIPT ON?...3

MITÄ JAVASCRIPT ON?...3 JavaScript MITÄ JAVASCRIPT ON?...3 YLEISTÄ JAVASCRIPTIN SYNTAKSISTA...3 KÄSKYSANAT JA MUUT VARATUT SANAT...3 MUUTTUJIEN, FUNKTIOIDEN JA LUOKKIEN NIMISSÄ...3 HTML-TAGEIHIN VIITTAAVISSA METODINIMISSÄ...3

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 14.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 14.2.2011 1 / 55 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut.

Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut. T-76.115 Tietojenkäsittelyopin ohjelmatyö Sisältö Tässä dokumentissa kuvataan Keimo-projektissa sovellettavia ohjelmointikäytäntöjä. Päivämäärä 10.11.2002 Projektiryhmä Keimo keimo-dev@list.hut.fi Kirjoittajat

Lisätiedot

Merkkijonon tutkiminen matches-metodilla

Merkkijonon tutkiminen matches-metodilla Merkkijonon tutkiminen matches-metodilla String-luokkaan on määritelty seuraava metodi: public boolean matches(string regular_expression) Mihin käytetään String-luokan metodia public boolean matches(string

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 11.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 11.2.2009 1 / 33 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015

Ohjelmoinnin perusteet Pythonilla. Teemu Sirkiä, 2015 Ohjelmoinnin perusteet Pythonilla Teemu Sirkiä, 2015 Päivitetty 16.9.2015 Yleistä Materiaali sisältää lähinnä Aalto-yliopiston Ohjelmoinnin peruskurssi Y1:n harjoitustehtävissä tarvittavia keskeisiä asioita

Lisätiedot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015

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

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

ASCII-taidetta. Intro: Python

ASCII-taidetta. Intro: Python Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.

Lisätiedot

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

Lisätiedot

OHJELMOINNIN TYYLISÄÄNTÖJÄ

OHJELMOINNIN TYYLISÄÄNTÖJÄ Ohjelmoinnin tyylisääntöjä Sivu 1 OHJELMOINNIN TYYLISÄÄNTÖJÄ www.naturalprogramming.com Ohjelmointityylillä tarkoitetaan sääntöjä lähdekielisten ohjelmien kirjoittamiseen. Kääntäjähän hyväksyy varsin monella

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen

Lisätiedot

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

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2009 1 / 33 Valintakäsky if syote = raw_input("kerro tenttipisteesi.\n") pisteet = int(syote) if pisteet >=

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

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

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Luku 3. Listankäsittelyä. 3.1 Listat

Luku 3. Listankäsittelyä. 3.1 Listat Luku 3 Listankäsittelyä Funktio-ohjelmoinnin tärkein yksittäinen tietorakenne on lista. Listankäsittely on paitsi käytännöllisesti oleellinen aihe, se myös valaisee funktio-ohjelmoinnin ideaa. 3.1 Listat

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 12.10.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 12.10.2015 1 / 32 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta

Lisätiedot

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. JUnit-ympäristö 1. Luo tests -pakkaukseen uusi luokka. Nimeä VHTestit. 2. Laita VHTestit periytymään TestCase:sta

Lisätiedot

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset 815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

VeRan laboratoriotietojen siirtoformaatti

VeRan laboratoriotietojen siirtoformaatti FCG Finnish Consulting Group Oy VERA TOIMINTAOHJEET Rev./pvm 1.03 Hyväksytty 30.4.2010 Sisältö Käyttö Vastuuhenkilö VeRan tiedonsiirtoformaatti Laboratoriot, jotka toimittavat tulokset suoraan VeRaan.

Lisätiedot

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Kääntäjän virheilmoituksia

Kääntäjän virheilmoituksia OHJ-1101 Ohjelmointi 1e 2008-09 1 Kääntäjän virheilmoituksia Kun progvh2 ohjelma käännetään antaa tutg++ seuraavat virheilmoitukset ja varoitukset: proffa> tutg++ progvh2.cc progvh2.cc:29:13: warning:

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt

Lisätiedot

Tentti: T-106.1210 Ohjelmoinnin peruskurssi, osa 1. Yleistä. Tehtävä 1

Tentti: T-106.1210 Ohjelmoinnin peruskurssi, osa 1. Yleistä. Tehtävä 1 ./ Tentti: T-106.1210 Ohjelmoinnin peruskurssi, osa 1 Tenttipäivä: 13.12. 2011 El APUVÄLINEITÄ Yleistä Tentissä on kaksi tehtävää. Ensimmäinen tehtävä on tärkeämpi: sillä pyritään varmistamaan, että jokaisella

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

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

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 6 Kerta 7. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 6 Kerta 7 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0

Lisätiedot

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014 Racket ohjelmointia osa 2 Tiina Partanen Lielahden koulu 2014 Sisältö 1) Funktiot ja muuttujat (kertaus) 2) Animaatiot & pelit (big-bang) 3) Vertailuoperaattorit sekä boolean arvot 4) Tietorakenteet (struct)

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 24.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 24.1.2011 1 / 36 Luentopalaute kännykällä alkaa tänään! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä

Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä Hyvä Salis Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä salasana. Jokainen salasanaan lisäämäsi kirjain

Lisätiedot

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia HTML - sivun rakenne ja osiot HTML HEAD STYLE SCRIPT STYLEsheet Javascript file BODY Javascript

Lisätiedot

KAAVAT. Sisällysluettelo

KAAVAT. Sisällysluettelo Excel 2013 Kaavat Sisällysluettelo KAAVAT KAAVAT... 1 Kaavan tekeminen... 2 Kaavan tekeminen osoittamalla... 2 Kaavan kopioiminen... 3 Kaavan kirjoittaminen... 3 Summa-funktion lisääminen... 4 Suorat eli

Lisätiedot

Choose Finland-Helsinki Valitse Finland-Helsinki

Choose Finland-Helsinki Valitse Finland-Helsinki Write down the Temporary Application ID. If you do not manage to complete the form you can continue where you stopped with this ID no. Muista Temporary Application ID. Jos et onnistu täyttää lomake loppuun

Lisätiedot

12.10.2011. Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle

12.10.2011. Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle (Ei yhtään videota tällä kertaa.) X niin kuin Cross-Platform, Apache, MySql, PHP, Perl Kehitysympäristö EI tuotantokäyttöön Monet tärkeät tietoturva-asetukset ovat oletuksena pois päältä Erittäin nopea

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."

Lisätiedot

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: 3. Pseudokoodi 3.1 Sisällys Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if-else-rakenteilla. Toisto while-, do-while- ja for-rakenteilla.

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

Rakenteisen ohjelmoinnin harjoitustyö

Rakenteisen ohjelmoinnin harjoitustyö Tehtävä 2005/33 Puppugeneraattorissa lauseet on jaettu neljään osaan ja niistä taulukoidaan kymmenen lauseen aloitusta (esim. On huomattava, että, Kuitenkin, Tämän vuoksi), kymmenen tekijäosaa (esim. opintojen

Lisätiedot

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016)

Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Harjoitus 3: Flash-komponenttiarkkitehtuuri (18.3.2016) Tietokoneavusteinen opetus -kurssilla opetetaan Adobe Flash CS6:n käyttämistä neljänä kertana: 11.3.2016, 15.3.2016, 18.3.2016 ja 1.4.2016. Harjoituskerroilla

Lisätiedot

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002 JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 1 Matemaattisesta päättelystä Matemaattisen analyysin kurssin (kuten minkä tahansa matematiikan kurssin) seuraamista helpottaa huomattavasti, jos opiskelija ymmärtää

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

C# Windows ohjelmointi perusopas

C# Windows ohjelmointi perusopas Paavo Räisänen C# Windows ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa

Lisätiedot

Operaattorin ylikuormitus ja käyttäjän muunnokset

Operaattorin ylikuormitus ja käyttäjän muunnokset 13 Operaattorin ylikuormitus ja käyttäjän muunnokset Luvussa 7, "Ominaisuudet, taulukot ja indeksoijat," opit, miten luokan yhteydessä käytetään ohjelmallisesti []-operaattoria, jolloin objektia voidaan

Lisätiedot

Tekstin etsiminen ja korvaaminen

Tekstin etsiminen ja korvaaminen KSAO Liiketalous 1 Tekstin etsiminen ja korvaaminen Etsi ja korvaa toiminnolla voit etsiä ja korvata nopeasti asiakirjan osia esimerkiksi tekstiä, grafiikkaa, alaviitteitä, jne. Voit esimerkiksi: etsiä

Lisätiedot

Alkuun HTML5 peliohjelmoinnissa

Alkuun HTML5 peliohjelmoinnissa Paavo Räisänen Alkuun HTML5 peliohjelmoinnissa www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida ja levittää ei kaupallisissa tarkoituksissa. Sisällysluettelo 1: Alkusanat 2: Alkuun 3: Pelinäkymä

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 16.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 16.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmointityö 65 Tekstinmuotoilu ohjelma. Dokumentaatio. Aki Heikkinen (155394)

Ohjelmointityö 65 Tekstinmuotoilu ohjelma. Dokumentaatio. Aki Heikkinen (155394) Ohjelmointityö 65 Tekstinmuotoilu ohjelma Dokumentaatio Aki Heikkinen (155394) 15.6.2007 Sisällysluettelo 1. Tehtävän määrittely ja ratkaisuperiaate... 1 1.1. Tehtävän määrittely... 1 1.2. Ratkaisuperiaate...

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

Verkkokirjoittaminen. Verkkolukeminen

Verkkokirjoittaminen. Verkkolukeminen 0 Nopeaa silmäilyä: Pääotsikot, kuvat, kuvatekstit, väliotsikot, linkit, luettelot, korostukset. 0 Hitaampaa kuin paperilla olevan tekstin lukeminen 0 F-tyyppinen lukeminen Verkkolukeminen Verkkokirjoittaminen

Lisätiedot

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

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

Lisätiedot

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus? Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. PHP-kielen perusteet Käytä lähteenä PHP:n virallista manuaalia http://www.php.net/docs.php tai http://www.hudzilla.org/php (siirry Paul Hudsonin verkkokirjaan). Lisää materiaalia suomeksi esimerkiksi ohjelmointiputkan

Lisätiedot