TAMPEREEN TEKNILLINEN YLIOPISTO Tietotekniikan osasto. ANTTI VIRTANEN Visuaalinen tulkki ohjelmoinnin opetukseen Diplomityö

Koko: px
Aloita esitys sivulta:

Download "TAMPEREEN TEKNILLINEN YLIOPISTO Tietotekniikan osasto. ANTTI VIRTANEN Visuaalinen tulkki ohjelmoinnin opetukseen Diplomityö"

Transkriptio

1 TAMPEREEN TEKNILLINEN YLIOPISTO Tietotekniikan osasto ANTTI VIRTANEN Visuaalinen tulkki ohjelmoinnin opetukseen Diplomityö Aihe hyväksytty osastoneuvoston kokouksessa Tarkastajat: Prof. Hannu-Matti Järvinen (TTY) DI Essi Lahtinen (TTY) 1

2 Alkulause Haluan kiittää työn ohjaajia professori Hannu-Matti Järvistä ja tutkija Essi Lahtista, jotka pysyivät kärsivällisinä tekemisen kangerrellassa. Molemmat jaksoivat korjata kirjoitusvirheitäni ja antoivat hedelmällistä palautetta sisällöstä ahkerasti. Lämpimät kiitokset kaikille työn tekemisessä kannustaneille ja auttaneille ystäville ja kollegoille. Erityiskiitokset Mira Tammiselle, Mika Valtolalle sekä #titeplanets IRCkeskustelukanavan väelle, jotka saivat suurimman osan työhön liittyvästä tilityksestä. Tampereella Antti Virtanen Insinöörinkatu 68 B

3 Sisällysluettelo 1 Johdanto Ohjelmien visualisointi TTY:n perusohjelmoinnin opetus Tietokonepohjaisen visualisoinnin tarve Visualisoinnin hyödyt Visualisoinnin käyttöönoton ongelmat Hyvän visualisointityökalun ominaisuudet Visualisoinnin hyötyjen arviointi Olemassaolevat järjestelmät Tango, X-Tango, Polka Trakla, Trakla Blue, BlueJ Jeliot-perhe SDE (SIMPLESEM) Yhteenveto Lausekielten jäsentäminen Formaalit kielet ja kielioppi Vasemmalle rekursiivisuus Säännöllisten kielten luokittelu (LALR, LR, LL) Kurkistus Lausekielten määrittely Jäsennyspuu Yksikäsitteisyys Presedenssi ja sitovuus Jäsennystekniikat Lausekielten jäsentäminen käytännössä Selaaja Jäsentäjä Välikieli Postfix Yleisassembler Tavukoodi

4 3.4.4 Puurakenne (AST) Tulkit ja virtuaalikoneet Kääntämisen ja tulkkaamisen ero Virtuaalikone Tulkkaamisen edut Tulkkien toteuttaminen Symbolitulkin perusrakenne Käskykanta Puurakenne (AST) tulkin välikielenä Tulkkaamisen nopeus Konekielelle kääntäminen tulkissa Muistimalli Automaattinen roskienkeruu Symbolitaulu Aktivaatiopino Ajonaikaiset semanttiset tarkistukset VIP visualisaattorin toteutus Perusrakenne Käytetyt apukirjastot Ongelmat CUP:n kanssa Välikieli Suoritusaskel Kääntäjä Staattiset semanttiset tarkistukset Profiloija Testaus Loki Regressiotestaus Käyttöliittymä Muuttujien ja funktiokutsujen esittäminen Hallintapainikkeet Visualisointien tekeminen Ohjekommentit

5 5.10 Koodieditori Lausekkeiden evaluoinnin esittäminen Tulkki Tulkkialgoritmi Dynaamiset semanttiset tarkistukset Symbolitaulu Aktivaatiopino Muisti Muuttujien toteutus VIP:n ohjelmointikieli C Tyypitys ja tietotyypit Ominaisuuksia, joita ei ole toteutettu Tiedon luku ja kirjoitus Funktiot Lauseet Jatkokehitysajatuksia Räätälöinti Kielen muokkaaminen Välikielen esittäminen Muisti-ikkuna Uudet C-- ominaisuudet Askelten rajoittaminen Undo-toiminto Käyttöliittymä C++:n STL-standardikirjaston toteuttaminen Yhteenveto Lähdeluettelo...63 Liite 1 Selaajan JFlex-tiedosto Liite 2 Jäsentäjän CUP-tiedosto 5

6 TAMPEREEN TEKNILLINEN YLIOPISTO Tietotekniikan osasto Ohjelmistotekniikka VIRTANEN, ANTTI: Visuaalinen tulkki ohjelmoinnin opetukseen Diplomityö, 51 s., 21 liites. Tarkastajat: prof. Hannu-Matti Järvinen, tutkija Essi Lahtinen Rahoittajat: TTY, Codewitz/Minerva, Virtuaali-yliopisto. Toukokuu 2005 Avainsanat: tulkki, C++, visualisointi, opetus Ohjelmien visualisointia on tutkittu paljon ja visualisointiin on kehitetty erilaisia työkaluja. Opetuskäyttössä erityisesti tietorakenteiden ja algoritmien visualisointi on osoittautunut hyödylliseksi. Oppikirjoissa esitetään usein ohjelmien toimintaa kuvien ja symbolien avulla esimerkiksi piirtämällä nuolia kuvaamaan osoittimia. Tässä työssä toteutettiin visuaalinen tulkki C++-kielen osajoukolle ohjelmoinnin peruskurssin tarpeisiin. Toteutettu tulkki visualisoi ohjelman tilan ja esittää suorituksen etenemisen askel kerrallaan. Tulkki on suunniteltu ohjelmoinnin perusopetukseen, joten tehokkuuteen ei ole kiinnitetty erityistä huomiota. C++-kielen perusrakenteet toteutettiin työn puitteissa, mutta mallit, oliot ja poikkeukset jätettiin toteuttamatta. Vastaavia järjestelmiä on toteutettu muissa yliopistoissa, mutta mikään tutkituista vaihtehdoista ei soveltunut TTY:n käyttöön, joten tässä työssä toteutettiin kokonaan itse tehty visualisaattori. Erityistä huomiota kiinnitettiin helppokäyttöisyyteen sekä opiskelijan että opettajan näkökulmasta. Järjestelmän lähdekoodi on kokonaisuudessaan saatavilla ilmaiseksi ei-kaupalliseen käyttöön. Tulkki on toteutettu Java-applettina, joten sitä voi käyttää millä tahansa käyttöjärjestelmällä. WWW-palvelinta sijaan visualisointeja voidaan ajaa paikalliselta kovalevyltä selaimella. Tulkkia on käytetty TTY:llä perusohjelmoinnin opetuksessa ja uusien visualisointien luominen on osoittautunut helpoksi. Työkalun käytöstä on kerätty opiskelijapalautetta, joka on ollut melko neutraalia. Tulkin käyttö on ollut täysin vapaaehtoista, joten aineiston pohjalta on vaikea arvioida sen hyödyllisyyttä. 6

