Tehtävä 3 Kuva, Deadline klo 18:00

Koko: px
Aloita esitys sivulta:

Download "Tehtävä 3 Kuva, Deadline klo 18:00"

Transkriptio

1 Tehtävä 3 Kuva, Deadline klo 18:00 Tässä tehtävässä tutustutaan kuvien muokkaamiseen, ulkoisten scala-kirjastojen käyttöön sekä verkkopalveluiden rajapintoihin. Tulet toteuttamaan ohjelman jolla voit muokata kuvia sekä bonustehtävänä julkaista niitä verkossa. Täydet pisteet voit siis saada tekemällä osatehtävät 1-4. Huomaa että bonustehtävä on perustehtäviä vaikeampi ja vaatii huomattavasti enemmän itsenäistä selvitystyötä. Ohjelmointi 1-kurssilta apua on tarjolla erityisesti luvuista: Luku 5.5: Silmukoita, vektoreita ja vaalit Luku 5.6: Taulukoita ja sisäkkäisyyttä Luku 7.3: Funktiot parametreina 1. Valmistelu Luo uusi Scala-projekti ja kopioi sinne valmiiksi annetun ImageFilterExercise-projektin sisältö. Jos projektissa näkyy virheilmoituksia, lisää projektikansiossa olevat.jar tiedostot scala-swing, scalajhttp sekä spray-json ohjelmasi "Build Pathiin" (oikea klikkaus -> Build Path, Add to Build Path). Scalajhttp ja spray-json kirjastoja tarvitaan vain bonustehtävässä, joten voit halutessasi jättää ne pois. Voit nyt ajaa ohjelman klikkaamalla view.scalaa ja Run as-> Scala Application. Syötä konsoliin haluamasi projektikansiossa sijaitsevan kuvatiedoston nimi. 2. Color-luokka ja sen kumppaniolio Color-apuluokan tarkoitus on helpottaa värien luomista ja muokkausta kuvaa käsiteltäessä. Luokassa on jo kaksi valmiiksi toteutettua metodia, tarkemmin konstruktoria eli metodit seuraavilla allekirjoituksilla def this(r: Int, g: Int, b: Int, a: Int) ja def this(argb: Int) Kuten huomaat, metodit ovat samannimisiä, mutta ne ottavat vastaan erilaiset parametrit. Tätä sanotaan kuormittamiseksi (overloading). Meidän tapauksessamme haluamme luoda Color-luokalle kaksi ylimääräistä konstruktoria, jotta väriolioita voitaisiin luoda hieman helpommin. Luotaessa Color-luokan instanssia voidaan siis välittää joko 1, 4 tai 5 parametria. Toisin kuin Javassa, Scalassa ylimääräisten konstruktoreiden täytyy toteutuksessaan kutsua ensimmäisenä alkuperäistä, eli tässä tapauksessa viiden parametrin konstruktoria, tai luokassa aikaisemmin määriteltyä toissijaista konstruktoria. Seurauksena jokainen konstruktori päätyy siis lopulta kutsumaan alkuperäistä konstruktoria. Voit lukea liksää esimerkiksi täältä (

2 Yhden parametrin versiossa kokonaislukuarvo pitää sisällään kaikkien värikomponenttien ja läpinäkyvyyskomponentin arvot. Kukin komponentti on arvoltaan 0 ja 255 välillä, joten komponentin kuvaamiseen riittää 8 bittiä. Neljä komponenttia vievät yhteensä 32 bittiä, mikä on tarkalleen kokonaislukutyypin Int koko. Koska aivan aluksi on kutsuttava yleistä konstruktoria, yksittäisten komponenttien arvot asetetaan tämän jälkeen setcomponents metodilla. Vastaavasti neljän parametrin versiossa komponenttien arvot käsitellään erikseen ja kaikkien komponenttien tiedon sisältävä kokonaisluku asetetaan setint metodilla. Tämän lisäksi näissä konstruktoreissa pidetään huolta siitä, että komponentin arvoksi asetetaan sopiva arvo kutsumalla clamp metodia kullekin komponentille. Sinun tehtävänäsi on: Toteuttaa metodi, jonka avulla rajoitetaan parametrina välitetty luku välille [0, 255]. Toteuttaa metodi, joka erottelee yksittäisestä Int arvosta neljä värikomponenttia. Toteuttaa metodi, joka yhdistää neljästä värikomponentista kaiken väri-informaation yksittäiseen Int-arvoon Clamp-metodi Toteuta kumppaniolio Colorin metodi Clamp, jonka tulee rajoittaa sille parametrina välitetty arvo välille [0, 255] ja palauttaa tulos. Jos metodille välitetään esimerkiksi arvo 78, palauttaa metodi 78. Mikäli metodille välitetty arvo on alle 0, palautetaan 0 ja mikäli metodille välitetty arvo on enemmän kuin 255, palautetaan setint- ja setcomponent-metodit setint metodi luo luokan a, r, g ja b muuttujien pohjalta kokonaisluvun, joka sisältää kaikkien muuttujien tiedon ja tallentaa sen muuttujaan argb. Metodin toteuttamiseksi sinun tulee käsitellä kokonaislukuja bittitasolla. Voit tutustua erilaisiin bittioperaatioihin esimerkiksi täältä Tarkoituksena on luoda 32-bittinen kokonaisluku tallennettavaksi muuttujaan argb käyttäen muuttujien a, r, g ja b kahdeksaa (8) ensimmäistä bittiä. Saat siirrettyä bittejä sopivaan sijaintiin << - operaattorilla ja yhdistettyjä luvut -operaattorilla. Katso alta esimerkki ja leiki REPLissä. scala> val r = 255 r: Int = 255 scala> val b = 80

3 b: Int = 80 scala> val shiftedr = r << 16 shiftedr: Int = scala> r.tobinarystring res0: String = scala> b.tobinarystring res1: String = scala> shiftedr.tobinarystring res2: String = scala> shiftedr b res3: Int = scala> res3.tobinarystring res4: String = setcomponents-metodi tekee periaatteessa edellisen käännettynä. Tässä metodissa käytä bittien siirtelyyn joko >>> tai >> -operaattoria. Näistä ensimmäinen korvaa shiftatessaan vasemmalle jäävät ylimääräiset bitit nolliksi, kun taas jälkimmäinen korvaa ne ykkösillä. scala> val i = i: Int = scala> i.tobinarystring res0: String = scala> i >> 24 res1: Int = -1 scala> res1.tobinarystring res2: String = scala> i >>> 24 res3: Int = 255 Saat valittua haluamiasi bittejä käsittelyyn tekemällä bittioperaation "ja" eli &. Esimerkiksi seuraavasti. scala> i >>> 16 res10: Int = scala> res10.tobinarystring res11: String =

4 scala> res10 & 0xFF res12: Int = 219 scala> res12.tobinarystring res13: String = Testaus Voit testata täydentämääsi Color-luokkaa esimerkiksi REPLissä. Muista lisätä aluksi pakkaus import komennolla. Voit nyt tallentaa värejä muuttujiin ja testata, että niihin tallentuvat arvot ovat oikeita. Esimerkiksi: scala> val c = new Color(100,-9,200,450) c: kierros3.color = kierros3.color@3571b748 scala> c.a res10: Int = 100 scala> c.r res11: Int = 0 scala> c.g res12: Int = 200 scala> c.b res13: Int = 255 scala> c.argb res14: Int = scala> c.argb.tobinarystring res15: String = Filter-luokan yksinkertaiset suotimet Tässä vaiheessa tulet: Toteuttamaan metodin, jolla voidaan muokata kuva harmaasävyiseksi. Toteuttamaan metodin, jolla kuvan värit voidaan kääntää vastaväreiksi. Toteuttamaan metodin, jolla voidaan muokata kuvan valoisuutta. Totuttamaan kolme metodia, joilla kullakin voidaan säätää yhtä kuvan värikomponenttia Harmaasävy ja vastavärit Tutustu aluksi Image-luokkaan ja sen dokumentaatioon. Miten pääset käsiksi pikseleiden väridataan?

5 Toteuta metodi: def grayscale(img: Image) : Unit joka muuttaa kuvan harmaasävyiseksi. Jokaiselle kuvapisteelle lasketaan uusi arvo, jossa värikomponenttien (RGB) uudeksi arvoksi tulee kaikkien värikomponenttien (RGB) keskiarvo ja läpinäkyvyyskomponentti Alpha pysyy ennallaan. Älä muuta alkuperäisen kuvan dataa (sen ei pitäisi edes olla mahdollista) vaan kutsu Image luokan setimage metodia asettaaksesi kuvalle tieto muokatusta kuvadatasta. Toteuta myös metodi: def invert(img: Image) : Unit joka kääntää kuvan värin negatiiviseksi. Jokaiselle kuvapisteelle lasketaan uusi arvo, jossa värikomponenttien (RGB) uusi arvo määräytyy erotuslaskulla "värikomponentin arvo" ja läpinäkyvyyskomponentti Alpha pysyy ennallaan. Käytä jälleen Image luokan setimage metodia asettaaksesi kuvalle tieto sen muokatusta kuvadatasta. 3.2 Valoisuus Toteuta metodi: def lightness(factor: Float, img: Image) : Unit joka muuttaa kuvan valoisuutta parametrin factor mukaan. Kun kuvapisteitä kerrotaan ykköstä (1) pienemmillä arvoilla, kuva tummenee ja vastaavasti yhtä (1) suuremmat arvot vaalentavat kuvaa. Jokaiselle kuvapisteelle lasketaan uusi arvo, jossa värikomponenttien (RGB) uusi arvo määräytyy kertolaskulla "värikomponentin arvo" * factor. Läpinäkyvyyskomponentti Alpha pysyy ennallaan. Käytä jälleen Image luokan setimage metodia asettaaksesi kuvalle tieto sen muokatusta kuvadatasta. 3.3 Värikomponenttien muokkaus Seuraavaksi toteutetaan kolme suodinta, joiden toiminta on periaatteiltaan keskenään hyvin samankaltainen. Luomme metodit, jotka muokkaavat kuvan väriä komponentti kerrallaan. Toteutettavat metodit ovat: def adjustred(amount: Int, img: Image) : Unit def adjustgreen(amount: Int, img: Image) : Unit def adjustblue(amount: Int, img: Image) : Unit Kukin metodi muuttaa nimensä mukaisesti yhtä värikomponenttia parametrin amount mukaan kun muut komponentit pysyvät samoina. Metodille välitetty amount-parametrin arvo vaihtelee välillä [- 100, 100]. Tämä arvo voidaan suoraan lisätä komponentin arvoon. Älä muuta alkuperäisen kuvan dataa (sen ei pitäisi edes olla mahdollista) vaan kutsu Image luokan setimage metodia asettaaksesi kuvalle tieto muokatusta kuvadatasta.

6 4. Filter-luokan monimutkaisemmat suotimet Seuraavassa vaiheessa tulet: Toteuttamaan metodin, jonka avulla voidaan sumentaa kuvaa. Toteuttamaan metodin, jonka avulla voidaan tarkentaa kuvaa. Toteuttamaan näiden metodien hyödyntämät apumetodit. Seuraavaksi toteutettavat suotimet eroavat edellisen osatehtävän suotimista siinä, että pikselien uusi arvo ei muodostu pelkästään alkuperäisen arvon ja jonkin operaation pohjalta, vaan uuteen arvoon vaikuttaa pikselin naapurusto. Sekä blur että sharpen suotimet kertovat kunkin pikselin arvon, mutta kertoimena käytetään yksittäisen arvon sijaan taulukkoa. Suodintaulukot ovat kaksiulotteisia taulukoita, joilla pituus ja leveys ovat yhtä suuret ja parittomat (esim. 3x3 tai 7x7). Taulukon alkiot ovat Float-tyypin liukulukuja. blur-metodin sumentava toiminnallisuus saadaan keskiarvoistamalla pikselien arvoja. Jokaisen pikselin arvo muodostuu siis sen ympäristön keskiarvosta. sharpen-metodin tarkentava toiminnallisuus taas korostaa kunkin pikselin alkuperäistä väriä suhteessa naapurustoonsa. Kummallekin metodille parametrina välitetään kokonaisluku amount, joka kertoo, kuinka suuri alue pikselin ympäriltä tulee ottaa huomioon. Parittomille luvuille luotavassa suodintaulukossa jokainen alkio on nollasta poikkeava (neliskulmainen suodin) ja parillisille luvuille suodintaulukossa taulukon kulmat jätetään nollaksi, jolloin saadaan neljäkkään muotoisia suotimia. Alla esimerkki. amount = 2 0 x 0 x x x 0 x 0 amount = 3 x x x x x x x x x amount = x x x x 0 0 x x x x 0 0 amount = 5

7 4.1 Apumetodi getfilter Äsken esitettyjen suotimien aikaansaamiseksi toteuta metodi: private def getfilter(amount: Int, seed: Float) : Array[Array[Float]] Ensimmäinen parametri amount määrittää suotimen muodon ja koon, ja toinen parametri seed on alkioiden arvo. Metodi palauttaa kaksiulotteisen taulukon, jota käytetään suotimena. 4.2 Apumetodi multiplywithfilter Toteuta metodi: private def multiplywithfilter(x: Int, y: Int, image: Image, filter: Array[Array[Float]]) : Color joka kertoo kuvan (image) yksittäisen pikselin (x, y) parametrina välitetyllä suotimella (filter). Metodi palauttaa koordinaateissa (x, y) olevan pikselin uuden arvon. Parametrina annettu pikseli kerrotaan suotimen keskikohdalla. Käy läpi parametrina annetun pikselin (x, y) ympäristö kertoen arvot suotimessa olevilla kertoimilla ja laske laske uusi arvo näiden summasta. Kun suodin on kooltaan 3*3, osuu pikseli (x, y) suotimen kohtaan (1, 1), tällöin pikselin (x, y) uusi arvo muodostuu kun kerrotaan pikseli kohdassa (x-1, y-1) suotimen kohdalla (0,0), pikseli kohdassa (x-1, y) suotimen kohdalla (0, 1), pikseli kohdassa (x-1, y+1) suotimen kohdalla (0, 2) jne. ja lasketaan näiden arvojen summa. Käsittele kukin värikomponentti erikseen ja läpinäkyvyyskomponentti Alpha jää jälleen koskemattomaksi. Kuvan reunoilla suodin ei enää mahdu kokonaisuudessaan kuvan alueelle (esimerkiksi pikseli (0,0) tulisi kertoa vain yhdellä kulmalla). Yksinkertaisuuden nimissä jätämme reunapikselit kokonaan huomioimatta, ja reunoilla palautetaan pikselin alkuperäinen väriarvo. 4.3 Metodit blur ja sharpen Äsken toteutetut apumetodit yksinkertaistavat merkittävästi blur- ja sharpen metodien toteutusta. Kummassakin luodaan suodin getfilter metodin avulla ja kerrotaan sillä kuva multiplywithfilter metodin avulla. Lopuksi kuvaluokalle Image välitetään tieto päivitetystä kuvadatasta Image luokan setimage metodin avulla. Toteuta metodit def blur(amount: Int, image: Image) : Unit ja def sharpen(amount: Int, image: Image) : Unit blur Sumentaminen on käytännössä keskiarvottamista, eli jokaisella naapuruston pikselillä on samanlainen painoarvo. Jotta kuvan valoisuus ei muuttuisi, on pidettävä huolta siitä, että suodintaulukon alkioiden summa ei ylitä yhtä.

8 Laske blur metodissa ennen getfilter apumetodin kutsua millä parametrin seed arvolla alkioiden summa on 1. Parittomilla parametrin amount arvoilla (jolloin suodin on neliön mallinen), parametrin seed arvoksi tulee parametrin amount neliön käänteisluku. Parillisilla parametrin amount arvoilla (jolloin suodin on neljäkkään mallinen), parametrin seed arvon voi laskea amount/2 ja amount/2 + 1 neliöiden summan käänteislukuna. Katso vinkiksi alla oleva taulukko. amount = Neljäkkään muotoisten suotimien voi ajatella koostuvan kahdesta limittäisestä neliöstä, joista toinen olisi yllä olevassa taulukossa sinisien ja toinen mustien ykkösten määrittelemä sharpen Samoin kuin sumentavissa suotimissa myös tarkentavien suodintaulukoiden alkioiden summan tulisi olla yksi. Koska tarkentava suodin korostaa pikselin alkuperäistä arvoa, voidaan laatia getfilter metodilla tarvittava suodin, käyttäen parametrin seed arvona lukua -1. Tämän jälkeen tulee suotimen keskimmäinen arvo korvata sellaisella positiivisella kokonaisluvulla, että suotimen alkioiden arvoksi tulee 1. Alla esimerkki muutamasta suotimesta. amount = amount = Bonustehtävä: Kuvien julkaisu verkossa Tässä vaiheessa tulet: Rekisteröimään ohjelmasi imgur-kuvapalveluun. Toteuttamaan metodin jonka julkaisee muokatun kuva internetissä ja palauttaa siihen johtavan linkin.

9 Bonustehtävänä voit luoda imageposter-luokan ainoa metodi, jonka avulla julkaisemme muokatun kuvan imgur-kuvapalveluun HTTP-Post requestia hyödyntäen ( Tulet siis toteuttamaan metodin: def postimage(img: Image): String joka ottaa parametrikseen Image-luokan ilmentymän ja palauttaa merkkijonona kuvaan johtavan URL-osoitteen. Metodia kutsutaan käyttöliittymässä "Post image"-napilla, jota voit käyttää testaukseen. 5.1 Valmistelu Jotta voit hyödyntää imgurin rajapintaa ( tulee sinun rekisteröityä imgurin käyttäjäksi saadaksesi oman ohjelmasi yksilöivän CLIENT_ID-tunnuksen. HUOM: jätä oma CLIENT_IDsi pois lopullisesta palautuksesta. CLIENT_ID lähetetään jokaisen palveluun lähtevän HTTP-pyynnön (request) mukana osana sen header-kenttää. Luo siis tunnukset osoitteessa Tutustu imgurin rajapinnan dokumentaatioon ( ja rekisteröi oma ohjelmasi ohjeiden mukaan. Authorization type-kohdassa valitse "Anonymous usage without user authorization" (lisäämämme kuvat eivät liity mihinkään käyttäjätiliin vaan ne julkaistaan anonyymisti). 5.3 Kuvan lataaminen palveluun HTTP-pyynnön lähettämiseksi käytämme alussa osaksi ohjelmaamme lisäämää scalaj-http-kirjastoa, joka helpottaa pyyntöjen ja vastausten käsittelyä. Tutustu kirjaston dokumentaatioon Vinkki: postdata-metodi voi osoittautua hyödylliseksi. Tutustu myös imgurin dokumentaatioon ja erityisesti Image Upload-kohtaan. Imgurin rajapinta ei suoraan hyväksy BufferedImage-tyyppistä dataa. Muuta siis lähetettävä kuvadata palvelun tukemaan muotoon ennen sen lähettämistä. Vinkki: esimerkiksi Array[Byte] Kirjoita nyt http-pyyntö, jolla lähetät kuvadatan palveluun. Muista liittää mukaan ohjelmasi CLIENT_ID Imgurin vaatimalla tavalla. Pyynnön palautusarvoksi tulee imgurin palvelimen antama vastaus. Tämän tulostamalla voit testata metodin toimivuutta ja saada vinkkejä mahdollisiin ongelmiin. 5.4 Kuvalinkin palauttaminen käyttäjälle Onnistunut http-pyyntö palauttaa paljon tietoja JSON-muodossa mutta me haluamme välittää ohjelmamme käyttöliittymälle vain kuvaan johtavan linkin. JSON:in käsittelyyn voimme käyttää projektiin lisäämäämme spraykirjastoa. Tutustu kirjaston dokumentaatioon Tehtävänäsi on hakea http-pyyntösi vastauksesta kuvan linkki ja palauttaa se metodin palautusarvona. Oikein toteutettuna linkki välittyy nyt ohjelman käyttöliittymälle. Tarkasta linkin toimivuus.

10 Palautus Testaa vielä lopuksi kaikkien tekemiesi luokkien toiminta ja varmista, että kaikki toimii toivomallasi tavalla. Viimeistään tässä vaiheessa kommentoi koodisi ne pätkät, jotka saattavat olla vaikeaselkoisia. Pakkaa projektisi totuttuun tapaan.zip-paketiksi ja anna sille nimeksi opiskelijanumerosi_image.zip. Kuvatiedostoja ei tarvitse palauttaa. Lisää mukaan halutessasi readme.txt tiedosto jossa voit antaa palautetta tehtävästä ja pohtia mikä oli helppoa tai erityisen haastava. Palauta projekti mycoursesiin.

Kierros Kuva, Deadline Ti klo 23:59

Kierros Kuva, Deadline Ti klo 23:59 Kierros Kuva, Deadline Ti 28.11. klo 23:59 Tässä tehtävässä tutustutaan kuvien muokkaamiseen. Tulet toteuttamaan kuvankäsittelyalgoritmeja ohjelmaan jolla voit muokata kuvia. Ohjelmointi 1-kurssilta apua

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

Toinen harjoitustyö. ASCII-grafiikkaa

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

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

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9. Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.

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

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

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

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

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

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

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

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

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

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Datatähti 2019 loppu

Datatähti 2019 loppu Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio

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

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Ohjelmointitehtävien osalta palautetaan

Lisätiedot

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

Harjoitus 3 (viikko 39)

Harjoitus 3 (viikko 39) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä. Ohjelmointitehtävien

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

UpdateIT 2010: Uutisten päivitys

UpdateIT 2010: Uutisten päivitys UpdateIT 2010: Uutisten päivitys Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com 2 Sisällys Uutisen lisääminen... 1

Lisätiedot

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42) Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

Lisätiedot

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA Ohjeistuksessa käydään läpi kuvan koon ja kuvan kankaan koon muuntaminen esimerkin avulla. Ohjeistus on laadittu auttamaan kuvien muokkaamista kuvakommunikaatiota

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

Lisätiedot

Tehtävä 1 - Scala API:n ulkopuolisten kirjastojen käyttö, ristinollapeli

Tehtävä 1 - Scala API:n ulkopuolisten kirjastojen käyttö, ristinollapeli Tehtävä 1 - Scala API:n ulkopuolisten kirjastojen käyttö, ristinollapeli Deadline 7.10. (Muokkaus 25.9. PDF-tiedoston linkit korjattu) Taustaa Tällä tehtäväkierroksella tutustutaan Scala Standard API:n

Lisätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

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

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

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

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita. Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

Lisätiedot

Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti NIMI:

Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti NIMI: ITKP102 Ohjelmointi 1 C# 13.6.2014 1 / 5 Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti Tentaattori Antti-Jussi Lakanen Valitse neljä tehtävää ja vastaa niihin. Keväällä 2014 kurssin tehneille lasketaan

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi. Tehtävä 24. Kallioparkki veloittaa 2 euroa kolmelta ensimmäiseltä pysäköintitunnilta. Yli kolmen tunnin pysäköinnistä veloitetaan lisäksi 0.5 euroa jokaiselta yli menevältä tunnilta. Kuitenkin maksimiveloitus

Lisätiedot

Tiedostojen palauttaminen tehtävien palautuskansioihin Office 365 tilin yhdistäminen iperho verkko-oppimisympäristöön

Tiedostojen palauttaminen tehtävien palautuskansioihin Office 365 tilin yhdistäminen iperho verkko-oppimisympäristöön Tiedostojen palauttaminen tehtävien palautuskansioihin Office 365 tilin yhdistäminen iperho verkko-oppimisympäristöön Tiedoston palauttaminen tiedostona / Office 365 -kirjastosta Tiedoston palauttaminen

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

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Tehtävä 1 Tehtävässä 1 mallinnettiin Monopolipeliä. Alla olevassa esimerkissä peliin liittyy aina 2 noppaa, peliä pelataan pelilaudalla,

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 5: Sijoituslause, SICP-oliot, tietorakenteen muuttaminen (mm. SICP 33.1.3, 3.33.3.2) Riku Saikkonen 6. 11. 2012 Sisältö 1 Muuttujan arvon muuttaminen:

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

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

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

Sukupuu -ohjelma. Ossi Väre (013759021) Joni Virtanen (013760641)

Sukupuu -ohjelma. Ossi Väre (013759021) Joni Virtanen (013760641) Sukupuu -ohjelma Ossi Väre (013759021) Joni Virtanen (013760641) 7.11.2011 1 Johdanto Toteutimme C -kielellä sukupuuohjelman, johon käyttäjä voi lisätä ja poistaa henkilöitä ja määrittää henkilöiden välisiä

Lisätiedot

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet, kurssikoe Ohjelmoinnin perusteet, kurssikoe 18.6.2014 Kirjoita jokaiseen konseptiin kurssin nimi, kokeen päivämäärä, nimi, TMC-tunnus ja opiskelijanumero tai henkilötunnus. Vastaukset palautetaan tehtäväkohtaisiin

Lisätiedot

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5 Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät tekniset ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

Lisätiedot

S: siirtää listan ensimmäisen luvun viimeiseksi V: vaihtaa keskenään listan kaksi ensimmäistä lukua

S: siirtää listan ensimmäisen luvun viimeiseksi V: vaihtaa keskenään listan kaksi ensimmäistä lukua A Lista Sinulle on annettu lista, joka sisältää kokonaisluvut 1, 2,, n jossakin järjestyksessä. Tehtäväsi on järjestää luvut pienimmästä suurimpaan käyttäen seuraavia operaatioita: S: siirtää listan ensimmäisen

Lisätiedot

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

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

Harjoitus 5 (viikko 41)

Harjoitus 5 (viikko 41) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä, käytä

Lisätiedot

Lyseopaneeli 2.0. Käyttäjän opas

Lyseopaneeli 2.0. Käyttäjän opas Lyseopaneeli 2.0 Käyttäjän opas 1. Esittely Lyseopaneeli on Oulun Lyseon lukion käyttäjätietojen hallintapalvelu jonka tarkoitus on niputtaa yhteen muutamia oleellisia toimintoja. 2. Yleistä paneelin käytöstä

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

Demo 1: Simplex-menetelmä

Demo 1: Simplex-menetelmä MS-C2105 Optimoinnin perusteet Malliratkaisut 3 Ehtamo Demo 1: Simplex-menetelmä Muodosta lineaarisen tehtävän standardimuoto ja ratkaise tehtävä taulukkomuotoisella Simplex-algoritmilla. max 5x 1 + 4x

Lisätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion

Lisätiedot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot C! : Moniulotteiset taulukot & Bittioperaatiot 15.3.2016 Agenda Pieni kertausharjoitus Moniulotteiset taulukot Esimerkki taulukoista Tauko (bittitehtävä) Binäärioperaatioista Esimerkki (vilkaistaan IP

Lisätiedot

Suuli api dokumentaatio

Suuli api dokumentaatio Suuli api dokumentaatio Rajapinnan käyttöä varten tarvitset avaimen. Suulissa on käytössä kaksi rajapintaa: jäsen-, vene- ja venepaikkarajapinta sekä laskurajapinta. Näille on erilliset avaimet. Seuran

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

Järjestelmäarkkitehtuuri (TK081702)

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,

Lisätiedot

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten Ratkaisuehdotelma Tehtävä 1 1. Etsi lukujen 4655 ja 12075 suurin yhteinen tekijä ja lausu se kyseisten lukujen lineaarikombinaationa ilman laskimen

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

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

TL5503 DSK, laboraatiot (1.5 op) Kuvasignaalit. Jyrki Laitinen

TL5503 DSK, laboraatiot (1.5 op) Kuvasignaalit. Jyrki Laitinen TL553 DSK, laboraatiot (.5 op) Kuvasignaalit Jyrki Laitinen TL553 DSK, laboraatiot (.5 op), K25 Suorita oheisten ohjeiden mukaiset tehtävät Matlab- ja VCDemo-ohjelmistoja käyttäen. Kokoa erilliseen mittauspöytäkirjaan

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

Harjoitus 5 (viikko 48)

Harjoitus 5 (viikko 48) Moni tämän harjoituksen tehtävistä liittyy joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Harjoitustyö edistyy sitä paremmin, mitä enemmän tehtäviä ratkaiset. Mikäli tehtävissä on jotain

Lisätiedot

KIRJAUTUMINEN JÄRJESTELMÄÄN ALOITUSSIVU. OMAT ASETUKSET Salasanan vaihto. VITANet KÄYTTÄJÄOPAS. Avaa VITANet osoitteessa https://vitanet.vita.

KIRJAUTUMINEN JÄRJESTELMÄÄN ALOITUSSIVU. OMAT ASETUKSET Salasanan vaihto. VITANet KÄYTTÄJÄOPAS. Avaa VITANet osoitteessa https://vitanet.vita. KIRJAUTUMINEN JÄRJESTELMÄÄN Avaa VITANet osoitteessa https://vitanet.vita.fi Kirjaudu sisään saamillasi käyttäjäkohtaisilla tunnuksilla. Käyttäjätunnus: xxxxxxx Salasana: xxxxxxxx Asiakas: esim. VITALA

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Standardi- ja tietorakenneluokkia Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Standardi- ja tietorakenneluokkia Standardi- ja tietorakenneluokkia Javan API, ArrayList Ohjelmointirajapinta (Application Programming Interface, API)

Lisätiedot

3 PAIKKATIETOHARJOITUSTA

3 PAIKKATIETOHARJOITUSTA 3 PAIKKATIETOHARJOITUSTA HARJOITUS 1: OMAN KARTAN TEKEMINEN TAVOITE: -Tehdä oma kartta, jossa hyödynnetään avoimia aineistoja OPITAAN: -Hakemaan hri.fi:stä avoin kartta-aineisto -Lisäämään se kartantekotyökaluun

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

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

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

Perustietoja Mietoisten kyläportaalista... 2. Yhdistyksen ylläpitäjän kirjautuminen... 2. Yhdistyksen etusivun muokkaaminen... 2

Perustietoja Mietoisten kyläportaalista... 2. Yhdistyksen ylläpitäjän kirjautuminen... 2. Yhdistyksen etusivun muokkaaminen... 2 Mietoisten kyläportaalin käyttöohjeet alasivujen ylläpitäjille Päivitetty 8.4.2011 Sisältö Perustietoja Mietoisten kyläportaalista... 2 Yhdistyksen ylläpitäjän kirjautuminen... 2 Yhdistyksen etusivun muokkaaminen...

Lisätiedot

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus 582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen

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

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö Yleistä Tehtävä: Tee Javalla StringStats-ohjelma, joka laskee esikäsittelemästään merkkijonosta joitakin tunnuslukuja. Lausekielinen ohjelmointi II

Lisätiedot

Ohjelmointi 1 C#, kevät 2014, tentti

Ohjelmointi 1 C#, kevät 2014, tentti ITKP102 Ohjelmointi 1 C# 11.4.2014 1 / 7 Ohjelmointi 1 C#, kevät 2014, tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yksi A4-arkillinen. Tentin valvojalla on

Lisätiedot

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö 3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö Yhtälön (tai funktion) y = a + b + c, missä a 0, kuvaaja ei ole suora, mutta ei ole yhtälökään ensimmäistä astetta. Funktioiden

Lisätiedot

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 12.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 12.9.2018 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

HELSINGIN YLIOPISTO TIEDEKASVATUS. helsinki.fi/tiedekasvatus v 1.2

HELSINGIN YLIOPISTO TIEDEKASVATUS. helsinki.fi/tiedekasvatus v 1.2 Tässä harjoituksessa opit laatimaan luokitellun teemakartan maastossa aiemmin keräämästäsi aineistosta. Käytämme Esrin ArcGis-palvelun ilmaisia ominaisuuksia. Kartan tekoa voi harjoitella kokonaan ilman

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

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut www.helsinki.fi

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut www.helsinki.fi Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut Ohjelmointikurssin järjestäminen Helsingin yliopiston Ohjelmoinnin MOOC-kurssimateriaalin avulla 15.4.2016 1 Linkki Tietojenkäsittelytieteen

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

Kappale 20: Kantaluvut

Kappale 20: Kantaluvut Kappale 20: Kantaluvut 20 Johdanto: Kantaluvut... 328 Kantalukujen syöttäminen ja muuntaminen... 329 Matemaattiset toiminnot Hex- ja Bin-luvuilla... 330 Bittien vertaileminen ja manipulointi... 331 Huom!

Lisätiedot

Ohjelmointi 1 C#, kevät 2013,

Ohjelmointi 1 C#, kevät 2013, Ohjelmointi 1 C#, kevät 2013, 19.4.2013 (English versions of the questions can be requested from the supervisor. Englanninkieliset kysymykset saa pyytämällä tentin valvojalta.) Tentti (yliopisto opiskelijat)

Lisätiedot