Tietokone ja käyttöjärjestelmä -luentomoniste v Jyry Suvilehto

Koko: px
Aloita esitys sivulta:

Download "Tietokone ja käyttöjärjestelmä -luentomoniste v. 0.93. Jyry Suvilehto"

Transkriptio

1 Tietokone ja käyttöjärjestelmä -luentomoniste v Jyry Suvilehto

2 Esipuhe Tämä luentomoniste on tarkoitettu itseopiskelumateriaaliksi kurssille T Tietokone ja käyttöjärjestelmä. Moniste ei missään tapauksessa ole valmis. Korjausehdotuksia ja rakentavaa kritiikkiä otetaan mielellään vastaan. Moniste on jaettu 7 lukuun, joista jokainen käsittelee samaa aihealuetta kuin yksi kurssin T luennoista. Jokaisen luvun alussa on lyhyt top-down katsaus luennon sisältöön. Liite-osiossa kerrotaan pikaisesti asioita, jotka eivät välttämättä tule opinnoissa vastaan henkilöille, jotka eivät opiskele tietotekniikan tutkinto-ohjelmassa. Luennoilla ja monisteessa ei välttämättä käsitellä aivan samoja asioita. Moniste on laadittu siten, että sitä lukemalla on mahdollista saavuttaa kurssin keskeiset oppimistavoitteet. Joitakin syventäviä tavoitteita ei voi saavuttaa pelkästään monistetta lukemalla, vaan opiskelijalta vaaditaan omaaloitteisuutta. Monisteen kuvitus on varsin korutonta. Syy tähän on yksinkertainen: kaikki kuvat on tekijänoikeussyistä tehty itse. Monisteessa ei ole harjoitustehtäviä, vaan ne tarjotaan kurssilla toista kautta. Ideoita harjoitustehtävistä saa kuitenkin antaa. c 2009 Jyry Suvilehto Lisenssi: Creative Commons Nimeä-Epäkaupallinen-Tarttuva 1.0 Suomi i

3 Kiitokset Ilman Vesa Hirvisaloa, Sami Kiminkiä, Juho Äyräväistä, Marjukka Kokkosta, Jaakko Kotimäkeä ja Timo Töyryä tämä luentomoniste olisi paljon ikävämpää luettavaa. Ilman Sanna Suorantaa ja Aleksi Aaltoa monisteessa olisi paljon vähemmän pilkkuja. Kiitokset myös Axel Eirolalle, Juha Kurjoselle, Ville Immoselle, Jarno Hilveniukselle, Paav-o Leinoselle ja Tero Paloheimolle korjausehdotuksista ensimmäisen toteutuskerran perusteella. Erityiskiitos Jeff Beardille (Wikipedian käyttäjä jjbeard), jonka Public Domainiin julkaisemia SVG-kuvia logiikkaporteista käytetään luvussa 2. Kiitos myös Graphviz-työkalun kehittäjille. Kirjassa olisi huomattavasti vähemmän kuvia ja enemmän puuduttavaa tekstiä ilman kyseistä ohjelmistoa. ii

4 Sisältö Esipuhe Kiitokset i ii 1 Johdanto Systeemit ja insinööritieteen perusteet Systeemi ja tietotekniikka Modernin tietokoneen rakenne Käyttöjärjestelmän rakenne Bitistä summaimeen Lukujärjestelmät Binäärilukujärjestelmä Oktaali- ja heksadesimaalijärjestelmät Negatiiviset luvut Etumerkkibitti Yhden komplementti Kahden komplementti Reaalilukujen esitys tietokoneessa Kiinteän pilkun luvut Liukuluvut Tietokoneiden äärellisyydestä Merkistöt American Standard Code for Information Interchange (ASCII) ISO ja ISO Unicode ja UTF Boolen algebra Piirisuunnittelu Boolen algebralla Puolisummain Kokosummain iii

5 2.9 Virheentarkistus Pariteettibitti Syklinen redundanssitarkastus (CRC) Hammingin etäisyys ja koodaus Ohjelmoitavat tietokoneet Erityislaskimista ohjelmoitavaan tietokoneeseen Von Neumann -arkkitehtuuri Väylä Muisti Siirräntäyksikkö Suoritusyksikkö Käskykierros Käskykanta-arkkitehtuuri Ohjelmien kääntäminen, kirjastot ja linkitys Muistihierarkia Lokaalius Välimuisti Muistihierarkia Keskeytyksistä käyttöjärjestelmään Keskeytykset Alkeelliset prosessit Tiedonsiirtotekniikat Ohjelmoitu tiedonsiirto Keskeytyksillä toteutettu tiedonsiirto Suora muistisiirto (DMA) Virtuaalimuisti Kohti käyttöjärjestelmää Ydin Käyttöjärjestelmätyypit Käyttöjärjestelmän rakennuspalikat Putket Standardivirrat Tiedostot ja hakemistorakenne Tiedosto Tiedostotyypit Hakemistorakenne Tiedostojärjestelmä FAT iv

6 5.4.2 Unix-tiedostojärjestelmät Modernit tiedostojärjestelmät Kiintolevyn osiot Linkit Lisälaitteet Everything s a file (Unixin tiedostojärjestelmä ja lisälaitteet) Asiakas-palvelin -malli (Windowsin tiedostojärjestelmä ja lisälaitteet) Käyttäjänhallinta Autentikaatiotietueet Tiedosto-oikeudet Käyttöjärjestelmä Symmetrinen moniprosessointi ja moniydinprosessointi Säikeet Käyttöjärjestelmäytimien tavoitteet ja tehtävät Monoliittiset ytimet Mikroytimet Hybridiytimet POSIX ja shell POSIX The Unix Programmer s Manual man Komentotulkki Ympäristömuuttujat Säännölliset lausekkeet Yksinkertaiset säännölliset lausekkeet (BRE) Laajennetut säännölliset lausekkeet (ERE) Perl ja Python POSIX-apuohjelmat Putket Prosessinhallinta Tiedostonhallinta Tiedostojärjestelmä ja lisälaitteet Tekstinkäsittely Skriptit A Liitteet 104 A.1 Turingin kone A.2 Pino ja Jono v

7 Viitteet 108 Hakemisto 108 vi

8 Luku 1 Johdanto Ensimmäisen luvun aluksi käsittelemme insinööritieteessä usein esiintyviä korkean tason filosofisia käsitteitä. Nämä käsitteet on hyvä pitää mielessä loppukurssin ja oikeastaan koko opintojen aikana. Alun systeemikäsite jätetään tarkoituksella varsin avoimeksi. Systeemejä on monenlaisia, ja niitä pääseekin opiskelemaan TKK:lla esimerkiksi Matematiikan ja systeemianalyysin Mat-2 -alkuisilla kursseilla, BECS 1 -huippuyksikön kursseilla ja monissa eri koulutusohjelmien pääaineissa. Tietyt perustermit ja -ajattelumallit ovat yhteisiä, mutta systeemilähestymiseen liittyy aina myös paljon sovellusalakohtaista tietoa. Tämä luentomoniste käsittelee tietokonejärjestelmiä. Tietokonejärjestelmään kuuluu sekä fyysinen, piiriaspekti että tietokonetta hallitseva ohjelmisto, käyttöjärjestelmä. Luvun lopussa esitellään sekä tietokonetta että käyttöjärjestelmää nopeasti top-down -lähestymistavalla, jotta top-down oppijoiden on helpompi rakentaa kokonaiskuva kurssin asiasisällöstä. Luentomoniste on muuten rakennettu esittelemään asiat bottom-up, joten ensimmäisen luvun esittelyllä pyritään tasapainottamaan tätä rakennetta. Mikäli termit top-down ja bottom-up eivät ole tuttuja, ne esitellään seuraavaksi systeemien yhteydessä. 1.1 Systeemit ja insinööritieteen perusteet Insinööritiede (engineering) tarkoittaa (Merriam-Webster -sanakirjasta vapaasti käännettynä) joko 1. tieteen ja matematiikan soveltamista siten, että aineiden ominaisuudet ja luonnossa oleva energia valjastetaan ihmisten hyödyksi 1 department of Biomedical Engineering and Complex Systems 1

