Toteutusdokumentti. FuBot

Koko: px
Aloita esitys sivulta:

Download "Toteutusdokumentti. FuBot"

Transkriptio

1 Toteutusdokumentti FuBot Tuomo Tilli Tommi Sankola Robottiohjelmoinnin harjoitustyö Helsingin yliopisto, Tietojenkäsittelytieteen laitos

2 Sisällysluettelo 1. Johdanto Käyttöohje Ohjelman toiminta ja rakenne Testauksen kuvaus Oppimistavoitteet...4 Ohjelmoinnin perusteet...4 Ohjelmoinnin jatkokurssi...6 Muut kurssit Jälkipuhe...8 LIITE Rakennusohjeet...9

3 1. Johdanto Harjoitustyönä rakensimme Lego Mindstorms NXT -robotin, jonka tarkoituksena on etsiä pöydältä punainen pallo ja kuljettaa se maalialueelle. Robotti käyttää valosensoria pöydän reunojen, pallon ja maalialueen tunnistamiseen. Robotti osaa pysähtyä pöydän reunalle ja laskea minkä suuntainen pöydän reuna on. Näin ollen, robotti osaa kääntyä oikeaan suuntaan pöydän reunalle tullessaan. Robotti tietää myös oman sijaintinsa xy-koordinaatistossa, kun origo on robotin lähtöpaikka. Jos robotti löytää maalialueen ennen pallon löytymistä, tallentaa robotti maalialueen paikan, jotta se voi pallon löydettyään viedä pallon suoraan maalialueelle. Robotin runko on rakennettu Castor Bot -mallia soveltamalla. Robottiohjelma on ohjelmoitu Javaohjelmointikielellä. 2. Käyttöohje Jotta ohjelman voi kääntää, täytyy koneessa olla asennettuna Java SE development KIT, jonka saa Javan sivuilta osoitteesta Lisäksi täytyy koneessa olla asennettuna LeJOS, jonka saa osoitteesta Ohjelman käyttäjällä täytyy tietysti olla myös Lego Mindstorms NXT -robotti, jolla itse ohjelman suoritus tapahtuu. Katso robotin rakennusohjeet liitteestä 1. Kun Java SE development KIT ja LeJOS on asennettu, täytyy NXT:n firmware päivittää. Tämä tapahtuu kytkemällä NXT USB -kaapelilla koneeseen ja suorittamalla komento nxjflash. Itse ohjelman kääntäminen tapahtuu komennolla nxjc (esim. nxjc Fubot.java). Käännetyn ohjelman lataaminen NXT:lle tapahtuu komennolla nxj (esim. nxj Fubot). NXT:n täytyy olla päällä tässä vaiheessa. Nyt ohjelma on ladattu NXT:lle ja se voidaan suorittaa etsimällä ohjelma NXT:n valikosta. Ohjelman suoritus voidaan pysäyttää painamalla ESCAPE -nappia. Ohjelman käyttäminen on todella helppoa. Ohjelman käyttämistä varten tarvitaan nelikulmainen pöytä, punainen pallo ja maalialueeksi valkoinen paperi. Pöydällä ei saa olla muita esineitä. Jotta ohjelma toimisi parhaiten, olisi valaistuksen hyvä olla melko tasainen pöydän päällä. Kun ohjelma käynnistyy, robotti mittaa ympäristön valoisuuden valosensorin avulla. Tämän arvon avulla robotti tunnistaa pöydän reunan, maalialueen ja pallon. Ohjelman käynnistyttyä, käyttäjän ei tarvitse tehdä mitään. Ohjelman suoritus päättyy, kun robotti on löytänyt pallon ja vienyt sen maalialueelle. Robotti ei tallenna paikkoja, joissa se on käynyt, joten on mahdollista, että robotti tutkii aina samaa kohtaa pöydästä eikä se löydä palloa tai maalialuetta ikinä. Tämä on kuitenkin epätodennäköistä. Pöydän koolla ei ole muuten väliä, mutta kohteiden löytämisessä voi kestää kauemmin isolla pöydällä kuin pienellä pöydällä. Pöydän on hyvä olla nelikulmio, jossa kulmat ovat 90 astetta. 3. Ohjelman toiminta ja rakenne FuBotilla on erilaisia käytösmalleja, joita se noudattaa. Näistä käytösmalleista yksi on aina kulloinkin voimassa, ja niiden käynnistyminen edellyttää esiehtojen täyttymistä. Lisäksi käytösmalleilla on oma hierarkiansa, joka ratkaisee tilanteet, joissa useamman käytösmallin esiehdot toteutuvat. Näitä käytösmalleja on FuBotilla neljä: Seek, Locate, LocateEdge ja LocateGoal. Robotin sijaintia ja suuntaa pidetään yllä lejosin Pilot-luokan navigaatiometodien avulla. Lisäksi ympäristöä kartoitetaan siten, että pöydän reunat tallennetaan taulukkoon.