7 TAMPERE UNIVERSITY OF TECHNOLOGY Department of Computer Science, Institute of Software Systems VIRTANEN, ANTTI: Visual interpreter for learning programming Master of Science Thesis, 51 pages, 21 enclosure pages Examiner: Dr. Hannu-Matti Järvinen and Res. Essi Lahtinen May 2005 Keywords: interpreter, C++, visualization, learning Programming books often present the structure and behavior of programs using pictures and symbols. For example, arrows commonly present pointers. Consequently, there has been significant amount of research on visualizing programs and a variety of tools have been developed. A visual interpreter for a subset of C++ programming language was developed in this project. The interpreter visualizes the state of a given program and it's execution step by step. The interpreter has not been optimized for speed as the system was desigend for teaching introductory programming. The basic constructs of C++ were implemented but advanced features like templates, object oriented programming and exceptions were left out. Similar systems have been developed in other universities but all examined systems lacked some important features from our point of view. Thus, a completely new system was developed instead of tailoring an existing one. Ease of use, from both student's and teacher's point of view, was considered especially important. The full source code of the system is available on request for non-commercial use. Being a Java-applet, the interpreter is available on virtually all platforms. The system is still a stand-alone program and can be used without a WWW server. The interpreter has been used on Tampere University of Technology for introductory programming course and creating new visualizations has proven to be easy. Survey was made among the students and generally the feedback was neutral. As using the system has been voluntary it is difficult to estimate whether the visualization had any impact on the students. 7

8 Termit ja lyhenteet Työssä käytettyjen termien ja lyhenteiden selityksiä. Mikäli työssä on haluttu viitata tiettyyn versioon esimerkiksi JDK:sta, versio on mainittu erikseen. lyhenne selitys viite Java Java-ohjelmointikieli yleensä AWT Abstract Window Toolkit, Javan alkuperäinen käyttöliittymäkirjasto JDK Java Developer's Kit, Sun Microsystemsin julkaisema Javan kehitysympäristö Swing Javan nykyinen käyttöliittymäkirjasto JIT Just-In-Time, (virtuaalikoneissa) konekielelle kääntäminen juuri ennen operaation suorittamista WWW World Wide Web HTTP HyperText Transfer Protocol CGI Common Gateway Interface MVC Model-View-Controller, arkkitehtuurimalli TTY Tampereen Teknillinen Yliopisto VIP Visual InterPreter Perl Perl-ohjelmointikieli LR Left-to-right, Right-most derivation LALR Left-to-right, Right-most derivation AST Abstract Syntax Tree, ohjelmaa esittävä puurakenne BNF Backus-Naur Form 8

9 lyhenne selitys viite CFG Context-Free Grammar UML Unified Modeling Language ITiCSE Information Technology in Computer Science Education STL Standard Template Library HTML HyperText Mark-up Language ACM Association for Computing Machinery SIGCSE The ACM Special Interest Group on Computer Science VM Virtual Machine, virtuaalikone SDE Simplesem Development Environment, visualisointiympäristö ja virtuaalikone Simplesemarkkitehtuurille TRAKLA Teknillisessä Korkeakoulussa kehitetty järjestelmä tietorakententeiden ja algoritmien visualisointiin 9

10 1 Johdanto Ohjelmien, tietorakenteiden ja algoritmien koneellista visualisointia ja opettamista on tutkittu kauan. Tutkimus ja kehitystyö on eriytynyt käsittelemään ohjelmien eri piirteiden visualisointia ohjelmistokehityksessä ja ohjelmoinnin opetuksessa. Ohjelmoinnin eri osa-alueille on havaittu hedelmälliseksi käyttää erilaisia visualisointeja: erityisesti tietorakenteet ja algoritmit esitetään usein abstraktilla tasolla nuolien, laatikoiden yms. avulla. Laajasta tutkimuksesta huolimatta visualisoinnin hyödyllisyydestä oppimisen kannalta ei ole selvyyttä. Yleisesti kuitenkin oletetaan visualisoinnista olevan hyötyä oppimisen kannalta. Interaktiivisuus on nähty olennaiseksi itseopiskeluun ja opetuksen tueksi tarkoitetuissa visualisoinneissa. Mikäli opiskelija voi kokeilla eri lähestymistapoja ja ratkaisuja, ongelman eri aspektien ymmärtäminen on syvällisempää. Vapaan interaktiivisuuden saavuttaminen ohjelmien visualisoinnissa edellyttää mahdollisuutta muokata visualisoitavaa ohjelmakoodia ja siten jonkinlaisen tulkin toteuttamista. Ohjelmointikielten tulkin toteuttaminen mielivaltaiselle ohjelmointikielelle on kääntäjän toteuttamiselle läheinen ongelma. Kuten kääntäjän, tulkin täytyy jäsentää lähdekoodi, suorittaa sille syntaksin ja semantiikan tarkistuksia ja muodostaa ohjelmasta välikielinen versio. Konekielikoodin generoinnin sijaan tulkki voi toteuttaa kielen operaatiot korkean tason kielellä, jolla tulkki itse on kirjoitettu. Koska tulkkaaminen hidastaa ohjelman suoritusta, erityistä huomiota tulkkien tutkimuksessa on kiinnitetty tehokkuuteen. Tehokkaiden tulkkien toteuttaminen on kuitenkin erittäin monimutkaista. Tämän diplomityön tavoitteena oli rakentaa erityisesti ohjelmoinnin perusopetukseen soveltuva visuaalinen tulkki, jossa yksinkertaisten ohjelmien ajonaikaista toimintaa voi tarkastella yksityiskohtaisella tasolla. Tavoitteena oli, että työssä kehitetty visuaalinen tulkki (Visual InterPreter, VIP) tukisi mahdollisimman hyvin ohjelmoinnin perusopetusta TTY:n kurssilla Laaja 10

11 ohjelmointi. Koska tulkkia oli tarkoitus käyttää perusohjelmoinnin opetuksessa, tulkilla suoritettavat koodiesimerkit olivat yksinkertaisia. Näin ollen tulkin tehokkuus oli toissijaista ylläpidettävyyden ja selkeyden rinnalla. Jotta tulkin käyttö olisi mahdollisimman helppoa uusien esimerkkien tuottamisen piti vaatia mahdollisimman vähän vaivaa opettajalta, eikä työkalun asentaminen ja käyttöönotto saanut olla työlästä. VIP:n simuloima ohjelmointikieli on C++:n aito osajoukko, jolle on annettu nimi C--. C-- sisältää C++:n perusrakenteet, mutta olio-ohjelmointi, vuot ja poikkeukset on jätetty toteuttamatta. Luvussa 2 luodaan katsaus muihin ohjelmoinnin opetukseen tarkoitettuihin visualisointiympäristöihin ja määritellään perusohjelmoinnin opetuksen kannalta olennaisia ominaisuuksia sekä käsitellään työkalujen arviointikriteereitä. Lausekielten jäsentämisen teoriaa, tulkkien ja kääntäjien eroja sekä tulkkien toteutustekniikoita käsitellään luvuissa 3-5. Tulkkien ja virtuaalikoneiden tehokkuusoptimointia ja lausekielten erityiskysymyksiä ei käsitellä. Luvussa 6 esitetään varsinainen toteutettu visualisointiympäristö. Luvut 7 ja 8 käsittelevät työn onnistumista ja jatkokehitysajatuksia. 11