9 LUKU 1. JOHDANTO 2 2. monimutkaisten järjestelmien suunnittelua ja toteutusta Tällä kurssilla käsitellään lähinnä jälkimmäisen määritelmän mukaista insinööritiedettä. Järjestelmien suunnittelu ja toteutus perustuu selkeästi tieteisiin ja matematiikkaan, mutta se sisältää myös monia asioita, joita ei ole helppo johtaa takaisin perustieteisiin. Järjestelmää, joka sisältävää monia toisistaan riippuvaisia osasia ja joka on selkeästi ympäristöstään erotettava kokonaisuus, kutsutaan systeemiksi (system). Systeemejä voi löytää monista eri tieteenaloista: solu on hyvä esimerkki biologisesta systeemistä, taloustieteissä esimerkiksi yksittäinen yritys tai tietty kaupan ala, kuten terästeollisuus voidaan mieltää systeemiksi. Tällä kurssilla systeemit ovat joko fyysisiä piirejä (tietokoneen osia tai lisälaitteita) tai ohjelmistosysteemejä (käyttöjärjestelmä, käyttöjärjestelmän osat ja apuohjelmat). Systeemien yhteydessä käytetään filosofista käsitettä holismi kuvaamaan ajattelutapaa, jonka mukaan systeemillä voi olla niin sanottuja emergenttejä ominaisuuksia. Emergentit ominaisuudet eivät ole suoraan johdettavissa alisysteemien ominaisuuksista. Esimerkiksi väri on aineen emergentti ominaisuus: yksittäinen molekyyli ei ime mitään tiettyä valon aallonpituutta, mutta kun molekyylejä on suuria määriä, ne imevät tiettyjä valon aallonpituuksia ja aineella on väri. Huonosti suunnitellun ja kirjoitetun ohjelman emergentti ominaisuus on usein hitaus. Vaikka aliohjelmia ei ole erikseen suunniteltu hitaiksi, kokonaisuus on tarpeettoman hidas. Systeemejä voidaan tarkastella kahdella eri tavalla. Systeemiä voidaan ajatella mustana laatikkona (black box), jolloin systeemistä tarkastellaan vain siihen vaikuttavia systeemin ulkopuolisia seikkoja ja systeemin vaikutusta itsensä ulkopuolelle. Esimerkiksi matemaattisen laskutoimituksen suorittavan ohjelman saamat syötteet ja sen antama tulos. Systeemiä voidaan myös ajatella valkoisena laatikkona (white box), jonka sisältö tiedetään. Mustaa laatikkoa tarkasteltaessa tarkastelu joudutaan rajoittamaan syötteisiin ja tuloksiin. Valkoista laatikkoa tarkasteltaessa voidaan myös tarkastella laatikon sisällä olevia toteutuskohtaisia yksityiskohtia. Esimerkiksi kuvassa 1.1 on esitelty hahmontunnistussysteemin perusrakenne 2. Esimerkki hahmontunnistussysteemi on ohjelmisto, jolle annetaan kasvokuva ja joka yhdistää kuvan tietokannassaan oleviin saman henkilön kasvoihin ja antaa tuloksena ihmisen nimen. Tarkasteltaessa systeemiä mustana laatikkona, siitä voidaan mitata vain, kuinka hyvin se tunnistaa kasvoja. Jos taas samaa systeemiä tarkastellaan 2 Hahmontunnistusta käsitellään kurssilla T Datasta Tietoon ja Informaatiotekniikan pääaineessa.

10 LUKU 1. JOHDANTO 3 Musta laatikko b1 b2 b3 b4 Syöte Valkoinen laatikko Tulos Mittaus Esikäsittely Piirreirrotus Luokittelu Kuva 1.1: Hahmontunnistussysteemi mustana ja valkoisena laatikkona. valkoisena laatikkona, voidaan tarkastella myös sen osien toimintaa. Systeemin neljä pääosaa ovat tässä esimerkissä mustia laatikoita (eli niiden toimintaa ei tarvitse tai haluta tietää). Joissain tapauksissa voi olla mielekästä vaihtaa jokin systeemin osista toiseen, eri tavoin toteutettuun mustaan laatikkoon. Voidaan esimerkiksi analysoida kahden eri luokittelutoteutuksen eroja koko systeemin toimintaan. Esimerkin kaltaisissa tapauksissa, joissa systeemiä tarkastellaan kokonaisuutena joka koostuu osasista, puhutaan top-down -strategiasta. Vastakohta tälle lähestymistavalle on bottom-up -strategiasta 3. Bottom-up -strategiassa lähdetään osasista ja osasia liitetään toisiinsa suurempien järjestelmien rakentamiseksi. Systeemiä (esimerkiksi ohjelmistoa) rakennettaessa käytetään yleisesti niinsanottua V-mallia (V-model). Kuvassa 1.2 on esitelty V-mallin eteneminen. Lähtökohtana on tulevan systeemin toimintaperiaate. Tämän jälkeen systeemin arkkitehtuuri suunnitellaan ensin karkealla tasolla, jonka jälkeen karkean tason osasten tarkka rakenne suunnitellaan ja toteutetaan. Kun palaset on toteutettu, ne yhdistetään ja niiden yhteentoimivuus varmistetaan. Palasten yhdistämistä kutsutaan systeemi-integraatioksi ja se on erittäin tärkeä osa toimivan tuotteen aikaansaamista. V-mallin laskeva sivu vastaa topdown -lähestymistä ja nouseva sivu bottom-up lähestymistä. V-malli voidaan ajatella yhdistävän nämä kaksi lähestymistapaa. 3 Top-down ja bottom-up ovat yleisiä jäsennysstrategioita. Niistä on hyötyä paitsi järjestelmiä suunnitellessa, myös opittua tietoa jäsennettäessä. Jotkut oppivat paremmin lähtiessään purkamaan kokonaisuutta palasiin. Toiset taas oppivat paremmin yhdistelemällä osasia suuremmiksi kokonaisuuksiksi. Tämä opetusmoniste on jäsennetty ensisijaisesti bottom-up -oppimista tukemaan. Top-down -oppijoiden avuksi tässä käydään tietokonejärjestelmän rakenne läpi ja sen jälkeen jokaisen luvun alussa esitellään luvun sisältö top-down -lähestymisellä.