4 Robottiohjelma on suunniteltu nelikulmaisia pöytiä varten, mutta siihen on periaatteessa helppo lisätä tuki monimutkaisemmille pöydille. Tällöin pitää toteuttaa pöydän kulmien tunnistaminen. Robotin tilaa pidetään yllä Fubot-luokan staattisissa kentissä. 3.1 Käytösmallit Seek on oletuskäytösmalli. Tällöin robotti tekee yksinkertaista etsintäliikettä, eli se tekee käännöksiä oikealle ja vasemmalle siten, että ulompaa rengasta käännetään eteenpäin ja sisempää rengasta taaksepäin. Käännöksen parametreissä on optimoitavaa, mutta alustavissa testeissä tällä metodilla todettiin saatavan katettua riittävän laaja alue. Jos sekä maalialue että pallo on löytynyt, ajetaan suoraan maalialueen xy-koordinaatteihin. Jos maalialue ei tältä kohtaa löydy, jatketaan tavanomaista etsimistä. Locate käynnistyy silloin, kun robotti havaitsee valosensorillaan punaisen pallon. Tällöin robotti ajaa eteenpäin pallon luo ja sulkee kyntensä lukiten pallon säilöönsä. LocateGoal käynnistyy silloin, kun maalialue löydetään. Jos robotilla on tällöin pallo mukanaan, se avaa kyntensä ja lopettaa ohjelmansa. Muussa tapauksessa maalialueen xy-koordinaatit merkataan muistiin, ja jatketaan pallon hakemista. LocateEdge käynnistyy silloin, kun robotti kohtaa pöydän reunan. Kun näin käy, tarkistetaan, onko löydetty reunan pistekoordinaatti riittävän lähellä jonkin jo löydetyn reunan suoraa. Jos se sopii, piste lisätään kyseisen reunan pistejoukkoon. Jos piste ei sovi millekään suoralle, ja kaikkia neljää reunaa ei ole löydetty, käännytään niin kauan, kunnes kohdataan pöydän reuna uudestaan, ja otetaan tämä piste ylös. Näiden kahden pisteen avulla lasketaan reunan suoran yhtälö. Nyt tutkitaan suoran avulla uudestaan, josko reunan voisi tunnistaa joksikin jo löydetyksi reunaksi. Jos suora on riittävän yhdenmukainen jonkin muun reunan suoran kanssa, sen laskemiseen käytetyt pisteet lisätään reunan suoran pistejoukkoon. Muussa tapauksessa, jos kaikkia neljää reunaa ei ole vielä löydetty, tehdään tästä suorasta uusi reuna. Jos kaikki reunat ovat löytyneet, eikä tämä suora sovi yhteenkään näistä, ei tehdä mitään. Lopuksi käännytään reunasta poispäin. Jos reuna saatiin tunnistettua, käännytään reunan suuntaisesti. Muuten yksinkertaisesti käännytään 80 astetta pöydän keskelle päin. 4. Testauksen kuvaus Ohjelman testaus tapahtui ohjelmoinnin lomassa tulostamalla NXT:n näyttöön erilaisia tietoja kuten robotin x- ja y-koordinaatit, robotin kulma x-akseliin nähden, valosensorin antama arvo, robotin viimeksi kääntymä kulma, liikuttu matka, viimeksi liikuttu matka, robotin löytämien pöydän reunojen kulmakertoimet ja vakiot. Näiden arvojen avulla pystyttiin näkemään liikkuuko robotti pöydällä oikein. Näyttöön tulostettujen arvojen perusteella pystyttiin päättelemään, että robotin paikassa tulee kokoajan pientä virhettä. Virhe johtuu siitä, että moottorit eivät pyöri aina juuri haluttua määrää, vaan pyörimisessä tulee jonkin verran heittoa. Tätä heittoa ei pystytty korjaamaan. Toinen kohta missä tuli vielä isompia virheitä oli pöydän reunojen laskeminen. Pöydän reunojen yhtälöt lasketaan kahden (tai useamman) pisteen avulla. Nämä pisteet määritetään valosensorin avulla, mutta valosensori ei ole niin tarkka, että jokainen piste olisi juuri pöydän reunalla, vaan toinen piste saattoi olla enemmän pöydällä kuin toinen. Tästä johtuen pöydän reunojen yhtälöissä