12 2 Ohjelmien visualisointi Ohjelmointikielten visualisointia opetustarkoituksiin on tutkittu ja kehitetty ainakin 1960-luvulta alkaen [Knowlton 1966]. Graafinen visualisointi on luonnollinen tapa opettaa algoritmeja ja ohjelmointikielten semantiikkaa. Ohjelmoinnin opetuksessa eri kursseilla on erilaiset lähtötasot, tavoitteet ja siten erilaiset tarpeet visualisoinnille. Algoritmien ja tietorakenteiden visualisoinnissa käytetään erilaista asioiden esitystapaa kuin perusohjelmoinnissa. Myös samalla kurssilla voidaan joitakin asioita esittää hyvin abstraktilla tasolla ja toisia hyvin yksityiskohtaisella. Tässä luvussa arvioidaan ja esitellään olemassa olevia visualisointijärjestelmiä, käsitellään TTY:n perusohjelmoinnin opetuksen ongelmia ja määritellään perusteet visualisointityökalujen arviointiin. 2.1 TTY:n perusohjelmoinnin opetus TTY:n perusohjelmointikursseilla on vuosittain noin tuhat opiskelijaa. Näin suuri opiskelijamäärä on itsessään merkittävä haaste kurssien järjestelyille. Opiskelijoiden tarve ohjaukselle on hyvin yksilöllistä, koska osalla opiskelijoista on jo alan työkokemusta opiskelut aloittaessaan. Osa taas ei tiedä ohjelmoinnista ja tietokoneiden toiminnasta mitään. Peruskoulu ja lukio eivät automaattisesti luo riittäviä valmiuksia ohjelmoinnissa tarvittavien abstraktien käsitteiden hahmottamiseen. Matemaattisten formalismien sijaan ohjelmoinnin peruskäsitteiden konkretisointi visualisoimalla ja esimerkeillä onkin oleellinen osa opetusta. TTY:llä on käytetty menestyksellisesti ohjelmoinnin opetuksessa harjoitustöiden automaattiseen tarkistamiseen ja arviointiin Ceilidh- ja Style++-järjestelmiä, jotka arvioivat ohjelmien toteutuksen oikeellisuutta ja ohjelmointityyliä. Automaattitarkistus antaa opiskelijalle välittömästi palautetta, minkä jälkeen kurssihenkilökunta tarkastaa manuaalisesti hyväksytysti palautetut, toimivat ohjelmat. Automaattitarkistimet eivät kuitenkaan yksin auta oppimaan ohjelmointia, eivätkä ne voi täysin korvata opettajia. 12

13 Täysin hyödyttömiä automaattiset tarkistimet eivät oppimisen kannalta kuitenkaan ole. Automaattisen tyylianalysaattorin käyttö kursseilla pakottaa opiskelijat lukemaan ja noudattamaan Ohjelmistotekniikan laitoksen C++tyyliohjetta [Rintala & Jokinen 2004], mikä on selvästi parantanut harjoitustöiden rakennetta ja luettavuutta. 2.2 Tietokonepohjaisen visualisoinnin tarve Algoritmien ja ohjelmien toimintaa voidaan simuloida paperin ja kynän avulla, mutta tämä on usein työlästä ja siinä on helppo tehdä virheitä. Hyvin tehdyssä tietokonepohjaisessa simuloinnissa ohjelman toiminnan seuraaminen on huomattavasti helpompaa. Ensisijaisesti visualisoinnit tukevat itsenäistä opiskelua ja opitun asian kertaamista. Automaattisilla visualisoinneilla on myös mahdollista esittää asioita, joiden simuloiminen manuaalisesti olisi käytännössä mahdotonta. Esimerkiksi lajittelualgoritmien toimintaa isoilla aineistoilla on hyvin näppärää esittää graafisesti simulaattorilla. 2.3 Visualisoinnin hyödyt Visualisointia on tutkittu kauan ja sitä pidetään hyödyllisenä, mutta hyödyn arviointi ja toimivan visualisoinnin suunnittelu ovat kiistanalaisia kysymyksiä, joista on monia eri näkemyksiä. ITiCSE:n vuonna 2002 teettämä tutkimus [Almstrum et al. 2002] esittää pääteesinään, että edistääkseen oppimista visualisoinnin pitää mahdollistaa kokeilu ja aktiivinen oppiminen (käännetty englannista) Visualisoinnin käyttöönoton ongelmat Opettajien mielestä viisi tärkeintä ongelmatekijää visualisoinnin käytössä ohjelmistotekniikan opetukseen olivat SIGCSE:n vuonna 2003 tehdyn kyselyn mukaan [Naps et al. 2003]: 13

14 hyvien esimerkkien etsimiseen kuluva aika uuden työkalun käytön opetteluun kuluva aika uusien visualisointien tekemiseen kuluva aika hyvien kehitystyökalujen puute visualisoinnin integroimiseen kurssin käytäntöihin kuluva aika. Opetushenkilökunnan näkökulmasta työkalun asentamiseen ja visualisointien rakentamiseen kuluva aika on selvästi kriittinen tekijä, joten hyvän työkalun tulee olla mahdollisimman helppokäyttöinen ja helposti asennettava Hyvän visualisointityökalun ominaisuudet Visualisointityökaluilla on aina kaksi käyttäjäryhmää, opettajat ja oppilaat, joilla on hieman erilaiset arviointikriteerit työkalun hyödyllisyydelle. Kuten jo aiemmin todettiin, opettajien näkökulmasta aika ja helppokäyttöisyys ovat kriittisiä tekijöitä. Oppilaan näkökulmasta visualisointien kehittämiseen ja etsimiseen kuluva työmäärä on irrelevanttia. ITiCSE:n tutkimuksessa [Almstrum et al. 2002] määritellään seuraavia ominaisuuksia hyvälle visualsointityökalulle: 1) Visualisoinnin tulkintaohjeet. Opiskelijalle on tarjottava selkeä kuvaus siitä, miten eri asiat visualisoinnissa esitetään. 2) Asioiden oikea esitystaso ja esitystapa. Opiskelijalle pitää esittää asiat riittävällä tarkkuudella ja sopivalla abstraktiotasolla, jotta olennainen ei huku yksityiskohtien sekaan. 3) Useiden eri näkymien tarjoaminen. Ohjelman suoritusta ja toimintaa on hyvä pystyä tarkkailemaan mahdollisimman monesta eri näkökulmasta. Näkökulmaa on voitava vaihtaa kesken ohjelman suorituksen. 14