11 LUKU 1. JOHDANTO 4 Toimintaperiaateja malli Käyttö ja ylläpito Vaatimukset ja arkkitehtuuri Systeemi-integraatio -verifikaatio ja validointi Tarkka toteutuksen rakenne Integrointi, testaus ja verifiointi Toteutus Kuva 1.2: Systeemisuunnittelun V-malli Järjestelmiä suunniteltaessa ja kehitettäessä niistä pyritään tekemään parempia jollakin tietyllä mittarilla. Näiden mittarien valinta vaikuttaa olennaisesti systeemiin. Esimerkiksi moderneissa suorittimissa yksi vaatimuksista on varsin usein kellotaajuuden ja käytetyn tehon suhde, koska tietokoneista halutaan tehdä energiatehokkaampia ja vihreämpiä. Käytännössä aina yksi mittari on aika, mutta sen painotus riippuu tilanteesta: joskus systeemin toiminta on aikakriittistä, joskus se taas ei ole. Joskus taas systeemin suunnitteluun käytetyn ajan määrä on olennaista, kuten tapauksessa jolloin uudelle markkina-alueelle pitää päästä ensimmäisenä. Mittarien yhteydessä puhutaan kustannuksista. Jos jokin teko tai ratkaisu aiheuttaa tietyn mittarin siirtymistä ei-toivottuun suuntaan puhutaan että se on kallista, päinvastoin taas halpaa. Raha on yksi erittäin yleinen mittari. Historia tuntee tapauksia joissa raha ei ole ollut tärkein mittari, mutta nämä ovat poikkeuksia, kuten Manhattan- ja Apollo-projektit. Esimerkiksi luvussa 2 käsiteltävällä piiritasolla tietyt laskutoimitukset, kuten kerto- ja jakolasku ovat kalliimpia kuin yhteen- ja vähennyslaskut sekä bitshift-operaatiot. Kerto- ja jakolaskujen suorittamisessa kuluu huomat-

12 LUKU 1. JOHDANTO 5 tavasti enemmän aikaa kuin yhteen- ja vähennyslaskujen. Tämän johdosta monia tärkeitä algoritmeja on pyritään kehittämään siten, että niiden laskemiseen tarvitaan mahdollisimman vähän kerto- ja jakolaskuja. Ihmisten kyky käsittää monimutkaisia systeemejä ei ole erityisen hyvä. Ihmiset pystyvät pitämään alle 10 asiaa mielessään yhdellä kertaa ja systeemeissä voi helposti olla jopa satojatuhansia osia, jotka voivat teoriassa toimia minkä tahansa toisen osan kanssa yhdessä. Tätä monimutkaisuutta rajoittamaan määritellään erilaisia rajapintoja. Rajapinnoilla piilotetaan jonkin allaolevan alisysteemin kompleksisuus. Ohjelmistotekniikassa on paljon ohjelmointirajapintoja (Application Programming Interfaces, API ). Useimmat tietokoneen lisälaitteet liitetään fyysiseen liitäntäväylään, jota pitkin ne kommunikoivat tiedonsiirtorajapinnan avulla, jolloin tietokoneen ei tarvitse välittää lisälaitteen sisäisestä toteutuksesta. Esimerkiksi tietokoneen USBväylään voi liittää mitä tahansa hiirestä tv-vastaanottimeen ja toiseen tietokoneeseen. Ainoa vaatimus USB-väylään liitettävälle laitteelle on se, että se täyttää USB-standardin. Biologiassa hermosolujen välillä on rajapintoja, joiden avulla viesti kulkee hermostoa pitkin. Kaikkia soluja ympäröivä solukalvo muodostaa rajapinnan solun kommunikaatiolle muun systeemin kanssa. Rajapinnat tarjoavat myös hyvän tavan esittää suuret kokoluokkavaihtelut. Ihmisten on helppo mieltää kokoluokkia millimetristä (10 3 m) noin kymmeneen kilometriin (10 4 m), eli vain noin kertaisen kokovaihtelun. Esimerkiksi yksittäisen tietokoneen osien kokoluokka vaihtelee jo suuremmalla skaalalla: suoritinpiirit tehdään 45 nanometrin (10 9 ) tekniikalla ja suurimmat liittimet ovat kymmenen sentin kokoluokkaa (10 1 ), eli kyseessä on kertainen ero. Rajapintojen suunnittelufilosofioita on useita, ja oikean valinta riippuu usein sovelluskohteista. Yksi käyttöjärjestelmäsuunnittelussa käytetty paradigma on niin sanottu oliomalli, jossa erilaisia käsitteitä paketoidaan olioiksi, jotka kuvaavat ontologisia käsitteitä. TKK:n perusohjelmointikursseilla opetetaan oliolähestymistä ohjelmistoihin. Toinen, vastikään pinnalla ollut paradigma on komponenttipohjainen lähestyminen ( Component Based Engineering, CBE), jossa jokainen musta laatikko huolehtii jostain tietystä määritellystä tarpeesta. Komponenttipohjainen lähestymistapa on jäämässä taka-alalle uuden, mallipohjaisen lähestymisen, (Model Driven Engineering, MDE). Mallipohjaisessa lähestymisessä pyritään kuvauskielellä tekemään malli sovelluskohtaisista käsitteistä ja piilotetaan algoritmiset käsitteet.

13 LUKU 1. JOHDANTO Systeemi ja tietotekniikka Suurin ihmiskunnan aikaansaama tekninen systeemi on kiistatta internet. Vaikka se koostuu eri osista, eikä sitä välttämättä voida mieltää yhdeksi laitteeksi, on se selkeästi ympäristöstään erotettavissa oleva kokonaisuus. Verkon ominaisuuksien ja tiedonsiirron tarkastelu jätetään tietoliikenteen kursseille ja tämän kurssin puitteissa rajoitutaan tarkastelemaan yksittäisiä verkkoon liittyneitä laitteita. Myöhemmissä opinnoissa verkottuneita tietokoneita tarkastellessa on hyvä ymmärtää yksittäisen koneen toiminta. Vaikka tietokoneverkot on helppo mieltää miditornikoteloista rakennetuista, beigeistä Windows-koneista koostuvaksi homogeeniseksi rakenteeksi, on totuus aivan toinen. Kuvassa 1.3 on esitetty toisiinsa liittyneitä tietokoneita. Kaikki kuvassa esiintyvät laitteet ovat itseasiassa tietokoneita ja niillä kaikilla on sama käskykanta-arkkitehtuurin toteuttavan tietokoneen perusrakenne (esitellään luvussa 3). Kurssilla käsitellään PC-koneita esimerkkeinä niiden tuttuuden vuoksi, mutta PC:t muodostavat vain alle prosentin kaikista maailman ohjelmoitavista tietokoneista. Matkapuhelin Tukiasema Pelikonsoli Reititin Pöytätietokone Palvelin Kuva 1.3: Verkottuneita tietokoneita Tietokoneiden hyödyllisyys ja levinneisyys johtuu nimenomaan niiden oh-