5 saattoi olla suuriakin virheitä. Näin ollen emme oikein voineet käyttää näitä tietoja hyväksi niin hyvin kuin olisimme halunneet. 5. Oppimistavoitteet Harjoitustyössä ohjelmoinnin peruskursseilta opituista taidoista ja java-osaamisesta oli hyötyä, vaikkei ohjelmassa olekaan monimutkaisia, rekursiivisia algoritmeja tai tietorakenteita. Lisäksi ohjelmoitaessa tuli hyödynnettyä vähän rinnakkaisohjelmointi- ja ohjelmointitekniikka(java)kursseilta tuttuja, säikeisiin ja mutexiin liittyviä tekniikoita. Ohjelmoinnin perusteet Seuraavia Ohjelmoinnin perusteet -kurssin oppimistavoitteiden mukaisia taitoja tarvittiin harjoitustyössä. Pääteema Algoritmit ja ohjausrakenteet Lähestyy oppmistavoitteita Saavuttaa oppimistavoitteet Syventää oppmistavoitteita Muutujat ja tyypit Tuntee ja osaa selittää ohjelmointikielen, kääntämisen ja tulkitsemisen idean. Osaa selittää sijoitusoperaationm erkityksen ja algoritmin suorituksen etenemisen ajassa. Osaa simuloida yksinkertaisia algoritmeja. Oivaltaa muuttujan tyypin ja arvon idean. Osaa laatia yksinkertaisia algoritmeja. Osaa selittää käsitteen "algoritmin tila". Tajuaa miten loogiset lausekkeet ovat väittämiä algoritmin tilasta. Osaa laatia logiikaltaan ja ulkoasul-taan tyylikkäitä ohjelmia Osaa käyttää muuttujia ja kirjoittaa lausekkeita, joiden tyyppi on int, double, boolean ja String. Tuntee alkeistyypin ja viittaustyypin eron. Tuntee sijoitusyhteensopivuuden merkityksen ohjelmoinnissa. Tajuaa muodollisten parametrien ja paikallisten muuttujien Tuntee hieman tyypityksenhi storiaa ja osaa arvioida erilaisten ratkaisujen seurauksia.

