812315A Ohjelmiston rakentaminen. Asynkronisuus
|
|
- Olavi Lattu
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 812315A Ohjelmiston rakentaminen. Asynkronisuus Ari Vesanen ari.vesanen (at) oulu.fi
2 Yleistä moduulista Tällä kertaa sisältää Java-kielistä monisäieohjelmointia Suoritustapa: Neljästä ohjelmointitehtävästä valitaan kaksi, joihin laaditaan ratkaisut Arvostellaan 1-5, loppuarvosana keskiarvo mahdollisesti ylöspäin pyöristettynä Suositellaan tekemään Javalla, C++ mahdollinen, muista kielistä sovittava erikseen Ohjelmiston rakentaminen, Asynkronisuus 2
3 Moduulin aikataulu Aloitusseminaari klo Lyhyt johdanto rinnakkaisuuteen ja Java-kielen monisäieohjelmointiin Rinnakkaisuuden piirteitä ja ohjelmointitehtäviä Suoritettavien tehtävien läpikäynti Kiivasta ohjelmointia ja tehtävien palautus viimeistään 4.8 Jokainen palauttaa omat ratkaisut Lopetusseminaari 5.8. klo Käydään läpi ratkaisut ja vertaillaan niitä toisiinsa Ohjelmiston rakentaminen, Asynkronisuus 3
4 Moduulin sisältö I. Johdanto rinnakkaisuuteen II. Javan rinnakkaisuuden perustoteutus III. Rinnakkaisen ohjelmoinnin malleja IV. Eloisuusongelmista V. Edistyneempi Javan rinnakkaisuus VI. Tehtävät Ohjelmiston rakentaminen, Asynkronisuus 4
5 Kirjallisuutta Goetz, B. et al.: Java Concurrency in Practice, Addison-Wesley 2010 González, J.: Java 7 Concurrency Cookbook. Packt Publishing Hartley, S.: Concurrent Programming, The Java Programming Language, Oxford University Press Inc Lea, D.: Concurrent Programming in Java, design Principles and Patterns Second Edition, Addison-Wesley 2000 Kaksi viimeistä ennen Java 5.0:aa Ohjelmiston rakentaminen, Asynkronisuus 5
6 WWW-lähteitä Javan API-dokumentaatio: Oraclen Java-tutoriaali Muita Java-tutoriaaleja Aalto-yliopiston kurssi Ohjelmiston rakentaminen, Asynkronisuus 6
7 I Johdanto rinnakkaisuuteen Peräkkäinen vs. Rinnakkainen Käskyt suoritetaan peräkkäin Yksikäsitteinen suorituspolku Deterministinen sama syöte, sama tulos aina Toimintoja suoritetaan rinnakkain Ei selvää suorituspolkua Epädeterministinen tulos voi riippua suoritusjärjestyksestä Ohjelmiston rakentaminen, Asynkronisuus 7
8 I.1 Prosessit ja säikeet Prosessi Säie Tapa ajaa useita ohjelmia rinnakkain yhdessä prosessorissa Oma muistialue Kommunikointi esim. putkilla tai socketeilla Prosessia kevyempi Prosessi voidaan jakaa säikeisiin Säikeellä oma ohjelmalaskuri ja pino Säikeet jakavat prosessin muistialueen ja resurssit Tässä moduulissa monisäieohjelmointia Ohjelmiston rakentaminen, Asynkronisuus 8
9 I.2 Rinnakkaisen ohjelman oikeellisuuskriteerit Turvallisuus (safety) Oliot ja muuttujat pysyvät kunnossa Eloisuus (liveness) Kaikki aiotut operaatiot suoritetaan joskus Turvallisuus: Ei-atomaarinen operaatio voi epäonnistua jos kaksi säiettä toimii yhtä aikaa -> Metodi voi toimia väärin jos sitä kutsutaan kahdesta säikeestä Säieturvallinen (thread safe): toimii oikein millä tahansa kutsujärjestyksellä Resurssin käsitteleminen kahdesta säikeestä samanaikaisesti = kilpailutilanne (race condition) Ohjelmiston rakentaminen, Asynkronisuus 9
10 I.2 Rinnakkaisen ohjelman oikeellisuuskriteerit Eloisuus: Aiotut operaatiot suoritetaan ei aikarajaa Reaaliaikainen ohjelmointi asetetaan aikarajoja Turvallisuus ja eloisuus jossain määrin vastakkaisia Ongelmatilanteisiin varauduttava suunnitteluvaiheessa Ohjelman debuggaus erittäin vaikeaa (lokitiedoston kirjoitus usein auttaa) Ohjelman täydellinen testaus mahdotonta Ohjelmiston rakentaminen, Asynkronisuus 10
11 II Javan rinnakkaisuuden perustoteutus Java alkujaan suunniteltu tukemaan rinnakkaisuutta Olio-ohjelmoinnin ja Javan perusteet oletetaan tunnetuksi Javan virtuaalikone (JVM) suorittaa Java-ohjelman huolehtii myös rinnakkaisuudesta Ohjelmiston rakentaminen, Asynkronisuus 11
12 II.1. Javan säikeet Käyttäjäsäikeet (user threads) varsinaiset säikeet Taustasäikeet (daemon threads) toimivat taustalla Ohjelma loppuu, kun sen kaikki käyttäjäsäikeet päättyvät tai kutsutaan Runtime luokan exit()-metodia (koodissa System.exit(0);) Ohjelmiston rakentaminen, Asynkronisuus 12
13 II.1. Javan säikeet. Säikeen tilat Uusi (NEW) Säie on luotu, ei voi vielä toimia Ajettava (RUNNABLE) Säie voi toimia, kun saa suoritusaikaa Estetty (BLOCKED) Toiminta on estetty, koska odottaa lukon vapautumista Odottaa (WAITING) Säie odottaa toisen säikeen operaatiota Odottaa ajastetusti (TIMED_WAITING) Kuten yllä tai kun annettu aika on kulunut Lopetettu, kuollut (TERMINATED) Säikeen suoritus on loppunut Ohjelmiston rakentaminen, Asynkronisuus 13
14 II.1. Javan säikeet. Säikeen luominen Kirjoita luokka, joka perii Thread-luokan run()-metodi uudelleenmääriteltävä TAI Kirjoita luokka joka toteuttaa Runnable rajapinnan toteutettava run()-metodi Säikeen suorittaminen: 1. Luo uusi Thread-olio 2. Konfiguroi (ei pakollinen) Anna prioriteetti ja nimi 3. Käynnistä kutsumalla start()-metodia Ohjelmiston rakentaminen, Asynkronisuus 14
15 II.1. Javan säikeet. Säikeen luominen (2) HUOM1: Käynnistys kutsumalla startia, toiminnallisuus runissa! HUOM2: Säie päättyy, kun run loppuu Testaa ohjelmia Basicthreads.java BasicRunnable.java Ohjelmiston rakentaminen, Asynkronisuus 15
16 II.1. Javan säikeet. Säikeen lopettaminen Säie päättyy kun run loppuu Suositeltavin tapa säikeen keskeyttämiseen: interrupt asettaa säikeen keskeytystilaan, ei lopeta suoritusta tutki onko keskeytetty (metodi isinterrupted()) myös interrupted() - nollaa keskytystilan Nukkuvan tai odottavan säikeen keskeyttäminen aiheuttaa poikkeuksen InterruptedException säie ei ajossa -> ei voi suoraan keskeyttää ko. poikkeus on aina käsiteltävä kun tehdään wait tai sleep Ohjelmiston rakentaminen, Asynkronisuus 16
17 II.1. Javan säikeet. Säikeen lopettaminen //Määritellään säieluokka class Interruptible extends Thread{ public void run(){ while(!this.isinterrupted()){ // Tee jotain} // Lopputoimenpiteet } } //Pääohjelmassa koodi: Interruptible irthread = new Interruptible(); irthread.start(); // Toimenpiteitä pääohjelmassa // Lopetetaan irthread irthread.interrupt(); Tehtävä ThreadInterrupt.java Ohjelmiston rakentaminen, Asynkronisuus 17
18 II.2. Javan säikeiden synkronointi Oikean toiminnan varmistamiseksi kahdenlaista synkronointia 1. Kilpailun synkronointi Tarvitaan kun resurssia käytetään monesta säikeestä 2. Yhteistoiminnan synkronointi Tarvitaan kun säikeen toiminta riippuu toisen säikeen toiminnasta Javan perusmekanismi monitori = olio, jolla on lukko ja odotusjoukko Mikä tahansa Javan olio voi olla monitori Ohjelmiston rakentaminen, Asynkronisuus 18
19 II.2.1 Javan monitorin toiminta P Q SÄIE 1 SP. JOUKKO SÄIE 5 SÄIE 6 METODI1 Odotusjoukko (wait set) = ne säikeet jotka odottavat ilmoitusta (notify()) kutsuttuaan wait() metodia SÄIE 3 SÄIE 2 SÄIE 4 ODOTUSJOUKKO LOHKO1 METODI2 Sisäänpääsyjoukko (entry set) = säikeet, jotka odottavat pääsyä monitoriin ensimmäistä kertaa Ohjelmiston rakentaminen, Asynkronisuus 19
20 II.2.2 Kilpailun synkronointi Lukko otetaan haltuun kutsumalla synchronizedavainsanalla merkittyä metodia (tai koodilohkoa) olion kaikkien synkronoitujen metodien ja lohkojen suorittaminen estyy kunnes säie luopuu lukosta Lukosta luopuminen: Synkronoitu metodi/lohko loppuu Säie siirtyy odotustilaan HUOM! Thread.sleep(); ei aiheuta lukosta luopumista Ohjelmiston rakentaminen, Asynkronisuus 20
21 II.2.2 Kilpailun synkronointi (2) P Q ESIM: Seuraavat yhtäpitävät: synchronized void f(){ // Metodin runko } void f(){ synchronized(this){ // Metodin runko } } Tehtävä: Poista kilpailutilanne ohjelmista RaceCondition.java ja UnsafeTicketOffice.java Optimoi synkronointi jälkimmäisessä Ohjelmiston rakentaminen, Asynkronisuus 21
22 II.2.3 Yhteistoiminnan synkronointi Säikeessä voidaan odottaa toisen säikeen päättymistä kutsumalla sen join()-metodia Monitorin odotusjoukkoon voidaan vaikuttaa metodeilla wait(): asettaa kutsuvan säikeen odotustilaan notify(): vapauttaa yhden odottavan säikeen notifyall(): vapauttaa kaikki odottavat säikeet Kaikkien em. metodien kutsumiseksi on oltava hallussa monitorin lukko Vapautetut säikeet kilpailevat normaaliin tapaan monitorin lukosta Ohjelmiston rakentaminen, Asynkronisuus 22
23 II.2.3 Yhteistoiminnan synkronointi (2) Jos odottava säie keskeytetään, syntyy InterruptedException Käsiteltävä, jos kutsutaan wait()-metodia Tehtävä: Ohjelmassa PingPongEx.java kaksi säiettä kutsuu luokan PingPongController metodeja, jotka tulostavat sanat PING ja PONG Synkronoi luokka PingPongController niin, että sanat tulostetaan aina vuorotellen. Metodeissa esiintyviä sleep-aikoja ei saa muuttaa Ohjelmiston rakentaminen, Asynkronisuus 23
24 III Rinnakkaisen ohjelmoinnin malleja III.1 Tuottaja-kuluttajamalli P Q Soveltuu moneen rinnakkaisen ohjelmoinnin ongelmaan Kahdentyyppisiä säikeitä (tai prosesseja): Tuottajat Luovat uusia olioita (dataa) Kuluttaja Käsittelevät tuottajien luomia olioita Olioiden varastona voidaan käyttää esim. synkronoitua syklistä puskuria: Huolehdittava, että vain yksi säie käsittelee puskuria Huolehdittava että täyteen puskuriin ei kirjoiteta Huolehdittava että tyhjästä puskurista ei lueta Ohjelmiston rakentaminen, Asynkronisuus 24
25 III.2 Lukija-kirjoittajamalli Alunperin mallinsi tietokannan toimintaa Yleishyödyllinen rinnakkaisessa ohjelmoinnissa Voidaan käyttää säätelemään pääsyä monenlaisiin resursseihin Kahdenlaisia säikeitä: lukijasäikeet ja kirjoittajasäikeet resurssia saa lukea moni säie yhtä aikaa resurssia voi päivittää vain yksi (kirjoittaja)säie resurssia ei saa lukea jos kirjoitetaan Abstrakti luokka ReadAndWRite mallintaa toimintaa, operaatiot readoperation() ja writeoperation() määriteltävä perivässä luokassa Ohjelmiston rakentaminen, Asynkronisuus 25
26 IV Eloisuusongelmat Lukkiutuminen (deadlock) Yleinen syy säikeiden jumittumiseen Säikeet odottavat ristiin toistensa lukitsemien resurssien vapautumista Uloslukkiutuminen Koodi voi sisältää sisäkkäisiä olioita joilla synkronoituja metodeja -> Säie voi lukita itsensä ulos Menetetty signaali Säie odottaa signaalia, joka on tuotettu ennen kuin säie alkoi odottaa Ohjelmiston rakentaminen, Asynkronisuus 26
27 V Javan edistyneempi rinnakkaisuuden hallinta Javan versioon 5.0 lisätukea rinnakkaisuuden hallintaan java.util.concurrent java.util.concurrent.locks java.util.concurrent.atomic Em. Pakkaukset sisältävät Erilaisia synkronointiprimitiivejä, Rinnakkaisessa ohjelmoinnissa käyttökelpoisia kokoelmia, Säieturvallisia muuttujatyyppejä Ohjelmiston rakentaminen, Asynkronisuus 27
28 V.1 Semaforit Semafori: kokonaislukumuuttuja, jonka arvo on lupien lukumäärä Säie pyytää lupaa semaforilta: Jos arvo suurempi kuin nolla, säie saa luvan ja arvoa vähennetään Jos arvo nolla, säie jää odottamaan, kunnes lupien määrä kasvaa Kun säie luopuu luvasta, semaforin arvoa kasvatetaan Voidaan käyttää poissulkevuuteen tai synkronoituna laskurina Ohjelmiston rakentaminen, Asynkronisuus 28
29 V.1 Semaforit (2) Javassa semafori luokka Semaphore, pakkauksessa java.util.concurrent Käyttö: // Luodaan semafori, jolla alussa yksi lupa Semaphore sema = new Semaphore(1); // Luvan pyytäminen sema.acquire(); // Luvan vapauttaminen sema.release(); Ohjelmiston rakentaminen, Asynkronisuus 29
30 V.2 Lukot ja ehtomuuttujat Pakkauksessa java.util.concurrent.locks rajapinta Lock Erilaisia implementointeja -> perussynkronointia monipuolisempi toteutus Lukkoihin voidaan liittää Condition-rajapinnan toteuttavia olioita vastaamaan ehtomuuttujia Käyttöidiomi kilpailun synkronoinnille Lock lukko =...; // Sopiva lukko-olio lukko.lock(); try { // Käytä lukon suojaamaa resurssia } finally { lukko.unlock(); // Varma vapauttaminen } Ohjelmiston rakentaminen, Asynkronisuus 30
31 V.2 Lukot ja ehtomuuttujat (2) Luokan ReentrantLock olio Javan monitorin yleistys Olioon voi liittyä useita ehtomuuttujia (Condition), luodaan luokan metodilla newcondition() Condition-olion odotusmetodi await() ja ilmoitusmetodit signal() sekä signalall() Vastaavat Object-luokan metodeja wait(), notify() sekä notifyall() Katso esimerkkiohjelmista CircularBufferWithLocks.java Tehtäviä: Poista ohjelmista RaceConditionRunnable.java ja UnsafeTicketOffice.java kilpailutilanne lukkoja käyttämällä. Muuta aiemmin tehty PingPong-ohjelma käyttämään lukkoja Ohjelmiston rakentaminen, Asynkronisuus 31
32 V.3 Suorittajat ja säievarastot Javan pakkaukseen java.util.concurrent sisältyy rajapinta Executor, jonka avulla voidaan eristää tehtävän välitys ja sen suoritusmekanismi toisistaan. Metodi void execute(runnable r) Toteuttamalla rajapinta saadaan erilaisia suorittajia Luokissa voidaan käyttää Executor-oliota ja sitoa se vasta myöhemmin tietyntyyppiseen suorittajaan, esim class SimpleExecutor implements Executor{ public void execute(runnable r){ new Thread(r).start(); } } Ohjelmiston rakentaminen, Asynkronisuus 32
33 V.3.1 Säievarastot Kiinteä määrä säikeitä, joille annetaan tehtäviä suoritettavaksi Vähentää tarvittavien säikeiden määrää, jos tehtävien ei tarvitse olla yhtä aikaa ajossa Javan luokka ThreadPoolExecutor Olio saadaan kutsumalla Executors-luokan staattista metodia newfixedthreadpool(int poolsize) Tehtävä käynnistetään luokan metodilla execute -> pääsee suoritukseen kun varaston säie vapautuu Ohjelmiston rakentaminen, Asynkronisuus 33
34 V.3.1 Säievarastot (2) Javan luokka ThreadPoolExecutor jatkuu Luokan metodi shutdown() -> tehtävät ajetaan loppuun, uusia ei oteta Luokan metodi awaitfortermination() odottaa kunnes kaikki tehtävät suoritettu Ks. esimerkit NQueensWithPool.java ja NQueensWithPoolLatch.java Tehtävä: Jälkimmäisessä CountDownLatch odottaa tehtävien valmistumista. Korvaa se semaforilla Ohjelmiston rakentaminen, Asynkronisuus 34
35 VI Tehtävät Jokainen palauttaa oman ratkaisun Seuraavista neljästä tehtävästä valitaan kaksi Kuvaukset erillisessä dokumentissä 1. Boolimaljasimulaatio 2. Kanjonia ylittävät turistit 3. Huvipuiston vuoristorata 4. Neljä samaa numeroa -peli Ohjelmiston rakentaminen, Asynkronisuus 35
815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 IX Rinnakkainen ohjelmointi Sisältö 1. Yleistä rinnakkaisuudesta 2. Prosesseista ja säikeistä 3. Rinnakkaisen ohjelman oikeellisuudesta 4. Rinnakkaisuuden
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 19: Rinnakkaisuus Riku Saikkonen (merkityt ei-laajan kurssin kalvot: Otto Seppälä) 24. 3. 2011 Sisältö 1 Säikeet 2 Lukot 3 Monitorit 4 Muuta säikeisiin
LisätiedotProjekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla
Projekti 1 Säikeet ja kriittisen vaiheen kontrollointi javalla Lasse Leino ja Marko Kahilakoski Helsingin Yliopisto Tietojenkäsittelytieteen laitos Rinnakkaisohjelmointi 18. joulukuuta 2006 Sisältö 1 Säikeet
LisätiedotConcurrency - 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ätiedotRinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka
Rinnakkaisuus parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa Rinnakkaisuuden etuja: laskennan nopeutuminen (sarjoittuvat operaatiojonot) ilmaisuvoima (ongelman
LisätiedotRinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti
Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi
LisätiedotLiite 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ätiedotLuento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä
Luento 6 T-106.1240 Ohjelmoinnin jatkokurssi T1 & T-106.1243 Ohjelmoinnin jatkokurssi L1 Luennoitsija: Otto Seppälä Kurssin WWW: http://www.cs.hut.fi/opinnot/t-106.1240/s2007 Oma Grafiikka Swing-käyttöliittymässä
Lisätiedot5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen, tommi.mikkonen@tut.fi
5. Luento: Rinnakkaisuus ja reaaliaika Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Perusongelmat Jako prosesseihin Reaaliaika Rinnakkaisuus Rinnakkaisuus tarkoittaa tässä yhteydessä useamman kuin yhden
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Rinnakkaisuus Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 4. 2012 Sisältö 1 Rinnakkaisuusmalleja: säie ja prosessi 2
LisätiedotMonitorit -projekti Rinnakkaisohjelmointi
Monitorit -projekti Rinnakkaisohjelmointi 13.12.2006 Jaakko Louhio, Lari Sorvo Projektin tuloksia, kertaustehtäviä ja koodeja saa käyttää opetukseen yliopistolla vapaasti omalla vastuulla. 3. MONITORIT
LisätiedotGraafisen käyttöliittymän ohjelmointi Syksy 2013
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 10 Rinnakkaisuus käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Rinnakkaisuus ja käyttöliittymäohjelmointi
LisätiedotRinnakkaisohjelmointi, Syksy 2006
Rinnakkaisohjelmointi, Syksy 2006 17.12.2006 Opintopiiri WTF Mika Holmström Paula Kemppi Janne Piippo Lasse Lukkari Javan semaforit 1. Menetelmän käyttötarkoitus ja sovellusalue Semaforin idea kehitettiin
Lisätiedot4. Luento: Prosessit ja säikeets. Tommi Mikkonen, tommi.mikkonen@tut.fi
4. Luento: Prosessit ja säikeets Tommi Mikkonen, tommi.mikkonen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia
LisätiedotKäyttöjärjestelmät: poissulkeminen ja synkronointi
Käyttöjärjestelmät: poissulkeminen ja synkronointi Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet
LisätiedotRINNAKKAINEN OHJELMOINTI A,
RINNAKKAINEN OHJELMOINTI 815301A, 18.6.2005 1. Vastaa lyhyesti (2p kustakin): a) Mitkä ovat rinnakkaisen ohjelman oikeellisuuskriteerit? b) Mitä tarkoittaa laiska säikeen luominen? c) Mitä ovat kohtaaminen
LisätiedotMonitorit. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5
Monitorit Monitori Synkronointimenetelmiä Esimerkkejä Andrews 5.1-5.2, Stallings 5.5 Tavoite Minimoi virhemahdollisuuksia poissulkeminen ohjelmoijan vastuulla P():t ja V():t siellä, täällä ja tuolla -
LisätiedotMonitorit. Tavoite. Monitori Synkronointimenetelmiä Esimerkkejä. Andrews , Stallings 5.5. Minimoi virhemahdollisuuksia
Monitorit Monitori Synkronointimenetelmiä Esimerkkejä Andrews 5.1-5.2, Stallings 5.5 Tavoite Minimoi virhemahdollisuuksia poissulkeminen ohjelmoijan vastuulla P():t ja V():t siellä, täällä ja tuolla -
Lisätiedot2 Konekieli, aliohjelmat, keskeytykset
ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä
LisätiedotJaana Diakite Projekti 1 JAVA-Monitorit 1(13) Rinnakkaisohjelmointi Anu Uusitalo
Jaana Diakite Projekti 1 JAVA-Monitorit 1(13) JAVA MONITORIT Monitorien käyttötarkoitus ja sovellusalue Monitorit ovat Java ohjelmointikielen sisäänrakennettu mekanismi säikeiden rinnakkaisuuden hallintaan.
LisätiedotJAVA 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ätiedotHOJ Säikeet (Java) Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/55
HOJ Säikeet (Java) Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/55 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)
LisätiedotJavan semaforit. Joel Rybicki, Aleksi Nur mi, Jara Uitto. Helsingin yliopisto
Javan semaforit Joel Rybicki, Aleksi Nur mi, Jara Uitto 16.12.2007 Helsingin yliopisto Tietojenkäsittelytieteen laitos Tätä ohjetta saa käyttää ja jatkokehittää opetustarkoituksiin. Javan semaforitoteutus
LisätiedotOppimistavoitteet kurssilla Rinnakkaisohjelmointi
17.5.2006 1/5 Oppimistavoitteet kurssilla Rinnakkaisohjelmointi Rinnakkaisuus ja rinnakkaisuuden soveltaminen tietojenkäsittelyjärjestelmissä Kurssin Tietokoneen toiminta perusteella ymmärtää, miten ohjelman
LisätiedotRajapinta (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ätiedotOliosuunnitteluesimerkki: 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ätiedot19/20: Ikkuna olio-ohjelmoinnin maailmaan
Ohjelmointi 1 / syksy 2007 19/20: Ikkuna olio-ohjelmoinnin maailmaan Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007
LisätiedotHajautettujen sovellusten muodostamistekniikat (Java-kielellä), TKO_2014 Aineopinnot, syksy 2009 Turun yliopisto / Tietotekniikka
Hajautettujen sovellusten muodostamistekniikat (Java-kielellä), TKO_2014 Aineopinnot, syksy 2009 Turun yliopisto / Tietotekniikka c Ville Leppänen This page is intentionally left blank. Esipuhe Tämän oppimateriaalin
Lisätiedot4. Olio-ohjelmoinista lyhyesti 4.1
4. Olio-ohjelmoinista lyhyesti 4.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 4.2 Yleistä Olio-ohjelmointia käsitellään hyvin
LisätiedotRinnakkaistietokoneet luento S
Rinnakkaistietokoneet luento 5 521475S Silmukalliset ohjelmat Silmukat joissa ei ole riippuvuussyklejä voidaan vektoroida eli suorittaa silmukan vektorointi Jokainen yksittäinen käsky silmukan rungossa
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Poikkeukset Poikkeuksella tarkoitetaan yllättävää ajonaikaista tilannetta, joka
LisätiedotT Henkilökohtainen harjoitus: FASTAXON
T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä
LisätiedotYksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }
Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä
812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus
Lisätiedot2. Olio-ohjelmoinista lyhyesti 2.1
2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin
LisätiedotArto Salminen,
4. Luento: Prosessit ja säikeet Arto Salminen, arto.salminen@tut.fi Agenda Prosessi Säikeet Keskeytykset Keskeytyskäsittely Käyttöjärjestelmäkutsut Prosessielementti Prosessin hallinta Suunnittelunäkökohtia
LisätiedotSisä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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
LisätiedotTavoite. Monitorit. Monitori Hoare 1974. Monitori. Minimoi virhemahdollisuuksia. Monitori Synkronointimenetelmiä Esimerkkejä
Tavoite Monitorit Andrews 5.1-5.2, Stallings 5.5 Monitori Synkronointimenetelmiä Esimerkkejä Minimoi virhemahdollisuuksia poissulkeminen ohjelmoijan vastuulla P():t ja V():t siellä, täällä ja tuolla -
LisätiedotOhjelmointi 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ätiedot10 Lock Lock-lause
10 Lock Avainsanan lock (Lock keyword) avulla voidaan toteuttaa prosessien ja säikeiden välisessä keskinäisessä kommunikoinnissa käytettäviä synkronointi- ja poissuljentarakenteita. Tämän niin sanotun
LisätiedotOhjelmoinnin 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ätiedotSemaforit Javassa. Mari Kononow, Eveliina Mattila, Sindi Poikolainen HELSINGIN YLIOPISTO
Semaforit Javassa Mari Kononow, Eveliina Mattila, Sindi Poikolainen 13.12.2008 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ohjetta saa käyttää opetukseen ja jatkokehitykseen Johdanto Semaforeja
LisätiedotOlion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();
Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio
LisätiedotSamanaikaisuuden hallinta
Samanaikaisuuden hallinta TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 20. maaliskuuta 2007 Samanaikaisuus engl. concurrency useampaa
Lisätiedot812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä
2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa
LisätiedotOngelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?
Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,
Lisätiedot4. 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ätiedot815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 VIII Poikkeusten ja tapahtumien käsittely Sisältö 1. Poikkeusten käsittelyn käsitteitä ja suunnittelukriteerejä 2. Poikkeusten käsittely C++:ssa 3. Poikkeusten
LisätiedotLohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3
16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut
LisätiedotOSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa. Sisältöä. Poissulkeminen. Halutut ominaisuudet 2-1. Rinnakkaiset, atomiset operaatiot
Sisältöä OSA I: Poissulkeminen ja nti Semaforit ja rinnakkaisuuden hallinta Yhteisten muuttujien käyttö Prosessit samassa koneessa Lukkiutuminen Monitorit 2-1 2-2 Poissulkeminen ja nti Rinnakkaiset, atomiset
LisätiedotOhjelmoinnin 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ätiedotTIES542 kevät 2009 Yhteismuistisamanaikaisuus
TIES542 kevät 2009 Yhteismuistisamanaikaisuus Antti-Juhani Kaijanaho 9. maaliskuuta 2009 Tehtävät ovat samanaikaiset (engl. concurrent), jos ne etenevät yhtä aikaa samalla toistensa kanssa kommunikoiden.
LisätiedotJAVA-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ätiedotJReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002
JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä
LisätiedotRinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi
Rinnakkaisuuden hyväksikäyttö peleissä Paula Kemppi 24.4.2008 Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli
LisätiedotPRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER
PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER Group 16 Ville Laatu Henri Myllyoja - i SISÄLLYSLUETTELO 1. DEBUGGERI YLEISESTI... II 1.1 Debuggerin käyttämien... ii 1.2 Debuggerin käynnistäminen... ii
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi
Lisätiedot812341A 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ätiedotMetodit. 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ätiedotSeminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen
Seminaari: Keskusmuistitietokannat Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen Sisältö Johdanto Esiteltävien menetelmien taustoja Hajautetun tietokannan spekuloiva samanaikaisuuden
LisätiedotPalvelut. Sulautetut järjestelmät Luku 2 Sivu 1 (??) Sulautetut käyttöjärjestelmät
Sulautetut järjestelmät Luku 2 Sivu 1 (??) Palvelut Käyttöjärjestelmän tehtävänä on tarjota ohjelmoijalla erilaisia palveluita Tyypillisin palvelu, jota sulautetut käyttöjärjestelmät tarjoavat on prosessien
LisätiedotRINNAKKAISTA OHJELMOINTIA JAVA-KIELELLÄ
RINNAKKAISTA OHJELMOINTIA JAVA-KIELELLÄ Tässä dokumentissa esitellään Java-kielisen rinnakkaisen ohjelmoinnin perusteet kurssin 812315A Ohjelmiston rakentaminen tarpeisiin. Aluksi käsitellään lyhyesti
LisätiedotLohkot. 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ätiedotSokkelon 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ätiedot815338A 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ätiedot12. Javan toistorakenteet 12.1
12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")
Lisätiedot8. 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ätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite
2015 syksy 2. vsk VII Suunnittelumallit Adapter ja Composite Sisältö 1. Johdanto rakennemalleihin 2. Adapter (Sovitin) 3. Composite (Rekursiokooste) Suunnittelumallit Adapter ja Composite 2 VII.1 Johdanto
LisätiedotTransaktiot - kertausta
Hajautettujen järjestelmien perusteet Transaktiot - kertausta Distributed Systems, Concepts and Design, George Coulouris, Jean Dollimore, Tim Kindberg Addison-Wesley 1988,1994. Pearson Education 2001 ISBN:
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton
2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.
LisätiedotSisä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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 3.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.3.2010 1 / 44 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
LisätiedotOhjelmistojen mallintaminen, sekvenssikaaviot
582104 - Ohjelmistojen mallintaminen, sekvenssikaaviot 1 Vuorovaikutussuunnittelu Oliojärjestelmän toiminta perustuu olioiden vuorovaikutukseen ja yhteistyöhön Olioiden yhteistyö toteutuu operaatioiden
LisätiedotOhjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:
1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri
LisätiedotJava-kielen perusteita
Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja
LisätiedotVastuuopettaja. Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2015. Olio-ohjelmoinnin perusteet (5 op) Tavoitteena
Kurssiesite Olio-ohjelmoinnin perusteet Kevät 2015 Jorma Laurikkala Tietojenkäsittelytieteet Informaatiotieteiden yksikkö Tampereen yliopisto Vastuuopettaja Jorma Laurikkala, yliopistonlehtori. Luennot,
LisätiedotOSA I: Yhteisten muuttujien käyttö. Prosessit samassa koneessa. Rio 2004 / Auvo Häkkinen 2-1
OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa 2-1 Sisältöä Poissulkeminen ja synkronointi Semaforit ja rinnakkaisuuden hallinta Lukkiutuminen Monitorit 2-2 Poissulkeminen ja synkronointi
LisätiedotOSA I: Yhteisten muuttujien käyttö. Sisältöä. Prosessit samassa koneessa. Poissulkeminen ja synkronointi. Semaforit ja rinnakkaisuuden hallinta
OSA I: Yhteisten muuttujien käyttö Prosessit samassa koneessa 2-1 Sisältöä Poissulkeminen ja synkronointi Semaforit ja rinnakkaisuuden hallinta Lukkiutuminen Monitorit 2-2 Poissulkeminen ja synkronointi
Lisätiedot5. 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ätiedot11. 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 4.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 4.3.2009 1 / 35 Tiedostot Tiedostojen käsittelyä tarvitaan esimerkiksi seuraavissa tilanteissa: Ohjelman käsittelemiä
LisätiedotChapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen
Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka
Lisätiedot12. Javan toistorakenteet 12.1
12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu
LisätiedotSisä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ätiedot1 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ätiedotOhjelmoinnin 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
Lisätiedot11/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ätiedot1. 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ätiedotOhjelmoinnin peruskurssien laaja oppimäärä
Ohjelmoinnin peruskurssien laaja oppimäärä Luento 10: Aliohjelmat, foreign function interface Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 25. 3. 2013 Sisältö 1 Aliohjelmien käyttäminen
LisätiedotTietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä
Tietojenkäsittelyn perusteet 2 Lisää käyttöjärjestelmistä 2011-02-09 Leena Ikonen 1 Systeemiohjelmat Systeemiohjelmiin kuuluvat Kääntäjät ja tulkit (+debuggerit) Käyttöjärjestelmä Linkittäjät Lataajat
LisätiedotJava-kielen perusteita
Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat
LisätiedotRekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä
Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,
LisätiedotJAVA-OHJELMOINTI 3 op A274615
JAVA-OHJELMOINTI 3 op A274615 JFC & Swing, Look & Feel, Events Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,
LisätiedotOhjelmoinnin 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ätiedotOhjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka
LisätiedotPong-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