15 4) Tehokkuusanalyysin esittäminen. Algoritmien tehokkuuden analysointi on usein hyödyllinen ja olennainen osa niiden ymmärtämistä. 5) Ohjelman suoritushistorian esittäminen. Algoritmien toiminnan ymmärtämistä helpottaa, jos aiemmin suoritettujen operaatioiden suoritusjärjestys voidaan nähdä. 6) Joustavien suoritusmahdollisuuksien tarjoaminen. Ohjelman tai algoritmin toimintaa pitäisi pystyä kontrolloimaan ja suoritusaskelia peruuttamaan. 7) Mahdollisuus kokeilla ja tutkia eri vaihtoehtoja interaktiivisesti. Staattisen visualisoinnin sijaan opiskelijalla tulisi olla mahdollisuus muokata algoritmia ja kokeilla eri vaihtoehtoja mahdollisimman vapaasti. 8) Mahdollisuus kokeilla eri syötteitä. Ohjelman syötettä ei tulisi kiinnittää, vaan opiskelijalle pitää antaa mahdollisuus omien mielivaltaisten syötteiden käyttämiseen. 9) Dynaamisten kysymysten esittäminen. Visualisoinnin lisäksi opiskelijalle olisi hyvä esittää kysymyksiä ohjelmasta. Erityisesti kysymykset, jotka pyytävät opiskelijaa ennustamaan ohjelman tulevaa käyttäytymistä, ovat oppimisen kannalta hyödyllisiä. 10)Automaattisen palautteen antaminen. Hyvä visualisointi antaa ajonaikaisesti automaattista palautetta opiskelijan osaamisesta. 11)Selitysten integroiminen visualisointiin. Hyvä visualisointi ei pohjaudu pelkästään asioiden esittämiseen graafisesti, vaan opettajan tulee voida liittää visualisointiin erillisiä selittäviä tekstejä. Käytännössä kaikki menestyneet visualisointityökalut ohjelmoinnin opetuksessa noudattavat näitä perusperiaatteita. Näiden periaatteiden noudattaminen käytännössä edellyttää visualisoinnin toteuttamista jonkinlaisen tulkin avulla, mikä tekee hyvän visualisointityökalun toteuttamisesta haastavaa. 15

16 2.3.3 Visualisoinnin hyötyjen arviointi Aiemmin todettiin visualisoinnin hyötyjen arvioinnin olevan hankalaa ja saatujen tulosten ristiriitaisia. Hyötyjen arviointia varten olisi hyvä kerätä ainakin seuraavia tietoja visualisointityökalun käytöstä [Naps et al. 2003]: opiskelijoiden tarkkailu työkalun käytön yhteydessä työkalun käyttöön kulunut aika opiskelijoille tehdyt kyselyt kollegoiden arviot työkalusta opiskelijoiden haastattelu. Näin kerätyn informaation analysointi ja kyselyjen suunnittelu on oma ongelmakenttänsä, eikä sen käsittely kuulu tämän diplomityön piiriin. Haastattelujen ja opiskelijoiden suoranaisen tarkkailun toteuttaminen on rahallisesti ja ajallisesti kallista ja hankalaa, joten sitä ei yleensä tehdä. Sen sijaan työkalun käyttöön kulunutta aikaa ja työkalun käyttöä voidaan tilastoida epäsuorasti minimaalisin kustannuksin, mikäli työkalu mahdollistaa käyttöä koskevien tietojen keräämisen näkymättömästi. 2.4 Olemassaolevat järjestelmät Tässä kohdassa luodaan lyhyt katsaus olemassaoleviin visualisointijärjestelmiin. Katsaus ei ole kattava, vaan esittää poikkileikkauksen erilaisista lähestymistavoista visualisointiin ohjelmoinnin opetuksessa. Järjestelmien yksityiskohtiin ei mennä Tango, X-Tango, Polka Tango on 1993-kehitetty visualisointiympäristö algoritmien visualisointiin. X- Tango on X-Window toteutus Tangosta ja Polka on myöhemmin tehty Javatoteutus. 16

17 Tango on tarkoitettu 2-ulotteisten algoritmianimaatioiden tekoon. Animaatiot rakennetaan Tangon omalla ohjelmointikielellä, jonka jälkeen niitä voidaan askeltaa ja ajaa Tangolla. Tangon ohjelmointikieli tarjoaa yksinkertaiset grafiikkaprimitiivit, kuten laatikon ja ympyrän, sekä rakenteita näiden liikuttamiseen ja manipulointiin [Hartley 1994] Trakla, Trakla2 Trakla on Teknillisessä korkeakoulussa kehitetty järjestelmä tietorakenteiden ja algoritmien opettamiseen. Jatkokehitysversiot Matrix ja Trakla2 osaavat esittää graafisesti algoritmeja ja perustietorakenteita sekä sisältävät tarvittavat työkalut erilaisten visualisointien ja testien rakentamiseen. Trakla mahdollistaa interaktiivisten visualisointien tekemisen sekä erilaisten tehtävien tarjoamisen opiskelijalle. Trakla esittää algoritmien ja tietorakenteiden toiminnan abstraktilla tasolla, eikä visualisointia sidota minkään tietyn ohjelmointikielten rakenteisiin. Trakla2 kerää taustalla hyvin yksityiskohtaista tietoa opiskelijoiden toimenpiteistä työkalua käyttäessä. Kyseisistä tiedoista on jo nyt ollut selvää etua opiskelijoiden oppimisen analysoinnissa. [Korhonen et al. 2002] Blue, BlueJ Blue on erityisesti opetuskäyttöön suunniteltu oliokieli ja sen päälle rakennettu visuaalinen kehitysympäristö. Bluen kehittäminen ja tukeminen loppui vuonna BlueJ on Bluesta saatujen kokemusten pohjalta rakennettu Javaohjelmointikielen opetukseen tarkoitettu visuaalinen kehitysympäristö. BlueJ antaa opiskelijoille mahdollisuuden editoida ohjelman lähdekoodia, katsella oliohierarkiaa graafisesti ja tarjoaa debuggausmahdollisuudet jne. BlueJ:n käyttö käytännössä vaatii perinteisestä poikkeavaa lähestymistapaa ohjelmoinnin opetukseen siten, että ohjelmoinnin perusrakenteita lähdetään opettamaan rinnan olio-ohjelmoinnin kanssa [Kolling et al. 2003]. BlueJ on osoittautunut käytännössä erittäin hyväksi [Kolling et al. 2003], mutta kaikki opettajat eivät ole yhtä mieltä opetettavien asioiden jaksottamisesta eri kurssien kesken. TTY:llä käytetään perinteistä jakoa olio-ohjelmointia käsittelevään ja ohjelmoinnin 17