6 Aliohjelmat Oivaltaa algoritmin nimeämisen ja kutsumisen periaatteen. Luokat oliot ja kapselointi Hahmottaa luokkamäärittelyn olion piirustuksina, joista voidaan luoda erillisiä olioita. käyttäytymisen Osaa käyttää luokkia muuttujien tyyppeinä. Osaa indeksoiden viitata dynaamisesti taulukkomuuttujan komponentteihin. Osaa määritellä ja kutsua aliohjelmia, Javan metodeita. Osaa selittää ja käyttää muodollisia ja todellisia parametreja. Tuntee millä tavoin metodi arvoparametrivälityksestä huolimatta voi muuttaa parametrin arvoa, mikäli parametrin tyyppi (luokka) sen sallii. Tuntee metodien kuormittamisen tekniikan ja osaa myös käytännössä laatia kuormitettuja metodeita ja konstruktoreita. Tietää, että Javan arvoparametri välitys on vain yksi vaihtoehto parametrivälit ykselle: on olemassa esimerkiksi kieliä, joissa käytetään viiteparametr eja. Osaa määritellä yksityisiä ilmentymämuuttujia ja ohjelmoida aksessoreita. Tuntee käsitteen "olion tila". Tietää millainen elinkaari olioilla on ja miten se eroaa metodin paikallisten muuttujien elinkaaresta. Osaa välittää olioita parametreina. Tuntee automaattisen roskienkeruun merkityksen. Ymmärtää mitä seurauksia automaattisell a roskienkeruulla on Javakielen sovellettavuuteen ja mihin Java tästä syystä on hyvä, mihin kerta kaikkiaan sopimaton.

7 Ohjelmoinnin jatkokurssi Pääteema Luokkamäärittelyn tekniikat Lähestyy oppmistavoitteita Tietää että "static" liittyy luokkaan, "eistatic" ilmentymään. Saavuttaa oppimistavoitteet Periytyminen Alkaa tajuta, miten aliluokka perii yliluokan ominaisuudet, kentät ja metodit. Hahmottaa Objectluokasta alkavan luokkien puumaisen periytymishierar kian. Virhetilanteiden käsittely Tietää, että virheet pitää jotenkin hoidella. Hahmottaa poikkeusten käsittelyn vaikutuksen ohjelman Osaa käyttää ohjelmoinnissa luokka- ja ilmentymämuuttujia sekä luokka- ja ilmentymämetodeita. Tuntee näkyvyyden säätelyn mahdollisuudet ja ongelmat: yksityinen kalusto, pakkaustason kalusto, näkyminen aliluokkaan, julkinen kalusto. Ymmärtää yliluokkaaliluokkasuhteen ja osaa myös ohjelmoida aliluokkia. Tuntee ja osaa ohjelmoinnissa ottaa huomioon sen, että konstruktorit eivät periydy ja sen mitä tästä seuraa. Osaa käyttää ohjelmoinnissa ilmauksia this, super, this() ja super(). Tietää millaisia lisäyksiä periytyminen tuo näkyvyyssääntöihin. Tuntee erilaisia tapoja käsitellä virhetilanteita. Tuntee tarkistettujen ja tarkistamattomien poikkeusten periaatteen ja osaa Syventää oppmistavoitteita Osaa jäsennellä ohjelman arkkiteh-tuuria luokka- ja oliotason tekniikoilla ja erilaisilla näkyvyyk-sillä.

8 suoritukseen. Ohjelmointitekniikka Oivaltaa tyyppimuunnoks en tarpeen. Osaa luonnehtia, mitä rekursio on. laatia ohjelmia, joissa poikkeuksia käsitellään Exceptiontasolla Tuntee alkeistyypit ja niiden väliset sijoitusyhteensopivuussäännöt sekä myös eksplisiittisen tyyppimuunnoksen laveammasta alkeistyypistä suppeampaan. Osaa selittää yksinkertaisen rekursiivisen metodin toiminnan. Tuntee pakkausten periaatteen. Osaa lähdemateriaalia käyttäen laatia ohjelmia, jotka lukevat ja kirjoittavat tekstitiedostoja. Tuntee erilaisia ohjelman toimintaperiaatteita: tietoja kyselevä ohjelma, komentotulkki, suodatin, tapahtumaohjattu ohjelma. Osaa myös ohjelmoida kolmella ensin mainitulla tyylillä. Osaa laatia rekursiivisia metodeita. Ymmärtää miksi rekursiivinen metodi Fibonaccin lukujen laskentaan on aikavaativuudeltaan eksponentiaalinen, binäärihaku logaritminen ja aavistelee ymmärtävänsä, miksi pikajärjestäminen on keskimääräisessä tapauksessa O(n*log n). Osaa ohjelmoida omia geneerisiä luokkia. Muut kurssit Matematiikkaa tarvittiin jonkin verran. Trigonometrisia funktioita käytettiin pöydän reunojen laskemisessa sekä robotin sijainnin laskemisessa. 6. Jälkipuhe Alunperin olimme tekemässä sellaista robottia, joka olisi etsinyt pallon ultraäänisensorin ja valosensorin avulla. Huomasimme kuitenkin, että ultraäänisensori ei oikein havaitse palloa. Havaitsimme myös valosensorissa puuteita. Kohteen täytyy olla hyvin lähellä valosensoria, jotta