14 LUKU 1. JOHDANTO 7 jelmoitavuudesta. Kuvan 1.2 V-mallin mukaisessa systeemien toteutuksessa yleensä kalleinta on nousu ylemmälle abstraktiotasolle. Systeemille on helppo suunnitella jokin rakenne ja pienet rakennuspalikat on helppo toteuttaa ja jopa testata toimiviksi. Palasten yhdistäminen taas on erittäin vaikeaa, sillä pienimmätkin virheet saattavat kostautua moninkertaisesti. Kokemus osoittaa että virheettömien suunnitelmien teko on käytännössä mahdotonta. Jos laitteen toiminnan voi määrittää ohjelmallisesti, sen muuttaminen jälkikäteen on monin verroin halvempaa kuin fyysisen laitteen, esimerkiksi tuhannen identtisen piirikortin tai vaikkapa taivutetun palkin muuttaminen. Tietokoneohjelmiston varaan suunnitellun systeemin toimintaa voi siis helposti muuttaa jos virheitä ilmenee. Tietokoneohjelmien muunnettavuudesta seuraa helposti kaaos. Jos monta insinööriä päästetään rajoituksetta muokkaamaan ohjelmistoa, sen toimintaa on hyvin vaikea ennustaa, eikä voida taata että se tekee mitä sen pitäisi ja tärkeämmin että se ei tee jotain mitä sen ei pitäisi. Tätä kaaosta estämään ja hallitsemaan tietokoneissa on erityinen ohjelmisto, käyttöjärjestelmä. Käyttöjärjestelmä tarjoaa ohjelmoijalle abstraktiotasoja laitteiston hallintaan ja vastaa laitteiston hallinnoimisesta siten, että ohjelmoija ei pääse rikkomaan mitään kriittistä ja siten, että laitteistosta voidaan saada maksimaalinen hyöty. 1.3 Modernin tietokoneen rakenne Tietokone mustana laatikkona saa syötteitä käyttäjältä erilaisien syöttölaitteiden (hiiri, näppäimistö, mikrofoni) avulla. Vastaavasti tietokone antaa käyttäjälle tulosteita näyttö- ja tulostinlaitteiden (näyttö, tulostin, kaiuttimet) avulla. Käyttäjän suoraan antaman syötteen lisäksi tietokoneelle voi antaa syötettä fyysisellä medialla, kuten Bluray-levyllä tai USB-muistilla. Useimmat tietokoneet osaavat myös kirjoittaa fyysisille medioille. Lisälaitteita ja niiden kanssa kommunikointia käsitellään luvussa 5. Tietokoneen sisäiseen tilaan vaikuttavat myös tietoliikenneyhteydet 4, erityisesti yhteys internetiin 5. Tietokoneilla on käynnistyksestä toiseen säilyvä tila (huom: näin ei ole aina ollut), joka on säilötty pysyväismuistiin, useimmiten kovalevylle. 4 Tällä kurssilla ei käsitellä tietoliikennettä, vaan sitä käsittelvät T-opiskelijat kurssilla T Johdatus tietoliikenteeseen ja TLT-opiskelijat kurssilla S Telecommunication Systems. 5 Juuri nyt tutkimuksessa kiinnostaa fyysisen tietokone-systeemin ja muun internetin välisen rajan hämärtäminen, ns. computation offloading, jonka ilmentymiä on muunmuassa cloud computing ja pienemmässä määrin grid computing. Niitä käsitellään ohjelmistotekniikan DI-vaiheen erikoiskursseilla.

15 LUKU 1. JOHDANTO 8 Yksinkertaistettu kaaviokuva tietokoneesta ja tärkeimmistä lisälaitteista on esitetty kuvassa 1.4. Pysyväistallennus Tietoliikenneyhteydet Tietokone Tulostuslaitteet Syöttölaitteet Kuva 1.4: Tietokone ja siihen liittyviä lisälaitteita Siirrytään tarkastelemaan tietokonetta valkoisena laatikkona. Jokaisessa tietokoneessa on suoritin, joka suorittaa varsinaiset laskutoimitukset. Luvussa 2 käydään läpi binääriaritmetiikkaa ja logiikkafunktioita, joiden avulla suunnitellaan yksinkertainen laskin. Suoritin on huomattavan paljon monimutkaisempi laskin, mutta toimintaperiaate on sama. Kurssilla esiteltävissä tietokoneissa on muistia, jonne suorittimella ajettavat ohjelmat ja niiden data voidaan tallentaa. Tietokoneessa on suorittimen lisäksi muita osia, joita yhdistävät erilaiset väylät 6. Väylä on yleisnimi tiedon siirtotielle, jonka varrella on erilaisia laitteita. Väylien välillä on nopeuseroja, jotka johtuvat väylien varrelle asetetuille laitteille ominaisista nopeuksista. Liikennettä väylällä ohjaa yleensä väyläohjain, joka on tyypillisesti liitetty yhtenä lisälaitteena astetta nopeammalle väylälle. Tietokoneen perusosat, väylä, suoritin ja muisti löytyvät kaikista kurssin määritelmän mukaisista tietokoneista. Tietokoneita muokataan tiettyyn käyttötarkoitukseen liittämällä väylälle muita laitteita. Tärkeimmät PC-tietokoneen väylät sijaitsevat fyysisellä tietokoneen osalla, jota kutsutaan emolevyksi. Väylät on emolevyllä jaettu kahteen piirisarjaan, eteläsiltaan (Southbridge) ja pohjoissiltaan (Northbridge). Niiden nimet tulevat kaaviosta, joissa suoritin on ylimpänä eli pohjoisessa. Kuvassa 1.5 on kuvattu modernin tietokoneen väylähierarkia. Kuvassa esitetyt Front 6 Väyliä voi olla vain yksi, kuten 1-Wire -arkkitehtuurissa, mutta tämä on harvinaista ja yhden väylän ratkaisuja käytetään lähinnä erityisratkaisuissa.

16 LUKU 1. JOHDANTO 9 Side Bus ja muistiväylä vastaavat väylää luvussa 3 käsiteltävän von Neumann -arkkitehtuurissa. Samassa luvussa kuvattava siirräntäyksikkö vastaa karkeasti eteläsiltaa modernissa arkkitehtuurissa: sen varrelle on liitetty erilaisia lisälaiteväyliä, kuten yleiskäyttöinen Universal Serial Bus eli USB-väylä kovalevyjen liittämiseen tarkoitettu Serial ATA eli SATA-väylä Peripheral Component Interconnect eli PCI-väylä vanhojen lisälaitekorttien liittämiseksi Low Pin Count eli LPC-väylä, johon kiinnitetään vanhoja hiiriä, levyasemia ja sarja- ja rinnakkaisporttiliitäntöjä. Prosessori Front-side bus (FSB) Pohjoissilta muistiväylä Internal Bus PCI Express Muisti Eteläsilta Näytönohjain SATA LPC USB PCI Kiintolevyt Vanhat laitteet (sarjaportti, PS/2) USB-lisälaitteet PCI-lisälaitteet Kuva 1.5: Modernin tietokoneen väylähierarkia. Näytönohjaimen toimintaa ei tällä kurssilla käsitellä. Sitä selitetään kurssilla T Tietokonegrafiikan perusteet. 1.4 Käyttöjärjestelmän rakenne Käyttöjärjestelmä-käsitteestä useimmille tulee mieleen ensimmäiseksi Windowsin graafinen käyttöliittymä (Graphical User Interface, GUI ). Graafisten käyttöjärjestelmien ja drag&drop-käyttöliittymien toteutus on kuitenkin verrattain monimutkaista, eikä sitä muutenkaan ole tämän kurssin puitteissa olennaista käsitellä. Käyttäjälle näkyvä osuus ei juurikaan vaikuta varsinaisen, laitteiston toimintaa ohjaavan käyttöjärjestelmän suunnitteluun.

