OHJELMISTON ALUSTAN VAIHTO
|
|
- Eeva-Liisa Heikkinen
- 8 vuotta sitten
- Katselukertoja:
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 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
LisätiedotAS-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ätiedotS11-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ätiedotMaastotietokannan 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ätiedotKää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ätiedotTT00AA12-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ätiedotELM 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ätiedotIDL - 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ätiedotSisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4
Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.
LisätiedotATK 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ätiedot5. HelloWorld-ohjelma 5.1
5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2
LisätiedotMäärittelydokumentti
Määrittelydokumentti Aineopintojen harjoitustyö: Tietorakenteet ja algoritmit (alkukesä) Sami Korhonen 014021868 sami.korhonen@helsinki. Tietojenkäsittelytieteen laitos Helsingin yliopisto 23. kesäkuuta
LisätiedotOhjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka
LisätiedotTAMPEREEN 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ätiedotHarjoituksen 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ätiedotOhjelmisto 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ätiedotOperaattoreiden 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ätiedotOsoitin 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ätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
Lisätiedot12. 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ätiedot8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
Lisätiedot2 Konekieli, aliohjelmat, keskeytykset
ITK145 Käyttöjärjestelmät, kesä 2005 Tenttitärppejä Tässä on lueteltu suurin piirtein kaikki vuosina 2003-2005 kurssin tenteissä kysytyt kysymykset, ja mukana on myös muutama uusi. Jokaisessa kysymyksessä
LisätiedotHARJOITUS 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ätiedotOngelma(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ätiedotToinen 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ätiedotSQL 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ätiedotOhjelmoinnin 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ätiedotKirjoita 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ätiedot4. Luokan testaus ja käyttö olion kautta 4.1
4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään
LisätiedotMiten 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ätiedotT 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ätiedotAsteri 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ätiedotPerusteet. 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ätiedot815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.
LisätiedotLohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3
16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut
LisätiedotKää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ätiedotYllä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ätiedotTAMPEREEN 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ätiedotMerkkijono 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ätiedotUCOT-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ätiedot4. 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ätiedotITKP102 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ätiedotTAMPEREEN 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ätiedot11/20: Konepelti auki
Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon
LisätiedotKä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ätiedotPythonin 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ätiedotLohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3
15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet
LisätiedotYllä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ätiedot815338A 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ätiedotJoonas 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ätiedot11. Javan toistorakenteet 11.1
11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin
LisätiedotAlgoritmit 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ätiedotTä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ätiedotLuento 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ätiedotLuento 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ätiedotLuento 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ätiedotCUDA. 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ätiedotC-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ätiedotLuento 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ätiedotWINE 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ätiedotTietuetyypin 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ätiedotKä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ätiedotSisällys. 15. Lohkot. Lohkot. Lohkot
Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet
LisätiedotTik-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ätiedotSisä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ätiedotLuento 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ätiedot811120P 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ätiedotITKP102 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ätiedot16. 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ätiedotITKP102 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ätiedot8. Näppäimistöltä lukeminen 8.1
8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)
LisätiedotValppaan 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ätiedot811120P 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ätiedotJussi 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ätiedotHarjoitus 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ätiedot815338A 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ätiedot4. 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ätiedotZeon 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ätiedotITKP102 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ätiedotProjektisuunnitelma. (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ätiedotApuja 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ätiedotLINUX-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ätiedotJouko 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ätiedotPRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER
PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER Group 16 Ville Laatu Henri Myllyoja - i SISÄLLYSLUETTELO 1. DEBUGGERI YLEISESTI... II 1.1 Debuggerin käyttämien... ii 1.2 Debuggerin käynnistäminen... ii
LisätiedotEsimerkkiprojekti. 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ätiedotOhjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:
1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri
LisätiedotChapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen
Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle
Lisätiedot5. HelloWorld-ohjelma 5.1
5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2
LisätiedotETS5 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ätiedotUutta 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ätiedotYksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }
Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.
LisätiedotUCOT-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ätiedotRakenteiset 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ätiedotKontrollipolkujen 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ätiedotOhjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
LisätiedotT 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ätiedot811312A 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ätiedotTIETOKANNAT: 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ätiedotTiedonsiirto 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