9 sensori havaitisisi tarpeeksi ison eron kohteen värissä. Sensorien heikko taso johti siihen, että meidän täytyi miettiä robotin rakenne ja toiminta uudestaan. Myös robotin moottorit toimivat välillä täysin satunnaisesti, emmekä kyenneet selvittämään sen syytä. Myös lejosin bugit aiheuttivat päänvaivaa. Ohjelma saattoi kaatua muistin loppumiseen yksinkertaisessa neliön laskemisessa, mikä kierrettiin kertolaskun aukikirjoittamisella. Virheiden löytäminen oli myös vaikeampaa, sillä lejosin poikkeusten selvittäminen ja kaatumisista palautuminen on työlästä. Robottiohjelmointi tarjoaa perinteisiin harjoitustyöihin verrattuna erilaisia haasteita siinä, että ohjelmointiympäristön tarjoamat työkalut ovat keskeneräisiä ja jokseenkin vajaita. Lisähaastetta tulee siitä, että robotin moottorit ja sensorit ovat epätäydellisiä. Tämä vastannee joissakin tilanteissa paremmin ohjelmoijan tosiasiallisia haasteita kuin perinteinen harjoitustyö. Aloittelevalle ohjelmoijalle robottiohjelmointia emme kuitenkaan varauksetta suosittele, sillä ohjelmointiongelmien sijaan paljon aikaa menee toissijaisten ongelmien kanssa painimiseen, mikä voi ehkä vaikeuttaa hyvätyylisen ohjelmointitavan oppimista.

10 LIITE 1 Rakennusohjeet Robotti on rakennettu vain paketissa olevia osia käyttämällä.castor Botin rakennusohjeet ovat sivulla Tässä robotti sivusta. Kuvasta näkee miten keskusyksikkö on kiinnitetty moottoreihin.

11

12

13

14 Kuva robotin pohjasta. Kuvassa näkyy kaksi tukipalkkia robotin pohjassa.

15 Kuva peräosasta.

16 Toinen kuva perästä. Pallo pysyy paikallaan robotin painon ansiosta. Valkoinen palkki ylhäällä on sinänsä turha, mutta siihen voi esimerkiksi sitoa johtoja.

17 Kuvassa näkyy miten leuat on toteutettu. Ylhäällä oleva iso ratas on muuten turha, mutta siitä voi kädellä pyörittää moottoria.

18 Kuva robotin etuosasta alhaaltapäin. V:n muotoisen osan on tarkoitus pitää palloa paikallaan.

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance)

Sisällys. JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys. Luokkahierarkia. Periytyminen (inheritance) Sisällys JAVA-OHJELMOINTI Osa 6: Periytyminen ja näkyvyys Periytyminen (inheritance) Näkyvyys (visibility) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E. Hyvönen: Java Osa

Lisätiedot

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009

Antitammirobotti. Antti Meriläinen Martin Pärtel 29. toukokuuta 2009 Antitammirobotti Antti Meriläinen Martin Pärtel 29. toukokuuta 2009 Helsingin yliopisto Tietojenkäsittelytieteen laitos Robottiohjelmoinnin harjoitustyö

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

TIEA343 - Robottiohjelmointi 2011

