OHJELMISTON ALUSTAN VAIHTO

Koko: px
Aloita esitys sivulta:

Download "OHJELMISTON ALUSTAN VAIHTO"

Transkriptio

1 Opinnäytetyö (AMK) Tietotekniikka Sulautetut ohjelmistot 2012 Samuli Sillsten OHJELMISTON ALUSTAN VAIHTO Unixista Linuxiin

2 OPINNÄYTETYÖ (AMK) TIIVISTELMÄ TURUN AMMATTIKORKEAKOULU Tietotekniikka Sulautetut ohjelmistot Toukokuu s. Ohjaaja: TkL Jari-Pekka Paalassalo Samuli Sillsten OHJELMISTON ALUSTAN VAIHTO Tässä opinnäytetyössä toteutettiin ohjelmiston alustan vaihto. Työssä keskityttiin kääntäjän vaihtumisen tuomiin ongelmiin. Työn tarkoituksena oli kerätä lista ongelmista, joita ohjelmiston kääntämisen sekä testauksen aikana kohdattaisiin. Listaan kirjattiin myös ratkaisut näihin ongelmiin. Kun ohjelmisto saatiin käännettyä uudelle alustalle, asiakas aloitti testit. Asiakas kirjasi virheet niille erikseen varatulle sivustolle. Näiden virheiden lisäksi projektiryhmäläiset korjasivat sellaiset virheet, jotka heille tuli vastaan. Lopputuloksena saatiin lista virheistä sekä vaadittavista korjauksista. Lisäksi dokumentoitiin muutokset, joita kääntäjän vaihtuminen vaati make-tiedostoihin. ASIASANAT: Linux, Unix, alusta, ohjelmistoalusta, C++, kääntäjä, GCC, g++

3 BACHELOR S THESIS ABSTRACT TURKU UNIVERSITY OF APPLIED SCIENCES Degree programme in Information Technology Embedded Software p. Instructor: M. Sc Jari-Pekka Paalassalo, Lic. Sc. (Tech.), Principal Lecturer Samuli Sillsten A PLATFORM CHANGE FOR SOFTWARE The subject of this thesis was to execute a platform change for software. This thesis concentrated on the problems that the change of compiler caused. The purpose of this thesis was to collect a list of problems and their solutions which the project group would encounter while compiling and testing software. After the software had successfully been compiled to a new platform the client started testing. The client posted the errors to a site reserved for them. In addition to these errors, the project group fixed the errors they encountered themselves. The result of the thesis was a list of errors and their solutions. In addition, there is a list of the changes that the change of compiler caused to makefiles. KEYWORDS: Linux, Unix, Software Platform, C++, Compiler, GCC, g++

4 SISÄLTÖ SANASTO 6 1 JOHDANTO 7 2 OHJELMISTO Esityskerros Logiikkakerros Datakerros 10 3 ALUSTA Alustan vaihdon syyt Vanha alusta Uusi alusta 11 4 KÄÄNTÄJÄ Käännöksen vaiheet Kääntäjän valinta 14 5 UUDEN ALUSTAN ASENNUS 16 6 KÄÄNTÄMINEN bittisyys Makefile-tiedostot Kooditiedostot 17 7 TESTAUS Tyhjän lukeminen For-silmukan toiminta 20 8 TULOKSET 21 9 YHTEENVETO 22 LÄHTEET 23

5 LIITTEET Liite 1. Tehdyt muutokset ja korjaukset KUVAT Kuva 1. Ohjelmiston rakenne 9 Kuva 2. Käännöksen vaiheet [8] 12

6 SANASTO EDI Varusohjelma Organisaatioiden välistä standardoitua tiedonsiirtoa. Varusohjelmat ovat atk-järjestelmien toteuttamista ja ylläpitoa varten, sekä koneiden ja tietoliikenteen käynnissä pitämiseen tarvittavia ohjelmia.

7 7 1 JOHDANTO Opinnäytetyön tarkoituksena on seurata ohjelmiston alustan vaihdon tuomia haasteita ja sitä kuinka ne ratkaistaan. Työtä tullaan mahdollisesti käyttämään apuna vastaavissa alustan vaihdoissa. Työn alussa tutustutaan alustan vaihdon kohteena olevaan ohjelmistoon ja sen toteutukseen. Tämän jälkeen käydään läpi tarpeet ja syyt, jonka vuoksi alusta vaihdettiin, sekä tutustutaan tarkemmin alustoihin. Työssä keskitytään kääntäjän vaihtumisen tuomiin ongelmiin. Jotta kääntämisen aiheuttamia ongelmia ymmärrettäisiin paremmin, käydään läpi hieman kääntäjän toimintaa. Työn tuloksena tullaan käymään läpi yleisimmät virhetyypit ja se mistä nämä johtuivat. Tarkoituksena on kerätä liitetiedostoon löydetyt virheet ja näiden korjaukset. Liitetiedostosta löytyy myös sellaiset muutokset, jotka kääntäjän vaihtuminen vaati. Vaadittavia muutoksia, jotka aiheutuvat kääntäjän vaihtumisesta, kutsutaan työssä virheiksi. Näitä ei kuitenkaan suoranaisesti voi lukea virheiksi, koska ohjelmisto on vanhalla kääntäjällä toiminut oikein.