18 perusrakenteita käsittelevään kurssiin Jeliot-perhe Jeliot on joukko hieman toisistaan poikkeavia visualisointiympäristöjä. Jeliotin uusin versio, Jeliot 3 on Java-pohjainen ympäristö, jossa Java-ohjelmien toimintaa voidaan visualisoida dynaamisesti ja editoida niitä. Jeliot voidaan integroida osaksi BlueJ ympäristöä ja siinä on sama lähestymistapa ohjelmoinnin opetukseen: Kielenä on Java ja olio-ohjelmoinnista aletaan puhua heti alkeita opetettaessa. Jeliotin toimivuutta on tutkittu runsaasti. Helsingin yliopistolla havaittiin 1998, että Jeliotin käyttö ja hyöty jäi vähäiseksi [Lattu, Meisalo, Tarhio 1998]. Jeliotin uudemmat versiot ovat kuitenkin osoittautuneet hyödyllisemmiksi. Tulokset ovat kuitenkin edelleen ristiriitaisia Uusimman Joensuun yliopistolla tehdyn tutkimuksen mukaan noin 15% opiskelijoista koki hyötyvänsä Jeliotista, mutta noin 30% koki Jeliotin hidastavan opiskelua [Kannusmäki et al. 2002] SDE (SIMPLESEM) Simplesem on kuvitteellinen tietokonearkkitehtuuri, joka on esitelty kirjassa Programming Language Concepts [Ghezzi & Mehdi 1997]. SDE on Javapohjainen toteutus tästä arkkitehtuurista [Hauswirth et al. 1998]. Simplesemmäärittely kuvaa yksinkertaisen suorittimen ja sen käskykannan. SDE mahdollistaa Simplesem-ohjelman suorituksen seuraamisen konekielitasolla ja esittää ohjelman käytössä olevien rekisterien ja muistin visuaalisesti. SDE:n käyttö perusohjelmoinnin opetuksessa on hankalaa, koska opiskelijan on ymmärrettävä suorittimien yleiset toimintaperiaatteet, eikä korkean tason ohjelman toiminnan hahmottaminen suoritettavasta konekielisestä koodista ole helppoa. SDE ja Simplesem soveltuvat parhaiten konekielen, suorittimien ja matalan tason ohjelmoinnin opetukseen. 18

19 2.4.6 Yhteenveto Vaikka kaikissa järjestelmissä on omat vahvuutensa, yksikään niistä ei sellaisenaan soveltunut TTY:n tarpeisiin. Jeliotin ja BlueJ:n käyttö vaatii opetuskieleksi Javan, minkä lisäksi BlueJ vaatii erilaista lähestymistapaa kuin TTY:llä on valittu. Jeliotia ei myöskään ole tarkoitus laajentaa ymmärtämään muita ohjelmointikieliä [Levy, Ben-Ari, Uronen 2003]. Sekä Jeliot että BlueJ noudattavat aiemmin esitettyjä hyvien visualisointien suunnitteluperiaatteita esimerkillisesti. Tango:n ja SDE:n abstraktiotaso sopii huonosti perusohjelmointiin. SDE:n käyttö vaatisi prosessorin ja konekielen selittämistä opiskelijoille aivan alussa. Tango taas soveltuu parhaiten algoritmien ja abstraktien asioiden visualisointiin. Trakla on on hyvä järjestelmä tietorakenteiden ja algoritmien visualisointiin abstraktilla tasolla, mutta siitä on vain vähän hyötyä ohjelmoinnin perusopetuksessa. 19

20 3 Lausekielten jäsentäminen Tässä luvussa esitetään aluksi formaalien kielten teoriaa ja joukko määritelmiä, joita tarvitaan käytännön sovellusten ymmärtämiseksi. Myöhemmin esitetään lausekielten jäsentämisen yleisiä tekniikoita. Virheenkorjausta jäsentämisessä ei käsitellä. 3.1 Formaalit kielet ja kielioppi Formaali kieli koostuu joukosta aakkosia ja määrittelee mitkä kaikista aakkosista muodostettavissa olevista aakkosten jonoista (merkkijonoista) kuuluvat kieleen. Formaalin kielen aakkoset ovat abstrakteja symboleita, eikä niillä välttämättä ole suoraa kytkentää reaalimaailman aakkosiin ja merkkeihin. Mikäli kieli on äärellinen, se voidaan määritellä luettelemalla kaikki kieleen kuuluvat merkkijonot. Kieleen kuuluvia leksikaalialkioita, jakamattomia äärellisiä merkkijonoja, kutsutaan terminaaleiksi. Terminaaleista käytetään myös termejä terminaalisymboli ja päätemerkki. Äärettömiä merkkijonoja sisältäville kielille voidaan rakentaa määritelmä neljästä elementistä: Ei-terminaalien äärellinen joukko N. Terminaalien äärellinen joukko T, T N =. Aloitussymboli S, S N. Reduktiosääntöjen joukko P. Jokainen P:n alkio on muotoa u v, missä u ( N T )+ j a v ( N T)*. Mielivaltainen merkkijono kuuluu kieleen, jos ja vain jos se voidaan sääntöjen avulla redusoida aloitussymboliksi. 20

21 3.1.1 Vasemmalle rekursiivisuus Kieliopin sääntö on vasemmalle rekursiivinen, mikäli kaikki sen säännöt ovat muotoa: A t tai A tb, missä t on terminaalisymboli ja B ja A ovat ei-terminaaleja. Oikealle rekursiiviset kieliopit ovat myös mahdollisia, mutta usein lausekielet esitetään käytännön syistä vasemmalle rekursiivisina tai muunnetaan vasemmalle rekursiivisiksi. Vasemmalle rekursiivisuudesta käytetään myös ilmausta vasemmalle lineaarinen. Mikäli kielioppi on vasemmalle rekursiivinen tai oikealle rekursiivinen, kielioppi on säännöllinen. Säännöllinen kielioppi määrittelee säännöllisen kielen Säännöllisten kielten luokittelu (LALR, LR, LL) Säännölliset kielet voidaan jakaa eri luokkiin, joista LL, LR ja LALR ovat tärkeimmät. LR-kieliopilla määritelty kieli voidaan jäsentää lukemalla symbolijonoa vasemmalta oikealle (left-to-right), käyttämällä pelkistyssäännöistä valintatilanteissa aina oikeanpuolimmaisen osan luetusta redusoivaa sääntöä (rightmost reduction). LALR on LR:n osajoukko, joka on hyödyllinen kahdesta syystä: Käytännössä kaikki mielenkiintoiset LR-kieliopit ovat LALR-kielioppeja LALR-kieliopin jäsentäminen on huomattavasti helpompaa kuin LR-kielen. LL-kieliopit ovat tärkeä luokka, koska ne voidaan jäsentää tekniikalla, josta käytetään nimeä rekursiivinen laskeutuminen (recursive descent) tai kokoava jäsentäminen. Rekursiivinen laskeutuminen on erittäin yksinkertainen toteuttaa, mikäli jäsentäjä joudutaan tekemään ilman automaattityökaluja. 21