TIEA343 - Robottiohjelmointi 2011 Samuli Rahkonen 6.7.2011 TIEA343 - Robottiohjelmointi 2011 Tämä on Jyväskylän yliopistossa järjestetyn robottiohjelmointikurssin harjoitustyön dokumentaatio. Robotin tarkoitus Robotin tarkoitus on ampua

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS ROBOTIIKKA TEKOÄLYN GRAND CHALLENGE YHDISTÄÄ LÄHES KAIKKI TEKOÄLYN OSA-ALUEET: ROBOTIIKKA TEKOÄLYN GRAND CHALLENGE YHDISTÄÄ LÄHES KAIKKI TEKOÄLYN OSA-ALUEET: AKTUAATTORIT:

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

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi olioperustainen sokkeloseikkailu peli Javakielellä. Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen

Lisätiedot

Hakemistojen sisällöt säilötään linkitetyille listalle.

Hakemistojen sisällöt säilötään linkitetyille listalle. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä komentoikkunaa (komentotulkkia, komentoriviä) simuloiva olioperustainen ohjelma. Hakemistojen sisällöt säilötään linkitetyille listalle. Työ

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

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

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

Lisätiedot

lejos-asennusohje Robottiohjelmoinnin harjoitustyö Kevät 2011

lejos-asennusohje Robottiohjelmoinnin harjoitustyö Kevät 2011 lejos-asennusohje Robottiohjelmoinnin harjoitustyö Kevät 2011 28.01.11 1 Vaiheet Asennetaan tarvittavat ohjelmat Kaikilla järjestelmillä JDK 1.5 tai uudempi (ja esim. Eclipse) Ubuntu/Debian: (mikäli ei

Lisätiedot

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015)

58131 Tietorakenteet ja algoritmit (syksy 2015) 58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

HiTechnic -kompassisensorin käyttäminen NXT-G -ympäristössä

HiTechnic -kompassisensorin käyttäminen NXT-G -ympäristössä NXT -kompassisensori NXT -roboteihin on saatavilla kahdenlaisia kompasseja: Wiltronics kompassit (tilaukset: http://www.wiltronics.com.au/) ja HiTechnic kompassit (NMC1034 Compass) (tilaukset: http://www.hitechnic.com/products).

Lisätiedot

JOHDATUS TEKOÄLYYN TEEMU ROOS

JOHDATUS TEKOÄLYYN TEEMU ROOS JOHDATUS TEKOÄLYYN TEEMU ROOS ROBOTIIKKA TEKOÄLYN GRAND CHALLENGE YHDISTÄÄ LÄHES KAIKKI TEKOÄLYN OSA-ALUEET: ROBOTIIKKA TEKOÄLYN GRAND CHALLENGE YHDISTÄÄ LÄHES KAIKKI TEKOÄLYN OSA-ALUEET: AIVOT : + KONENÄKÖ

Lisätiedot

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

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

Lego Mindstorms NXT robottien etenemissuunnitelma

Lego Mindstorms NXT robottien etenemissuunnitelma Lego Mindstorms NXT robottien etenemissuunnitelma Ohjelmointi on yleisesti koettu luokanopettajien keskuudessa erääksi merkittävimmiksi uudistuksiksi, joita OPS 2016 tarjoaa. Tässä oppaassa on meidän koulumme

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1 12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys

Lisätiedot

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

NXT Infrapuna-sensori

NXT Infrapuna-sensori NXT Infrapuna-sensori Joissakin tilanteissa on hyödyllistä, jos robotti tunnistaa ympäristöstä tulevaa infrapunavaloa. Tämä tieto on välttämätön esim. RCJ:n robottijalkapallossa. Tässä esitellään vain

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

11/20: Konepelti auki

11/20: Konepelti auki Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon

Lisätiedot

SUMO-ROBOTTI. Tehtävä

SUMO-ROBOTTI. Tehtävä SUMO-ROBOTTI Tehtävä Rakentaa ja ohjelmoida Lego Mindstorms NXT-sarjalla yksinkertainen Sumorobotti. Robotti ohjelmoidaan liikkumaan autonomisesti (ilman ohjausta) ja tunnistamaan mustan ottelualustan

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia

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

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

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

Test-Driven Development

Test-Driven Development Test-Driven Development Ohjelmistotuotanto syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java) Tavoite Opiskelija ymmärtää olio-ohjelmoinnin problematiikan. Opiskelija osaa määritellä ja käyttää itse

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

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