17 LUKU 1. JOHDANTO 10 Tällä kurssilla käyttöjärjestelmää edustaa $ eli Unixin komentokehote, joka on korkein taso jolla käyttöjärjestelmää käsitellään. Luku 7 on pyhitetty komentorivin käyttämiselle. Kaikki sitä edeltävä materiaali käsittelee sitä, mitä komentokehotteen alla tapahtuu. Vaikka kurssin esimerkit ovatkin PC-tietokoneiden käyttöjärjestelmistä, on myös sykemittarien, kännyköiden, reitittimien ja muiden ohjelmoitavien laitteiden käyttöjärjestelmien rakenne hyvin samankaltainen. Käyttöjärjestelmä abstrahoi allaolevaa laitteistoa ohjelmoijalle ja hallinnoi laitteistoa. Kuvassa 1.6 on esitetty aiemmin kuvassa 1.5 esitetty tietokoneen arkkitehtuuri väritettynä siten, että vihreä väri näyttää ne järjestelmän osat, joihin ohjelmoija päsee käsiksi suoraan 7 ja punainen ne osat, joihin päästäkseen ohjelmoijan on käytettävä käyttöjärjestelmän tarjoamia palveluja tai rajapintoja. Prosessori Front-side bus (FSB) Pohjoissilta muistiväylä Internal Bus PCI Express Muisti Eteläsilta Näytönohjain SATA LPC USB PCI Kiintolevyt Vanhat laitteet (sarjaportti, PS/2) USB-lisälaitteet PCI-lisälaitteet Kuva 1.6: Modernin tietokoneen väylähierarkia. Vihreä edustaa osia, joihin ohjelma pääsee käsiksi suoraan. Punainen osia, joihin pääsee vain käyttöjärjestelmän kautta. Käyttöjärjestelmää käsiteltäessä kannattaa pitää mielessä, että käyttöjärjestelmä rakentuu allaolevan fyysisen tietokoneen päälle. Käyttöjärjestelmä on tietokoneen kovalevylle 8 tallennettu ohjelma, joka käynnistyksen yhteydessä siirretään muistiin. Käyttöjärjestelmä ohjaa logiikkaporteista koostuvan suoritusyksikön toimintaa. Käyttöjärjestelmä rakentuu abstraktiotasoille, kuten aliluvussa esitettävälle käskykanta-arkkitehtuurille, joka pii- 7 Itseasiassa ohjelmoija ei edes pääse käsiksi koko muistiin, vaan vain prosessin omaan virtuaalimuistii. Tästä enemmän luvussa 4. 8 Itseasiassa ei aina: käyttöjärjestelmä voidaan hakea käynnistyksen yhteydessä myös verkosta.

18 LUKU 1. JOHDANTO 11 lottaa allaolevan piiritason toteutuksen ohjelmoijalta. Nykyään käskykantaarkkitehtuuri piilotetaan myös ohjelmoijalta korkeamman tason ohjelmointikielten, kuten C:n avulla. Taulukossa 1.1 on esitelty käyttöjärjestelmän ja sen allaolevan piiritason toteutuksen abstraktiotasoja. Ensimmäiset neljä tasoa käsittelevät fyysistä toteutusta. Loput ovat ohjelmallisia rakenteita, jotka on toteutettu raudan päälle. Tasot 5-7 käsittelevät yhden suoritusyksikön järjestelmiä, kun taas tasoilla 8-13 voidaan lisätä suoritusyksiköitä tai vaikkapa hajauttaa toteutus useammalle koneelle verkon yli. Taso Nimi Käsiteltävät objektit Esimerkkioperaatioita 13 Komentokehote Ohjelmointiympäristö Skriptikielen käskyt 12 Käyttäjän prosessisäyttäminen Käyttäjän prosessit prosessin tappaminen, py- ja jatkaminen 11 Hakemistot Hakemistot luonti, poisto, haku, listaus 10 Laitteet Tulostimet, näytöt, näppäimistötus Avaus, sulku, luku, kirjoi- 9 Tiedostojärjestelmä Tiedostot Luonti, poisto, avaus, sulku, luku, kirjoitus 8 Prosessienvälinen kommunikaatio Putket Luonti, poisto, avaus, sulku, luku, kirjoitus 7 Virtuaalimuisti Segmentit, sivut Luku, kirjoitus, haku 6 Paikallinen pysyväismuistpautus Datalohkot Luku, kirjoitus, varaus, va- 5 Primitiiviset prosessimaforit Primitiiviset prosessit, se- Pysäytys, jatkaminen, odotus, signalointi 4 Keskeytykset Keskeytyksenkäsittelijät Kutsu, estä alemman tason keskeytykset, salli alemman tason keskeytykset, yritä uduelleen 3 Proseduurit Proseduurit, kutsupino Aseta pinoon, kutsu, palaa 2 Käskykanta Käskyjoukko, skalaari- ja taulukkodata, tulkki lataa, talleta, lisää, vähennä, goto 1 Sähköpiirit rekisterit, portit, väylät siirrä, aktivoi, tyhjennä Taulukko 1.1: Käyttöjärjestelmän rakenneosaset Brownia [1] ja Stallingsia [6] mukaillen.

19 Luku 2 Bitistä summaimeen Tässä luvussa käydään läpi digitaalisen tiedon esittämisen perusperiaatteet. Vaikka tieto voidaan esittää käyttäjälle kuvina, videona, tekstinä tai musiikkina, se tallennetaan aina tietokonejärjestelmässä binäärimuotoisena. Binäärilukujärjestelmä on pieni laajennus myös luvussa käsiteltävään Boolen algebraan. Boolen algebran totuusarvoja voidaan manipuloida logiikkapiireillä, jotka luovat pohjan suoritusyksiköiden suunnittelulle. Suoritusyksiköitä tullaan käyttämään seuraavassa luvussa esiteltävän yleisen tietokonearkkitehtuurin sydämenä. Melkein kaikki muutkin tietokoneen osat vähintään sisältävät jonkinlaisen logiikkapiirin ja useimmat ovat erikoistuneita piirejä. Luvussa käsitellään osin samoja asioita kuin kurssilla S Digitaalitekniikan perusteet, joten sen käyneille osa luvusta toimii kertauksena. Kuitenkin esimerkiksi merkistöistä puhutaan huomattavasti laajemmin kuin Digitaalitekniikan perusteissa. Kyseisen kurssin www-oppimateriaali [3] soveltuu rinnalla luettavaksi kiinnostuneille. 2.1 Lukujärjestelmät Luku on matemaattinen käsite, joka mittaa suuruutta, järjestystä tai jotakin muuta suuretta. Kokonaisluvut tai luonnollisten lukujen joukko on helppo mieltää luvuiksi, mutta myös imaginääriluvut tai vaikkapa amerikkalaistyyliset kurssiarvosanat A, B, C, D, E, F voidaan tulkita luvuiksi. Tämän kurssin puitteissa käsittelemme kuitenkin vain kokonaislukuja ja tiettyjä luonnollisten lukujen osajoukkoja. Yleisesti käytetty kymmenkantajärjestelmä on levinnyt siksi, että ihmisillä on 10 sormea, joten kymmenjärjestelmällä on helppo laskea. Näitä kymmentä numeroa kuvaavat arabialaiset numeraalit 0-9. Numeroiden esitystapa ei riipu kantajärjestelmästä. Yhtä hyvin voitaisiin käyttää kymmentä kir- 12