22 3.1.3 Kurkistus Sääntöjen jäsentäminen yksikäsitteisesti vaatii useimmiten vähintään yhden symbolin mittaisen ikkunan käsittelemättömään osaan symbolijonoa. Seuraavaksi tulevaa symbolia tutkimalla voidaan ratkaista joitakin muuten hankalia ristiriitatilanteita. Jäsennettävän symbolijonon esikatselusta käytetään nimitystä kurkistus (look-ahead englanninkielisessä materiaalissa). LR(k) tarkoittaa LR-kielioppia, jossa esikatselupuskurin koko on k symbolia. Vastaavasti käytetään merkintöjä LALR(k) ja LL(k). Erityisesti LALR(1) ja LR (1) ovat tärkeitä luokkia, koska näille tunnetaan tehokkaita jäsennystekniikoita, joita ei voida kuitenkaan soveltaa yleisesti LALR(k)-kielen jäsentämiseen Lausekielten määrittely Useimmat ohjelmointikielet voidaan esittää LR(1)-kielioppina [Backhouse 1979, sivu 172]. Matemaattisen määrittelyn sijaan lausekielen kielioppi esitetään yleensä BNF-notaatiolla, joka sallii muunmuassa loogisen TAI-operaation käytön. Usein terminaalit erotetaan ei-terminaaleista kirjoittamalla terminaalit isoilla kirjaimilla ja ei-terminaalit pienillä. Kuvassa 3.1 on esimerkki yksinkertaisesta lausekkeita kuvaavasta kieliopista. lauseke ::= tekijä tekijä + lauseke tekijä ::= termi termi * tekijä termi ::= MUUTTUJA VAKIO Kuva 3.1 Yksinkertainen kielioppi Jäsennyspuu Aiemmin esitetty riittää määrittelemään yksikäsitteisesti, mitkä merkkijonot kuuluvat kieleen ja mitkä eivät. Merkkijonoa tutkittaessa voidaan rakentaa jäsennyspuu, joka esittää kuinka kieliopin sääntöjä on käytetty. Jokaista käytettyä sääntöä kuvaa solmu, ja kunkin solmun lapsina ovat rekursiivisesti jäsennyksessä käytetyt säännöt. 22

23 3.1.6 Yksikäsitteisyys Kielioppi on yksikäsitteinen, mikäli jokaista laillista (kieleen kuuluvaa) merkkijonoa kohti on vain yksi jäsennyspuu. Kuvan 3.1 kielioppi on esitetty yksinkertaisemmassa muodossa kuvassa 3.2. Kuvan 3.2 kielioppi ei kuitenkaan ole yksikäsitteinen. termi ::= MUUTTUJA VAKIO lauseke ::= termi termi + lauseke termi * lauseke Kuva 3.2 Monikäsitteinen kielioppi Lause i = 2 * kuuluu molempiin kieliin, mutta kuvan 3.2 kieliopissa se voidaan tulkita joko muodossa i = (2 * 3) + 4 tai i = 2 * (3 + 4) Presedenssi ja sitovuus Presedenssi tarkoittaa operaattoreiden (sääntöjen) keskinäistä merkitsevyysjärjestystä. Mikäli kertolaskulle määritellään yhteenlaskua korkeampi presedenssi, se suoritetaan ensin, jolloin edellisen kappaleen kieliopista saadaan yksikäsitteinen. Sitovuus määrittelee suoritusjärjestyksen vasemmalta tai oikealta aloitettavaksi. Useimmiten lausekkeet sidotaan vasemmalle, mutta muun muassa potenssilasku sidotaan oikealle. Joissakin operaatiossa sitomissuunnalla ei ole merkitystä lopputuloksen kannalta (esimerkiksi yhteenlasku). Esimerkkikielioppiin voidaan lisätä vähennyslasku esimerkiksi muuttamalla lausekkeen määrittelevää sääntöä. lauseke ::= tekijä tekijä + termi tekijä - termi 23

4. Lausekielinen ohjelmointi 4.1

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

Lisätiedot

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä olevilla komponenteilla? Voisiko jollakin ohjelmointikielellä

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

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

Lisätiedot

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

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

Lisätiedot

11.4. Context-free kielet 1 / 17

11.4. Context-free kielet 1 / 17 11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä

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

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan

Lisätiedot

Uudelleenkäytön jako kahteen

Uudelleenkäytön jako kahteen Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto

811312A Tietorakenteet ja algoritmit 2015-2016. I Johdanto 811312A Tietorakenteet ja algoritmit 2015-2016 I Johdanto Sisältö 1. Algoritmeista ja tietorakenteista 2. Algoritmien analyysistä 811312A TRA, Johdanto 2 I.1. Algoritmeista ja tietorakenteista I.1.1. Algoritmien

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

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

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

Lisätiedot

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

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

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, että se pystyy suorittamaan kaikki mahdolliset algoritmit?

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

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.

Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. On arvioitu, että maailmassa on tällä hetkellä enemmän sulautettuja

Lisätiedot

Osoitin ja viittaus C++:ssa

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

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op FT Ari Viinikainen Tietokoneen rakenne Keskusyksikkö, CPU Keskusmuisti Aritmeettislooginen yksikkö I/O-laitteet Kontrolliyksikkö Tyypillinen Von Neumann

Lisätiedot

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen

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. 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

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

Integrointi. Ohjelmistotekniikka kevät 2003

Integrointi. Ohjelmistotekniikka kevät 2003 Integrointi Ohjelmistotekniikka kevät 2003 ERP (Toiminnanohjausjärjestelmä) Myynti Henkilöstö, palkanlaskenta Kirjanpito Myynti Myyjät Extranet Tietovarasto Laskutus, reskontrat Asiakas ERP Asiakasrekisteri

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN

Lisätiedot

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Kieliversiointityökalu Java-ohjelmistoon. Ohje Kieliversiointityökalu Java-ohjelmistoon Ohje 2/6 SISÄLLYSLUETTELO 1 YLEISTÄ OHJELMASTA... 3 2 PÄÄ-IKKUNA...4 3 YLÄVALIKKO... 4 3.1 TIEDOSTO... 4 3.2 TOIMINTO... 4 3.3 ASETUKSET... 5 3.4 OHJE... 5 4 VÄLILEHDET...5

Lisätiedot

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen ohjelmointiin Jukka Talvitie Valvoja: Professori Jorma Jormakka Paikka: TietoEnator oyj Ongelma Ideologia Lifebelt

Lisätiedot

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

Hahmon etsiminen syotteesta (johdatteleva esimerkki) Hahmon etsiminen syotteesta (johdatteleva esimerkki) Unix-komennolla grep hahmo [ tiedosto ] voidaan etsia hahmon esiintymia tiedostosta (tai syotevirrasta): $ grep Kisaveikot SM-tulokset.txt $ ps aux

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

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

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

Lisätiedot

ohjelman arkkitehtuurista.

ohjelman arkkitehtuurista. 1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015