5/20: Algoritmirakenteita III

5/20: Algoritmirakenteita III Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

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

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen.

Linkitetystä listasta perittyä omaa listaa käytetään muun muassa viestiin liittyvien vastausten säilömiseen. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi Java-kielellä keskustelualuetta simuloiva olioperustainen ohjelma (Simple Oope Board, S.O.B). Linkitetystä listasta perittyä omaa listaa käytetään muun muassa

Lisätiedot

Tietorakenteet (syksy 2013)

Tietorakenteet (syksy 2013) Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten

Lisätiedot

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö

Kon Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö Kon-15.4199 Konepajojen tuotannonohjaus: ILOG CPLEX Studion käyttö 22.1.2016 Harjoituksessa 1. Varmistetaan että kaikilla on pari! Ilmoittautukaa oodissa etukäteen! 2. Tutustutaan ensimmäiseen tehtävään

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

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined Ohjelmointitekniikka Tyyppiturvallisuuden tavoittelua Javascriptissa muuttujat ovat tyypittömiä, mutta arvoilla on tyyppi. Muuttuja esitellään var -avainsanalla ja muuttujan tyypin arvoa ei erikseen määritellä.

Lisätiedot

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

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

Lisätiedot

OHJELMOINTIA MONIPUOLISESTI MATEMATIIKAN OPETUKSESSA LUMA-PÄIVÄT, TAMPERE

OHJELMOINTIA MONIPUOLISESTI MATEMATIIKAN OPETUKSESSA LUMA-PÄIVÄT, TAMPERE OHJELMOINTIA MONIPUOLISESTI MATEMATIIKAN OPETUKSESSA LUMA-PÄIVÄT, TAMPERE Tuomo Riekkinen Pyhäselän koulu, Joensuu MIKSI OHJELMOINTIA MATEMATIIKKAAN? Joensuun kaupunki päätti hankkia kaikille 7. luokkalaisille

Lisätiedot

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan

Lisätiedot

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1 12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Parametrinvälitys eräs monimuotoisuuden sovellus.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

Määrittelydokumentti

Määrittelydokumentti Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 6. Metodit 6.1 Sisällys Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2 Oliot viestivät metodeja kutsuen Olio-ohjelmoinnissa ohjelma

Lisätiedot

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa Aalto Yliopisto T-106.2001 Informaatioverkostot: Studio 1 Oliot ja luokat Javaohjelmoinnissa Vesa Laakso 22.9.2012 Sisällysluettelo Sisällysluettelo... 1 Johdanto... 2 1. Luokka... 2 2. Olio... 2 3. Luokan

Lisätiedot

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli Dart Ryhmä 38 Ville Tahvanainen Juha Häkli 1.LYHYESTI Dart on luokkapohjainen, yksiperintäinen, puhdas olio-ohjelmointikieli. Dart on dynaamisesti tyypitetty. Sovellukset on organisoitu modulaarisiksi

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

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

Lisätiedot

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

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 7 1 Useamman muuttujan funktion raja-arvo Palautetaan aluksi mieliin yhden muuttujan funktion g(x) raja-arvo g(x). x a Tämä raja-arvo kertoo, mitä arvoa funktio g(x)

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ JAVA alkeet JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++ ja Javascriptin kanssa. Huom! JAVA ja JavaScript eivät silti ole sama asia, eivätkä edes sukulaiskieliä.

Lisätiedot

S09 04 Kohteiden tunnistaminen 3D datasta