8 8 2 OHJELMISTO Ohjelmiston kehitys on aloitettu vuonna 2000 ja sen tuotantokäyttö on alkanut vuonna Ohjelmisto hallinnoi satamaoperaattorin tavaran kulkua ja sen raportointia sekä hoitaa myös laskutustiedot laskutusohjelmalle. Ohjelmistoa on päivitetty ja ylläpidetty vuosien varrella. Suurin viime aikana tullut päivitys on tuonti-puolen lisääminen järjestelmään helmikuussa Tätä ennen ohjelmisto hallinnoi vain lähtevää tavaraa. [1] Ohjelmistoon kuuluu sataman tilausohjelma (SATI), jolla lähetetään ja vastaanotetaan EDI-sanomia ja hallitaan tulosteiden käsittelyä. SATIn toteutus vastaa itse ohjelman toteutusta ja käsipäätteillä toimiva osa käyttää samoja palveluita kuin Windows-osa, eikä näin ollen ole tarvetta kohdistaa virheitä. [1] Pääasiallisena ohjelmointikielenä ohjelmistossa on käytetty C++:aa. Tietokannat on toteutettu Oraclen tietokantoina. Koodirivejä ohjelmistossa on yhteensä noin 1,75 miljoonaa, joista riviä on Delphi-koodia. Niin liittymistä kutsuttavia BL-palveluita kuin tietokantapalveluitakin on ohjelmistossa lähes tuhat. [1] Ohjelmisto on toteutettu kolmikerrosarkkitehtuurilla, eli ohjelmisto koostuu esityskerroksesta, logiikkakerroksesta ja datakerroksesta [2]. Välikerrosohjelmistona on käytetty Tuxedoa. Tuxedo hoitaa eri kerrosten ja ohjelmiston osien välisen tiedonkulun [3]. Kuvasta 1 selviää ohjelmiston rakenne.

9 9 Kuva 1. Ohjelmiston rakenne 2.1 Esityskerros Esityskerros koostuu kahdesta eri käyttöliittymästä ja noin kolmestakymmenestä muusta liittymästä. Käyttöliittyminä toimivat Windows ja Unix. Windowskäyttöliittymä on toteutettu Borland Delphillä. Delphillä on myös ohjelmoitu näytöille sellaista toiminnallisuutta, joka ei vaadi lisätietojen hakua tietokannoista. Unix-käyttöliittymään otetaan yhteys taljareiden käsipäätteillä. Muista liittymistä löytyy esimerkiksi asiakkaille tarkoitetun internet-pohjaisen ennakkotietojen syöttöjärjestelmän käyttämä liittymä sekä graafisen konttiohjelmiston käyttämä liittymää. 2.2 Logiikkakerros Logiikkakerros on toteutettu kahdessa tasossa: BL-palvelut, joita kutsutaan näytöltä, ja BL-luokat, jotka sisältävät ohjelmalogiikan. BL-palveluissa kutsutaan

10 10 luokkia ja metodeita, jotka sijaitsevat BL-luokissa. Näin pidetään BL-palvelut siistinä ja lisätään uudelleenkäytettävyyttä. BL-luokiin on ohjelmoitu ohjelmiston toiminnallisuus. BL-luokista kutsutaan datakerroksen tietokantapalveluita, joiden avulla tehdään haut, tarkastukset ja päivitykset. 2.3 Datakerros Datakerros koostuu erinäisistä tietokantapalveluista. Haut, listahaut, päivityspalvelut ja poistopalvelut ovat näistä yleisimmät. Sql-haut on toteutettu pääosin automaattihakuina mutta erikoisempia ja harvinaisia tapauksia varten on käytetty manuaalihakuja.

11 11 3 ALUSTA Alustalla tarkoitetaan laitteistoa ja ohjelmistoliittymiä, jotka mahdollistavat ohjelmistojen suorittamisen. Tyypillisesti alustaan sisältyy laitteisto, käyttöjärjestelmä, ohjelmointikieli sekä käyttöliittymä. [4] Alusta on tärkeä osa ohjelmistokehityksessä, koska sen valinnan mukaan määräytyy muut mahdollisesti käytettävät varusohjelmat. [4] 3.1 Alustan vaihdon syyt Ohjelmiston alustan vaihdolle on useita syitä. HP-UX alustaa ei enää päivitetä eikä se näin ollen tue uusimpia Tuxedon versioita. Myös Tuxedon lisenssit ovat kalliimmat HP-UX:lle kuin Linuxille. Koska Tuxedon lisenssit ovat prosessorien core kohtaisia, tarvitaan uudemmalla 64-bittisellä alustalla paljon vähemmän lisenssejä. Lisäksi alustan vaihdolla haluttiin taata arkkitehtuurin mahdollisimman hyvä jatkuvuus. [5] [6] 3.2 Vanha alusta Vanhana alustana toimiva HP-UX on HP:n versio UNIX-käyttöjärjestelmästä. Alustalla on käytetty Tuxedon versiota 7 ja kääntäjänä on käytetty ac++:n versiota A Tulostuspalveluissa käytetään Adoben JetFormia. 3.3 Uusi alusta Uudeksi alustaksi tulee Intel Xeon 64-bittisellä prosessorilla varustettu kone, jolle asennetaan SUSE Linux Enterprise Server 11 SP1 -käyttöjärjestelmä. Koneelle asennetaan Tuxedon versio 11gR1. Kääntäjänä käytetään GNU kääntäjä g++:n versiota 4.3. Tietokannat on sijoitettu omille tietokantapalvelinkoneilleen, eikä näin ollen tietokantoihin tule päivityksiä. [6]