20 LUKU 2. BITISTÄ SUMMAIMEEN 13 jainta kreikkalaisista aakkosista kuvaamaan numeroita (ja itseasiassa antiikin kreikkalaiset tekivät näin). Lukujärjestelmän erottaminen lukujen esityksestä on tärkeää, sillä tietokoneet käsittelevät lukuja tavalla, joka ei ole yhtä luonnollinen ihmisille ja siksi lukujen kuvaamiseen on tehty ihmisten hahmottamista helpottavia järjestelmiä. Kymmenkantajärjestelmässä (ja muissakin kantajärjestelmissä) luvut esitetään suhteessa kantaluvun (base) potensseihin: A = a i k i missä k on kantaluku ja a i ovat luvussa olevat numeroarvot kohdalla i oikealta laskien. Mikäli luvun kanta on yli 10, on tapana ottaa käyttöön aakkosia roomalaisten aakkosten alkupäästä siten että A=11, B=12 ja niin edelleen. Kannanvaihto Lukuunottamatta kohta esiteltäviä poikkeuksia, lukujärjestelmän kannan vaihto käsin kannattaa aina tehdä kymmenjärjestelmän kautta koska se on ihmisille helpointa mieltää. Lukua x kannassa y merkitään (x) y, missä y ilmaistaan aina kymmenjärjestelmässä. Kannan vaihto arbitäärisestä kannasta kymmenkantaan tarkoittaa summan A = ia i k i laskemista auki. Kannan vaihto kymmenkannasta arbitääriseen kantaan tapahtuu luvulle A esimerkiksi seuraavasti: 1. etsi suurin kantaluvun potenssi k b, joka on pienempi kuin A 2. laske montako kertaa c k b menee A:han, tämä on uuden luvun merkitsevin numero 3. laske erotus A c k b jos se on nolla, muunnos on loppunut. Mikäli et ole viimeisessä potenssissa, merkitse loppujen kertoimeksi 0. jos erotus ei ole 0, siirry tarkastelemaan seuraavaa potenssia k ( b 1) Esimerkiksi jos muutetaan luku 1337 heksadesimaali- eli 16- kantajärjestelmään = 256 on lähin kantaluvun potenssi ja se menee lukuun viisi kertaa, vastaava luku on 0x = 57

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 2. Lukujen esittäminen ja aritmetiikka 2.1 Kantajärjestelmät ja lukujen esittäminen Käytettävät lukujoukot: Luonnolliset luvut IN = {0,1,2,3,... } Positiiviset kokonaisluvut

Lisätiedot

Luku- ja merkkikoodit. Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15)

Luku- ja merkkikoodit. Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15) Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15) A = a = i i w i Digitaalitekniikan matematiikka Luku 12 Sivu 2 (15) Johdanto Tässä luvussa esitetään kymmenjärjestelmän lukujen eli BCD-lukujen esitystapoja

Lisätiedot

Ohjelmoijan binaarialgebra ja heksaluvut

Ohjelmoijan binaarialgebra ja heksaluvut Paavo Räisänen Ohjelmoijan binaarialgebra ja heksaluvut www.ohjelmoinaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta

Lisätiedot

Lukujärjestelmät. Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen Fe

Lukujärjestelmät. Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen Fe Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen.9.2 Fe Lukujärjestelmät Kymmen- eli desimaalijärjestelmä: kantaluku perinteisesti käytetty ja tuttu numerot,,

Lisätiedot

ANSI/IEEE Std

ANSI/IEEE Std Digitaalitekniikan matematiikka Luku 9 Sivu 1 (26) Lukujärjestelmät ja lukujen esittäminen ANSI/IEEE Std 754-2008 0 1 0 1 1 0 0 0 B = Σ B i 2 i Digitaalitekniikan matematiikka Luku 9 Sivu 2 (26) Johdanto

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto Osa VIII Liitteet Liitteet A B C Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto Osa VIII A. Liite Operaattoreiden suoritusjärjestys On tärkeää ymmärtää, että operaattoreilla on prioriteettinsa,

Lisätiedot

Viivakoodin viiteopas

Viivakoodin viiteopas Viivakoodin viiteopas Versio 0 FIN 1 Johdanto 1 Yleiskuvaus 1 1 Tämä opas sisältää tietoja viivakooditulostuksesta, joka toimii suoraan Brotherin tulostimeen lähetettyjen komentojen avulla. Yhteensopivat

Lisätiedot

5. Laskutoimitukset eri lukujärjestelmissä

5. Laskutoimitukset eri lukujärjestelmissä 5. Laskutoimitukset eri lukujärjestelmissä Lukujen esitykset eri lukujärjestelmissä Muunnokset lukujärjestelmien välillä Laskutoimitukset eri lukujärjestelmissä. 5.1. Muunnokset lukujärjestelmien välillä

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 4 Jatkuvuus Jatkuvan funktion määritelmä Tarkastellaan funktiota f x) jossakin tietyssä pisteessä x 0. Tämä funktio on tässä pisteessä joko jatkuva tai epäjatkuva. Jatkuvuuden

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

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out Digitaalitekniikan matematiikka Luku ivu (2).9.2 Fe C = Aseta Aseta i i = n i > i i i Ei i < i i i Ei i i = Ei i i = i i -- On On On C in > < = CI CO C out -- = + (-) (-) = + = C + Digitaalitekniikan matematiikka

Lisätiedot

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely. XML prosessointi Miten XML dokumentteja luetaan ja kirjoitetaan XML prosessori lukee ja välittää XML dokumentin sovellukselle. Se sisältää entieettikäsittelijän (mahdollisesti) XML jäsentimen Sovellus

Lisätiedot

Digitaalitekniikan matematiikka Luku 10 Sivu 1 (14) Lukujärjestelmämuunnokset. 2 s s

Digitaalitekniikan matematiikka Luku 10 Sivu 1 (14) Lukujärjestelmämuunnokset. 2 s s Digitaalitekniikan matematiikka Luku 10 Sivu 1 (14) k 10 2 10 2 s 10 10 8 10 16 10 2 10 2 s 2 8 8 2 2 16 16 2 Digitaalitekniikan matematiikka Luku 10 Sivu 2 (14) Johdanto Tässä luvussa perustellaan, miksi

Lisätiedot

Matematiikan tukikurssi, kurssikerta 3

Matematiikan tukikurssi, kurssikerta 3 Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus

Lisätiedot

Luento 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot Luento 6 Tiedon esitysmuodot Lukujärjestelmät Kokonaisluvut Liukuluvut Merkit, merkkijonot Totuusarvot Kuvat, äänet, hajut(?) 1 Tiedon tyypit (3) Kommunikointi ihmisen kanssa kuva, ääni, merkit, Laitteiston

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

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

Lisätiedot

Tiedon esitys tietokoneessa. Jyry Suvilehto T-110.1100 Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2010

Tiedon esitys tietokoneessa. Jyry Suvilehto T-110.1100 Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2010 Tiedon esitys tietokoneessa Jyry Suvilehto T-110.1100 Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2010 Luennon sisältö 1. Kurssin loppupuolen rakenne 2. Tiedon binääriluonne AD-muunnos 3.

Lisätiedot

Algoritmit 1. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 2 Ke Timo Männikkö Algoritmit 1 Luento 2 Ke 11.1.2017 Timo Männikkö Luento 2 Algoritmin esitys Algoritmien analysointi Suoritusaika Asymptoottinen kertaluokka Peruskertaluokkia NP-täydelliset ongelmat Algoritmit 1 Kevät

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

Luento 6 Tiedon esitysmuodot

Luento 6 Tiedon esitysmuodot Luento 6 Tiedon esitysmuodot Lukujärjestelmät Kokonaisluvut Liukuluvut Merkit, merkkijonot Totuusarvot Kuvat, äänet, hajut(?) 1 Tiedon tyypit (3) Kommunikointi ihmisen kanssa kuva, ääni, merkit, Laitteiston

Lisätiedot

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

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

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 1 Matemaattisesta päättelystä Matemaattisen analyysin kurssin (kuten minkä tahansa matematiikan kurssin) seuraamista helpottaa huomattavasti, jos opiskelija ymmärtää