TIEA241 Automaatit ja kieliopit, syksy 2015. Antti-Juhani Kaijanaho. 3. joulukuuta 2015 TIEA241 Automaatit ja, syksy 2015 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 3. joulukuuta 2015 Sisällys Formaalisti Määritelmä Nelikko G = (V, Σ, P, S) on kontekstiton kielioppi (engl. context-free

Lisätiedot

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011 TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 31. maaliskuuta 2011 Sisällys Sisällys Chomskyn hierarkia kieli säännöllinen kontekstiton kontekstinen rekursiivisesti

Lisätiedot

TIES325 Tietokonejärjestelmä. Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos

TIES325 Tietokonejärjestelmä. Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos TIES325 Tietokonejärjestelmä Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos Kevät 2008 Luku 1 Tietokone abstraktina yksikkönä Tietokoneen asbtratiotasoa sen muotoisena kuin me sen tällä hetkellä

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

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

TIE448 Kääntäjätekniikka, syksy 2009. Antti-Juhani Kaijanaho. 7. joulukuuta 2009

TIE448 Kääntäjätekniikka, syksy 2009. Antti-Juhani Kaijanaho. 7. joulukuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 7. joulukuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe F maanantai 14.12. klo 12 rekisteriallokaatio Arvostelukappale

Lisätiedot

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3 Uutisjärjestelmä Vaatimusmäärittely Versio 1.3 Sisällys 1 Muutoshistoria... 4 2 Viitteet... 4 3 Sanasto... 4 3.1 Lyhenteet... 4 3.2 Määritelmät... 4 4 Johdanto...5 4.1 Järjestelmän yleiskuvaus... 5 4.2

Lisätiedot

Kirja on jaettu kahteen osaan: varsinaiseen- ja lisätieto-osioon. Varsinainen

Kirja on jaettu kahteen osaan: varsinaiseen- ja lisätieto-osioon. Varsinainen Alkusanat Tämä tieto- ja viestintätekniikan oppikirja on päivitetty versio vuonna 2007 julkaisemastani Tieto- ja viestintätekniikka -oppikirjasta. Päivityksessä kirjan sisällöt on ajantasaistettu ja samalla

Lisätiedot

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin? Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin? 2013-2014 Lasse Lensu 2 Algoritmit ovat deterministisiä toimintaohjeita

Lisätiedot

C++ Ohjelmoijan käsikirja. Johdanto

C++ Ohjelmoijan käsikirja. Johdanto Johdanto C++ Ohjelmoijan käsikirja Johdanto Tervetuloa Inside C++-kirjan pariin. Tämä on opaskirja standardi C++:n käyttöön. Käsittelemme kirjassa kaikki syntaksin, kieliopin, olio-ohjelmoinnin ja standardikirjastojen

Lisätiedot

Automaatit. Muodolliset kielet

Automaatit. Muodolliset kielet Automaatit Automaatit ovat teoreettisia koneita, jotka käsittelevät muodollisia sanoja. Automaatti lukee muodollisen sanan kirjain kerrallaan, vasemmalta oikealle, ja joko hyväksyy tai hylkää sanan. Täten

Lisätiedot

Kirja on jaettu kahteen osaan: varsinaiseen- ja lisätieto-osioon. Varsinainen

Kirja on jaettu kahteen osaan: varsinaiseen- ja lisätieto-osioon. Varsinainen Alkusanat Tämän tieto- ja viestintätekniikan oppikirjan ensimmäinen versio (1. painos) syntyi vuonna 2006 Jyväskylän yliopiston tietotekniikan laitokselle tekemäni pro gradu -tutkielmani yhteydessä. Tutkimuksessani

Lisätiedot

2 Konekieli, aliohjelmat, keskeytykset

2 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ätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Teknillinen korkeakoulu 51 Vaatimusmäärittely Ohjelma-ajanvälitys komponentti Versio Päiväys Tekijä Kuvaus 0.1 21.11.01 Oskari Pirttikoski Ensimmäinen versio 0.2 27.11.01 Oskari Pirttikoski Lisätty termit

Lisätiedot

Muutamia peruskäsitteitä

Muutamia peruskäsitteitä Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä

Lisätiedot

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö Matopeli C#:lla Aram Abdulla Hassan Ammattiopisto Tavastia Opinnäytetyö Syksy 2014 1 Sisällysluettelo 1. Johdanto... 3 2. Projektin aihe: Matopeli C#:lla... 3 3. Projektissa käytetyt menetelmät ja työkalut

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

17/20: Keittokirja IV

17/20: Keittokirja IV Ohjelmointi 1 / syksy 2007 17/20: Keittokirja IV Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/10 Tavoitteita

Lisätiedot

Käyttöliittymän suunnittelu tilastotieteen verkko-opetukseen. Jouni Nevalainen

Käyttöliittymän suunnittelu tilastotieteen verkko-opetukseen. Jouni Nevalainen Käyttöliittymän suunnittelu tilastotieteen verkko-opetukseen Jouni Nevalainen Esityksen sisällysluettelo Työn tausta Ongelman asettelu Käsitteitä ja määritelmiä Käytetyt menetelmät Tulokset Johtopäätökset

Lisätiedot

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14 Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2

Lisätiedot

Näkökulmia tietoyhteiskuntavalmiuksiin

Näkökulmia tietoyhteiskuntavalmiuksiin Näkökulmia tietoyhteiskuntavalmiuksiin Tietotekniikka oppiaineeksi peruskouluun Ralph-Johan Back Imped Åbo Akademi & Turun yliopisto 18. maaliskuuta 2010 Taustaa Tietojenkäsittelytieteen professori, Åbo

Lisätiedot

Opiskelijat valtaan! TOPIC MASTER menetelmä lukion englannin opetuksessa. Tuija Kae, englannin kielen lehtori Sotungin lukio ja etälukio

Opiskelijat valtaan! TOPIC MASTER menetelmä lukion englannin opetuksessa. Tuija Kae, englannin kielen lehtori Sotungin lukio ja etälukio Opiskelijat valtaan! TOPIC MASTER menetelmä lukion englannin opetuksessa Tuija Kae, englannin kielen lehtori Sotungin lukio ja etälukio Päättääkö opettaja ohjelmasta? Vai voisivatko opiskelijat itse suunnitella

Lisätiedot

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti hajautettuja Komponenttien palveluja ei tiedetä tarkasti etukäteen Komponentteja ja

Lisätiedot

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

TIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia

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

14.1 Rekursio tyypitetyssä lambda-kielessä

14.1 Rekursio tyypitetyssä lambda-kielessä Luku 14 Rekursiiviset tyypit Edellisessä luvussa esitetyt tietue- ja varianttityypit eivät yksinään riitä kovin mielenkiintoisten tietorakenteiden toteuttamiseen. Useimmissa ohjelmissa tarvitaan erilaisia

Lisätiedot

Luento 7. T-106.1240 Ohjelmoinnin jatkokurssi T1 & T-106.1243 Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Luento 7. T-106.1240 Ohjelmoinnin jatkokurssi T1 & T-106.1243 Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä Luento 7 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 Suunnitelmista Yleistaso oli

Lisätiedot

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro1 29.10.2013

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro1 29.10.2013 Virtualisointi Pertti Pennanen DOKUMENTTI 1 (5) SISÄLLYSLUETTELO Virtualisointi... 2 Virtualisointiohjelmia... 2 Virtualisointitapoja... 2 Verkkovirtualisointi... 2 Pertti Pennanen DOKUMENTTI 2 (5) Virtualisointi

Lisätiedot

Common Language Runtime

Common Language Runtime hyväksymispäivä arvosana arvostelija Common Language Runtime Jukka Katajisto Helsinki 16.4.2005 Ohjelmointikielten kääntäjät -kurssin seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Sisältö

Lisätiedot

Johdatus rakenteisiin dokumentteihin

Johdatus rakenteisiin dokumentteihin -RKGDWXVUDNHQWHLVLLQGRNXPHQWWHLKLQ 5DNHQWHLQHQGRNXPHQWWL= rakenteellinen dokumentti dokumentti, jossa erotetaan toisistaan dokumentin 1)VLVlOW, 2) UDNHQQHja 3) XONRDVX(tai esitystapa) jotakin systemaattista