12 12 4 KÄÄNTÄJÄ Kääntäjä on tietokoneohjelma, joka kääntää ohjelmointikoodia tietokoneen ymmärtämään binäärimuotoon. Toisin sanoen kääntäjä siis mahdollistaa ihmiselle ymmärrettävän koodin kirjoittamisen. [7] 4.1 Käännöksen vaiheet Kuvassa 2 on kuvattu kääntäjän toiminta ja sen suorittamia toimenpiteitä. Kaikki kääntäjät eivät välttämättä käy joka vaihetta läpi. Kuva 2. Käännöksen vaiheet [8] Leksikaalianalyysistä (Lexical Analyzer) ja syntaktisesta analyysistä (Syntactic Analyzer) voidaan käyttää yhteisnimeä jäsennys. Ensimmäisessä vaiheessa,

13 13 leksikaalianalyysissä, lähdekoodi pilkotaan merkityksellisiksi symboleiksi säännöllisten lausekkeiden kieliopin mukaan. Esimerkiksi (tasku)laskinohjelma selaa syötettyjä näppäilyjä "12*(3+4)^2" ja pilkkoo sen tokeneiksi: 12, *, (, 3, +, 4, ), ^, ja 2. Kukin on merkityksellinen symboli aritmeettisen lauseen kontekstissa. Jäsentimessä voi olla sääntö, että merkit *, +, ^, ( ja ) ovat uuden tokenin aloitusmerkkejä. Siten merkityksettömiä tokeneita, kuten 12* tai (3, ei generoida. [9] Jäsennyksen toisessa vaiheessa tarkistetaan, että tokenit muodostavat hyväksyttävän lausekkeen. Tämä tehdään tavallisesti kontekstivapaiden kielioppien kanssa. Ne määrittelevät rekursiivisesti komponentit, jotka voivat muodostaa lausekkeen ja missä järjestyksessä niiden on esiinnyttävä. [9] Semanttisessa analyysissä tutkitaan ilmaisujen merkityksen järkevyyttä. Toisin sanottuna semanttisessa analyysissä tutkitaan muuttujien ja aliohjelmien tyypit, kontrollivuo sekä nimien oikeaa käyttöä. [10] Koodin generointivaiheessa tapahtuu itse käännös. Tässä vaiheessa muutetaan koodi tietokoneen ymmärtämään muotoon. [8] Viimeinen vaihe on optimointi. Nykypäivän optimoivat kääntäjät ovat hyvin tehokkaita optimoimaan koodia. Usein on viisasta jättää koodin viritys kääntäjän huoleksi. Tarkastellaan tätä esimerkin avulla. Oletetaan, että haluttaisiin ohjelman laskevan kaksiulotteisen taulukon alkiot yhteen. Tarkastellaan ensin suoraa ja helppoa tapaa toteuttaa tämä, jonka jälkeen käydään läpi esimerkki, kuinka optimointi voitaisiin toteuttaa. Koodiesimerkissä 1 on yksi, ja varmasti hyvin yleinen, toteutus tapa tällaiselle toiminnallisuudelle. [11]

14 14 Koodiesimerkki 1. Lasketaan taulukon alkiot yhteen for-silmukoissa [11] Koska taulukon alkiot sijaitsevat fyysisessä muistissa peräkkäisissä muistiosoitteissa, voidaan koodia optimoida käymällä muistiosoitteet peräkkäin läpi osoitinmuuttujan avulla. Koodiesimerkissä 2 on optimoitu koodi. [11] Koodiesimerkki 2. Lasketaan taulukon alkiot yhteen osoitinmuuttujaa apuna käyttäen [11] Jos nämä kaksi esimerkkiä kääntäisi ja suorittaisi, saataisiin samanlaisia suoritusaikoja, koska kääntäjä itse optimoisi koodin kuvassa 3 esitetyllä tavalla. Tämän kaltaisten optimointien teko olisi siis pelkästään ajan hukkaa oikeaa ohjelmaa ohjelmoidessa. 4.2 Kääntäjän valinta Kääntäjän valintaan voi vaikuttaa moni tekijä. Jokaiselle ohjelmointikielelle on olemassa omat kääntäjänsä. Tästä syystä tuleekin ensin tutustua kääntäjävaihtoehtoihin, joita valitulle kielelle on. Toiseksi kääntäjän valintaan vaikuttaa käytettävä alusta. Kaikki kääntäjät eivät toimi kaikilla alustoilla, joten alusta tulee tietää ennen kääntäjän valintaa. [12]

15 15 Hinta on yksi alustan valintaan vaikuttavista tekijöistä. Kannattaa valita maksuton kääntäjä, mikäli tämä vain on mahdollista. Lisäksi työpaikka tai muu ryhmä, jossa työskentely tapahtuu, voi määrätä tietyn kääntäjän käytöstä. [12]

16 16 5 UUDEN ALUSTAN ASENNUS Uuden alustan asennus tapahtui kolmannen osapuolen toimesta ja se suoritettiin suoraan asiakkaan omalle koneelle. Ennen käännöksien aloittamista ryhmälle jäi Tuxedon palvelin sekä openssl-kirjaston asentaminen. Näissä kummassakaan ei tullut mitään tavallisuudesta poikkeavaa vastaan. Lisäksi Tuxedon asetukset piti määrittää ja luoda Linuxille käyttäjätunnukset. [1]

17 17 6 KÄÄNTÄMINEN Kääntäminen päätettiin toteuttaa kokeilemalla, koska projektiryhmällä ei ollut aiheesta aiempaa kokemusta. Aina yhden ongelman ratkettua koitettiin kääntämistä uudestaan ja alettiin selvittää, mistä seuraava virheviesti johtui. Näin toimittiin, kunnes ohjelma saatiin kääntymään ongelmitta bittisyys Uuden alustan 64-bittisyys aiheutti suuren osan ongelmista. Aluksi Oracle oli asennettuna sekä 32- että 64-bittisenä. Käännös ei kuitenkaan onnistunut, joten Oracle jouduttiin asentamaan uudestaan ainoastaan 32-bittisenä. 6.2 Makefile-tiedostot Vanhoja Makefile-tiedostoja päätettiin käyttää ja tehdä muutokset niihin. Koska kääntäjä oli muuttunut, piti se ilmoittaa Makefile-tiedostoille. Kääntäjän vaihtumisen myötä acc-kääntäjän komento +O1, jolla säädetään optimoinnin tasoa, piti poistaa, koska kyseistä komentoa ei g++:ssa ole. Makefile-tiedostossa tuli ilmoittaa, että käännöksestä haluttiin 32-bittinen, koska muuten kääntäjä käänsi tiedostot 64-bittisiksi. Joissain Makefile-tiedostoissa oli turhia komentoja. Ennen hyödyttömät komennot estivät nyt tiedostojen kääntymisen. Komennot $(ORALIBS) ja lsql poistettiin näistä tiedostoista. 6.3 Kooditiedostot Kooditiedostoissa oli kohtia, jotka estivät kääntymisprosessin. Tällaisia olivat ainakin kirjastojen muuttuneet nimet, esim. iostream.h -> iostream. Lisäksi ongelmia aiheutti acc-kääntäjän ominaisuus, joka toimi C++:n sääntöjen vastai-

18 18 sesti. acc-kääntäjä määritteli for-silmukan kierroslaskurin ylemmälle tasolle ja muuttujaa pystyi käyttämään for-silmukan jälkeenkin. Tämä ongelma ratkaistiin esittelemällä muuttuja yleisesti ennen ensimmäistä silmukkaa, jossa sitä käytettiin. Koodiesimerkissä 3 on esitettynä vanha ja uusi toteutus. Koodiesimerkki 3. For-silmukka Vanhalla toteutuksella: for(int i = 0; i < Lista.GetCount(); i++) { total += i; } printf("i:n arvo: %ld\n", i); for(i = 0; i < total; i++) { total2 += i; } Korjattu: int i = 0; for(i = 0; i < Lista.GetCount(); i++) { total += i; } printf("i:n arvo: %ld\n", i);... Lauseen using namespace std; lisääminen vaadittiin muutamaan tiedostoon. Syitä, miksi g++-kääntäjä vaati lauseen lisäämisen ja acc oli toiminut ilman, ei tutkittu.

19 19 7 TESTAUS Kun tiedostot oli saatu käännettyä ja ohjelmisto käyntiin uudella alustalla, ohjelmisto testattiin. Alustan muuttumisen jälkeen tuli testata jokainen ominaisuus, jonka ohjelmisto sisälsi. Ohjelmiston laajuuden vuoksi testaamista oli hyvin paljon. Testattavien tapausten suuren määrän vuoksi asiakas suoritti testauksen, mikä mahdollisti ryhmän keskittymisen löydettyjen virheiden korjaamiseen. Suurin osa virheistä kaatoi palvelun, ja ne olivat näin ollen helppo todeta, mutta ohjelmistossa oli myös virheitä, jotka eivät yhtä selvästi tulleet esille. Testauksissa löydettiin lisäksi virheitä, jotka eivät johtuneet alustan vaihtumisesta. Näihin virheisiin ei tässä työssä kiinnitetä huomiota. 7.1 Tyhjän lukeminen Ehdottomasti suurimman osan virheistä aiheutti tyhjän lukeminen. Nämä virheet olivat joko listan ensimmäisestä alkiosta tiedon lukeminen tai tyhjän char*- muuttujan käsittely. Listojen ensimmäisestä alkiosta lukeminen korjattiin tarkastamalla, oliko listanssa yhtään alkiota, ennen kuin luettiin ensimmäistä alkiota. Niissä kohdissa, joissa ensimmäisen alkion lukeminen tapahtui vanhoissa tarkastustulosteissa, poistettiin rivi tai kommentoitiin rivi pois. Koodiesimerkissä 4 on lisätty tarkastus ennen ensimmäisestä alkiosta tiedon lukemista. Koodiesimerkki 4. Listan tarkastus ennen lukua int luku = 0; if(lista.getcount() > 0){ // Lisätty tarkistus // Nyt tiedetään ettei lista ole tyhjä. // Voidaan lukea ensimmäisestä alkiosta luku = Lista[0].GetValue(); printf( Listan alkion arvo: %ld\n, Lista[0].GetValue()); }

20 20 char*-muuttujien käsittelyssä tarkastettiin, oliko char*-muuttujan arvo eri kuin nolla, minkä jälkeen voitiin tarkastaa esim. pituus. Vaikka korjaus oli yksinkertainen, oli joissain tiedostoissa samaa virhettä hyvin paljon ja monen if-, for- tai while-lauseen sisällä. Tästä syystä joissain tapauksissa virheen löytäminen oli ongelmallista. Mistään ei myöskään pystynyt tarkistamaan, mikä kohta tarkalleen aiheutti virheen. Virheen sijainti piti päätellä viimeisestä tulosteesta ennen palvelun kaatumista tai seurata koodia virheen löytymiseksi. Tässä kohtaa olisi ollut mahdollista käyttää virheiden jäljittäjä, mutta niitä ei haluttu, koska ne olisivat estäneet samanaikaisen testaustoiminnan. 7.2 For-silmukan toiminta For-silmukan käyttö tietokantapalveluiden hakujen tulosten läpikäynnissä kaatoi palvelun. Tämän virheen löytäminen oli ongelmallista, koska kohta oli ennen toiminut oikein eikä kääntäjä antanut virheilmoitusta siitä. Pääasiassa vastaavat kohdat oli toteutettu while-silmukalla, mutta muutamassa kohtaa oli käytetty forsilmukkaa (Koodiesimerkki 5). Koodiesimerkki 5. Tietokantahaun tulosten läpikäyminen table.movefirst(); /*for( ;! table.iseof();table.movenext()){ tietokantalista.addtolist((void*)&table); }*/ while(!table.iseof()){ tietokantalista.addtolist((void*)&table); table.movenext(); } Esimerkissä näkyy, kuinka for-silmukalla toteutettu osa on kommentoitu pois ja korvattu vastaavalla while-silmukalla. Päällisin puolin for-silmukalla tehdyn toteutuksen pitäisi tehdä sama kuin while-silmukalla. Asiaa ei kuitenkaan lähdetty sen enempää tutkimaan, vaan todettiin, että on nopeampaa korjata virheelliset toteutukset.

21 21 8 TULOKSET Alustan vaihdon työmäärä yllätti suuruudellaan niin asiakkaan kuin projektiryhmänkin. Koska Linux on Unixin kaltainen käyttöjärjestelmä, odotettiin koodin kääntymisen ja toimintaan saamisen vaativan huomattavasti vähemmän työtä kuin se todellisuudessa aiheutti. [5] Korjattuja virheitä ei kirjattu, joten ei ole tietoa, kuinka monta virhettä on korjattu. Virheitä ei kirjatt,u koska jotkut projektiryhmäläiset tekivät projektia toisten projektien ohessa. Toinen syy tähän on se, että vaikka asiakas suoritti testit, projektiryhmäläiset korjasivat virheitä, joita heille tuli itselleen vastaan niitä mihinkään kirjaamatta. Projektin myötä selvisi hyvin, kuinka erilaisia kääntäjät voivat olla. Vaikka kieli ja lopputulos on määritelty, ei kääntäjille ole määritelty, kuinka lopputulokseen tulee päästä. Tästä syystä kääntäjät voivat erota toisistaan. Esimerkiksi muuttujien muistipaikkojen käsittelyn erilaisuus aiheutti paljon virheitä.

22 22 9 YHTEENVETO Tässä työssä toimittiin osana ohjelmiston alustan vaihdon suorittavaa projektiryhmää ja seurattiin alustan vaihdon kulkua. Virheitä tulee varmasti vielä löytymään lisää, kun uutta alustaa aletaan käyttää tuotannossa. Alustan vaihto ennen ohjelmiston testauksen aloittamista sujuin hyvin. Ensimmäiset ongelmat tulivat esille vasta sitten, kun ohjelmistoa käännettiin. Näistä ongelmista suurin osa aiheutui uuden alustan 64-bittisyydestä. Suurin osa testaamisvaiheen aikana ilmenneistä virheistä johtui huonoista ohjelmointitavoista. Esimerkiksi listaa luettaessa tulee aina muistaa tarkistaa, ettei lista ole tyhjä. Koska ohjelmisto on vanha ja hyvät ohjelmointitavat ovat yleistyneet, on oletettavissa, että mitä uudempi ohjelmisto on, sitä helpommin onnistuu alustan vaihto. Tämä on kuitenkin vain olettamus, eikä mahdollisia työmääräarviota voida laskea sen mukaan.

23 23 LÄHTEET 1. Sivonen, Ville, henkilökohtainen keskustelu, Three Layer Architecture in C#.NET, [Verkkodokumentti]. Saatavilla: (luettu ) 3. Middleware, [www-dokumentti]. Saatavilla: (luettu ) 4. Computing platform, [www-dokumentti]. Saatavilla: (luettu ) 5. Asiakas, henkilökohtainen keskustelu, Asiakkaan oma esiselvitys, (luettu ) 7. Ohjelmointikielen kääntäjä, [www-dokumentti]. Saatavilla: (luettu ) 8. Compilers and Translators, [www-dokumentti]. Saatavilla: (luettu ) 9. Jäsennys, [Verkkodokumentti]. Saatavilla: (luettu ) 10. Semanttinen analyysi, [www-dokumentti]. Saatavilla: (luettu ) 11. Ohjelmointikielten ja kääntäjien vaikutukset ohjelman suorituskykyyn, [wwwdokumentti]. Saatavilla: (luettu ) 12. What are the differences between C++ compilers?, [www-dokumentti]. Saatavilla : (luettu )

24 Liite 1/1 (2) Tehdyt muutokset ja korjaukset Tälle liitteelle on kerätty luettelomaisesti tehdyt muutokset ja korjaukset Makefile-tiedostot Lista muutoksista jotka tehtiin Makefile-tiedostoihin Muutos Vaikutus Lisätiedot Tuxedon version muutos Ei löytänyt tuxedoa TUXDIR=/progs/tuxedo/7.1-> TUXDIR=/app/tuxedo11 Kääntäjän muutos Ei löytänyt kääntäjää CC=aCC -> CC=g++ acc:n optimoinnin Ei kääntynyt +O1\ poistettu komento pois Kääntö 32-bittiseksi Ei toiminut 64-bittisenä -m32 komennolla Turhat komennot pois Ei kääntynyt $(ORALIBS) ja lsql poistettu Muut tiedostot Tässä kohdassa käsitellään muut virheet jotka estivät kääntymisen, kaatoivat palvelun tai aiheuttivat ohjelman toimimattomuuden. Alla lista virheistä Ongelma Kuvaus ongelmasta Vaikutus Korjaus Peruskirjastojen nimet Joidenkin peruskirjastojen nimet olivat muuttuneet Ei kääntynyt Muutettu: iostream.h -> iostream fstream.h -> fstream string.h -> string nimiavaruus Vaadittiin using namespace Ei kääntynyt Lisätty ko. lause ltd; ltoa functio Funktio puuttui Ei kääntynyt Koodattu itse vastaava funktio samalla nimellä

25 Liite 1/2 for-silmukan kierroslaskurin esittely Tyhjien lukeminen char* muuttujan käsittely Muuttujien esittely Tuxedolle acc-kääntäjällä toimi C++:san sääntöjen vastaisesti, muuttuja säilyi silmukan jälkeen Luettiin listan ensimmäisestä alkiosta, käsiteltiin tyhjää muuttujaa tyhjän char* muuttujan käsittely, esim pituuden tarkistus (strlen(tyhjä char*)) Jotkut char*-muuttujat esiteltiin liian lyhyinä Ei kääntynyt Esitelty muuttuja ennen for-silmukkaa mahdollistaen sen käytön myöhempänä Kaatoi palvelun Tarkistus ettei ole tyhjä ennen lukua Kaatoi palvelun Tehty omia funktioita, tarkistettu ennen käyt- tämistä onko char* tyhjä Kaatoi palvelun Lisätty muuttujien pituutta printf- Annetaan vähemmän Kaatoi pal- Kommentoitu tulostus tulostaminen parametreja kuin odote- velun pois tai korjattu taan for-silmukan Tietokantapalvelun haun Kaatoi pal- Vaihdettu toteutus whi- käyttö tulosten läpikäynnissä velun le-silmukkaan Viittausmuuttu- Toimivat erikoisesti Toimi väärin Muutettu toteutusta jat / Ei toiminut Moniperinnän Koodeja ei löytynyt Toimi väärin Kopioitu koodit header- puuttuminen / Ei toiminut tiedostoihin Set-metodin Kun parametriksi annettiin Toimi väärin Poistettu turhana. Set- käyttö saman muuttujan Get- / Ei toiminut metodi tyhensi itsensä metodi ennen asetusta, eli tyhjensi myös mitä oltiin asettamassa. char*- Mikäli metodi palautti Toimi väärin Lisätty static, Muuttu- pa- muuttujan lautus char*-muuttujan piti se määritellä staticmuuttujaksi / Ei toiminut jan muistialue vapautetaan ennen kuin se palautetaan kutsuvalle metodille.

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Lisätiedot

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

S11-09 Control System for an. Autonomous Household Robot Platform

S11-09 Control System for an. Autonomous Household Robot Platform S11-09 Control System for an Autonomous Household Robot Platform Projektisuunnitelma AS-0.3200 Automaatio- ja systeemitekniikan projektityöt Quang Doan Lauri T. Mäkelä 1 Kuvaus Projektin tavoitteena on

Lisätiedot

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

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

Lisätiedot

Kääntäjän virheilmoituksia

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

Lisätiedot

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

ELM GROUP 04. Teemu Laakso Henrik Talarmo

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

Lisätiedot

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

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

Lisätiedot

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

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

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

Lisätiedot

5. HelloWorld-ohjelma 5.1

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

Lisätiedot

Määrittelydokumentti

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

Lisätiedot

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

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 06.09.2005 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

Lisätiedot

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: Linux-harjoitus 6 Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin.

Ohjelmisto on selainpohjaisen käyttöliittymän tarjoava tietokantajärjestelmä merikotkien seurantaan WWF:n Merikotka-työryhmän tarpeisiin. TIETOKANTA MERIKOTKIEN SEURANTAAN Käyttöohje Versiohistoria: Versio Päivämäärä Kuvaus Tekijä 1.0 11.12.2007 Ensimmäinen luonnos Janne Piippo 2.0 13.12.2007 Virallinen verio Janne Piippo HELSINGIN YLIOPISTO

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

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

Tietorakenteet ja algoritmit

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

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

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

Lisätiedot

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

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

Lisätiedot

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

HARJOITUS 3: Asennetaan Windows Vista koneeseen Windows 7 Professional upgrade ohjelmisto (Windows 7 käyttöjärjestelmän asennus)

HARJOITUS 3: Asennetaan Windows Vista koneeseen Windows 7 Professional upgrade ohjelmisto (Windows 7 käyttöjärjestelmän asennus) HARJOITUS 3: Asennetaan Windows Vista koneeseen Windows 7 Professional upgrade ohjelmisto (Windows 7 käyttöjärjestelmän asennus) Microsoft Windows Vista Business Microsoft Winodows 7 Professional Upgrade

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

Toinen harjoitustyö. ASCII-grafiikkaa 2017

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

Lisätiedot

SQL Server 2005 Express Edition tietokannan asennusohje

SQL Server 2005 Express Edition tietokannan asennusohje 1 SQL Server 2005 Express Edition tietokannan asennusohje SQL Server 2005 Express Edition on Microsoftin tietokantaohjelmiston ilmaisversio. Asennukset tulee tehdä käyttäjätunnuksella, jolla on administrator-oikeudet.

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä? Se edullisempi tietokanta Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä? Rasmus Johansson rasmus.johansson@microsoft.com Ratkaisumyyntipäällikkö (Sovellusalusta) Microsoft Oy Miten

Lisätiedot

T Testiraportti - järjestelmätestaus

T Testiraportti - järjestelmätestaus T-76.115 Testiraportti - järjestelmätestaus 18. huhtikuuta 2002 Confuse 1 Tila Versio: 1.0 Tila: Päivitetty Jakelu: Julkinen Luotu: 18.04.2002 Jani Myyry Muutettu viimeksi: 18.04.2002 Jani Myyry Versiohistoria

Lisätiedot

Asteri Vuokrankanto (Dos) Vuosipäivitys 1.11.2007

Asteri Vuokrankanto (Dos) Vuosipäivitys 1.11.2007 Asteri Vuokrankanto (Dos) Vuosipäivitys 1.11.2007 Päivityksen asentaminen... 4 Vista... 6 Uuteen koneeseen siirtäminen... 7 - pikakuvake työpöydälle... 9 Tulostusongelmat uusissa koneissa... 12 - Tulostaminen

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

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

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

Lohkot. 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ätiedot

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

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

Lisätiedot

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

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 11.08.2010 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

UCOT-Sovellusprojekti. Asennusohje

UCOT-Sovellusprojekti. Asennusohje UCOT-Sovellusprojekti Asennusohje Ilari Liukko Tuomo Pieniluoma Vesa Pikki Panu Suominen Versio: 1.00 Julkinen 15. joulukuuta 2006 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä Hyväksyjä Päivämäärä

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

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2 TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa

Lisätiedot

11/20: Konepelti auki

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

Lisätiedot

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Käytin tehtävän tekemiseen Xubuntu 13.04 -käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta. Tehtävänanto - Asenna ja testaa LAMP - Aiheuta vähintään 3 virhettä ja analysoi lokista - Tee nimipohjainen virtuaalipalvelin, joissa toimii myös www. (Karvinen, T. 23.09.2013) Työympäristö Tein tehtävän

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie

Ylläpitodokumentti. Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Ylläpitodokumentti Ohjelmistotuotantoprojektin tietojärjestelmä OhtuTie Helsinki 16.7.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

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

Lisätiedot

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011 1 Joonas Ruotsalainen GIT PIKAOPAS Tutkielma 2011 2 SISÄLTÖ 1. JOHDANTO... 3 2. ASENTAMINEN... 4 3. KÄYTTÖ... 4 3.1 Perusasetukset... 4 3.2 Git:n ottaminen käyttöön projektissa... 5 3.3 Tiedostojen lisääminen

Lisätiedot

11. Javan toistorakenteet 11.1

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

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Tehtävä 1: Metodit, listat, alkuluvut (4p) Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Alkuluvut ovat lukuja, jotka ovat suurempia kuin yksi ja jotka ovat jaollisia

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

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

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen

CUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Luento

Lisätiedot

WINE API ja Virtualisointiohjelmistot

WINE API ja Virtualisointiohjelmistot WINE API ja Virtualisointiohjelmistot Yleistä Winestä Ohjelmisto, joka mahdollistaa Windows -pohjaisten ohjelmien käytön kuissa käyttöjärjestelmissä Toimii yhteensopivuuskerroksena ohjelman ja käyttöjärjestelmän

Lisätiedot

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: KERTAUSTEHTÄVIÄ Tietue Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: struct henkilotiedot char nimi [20]; int ika; char puh [10]; ; Edellä esitetty kuvaus määrittelee

Lisätiedot

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä www.niksula.cs.hut.fi/~jjkankaa// Testauksen loppuraportti v. 1.0 Päivitetty 23.4.2001 klo 19:05 Mikko Viljainen 2 (14) Dokumentin versiohistoria Versio Päivämäärä Tekijä / muutoksen tekijä Selite 1.0

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

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

Lisätiedot

Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti

Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu. LiKe Liiketoiminnan kehityksen tukiprojekti Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu TESTIRAPORTTI LiKe Liiketoiminnan kehityksen tukiprojekti Versio: 1.1 Tila: hyväksytty Päivämäärä: 13.2.2001 Tekijä:

Lisätiedot

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP2 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 17. toukokuuta 219 Yleistä Tentti 1 oli pistekeskiarvon (14,6) perusteella hieman tavanomaista helpompi. Omasta tehtäväpaperista

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

Lisätiedot

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

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

Lisätiedot

Valppaan asennus- ja käyttöohje

Valppaan asennus- ja käyttöohje Versio Päiväys Muokkaaja Kuvaus 0.9 16.2.2006 Tuukka Laakso Korjattu versio 0.1 Antti Kettunen Alustava versio Sisällysluettelo 1 Johdanto...2 2 Valppaan asennus...3 2.1 Valppaan kääntäminen...3 2.2 Valmiiksi

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO

Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO Opinnäytetyö KESKI-POHJANMAAN AMMATTIKORKEAKOULU Puutekniikan koulutusohjelma Toukokuu 2009 TIIVISTELMÄ OPINNÄYTETYÖSTÄ Yksikkö Aika Ylivieska

Lisätiedot

Harjoitus 4 (viikko 47)

Harjoitus 4 (viikko 47) Kaikki tämän harjoituksen tehtävät liittyvät joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Saa hyvän alun harjoitustyön tekoon, kun ratkaiset mahdollisimman monta tehtävää. Mikäli tehtävissä

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

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

Lisätiedot

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

Zeon PDF Driver Trial

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

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Projektisuunnitelma. (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus

Projektisuunnitelma. (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus Projektisuunnitelma (välipalautukseen muokattu versio) Vesiprosessin sekvenssiohjelmointi ja simulointiavusteinen testaus Ville Toiviainen Tomi Tuovinen Lauri af Heurlin Tavoite Projektin tarkoituksena

Lisätiedot

Apuja ohjelmointiin» Yleisiä virheitä

Apuja ohjelmointiin» Yleisiä virheitä Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi

Lisätiedot

LINUX-HARJOITUS, MYSQL

LINUX-HARJOITUS, MYSQL LINUX-HARJOITUS, MYSQL Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

Jouko Nielsen. Ubuntu Linux

Jouko Nielsen. Ubuntu Linux Jouko Nielsen Ubuntu Linux 19.4.2017 SISÄLLYS 1 UBUNTU... 3 2 LUETTELO VERSIOISTA... 4 3 OMINAISUUDET... 4 4 ASENNUS... 5 5 UBUNTU SERVER... 9 LÄHTEET... 10 3 1 UBUNTU Ubuntu on debian pohjainen Linux

Lisätiedot

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

PRINCIPLES 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ä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

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

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

Lisätiedot

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. 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ätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

5. HelloWorld-ohjelma 5.1

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

Lisätiedot

ETS5 Sulautettu Älykäs Langaton. KNX- Partnerpäivä Micael Forsstedt

ETS5 Sulautettu Älykäs Langaton. KNX- Partnerpäivä Micael Forsstedt ETS5 Sulautettu Älykäs Langaton KNX- Partnerpäivä 6.11.2014 Micael Forsstedt Sisältö ETS Historia Uudistukset Tietokanta USB- Dongle ja muisti RF tuki Käyttöliittymä My KNX Rinnakkaisajo ja päivitys Koulutus

Lisätiedot

Uutta Remote Support Platform 3.0 -versiossa

Uutta Remote Support Platform 3.0 -versiossa Uutta Remote Support Platform for SAP Business One Asiakirjaversio: 1.0 2012-10-08 Kaikki maat Typografiset merkintätavat Kirjasintyyli Esimerkki Näytöstä lainatut sanat tai merkit. Näitä ovat kenttien

Lisätiedot

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Yksikkö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ätiedot

UCOT-Sovellusprojekti. Testausraportti

UCOT-Sovellusprojekti. Testausraportti UCOT-Sovellusprojekti Testausraportti Ilari Liukko Tuomo Pieniluoma Vesa Pikki Panu Suominen Versio: 0.02 Julkinen 11. lokakuuta 2006 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä Hyväksyjä Päivämäärä

Lisätiedot

Rakenteiset tietotyypit Moniulotteiset taulukot

Rakenteiset tietotyypit Moniulotteiset taulukot C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen

Lisätiedot

Kontrollipolkujen määrä

Kontrollipolkujen määrä Testaus Yleistä Testaus on suunnitelmallista virheiden etsimistä Tuotantoprosessissa ohjelmaan jää aina virheitä, käytettävistä menetelmistä huolimatta Hyvät menetelmät, kuten katselmoinnit pienentävät

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

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

Lisätiedot

T 76.115 Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

T 76.115 Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi Hirviö Projektikatselmointi Mikä Hirviö on? Hajautettu muistikirja Professoreille Muistiinpanoja keskusteluista opiskelijan kanssa Diplomitöiden ja jatko opintojen seuranta Raportointi Opetushenkilökunnalle

Lisätiedot

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu 811312A Tietorakenteet ja algoritmit 2017-2018, Harjoitus 2 ratkaisu Harjoituksen aiheena on algoritmien oikeellisuus. Tehtävä 2.1 Kahvipurkkiongelma. Kahvipurkissa P on valkoisia ja mustia kahvipapuja,

Lisätiedot

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3

Lisätiedot

Tiedonsiirto helposti navetta-automaation ja tuotosseurannan välillä

Tiedonsiirto helposti navetta-automaation ja tuotosseurannan välillä Tiedonsiirto helposti navetta-automaation ja tuotosseurannan välillä Tiedonsiirto VMS-, Alpro- tai DelProtuotannonohjausjärjestelmästä Ammuohjelmistoon 5/2014 Asennettavat ohjelmat ja versiot VMS-Management

Lisätiedot