Lisätiedot

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä? Miksi moniprosessorijärjestelmä? Laskentaa voidaan hajauttaa useammille prosessoreille nopeuden, modulaarisuuden ja luotettavuuden vaatimuksesta tai hajauttaminen voi helpottaa ohjelmointia. Voi olla järkevää

Lisätiedot

Luento 6 Tiedon esitysmuodot. Lukujärjestelmät Kokonaisluvut Liukuluvut Merkit, merkkijonot Totuusarvot Kuvat, äänet, hajut(?)

Luento 6 Tiedon esitysmuodot. Lukujärjestelmät Kokonaisluvut Liukuluvut Merkit, merkkijonot Totuusarvot Kuvat, äänet, hajut(?) Luento 6 Tiedon esitysmuodot Lukujärjestelmät Kokonaisluvut Liukuluvut Merkit, merkkijonot Totuusarvot Kuvat, äänet, hajut(?) 1 Tiedon tyypit (3) Kommunikointi ihmisen kanssa kuva, ääni, merkit, Laitteiston

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest). 1 Virtualisoinnin avulla voidaan purkaa suora linkki suoritettavan sovelluksen (tai käyttöjärjestelmän tms.) ja sitä suorittavan laitteiston välillä. Näin saavutetaan joustavuutta laitteiston käytössä.

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

3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko?

3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko? HY / Avoin yliopisto Johdatus yliopistomatematiikkaan, kesä 2015 Harjoitus 1 Ratkaisuehdotuksia Tehtäväsarja I Seuraavat tehtävät liittyvät luentokalvoihin 1 14. Erityisesti esimerkistä 4 ja esimerkin

Lisätiedot

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo.

Merkitse kertolasku 3 3 3 3 potenssin avulla ja laske sen arvo. 13 Luvun potenssi Kertolasku, jonka kaikki tekijät ovat samoja, voidaan merkitä lyhyemmin potenssin avulla. Potenssimerkinnässä eksponentti ilmaisee, kuinka monta kertaa kantaluku esiintyy tulossa. Potenssin

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Matematiikan tukikurssi, kurssikerta 1

Matematiikan tukikurssi, kurssikerta 1 Matematiikan tukikurssi, kurssikerta 1 1 Joukko-oppia Matematiikassa joukko on mikä tahansa kokoelma objekteja. Esimerkiksi joukkoa A, jonka jäseniä ovat numerot 1, 2 ja 5 merkitään A = {1, 2, 5}. Joukon

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

Matematiikan tukikurssi, kurssikerta 2

Matematiikan tukikurssi, kurssikerta 2 Matematiikan tukikurssi kurssikerta 1 Relaatioista Oletetaan kaksi alkiota a ja b. Näistä kumpikin kuuluu johonkin tiettyyn joukkoon mahdollisesti ne kuuluvat eri joukkoihin; merkitään a A ja b B. Voidaan

Lisätiedot

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen rakentamisessa? 2013-2014 Lasse Lensu 2 Transistori yhdessä

Lisätiedot

BL40A1711 Johdanto digitaalielektroniikkaan: Johdanto ja lukujärjestelmät

BL40A1711 Johdanto digitaalielektroniikkaan: Johdanto ja lukujärjestelmät BL40A1711 Johdanto digitaalielektroniikkaan: Johdanto ja lukujärjestelmät Laboratory of Control Engineering and Digital Systems Focus of research and education Energy efficient systems Renewable energy

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015)

58131 Tietorakenteet ja algoritmit (syksy 2015) 58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen

Lisätiedot

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

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

Lisätiedot

Yhden bitin tiedot. Binaariluvun arvon laskeminen. Koodin bittimäärä ja vaihtoehdot ? 1

Yhden bitin tiedot. Binaariluvun arvon laskeminen. Koodin bittimäärä ja vaihtoehdot ? 1 Luku Digitaalitekniikan matematiikka Täsmätehtävät.9. Fe Digitaalitekniikan matematiikka Täsmätehtävät.9. Fe Opetuskerta Sivu Luku Opetuskerta Sivu Yhden bitin tiedot Luettele esimerkkejä yhden bitin tiedoista.

Lisätiedot

+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain

+ 3 2 5 } {{ } + 2 2 2 5 2. 2 kertaa jotain Jaollisuustestejä (matematiikan mestariluokka, 7.11.2009, ohjattujen harjoitusten lopputuloslappu) Huom! Nämä eivät tietenkään ole ainoita jaollisuussääntöjä; ovatpahan vain hyödyllisiä ja ainakin osittain

Lisätiedot

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

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

Injektio (1/3) Funktio f on injektio, joss. f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f )

Injektio (1/3) Funktio f on injektio, joss. f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f ) Injektio (1/3) Määritelmä Funktio f on injektio, joss f (x 1 ) = f (x 2 ) x 1 = x 2 x 1, x 2 D(f ) Seurauksia: Jatkuva injektio on siis aina joko aidosti kasvava tai aidosti vähenevä Injektiolla on enintään

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

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

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

Ohjelmointi 1 / syksy /20: IDE

Ohjelmointi 1 / syksy /20: IDE Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne

Lisätiedot

Aiemmin opittu. Jakson tavoitteet. Ajankäyttö. Tutustu kirjaan!

Aiemmin opittu. Jakson tavoitteet. Ajankäyttö. Tutustu kirjaan! Aiemmin opittu Perusopetuksen opetussuunnitelman mukaan seuraavat lukuihin ja laskutoimituksiin liittyvät sisällöt on käsitelty vuosiluokilla 3 5: kymmenjärjestelmä-käsitteen varmentaminen, tutustuminen

Lisätiedot

Interfacing Product Data Management System

Interfacing Product Data Management System Interfacing Product Data Management System Tekijä: Työn valvoja: Mats Kuivalainen Timo Korhonen Esitelmän sisältö Työn suorituspaikka - Ideal Product Data Oy Käsitteitä Työn tavoitteet Työn tulokset 1/5

Lisätiedot

niin järjestys on tämä: ensin kerto- ja jakolaskut vasemmalta oikealle, sen jälkeen plus- ja miinuslaskut vasemmalta oikealle.

niin järjestys on tämä: ensin kerto- ja jakolaskut vasemmalta oikealle, sen jälkeen plus- ja miinuslaskut vasemmalta oikealle. Alkeistason matikkaa Plus-, miinus-, kerto- ja jakolaskujen laskujärjestys Esim. jos pitää laskea tällainen lasku:? niin järjestys on tämä: ensin kerto- ja jakolaskut vasemmalta oikealle, sen jälkeen plus-

Lisätiedot

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

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

Lisätiedot

8 Joukoista. 8.1 Määritelmiä

8 Joukoista. 8.1 Määritelmiä 1 8 Joukoista Joukko on alkoidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukkooppi aksiomaattisesti. Näin ei tässä tehdä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

010627000 Tietoturvan Perusteet Yksittäisen tietokoneen turva

010627000 Tietoturvan Perusteet Yksittäisen tietokoneen turva 010627000 Tietoturvan Perusteet Yksittäisen tietokoneen turva Pekka Jäppinen 31. lokakuuta 2007 Pekka Jäppinen, Lappeenranta University of Technology: 31. lokakuuta 2007 Tietokone Koostuu raudasta ja ohjelmista

Lisätiedot

Injektio. Funktiota sanotaan injektioksi, mikäli lähtöjoukon eri alkiot kuvautuvat maalijoukon eri alkioille. Esim.