Lisätiedot

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma

Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma Enterprise SOA. Nyt. Systeemi-integraattorin näkökulma 12.11.2007 Janne J. Korhonen 12.11.2007 Agenda 1. Prosessit ja palvelut, BPM ja SOA 2. BPM-projekteista yleensä 3. Prosessin elinkaarimalli 4. Kokemuksia

Lisätiedot

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.

n! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja. IsoInt Tietokoneiden muisti koostuu yksittäisistä muistisanoista, jotka nykyaikaisissa koneissa ovat 64 bitin pituisia. Muistisanan koko asettaa teknisen rajoituksen sille, kuinka suuria lukuja tietokone

Lisätiedot

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita!

Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! Kehittää ohjelmointitehtävien ratkaisemisessa tarvittavia metakognitioita! eli... Hyvä kaava sanoo enemmän kuin,... tuhat riviä koodia!... sata riviä tekstiä!... kymmenen diagrammia! YLEISTÄ FORMAALEISTA

Lisätiedot

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 30.3.2008,

Lisätiedot

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus Luento 1 (verkkoluento 1) Tietokonejärjestelmä Järjestelmän e eri tasot Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus 1 Tietokone- järjestelmäj ä Käyttäjä Tietokonelaitteisto Oheislaitteet

Lisätiedot

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Kä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ätiedot

OPPIKIRJATON OPETUS! Kari Nieminen!! Tampereen yliopiston normaalikoulu!! ITK 2015!

OPPIKIRJATON OPETUS! Kari Nieminen!! Tampereen yliopiston normaalikoulu!! ITK 2015! OPPIKIRJATON OPETUS! Kari Nieminen!! Tampereen yliopiston normaalikoulu!! ITK 2015! OMA TAUSTA! Matematiikan opetukseen liittyvä FL-tutkielma tietojenkäsittelyopissa 90-luvun alussa! Jatko-opiskelija "Mobile

Lisätiedot

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT KOULUTUKSEN KOHDERYHMÄ SISÄLTÖ Koulutuksen tavoitteena on antaa opiskelijalle valmiudet uusien tietoteknisten menetelmien ja välineiden hyödyntämiseen.

Lisätiedot

Harjoitustehtävät ja ratkaisut viikolle 48

Harjoitustehtävät ja ratkaisut viikolle 48 Harjoitustehtävät ja ratkaisut viikolle 48 1. Tehtävä on jatkoa aiemmalle tehtävälle viikolta 42, missä piti suunnitella älykodin arkkitehtuuri käyttäen vain ennalta annettua joukkoa ratkaisuja. Tämäkin

Lisätiedot

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

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

Lisätiedot

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Software design and specification methods Kurssin henkilökunta ja sponsori Luennoitsija DI Antti Karanta, Napa Oy www.napa.fi Assistentti TkL

Lisätiedot

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

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

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

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

Lisätiedot

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

Teemana aikajanat Polku versio 0.2

Teemana aikajanat Polku versio 0.2 Teemana aikajanat Polku versio 0.2 UTA VT Polku-projekti Tekijä: J.M. Jokiniemi Tulostettu: Jakelu: Uteam, Polku Dokumentin tila: lopullinen versio Muokattu: 5.11.09 VERSIOHISTORIA Versio Päiväys Tekijät

Lisätiedot

MITÄ JAVASCRIPT ON?...3

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

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä

Lisätiedot

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen Käyttöjärjestelmien historia Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen Käyttöjärjestelmien jaottelu Voidaan jaotella erilaisin menetelmin Aikajana (määrä,

Lisätiedot

19/20: Ikkuna olio-ohjelmoinnin maailmaan

19/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ätiedot

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,

Lisätiedot

14/20: Keittokirja I

14/20: Keittokirja I Ohjelmointi 1 / syksy 2007 14/20: Keittokirja I Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/13 Tämän luennon

Lisätiedot

Ohjelmien analysointi. ER-kaaviot

Ohjelmien analysointi. ER-kaaviot Ohjelmien analysointi Ohjelmien kuvaaminen kaavioilla ohjelmien ymmärtäminen kaavioiden avulla kaavioiden tuottaminen ohjelmasta Erilaisia kaaviotyyppejä: ER-kaaviot, tilakaaviot, UML-kaaviot tietohakemisto

Lisätiedot

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Olioiden toteuttaminen Riku Saikkonen 28. 11. 2011 Sisältö 1 Miten oliot ja metodikutsut toimivat? 2 Oliot Minkä luokan metodia kutsutaan? Python-esimerkki

Lisätiedot

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät: prosessit Käyttöjärjestelmät: prosessit 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 Käyttöjärjestelmä

Lisätiedot

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

Lisätiedot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

T-111.361 Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot T-111.361 Hypermediadokumentin laatiminen -Ohjelmointi Peruskäsitys www-ohjelmoinnin kentästä Tekniikat interaktiivisuuden toteuttamiseen tekniikat tekniikat Tietokannat Juha Laitinen TKK/TML juha.laitinen@hut.fi

Lisätiedot

HARRI LUOMA Tulkin toteutus ohjelmoinnin perusopetuksen tarpeisiin Diplomityö

HARRI LUOMA Tulkin toteutus ohjelmoinnin perusopetuksen tarpeisiin Diplomityö HARRI LUOMA Tulkin toteutus ohjelmoinnin perusopetuksen tarpeisiin Diplomityö Tarkastajat: professori Hannu-Matti Järvinen ja tutkija Essi Lahtinen Tarkastajat ja aihe hyväksytty tietotekniikan osaston

Lisätiedot

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Ylläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari

Lisätiedot

Tapahtuipa Testaajalle...

Tapahtuipa Testaajalle... Tapahtuipa Testaajalle... - eli testaus tosielämässä 09.10.2007 Juhani Snellman Qentinel Oy 2007 Agenda Minä ja mistä tulen Testauksen konteksti Tapauksia tosielämästä ja työkaluja 2 Minä Juhani Snellman

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

Lisätiedot