S09 04 Kohteiden tunnistaminen 3D datasta AS 0.3200 Automaatio ja systeemitekniikan projektityöt S09 04 Kohteiden tunnistaminen 3D datasta Loppuraportti 22.5.2009 Akseli Korhonen 1. Projektin esittely Projektin tavoitteena oli algoritmin kehittäminen

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Toinen harjoitustyö. ASCII-grafiikkaa 2017 Toinen harjoitustyö ASCII-grafiikkaa 2017 Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin

Lisätiedot

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3 15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet

Lisätiedot

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen

Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen Helsingin Yliopisto, tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi (syksy 2006) Liite 1. Projektin tulokset (Semaforit Javassa) Jukka Hyvärinen Aleksanteri Aaltonen a. Käyttötarkoitus ja sovellusalue

Lisätiedot

8/20: Luokat, oliot ja APIt

8/20: Luokat, oliot ja APIt Ohjelmointi 1 / syksy 2007 8/20: Luokat, oliot ja APIt Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Kohti

Lisätiedot

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

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

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot

Luokat ja oliot. Ville Sundberg

Luokat ja oliot. Ville Sundberg Luokat ja oliot Ville Sundberg 12.9.2007 Maailma on täynnä olioita Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi

Lisätiedot

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia. 4. Periytyminen 4.1. Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

BL40A1810 Mikroprosessorit, harjoitus 1

BL40A1810 Mikroprosessorit, harjoitus 1 BL40A1810 Mikroprosessorit, harjoitus 1 Käytettävä laitteisto Kurssin opetuslaitteistona käytetään Legon MINDSTORMS laitteita, jonka pääosia ovat ohjelmoitava NXT-yksikkö (Atmel ARM7, 64k RAM, 256k Flash),

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin

Lisätiedot

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T740103 Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 12. Periytyminen Johdantoa Käytännössä vähänkään laajemmissa ohjelmissa joudutaan laatimaan useita luokkia, joiden pitäisi pystyä välittämään tietoa toisilleen. Ohjelmien ylläpidon kannalta olisi lisäksi

Lisätiedot

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei. Harjoitustyö 1 Harjoitustyö Tehtävä: ohjelmoi lötköjen kansoittamaa alkulimaa simuloiva olioperustainen ohjelma Java-kielellä. Lötköt säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Lego Mindstorms NXT. OPH oppimisympäristöjen kehittämishanke 2011-2013. (C) 2012 Oppimiskeskus Innokas! All Rights Reserved 1

Lego Mindstorms NXT. OPH oppimisympäristöjen kehittämishanke 2011-2013. (C) 2012 Oppimiskeskus Innokas! All Rights Reserved 1 Lego Mindstorms NXT OPH oppimisympäristöjen kehittämishanke 2011-2013 (C) 2012 Oppimiskeskus Innokas! All Rights Reserved 1 Anturi- ja moottoriportit A B C 1 2 3 4 (C) 2012 Oppimiskeskus Innokas! All Rights

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

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

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

Lisätiedot

Äänellä vauhtia robottiin

Äänellä vauhtia robottiin Äänellä vauhtia robottiin Tehtävä Rakentaa ja ohjelmoida Lego Mindstorms NXT-sarjalla robotti, joka väistää esteitä ja kulkee sitä nopeampaa mitä kovempi ääni sen lähistöllä on. Robotti tunnistaa esteet

Lisätiedot

Eye Pal Solo. Käyttöohje

Eye Pal Solo. Käyttöohje Eye Pal Solo Käyttöohje 1 Eye Pal Solon käyttöönotto Eye Pal Solon pakkauksessa tulee kolme osaa: 1. Peruslaite, joka toimii varsinaisena lukijana ja jonka etureunassa on laitteen ohjainpainikkeet. 2.

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

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

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

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

Poikkeustenkäsittely

Poikkeustenkäsittely 1 Poikkeustenkäsittely Mitä poikkeustenkäsittely tarkoittaa? Poikkeuksen käsitteleminen Poikkeusluokkien hierarkia Poikkeuksen heittäminen 1 Mitä poikkeustenkäsittely tarkoittaa? Poikkeus (Exception) on

Lisätiedot