Injektio. Funktiota sanotaan injektioksi, mikäli lähtöjoukon eri alkiot kuvautuvat maalijoukon eri alkioille. Esim. Injektio Funktiota sanotaan injektioksi, mikäli lähtöjoukon eri alkiot kuvautuvat maalijoukon eri alkioille. Esim. Funktio f on siis injektio mikäli ehdosta f (x 1 ) = f (x 2 ) seuraa, että x 1 = x 2.

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 1 Määrittelyjoukoista Tarkastellaan funktiota, jonka määrittelevä yhtälö on f(x) = x. Jos funktion lähtöjoukoksi määrittelee vaikkapa suljetun välin [0, 1], on funktio

Lisätiedot

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä Linux 00 Keskeiset piirteet Tux-pingviinin kuva: Larry Ewing, Simon Budig ja Anja Gerwinski Kysymyksiä 1. Mikä Linux on? 2. Kuinka Linux syntyi ja kehittyy? 3. Mitkä ovat Linuxin vahvuudet? 2 1 Linux on

Lisätiedot

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

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

7.4 Sormenjälkitekniikka

7.4 Sormenjälkitekniikka 7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan

Lisätiedot

1 Peruslaskuvalmiudet

1 Peruslaskuvalmiudet 1 Peruslaskuvalmiudet 11 Lukujoukot N {1,, 3, 4,} on luonnollisten lukujen joukko (0 mukana, jos tarvitaan), Z {, 3,, 1, 0, 1,, 3,} on kokonaislukujen joukko, Q m n : m, n Z, n 0 on rationaalilukujen joukko,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta

Lisätiedot

Perusohje vi-editorin käyttöön

Perusohje vi-editorin käyttöön Perusohje vi-editorin käyttöön Aapo Rista 22.9.2000 Sisältö 1 Johdanto 1 2 vi:n komento- ja kirjoitustilat 2 3 vi:n käynnistäminen ja siitä poistuminen 2 4 Liikkuminen tekstissä 3 5 Merkkien lisääminen

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 9.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 3

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 3 PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä 3/+^ 3 Kirjoita muuten sama, mutta ota välilyönti :n jälkeen 3/ +^ 3 Liiku matematiikka alueella nuolinäppäimin. Kokeile

Lisätiedot

L models. Käyttöohje. Ryhmä Rajoitteiset

L models. Käyttöohje. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Käyttöohje Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset 0.1

Lisätiedot

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Liite 1: skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Palvelun uusi versio on Palveluiden kehittäminen voitava asentaa tuotantoon vaikeutuu

Lisätiedot

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on 13 Pistetulo Avaruuksissa R 2 ja R 3 on totuttu puhumaan vektorien pituuksista ja vektoreiden välisistä kulmista. Kuten tavallista, näiden käsitteiden yleistäminen korkeampiulotteisiin avaruuksiin ei onnistu

Lisätiedot

Ohjeita LINDOn ja LINGOn käyttöön

Ohjeita LINDOn ja LINGOn käyttöön Ohjeita LINDOn ja LINGOn käyttöön LINDOn tärkeimmät komennot ovat com (command), joka tuloaa käytettävissä olevat komennot ruudulle, ja help, jonka avulla saa tietoa eri komennoia. Vaaukset kursiivilla

Lisätiedot

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa 9. Vektorit 9.1 Skalaarit ja vektorit Skalaari on koon tai määrän mitta. Tyypillinen esimerkki skalaarista on massa. Lukumäärä on toinen hyvä esimerkki skalaarista. Vektorilla on taas suuruus ja suunta.

Lisätiedot

Laskun vaiheet ja matemaattiset mallit

Laskun vaiheet ja matemaattiset mallit Laskun vaiheet ja matemaattiset mallit Jukka Sorjonen sorjonen.jukka@gmail.com 28. syyskuuta 2016 Jukka Sorjonen (Jyväskylän Normaalikoulu) Mallit ja laskun vaiheet 28. syyskuuta 2016 1 / 22 Hieman kertausta

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

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

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

Lisätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

Algoritmit 1. Luento 4 Ke Timo Männikkö Algoritmit 1 Luento 4 Ke 18.1.2017 Timo Männikkö Luento 4 Tietorakenteet Pino Pinon toteutus Jono Jonon toteutus Lista Listaoperaatiot Algoritmit 1 Kevät 2017 Luento 4 Ke 18.1.2017 2/29 Pino Pino, stack,

Lisätiedot

LUKUJÄRJESTELMÄT. Kymmenjärjestelmä eli desimaalijärjestelmä. Binäärilukujärjestelmä

LUKUJÄRJESTELMÄT. Kymmenjärjestelmä eli desimaalijärjestelmä. Binäärilukujärjestelmä Ammatti-Instituutti Lukujärjestelmistä Sivu 1 (5) LUKUJÄRJESTELMÄT Kymmenjärjestelmä eli desimaalijärjestelmä Kymmenjärjestemä on meille se tutuin järjestelmä jonka tunnemme x Siinä on (10) kymmenen numeroa,

Lisätiedot

20. Javan omat luokat 20.1

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

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

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

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

Laske Laudatur ClassPadilla

Laske Laudatur ClassPadilla Enemmän aikaa matematiikan opiskeluun, vähemmän aikaa laskimen opetteluun. Laske Laudatur ClassPadilla Lyhyt matematiikka, syksy 2015 Casio Scandinavia Keilaranta 4 02150 Espoo info@casio.fi Hyvä Opettaja

Lisätiedot

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti.

Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Joukon määritelmä Joukko on alkioidensa kokoelma. Valitsemalla sopivat alkiot joudutaan tämän määritelmän kanssa vaikeuksiin, jotka voidaan välttää rakentamalla joukko oppi aksiomaattisesti. Näin ei tässä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 4.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 4.3.2009 1 / 35 Tiedostot Tiedostojen käsittelyä tarvitaan esimerkiksi seuraavissa tilanteissa: Ohjelman käsittelemiä

Lisätiedot

Test-Driven Development

Test-Driven Development Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia

Lisätiedot

CLT131: Tekstityökalut 2011, seitsemäs luento

CLT131: Tekstityökalut 2011, seitsemäs luento CLT131: Tekstityökalut 2011, seitsemäs luento Tommi A Pirinen tommi.pirinen+clt131@helsinki.fi Helsingin yliopisto Kieliteknologian oppiaine, Nykykielten laitos 14. joulukuuta 2011 tommi.pirinen+clt131@helsinki.fi

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

Lisätiedot

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

Vaihtoehtoinen tapa määritellä funktioita f : N R on

Vaihtoehtoinen tapa määritellä funktioita f : N R on Rekursio Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on käyttää rekursiota: 1 (Alkuarvot) Ilmoitetaan funktion arvot

Lisätiedot

Johdatus rakenteisiin dokumentteihin

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

Lisätiedot

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on Rekursio Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on käyttää rekursiota: Rekursio Funktio f : N R määritellään yleensä

Lisätiedot

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Ti LÄHIVERKOT -erikoistyökurssi. X Window System. Jukka Lankinen

Ti LÄHIVERKOT -erikoistyökurssi. X Window System. Jukka Lankinen Ti5316800 LÄHIVERKOT -erikoistyökurssi X Window System Jukka Lankinen 2007-2008 Sisällys Esitys vastaa seuraaviin kysymyksiin: Mikä on X Window System? Minkälainen X on? Mistä sen saa? Miten X:ää käytetään?

Lisätiedot