JOHDATUS TIETOKONETEKNIIKKAAN. Tietokoneiden loogisten toimintaperiaatteiden kuvaus kuvitteellisen tietokoneen avulla

Koko: px
Aloita esitys sivulta:

Download "JOHDATUS TIETOKONETEKNIIKKAAN. Tietokoneiden loogisten toimintaperiaatteiden kuvaus kuvitteellisen tietokoneen avulla"

Transkriptio

1 JOHDATUS TIETOKONETEKNIIKKAAN Tietokoneiden loogisten toimintaperiaatteiden kuvaus kuvitteellisen tietokoneen avulla (Evoluutio 0.9) Kari Laitinen SISÄLTÖ: Johdanto... 3 Kuvitteellisen tietokoneen looginen rakenne... 4 Kuinka tietokoneen keskusmuisti toimii?... 7 Kuvitteellisen tietokoneen prosessori... 8 Konekieliset käskyt Tietokoneen toiminta sen käynnistyttyä Konekielinen ohjelma joka tulostaa "Hello!" Parempi Hello!-ohjelma Ohjelmointikieli IML ja ohjelmien kääntäminen Silmukan sisältävä ohjelma Ohjelma joka kutsuu aliohjelmaa Ohjelmia jotka käyttävät muistia/pinoa Matemaattista ohjelmointia Mitä ovat korkeamman tason ohjelmointikielet? Minkälaisia ovat oikeat tietokoneiden prosessorit? Tiedosto luotu Evoluutio Evoluutio 0.9 Viimeisin muutos. Kari Laitinen Kuvitteellinen tietokone - 1

2 Copyright Kari Laitinen Tässä dokumentissa olevan materiaalin (dokumentin teksti, ideat ja tietokoneohjelmat) tekijänoikeudet kuuluvat Kari Laitiselle. Tätä materiaalia ei saa mitenkään kaupallisesti hyödyntää kukaan muu kuin Kari Laitinen. Oulun seudun ammattikorkeakoulun Tekniikan yksikössä voidaan kuitenkin tätä materiaalia käyttää opetuksessa. Sikäli kun opettajat käyttävät tätä materiaalia, he voivat antaa opettamilleen opiskelijoille luvan monistaa tätä materiaalia omaan käyttöönsä. Tässä dokumentissa esitetty kuvitteellinen tietokone on hiukan perusteellisemmin kuvattu esim. englanninkielisessä kirjassa "A Natural Introduction to Computer Programming with Java". Kyseisestä kirjasta ja muista Kari Laitisen kirjoista saa tarkempaa tietoa osoitteesta Yllä mainitun osoitteen kautta pääsee käyttämään IC8-simulaattoria joka simuloi eli matkii kuvitteellista tietokoneetta selaimen ikkunassa. Kari Laitinen Kuvitteellinen tietokone - 2

3 Johdanto Tämän opiskelumateriaalin tarkoitus on opettaa lukijalle tietokonetekniikan perusteita nimenomaan loogisesta näkökulmasta. Tässä tarkastellaan kuinka tietokoneet toimivat loogisesti. Varsinaisen sähköisen toiminnan kuvaus pyritään jättämään mahdollisimman vähäiseksi. Tämä sen vuoksi että kaikki opiskelijat eivät varsinkaan opiskelujensa alkuvaiheessa tunne sähkötekniikkaa kovinkaan paljon. Tietokoneet ovat nimenomaan tietyllä loogisella tavalla toimivia systeemejä. Nykyään ne toteutetaan sähköisillä komponenteilla, mutta nämä loogisesti toimivat koneet voidaan toteuttaa myös muutenkin. Maailman tutkimuslaboratorioissa on tehty myös mekaniikalla ja optiikalla toimivia tietokoneita. Toistaiseksi kuitenkin sähköllä pelaavat koneet ovat osoittautuneet teknisesti ja taloudellisesti kannattavimmiksi valmistaa. Tämä opiskelumateriaali on tarkoitettu käytettäväksi ennen ohjelmointikielten ja muiden ohjelmistokehitykseen liittyvien aineiden opetusta. Jotta opiskelija oppii ohjelmoimaan, hänen on hyvä ymmärtää tietokoneen toiminta loogisella tavalla. Kaikki tietokoneet toimivat samoja loogisia periaatteita noudattaen, joten tietokoneen looginen toiminta voidaan esittää yleispätevän tietokoneen mallin avulla. Tässä esityksessä käytetään "Kuvitteellista tietokonetta" (imaginary computer), jota ei todellisuudessa ole ainakaan toistaiseksi olemassa muuten kuin ns. simuloituna mallina. Esityksessä käytettävä Kuvitteellinen tietokone on tehty mahdollisimman yksinkertaiseksi jotta tietokoneen toiminnan keskeisimmät periaatteet olisi mahdollisimman helppo omaksua. Kun on kerran perehtynyt yksinkertaiseen Kuvitteelliseen tietokoneeseen, on helpompi opetella kuinka todelliset tietokoneet ja varsinkin niiden prosessorit toimivat. Kuvitteellisen tietokoneen keskeisin komponentti on sen kuvitteellinen prosessori, aivan samaan tapaan kuin todellisten tietokoneiden toiminnan keskeisin komponentti on niiden prosessori. Jotta tietokone voi toimia, täytyy siinä olla jokin tietokoneohjelma jota tietokoneen prosessori suorittaa eli ajaa. Opimme tässä esityksessä kuinka tietokoneohjelmia voidaan periaatteessa rakentaa panemalla ns. konekielisiä käskyjä peräkkäin. Opimme myös yksinkertaisen ohjelmointikielen nimeltä IML (Imaginary Computer's Machine-level Language), jolla voidaan tehdä ohjelmia kuvitteelliselle tietokoneelle. Tämän kielen tarkoitus on nimenomaan näyttää kuinka tietokoneohjelmia tehdään ns. konekielisesti. Tätä kieltä ei ole tarkoitus oppia "liian hyvin". Tarkoitus on että lukija oppii ymmärtämään kuinka tietokone toimii ns. konekielen tasolla. IML-kielen voi ihan hyvin unohtaa sitten kun tietokoneen toimintaperiaatteet ovat tulleet riittävän selviksi. Jatkossa tietokoneohjelmointia kannattaa opiskella ns. korkeamman tason Kari Laitinen Kuvitteellinen tietokone - 3

4 kielien (esim. C, C++ ja Java) avulla. Näihin kieliin liittyvien kummallisuuksien ymmärtäminen pitäisi olla helpompaa kun on ensin tutustunut tässä esitettävään Kuvitteelliseen tietokoneeseen ja sen ohjelmointiin. Summattuna: tämän opiskelumateriaalin tarkoitus on johdattaa opiskelija tietokoneiden maailmaan siten että hän ymmärtää tietokoneiden toiminnasta riittävästi, jotta hän myöhemmin osaa tehdä ohjelmia todellisille tietokoneille korkean tason ohjelmointikieliä käyttäen. Esitietoina tämän materiaalin käyttöön riittää perustiedot lukujärjestelmistä kuten kymmenjärjestelmä, kaksijärjestelmä ja heksadesimaalijärjestelmä. Lisäksi on hyvä tietää teksti-informaation koodauksen periaatteet (ASCIIkoodaus). Tämän materiaalin kuvissa sekä joissain osissa esitetään englanninkielisiä termejä. Lisäksi esimerkiksi kuvitteellisen ohjelmointikielen IML:n käskyt ovat englantia. Tämän vuoksi opiskelijan tulee osata englantia tai hänen on hyvä opiskellessaan opiskella englantia. Englannin opiskelu ei kuitenkaan koskaan ole pahasta koska ainakin ohjelmointityössä englannin osaaminen on erittäin hyödyllistä. Monet suomalaisetkin yritykset vaativat insinööreiltään englannin osaamista. Kuvitteellisen tietokoneen looginen rakenne Kuvassa 1 esitetään kuvitteellisen tietokoneen loogiset osat: kuvitteellinen prosessori (imaginary processor), keskusmuisti ja siihen liittyvät ohjauslogiikat, näyttö (screen) ja näppäimistö (keyboard). Prosessori ja keskusmuisti ovat tietokoneen tärkeimmät osat. Prosessori pistää koneen "elämään" tulkitsemalla keskusmuistiin talletettua konekielistä ohjelmaa. Prosessorin toiminnan tahdistaa kellopiiristä saatava sähköinen kanttiaalto. Kari Laitinen Kuvitteellinen tietokone - 4

5 + 5 Volts IMAGINARY READ MEMORY WRITE MEMORY D7 D6 D5 D4 D3 D2 D1 Memory read/write control D0 Keyboard cable Screen cable PROCESSOR CLOCK SCREEN A0 A1 A2 A3 A4 A4 A6 A7 M e m o r y a d d r e s s i g c o n t r o l A 0B FC FD FE FF KEYBOARD Kuva 1. Kuvitteellisen tietokoneen osat ja rakenne. Kari Laitinen Kuvitteellinen tietokone - 5

6 Mainittakoon että kuvitteellisessa tietokoneessa ei ole massamuistia kuten todellisissa tietokoneissa yleensä on. Todellisia tietokoneita käytettäessä ohjelmat usein ladataan ennen suoritusta massamuistista keskusmuistiin. Kuvitteellisen tietokoneen tapauksessa kuvittelemme että ohjelma saadaan "jotenkin" ladatuksi tietokoneen keskusmuistiin ennen ohjelman suoritusta. Kuvitteellisen tietokoneen ominaisuuksista voidaan sanoa seuraavaa: Kuvitteellisen tietokoneen osat on yhdistetty toisiinsa (sähköisillä) linjoilla joissa siirtyy joko ykkönen tai nolla. Voimme kuvitella että kun linjalla on +5V:n jännite, siellä siirtyy silloin ykkönen, ja kun linjalla on 0V:n jännite, siellä siirtyy silloin nolla. Kun useita linjoja yhdistetään rinnakkain, saamme siirtymään binaarisia bittikombinaatioita. Tietokone käsittelee siis binaarisia numeroita käsitellessään eri linjoilla olevia ja siirtyviä jännitteitä. Tietokoneen dataväylä on 8-bittinen. Tämä tarkoittaa sitä että tieto prosessorin ja keskusmuistin välillä siirtyy 8-bittisenä tavuna linjoja D7, D6, D5, D4, D3, D2, D1 ja D0 käyttäen. 8-bittinen tavu on näin tietokoneen käsittelemän informaation perusyksikkö. Mainittakoon että todellisissa tietokoneissa perus-informaatioyksikkö on yleensä suurempi, esimerkiksi 16, 32 tai 64 bittiä. Kaikissa tietokoneissa on kuitenkin käytössä jokin perusyksikkö informaation siirtoa varten, ja tämä perusyksikkö on jokin kakkosen potenssi. Tietokoneen osoiteväylä on myös 8-bittinen ja se koostuu osoitelinjoista A7, A6, A5, A4, A3, A2, A1, ja A0. Näitä linjoja pitkin prosessori lähettää keskusmuistille tiedon siitä mitä kohtaa keskusmuistista halutaan lukea tai kirjoittaa. Koska osoitelinjoja on kahdeksan, voidaan käyttää 256 erilaista osoitetta (256 = 2 potenssiin 8). Näin keskusmuistin koko on 256 tavua, joilla on heksadesimaaliset osoitteet 00H, 01H, 02H, 03H,..., FCH, FDH, FEH, ja FFH. Mainittakoon että todellisissa tietokoneissa on yleensä enemmän osoitelinjoja ja keskusmuistia kuin kuvitteellisessa koneessamme. Todellisten tietokoneidenkin muisti voidaan kuitenkin ajatella jonoksi tavuja joita on jokin kahden potenssin määräämä määrä. Tietokoneen kuvitteelliseen prosessoriin on liitetty kuviteltu näyttö ja näppäimistö. Meidän ei itse asiassa tarvitse tietää minkälaisia ovat näytön ja prosessorin sekä näppäimistön ja prosessorin väliset kaapelit (keyboard cable ja screen cable). Riittää kun kuvittelemme, että kun näppäintä painetaan, kyseisen näppäimen ASCII-koodi siirtyy kaapelia pitkin prosessorin ns. input-porttiin. Vastaavasti voimme kuvitella että prosessorin ns. output-porttiin kirjoitettua ASCII-koodia vastaava merkki Kari Laitinen Kuvitteellinen tietokone - 6

7 siirtyy kaapelia pitkin näytölle ja ilmestyy sinne näkyvänä merkkinä. Tietokoneen prosessoriin on liitetty kello (clock) joka lähettää ns. kanttiaaltoa prosessorille. Prosessori toimii kellon mukaisesti. Prosessorin toimintanopeus riippuu kellon antaman kanttiaallon taajuudesta. Kun myöhemmin opimme kuinka prosessori toimii, voimme ajatella että toimintanopeus riippuu kellon taajuudesta. Kuinka tietokoneen keskusmuisti toimii? Keskusmuisti koostuu muistisoluista joista jokaiseen soluun voidaan tallettaa yksi bitti (ykkönen tai nolla) informaatiota. Keskusmuisti voidaan ajatella koostuvan 8x256 muistisolusta. Siinä on siis 8 solua rinnakkain ja 256 kahdeksan solun tavua alekkain. Jokainen muistisolu toimii siten että sinne kirjoitettu informaatio (ykkönen tai nolla) pysyy muistissa samana niin kauan kuin muistisoluun kirjoitetaan jotain muuta. Näin keskusmuistissa oleva informaatio pysyy "muistissa" niin kauan kuin sitä halutaan muuttaa. Prosessori voi suorittaa keskusmuistiin nähden joko luku- tai kirjoitusoperaatioita. Kun prosessori suorittaa lukuoperaation, keskusmuistin sisältö ei muutu. Kun prosessori suorittaa kirjoitusoperaation, keskusmuistin sisältö muuttuu (ellei muistissa sattunut ennestään olemaan täsmälleen samaa informaatiota kuin sinne kirjoitettiin). Keskusmuistia luetaan ja kirjoitetaan koko 8 bitin muistileveys kerrallaan. Yksittäisiä yhden bitin muistisoluja ei voi osoittaa eikä muuttaa, vaan informaatiota käsitellään 8 bitin "informaatiomöykkyinä". Nämä informaatiomöykyt jotka siirtyvät keskusmuistin ja prosessorin välillä ovat 8- bittisiä tavuja. Koska informaation perusyksikkö on tavu, muistissa voidaan säilyttää lukuja väliltä Kun prosessori suorittaa keskusmuistin luku- tai kirjoitusoperaation, se asettaa osoitelinjoihin binaarisessa muodossa sen osoitteen jota se haluaa lukea tai kirjoittaa. Tämän jälkeen prosessori aktivoi joko linjan READ MEMORY tai WRITE MEMORY sen mukaan haluaako se lukea vai kirjoittaa keskusmuistia. Jos kyseessä on lukuoperaatio, osoitelinjojen määräämästä muistipaikasta siirtyy tavu informaatiota datalinjoille D7 D6 D5 D4 D3 D2 D1 D0. Jos kyseessä on muistin kirjoitusoperaatio datalinjoilla ollut informaatio tallettuu keskusmuistiin osoitelinjojen määräämään paikkaan. Kirjoitusoperaatiossa prosessorin täytyy siirtää datalinjoille kirjoitettava informaatio ennen varsinaisen kirjoitusoperaation suoritusta. Kirjoitusoperaatiossa osoitelinjojen määräämän muistipaikan entinen sisältö korvautuu datalinjojen sisältämällä Kari Laitinen Kuvitteellinen tietokone - 7

8 informaatiolla (bittikombinaatiolla). Kuvitellaan että tietokoneemme prosessori haluaa kirjoittaa arvon 45 osoitteeseen 216. Tämä tarkoittaa että binaarinen arvo B kirjoitetaan osoitteeseen joka on binaarisena B. Tällöin prosessori suorittaa seuraavat operaatiot seuraavassa järjestyksessä: - Datalinjoihin kytketään seuraavat arvot D7 = 0, D6 = 0, D5 = 1, D4 = 0, D3 = 1, D2 = 1, D1 = 0, D0 = 1. - Osoitelinjoihin kytketään seuraavat arvot: A7 = 1, A6 = 1, A5 = 0, A4 = 1, A3 = 1, A2 = 0, A1 = 0, A0 = 0. - Ohjauslinjaa WRITE MEMORY käytetään arvossa 1. (Tässä oletetaan että WRITE MEMORY on ns. 1-aktiivinen digitaalinen signaali.) Kuvitteellisen tietokoneen prosessori Tietokoneiden prosessorit ovat hyvin monimutkaisia loogisia järjestelmiä jotka toimivat tietyllä tavalla kellosignaalin tahdissa. Prosessorit kykenevät suorittamaan yksinkertaisia tehtäviä kuten - laskemaan kaksi binaarista lukua yhteen - laskemaan kahden binaarisen luvun erotuksen - kasvattamaan/pienentämään binaarista lukua yhdellä - testaamaan kumpi kahdesta binaarisesta luvusta on suurempi - tallettamaan binaarisen luvun tiettyyn osoitteeseen keskusmuistissa - lukemaan tietyn keskusmuistin muistipaikan sisällön Prosessorit suorittavat tämänkaltaisia tehtäviä sisäisten rekisteriensä avulla. Kuva 2 esittää kuvitteellisen tietokoneen prosessorin rekisterirakennetta. Siinä on seuraavat 8-bittiset rekisterit: REGISTER A ja REGISTER B ovat kaksi yleiskäyttöistä rekisteriä. Prosessori voi mm. siirtää näiden rekisterien sisällön keskusmuistiin, tai lukea jonkin keskusmuistin muistipaikan sisällön näiden rekisterien sisällöksi. Näiden rekisterien välillä voidaan suorittaa myös aritmeettisia laskutoimituksia. Kari Laitinen Kuvitteellinen tietokone - 8

9 Rekisterit INSTRUCTION CODE ja INSTRUCTION OPERAND ovat rekistereitä joihin luetaan keskusmuistista konekieliset käskyt ja niiden mahdolliset operandit. Näiden rekisterien merkitys selvenee kunhan tutustumme konekielisiin käskyihin. Rekisterit PROGRAM POINTER, MEMORY POINTER, ja STACK POINTER ovat rekistereitä joihin talletetaan muistiosoitteita. Prosessori käyttää näiden rekisterien sisältöä silloin kun se osoittaa keskusmuistia. Rekisterit INPUT PORT ja OUTPUT PORT ovat niin sanottuja portteja joiden avulla prosessori kommunikoi ulkoisten laitteiden kanssa. Rekisterin OUTPUT PORT avulla prosessori voi lähettää tietoa näytölle. Kun prosessori kirjoittaa jonkin ASCII-koodin rekisteriin OUTPUT PORT, tätä koodia vastaava näkyvä merkki ilmestyy näytölle. Kun kuvitellun näppäimistön jotain näppäintä painetaan, tätä näppäintä vastaava ASCII-koodi ilmestyy rekisteriin INPUT PORT. Lukemalla rekisterin INPUT PORT sisällön prosessori saa selville mitä näppäintä painettiin. Prosessorin toiminnan logiikka (kuvassa PROCESSOR LOGIC) selvenee kun tutustumme ns. konekielisiin käskyihin, jotka muodostavat ns. konekielisen ohjelman jonka mukaan prosessori toimii. Tässä jo kannattaa kuitenkin mainita että prosessorin toiminta riippuu täysin siitä minkälainen ohjelma sillä on suoritettavanaan. Mikään tietokone tai prosessori ei tee mitään järkevää jos sillä ei ole mitään järkevää ohjelmaa suoritettavanaan. Kari Laitinen Kuvitteellinen tietokone - 9

10 8-bit data D7D6D5D4D3D2D1D0 to/from the central memory REGISTER A REGISTER B INSTRUCTION CODE INSTRUCTION OPERAND READ MEMORY PROCESSOR LOGIC - fetching of instructions from memory - execution of instructions WRITE MEMORY INPUT READY OUTPUT READY Address selection signals PROGRAM POINTER MEMORY POINTER STACK POINTER MEMORY ADDRESS SELECTION SWITCH INPUT PORT OUTPUT PORT 8-bit memory address A7A6A5A4A3A2A1A0 to central memory Keyboard cable Screen cable Kuva 2. Kuvitteellisen tietokoneen prosessorin rakenne. Kari Laitinen Kuvitteellinen tietokone - 10

11 Konekieliset käskyt Tietokoneiden prosessorit suorittavat ns. konekielisiä käskyjä (machine instructions) silloin kun ne toimivat. Konekieliset käskyt ovat ovat numeerisia koodeja joilla on erikoismerkitys prosessorille. Kuvitteellisen tietokoneemme tapauksessa konekieliset käskyt ovat 8-bittisiä koodeja, joiden perusteella koneemme prosessori toimii. Suoritettava konekielinen ohjelma (executable program) on jono konekielisiä käskyjä jotka on talletettu keskusmuistiin. Kuvitteellisessa tietokoneessa konekielinen ohjelma tulee tallettaa siten että käskyt talletetaan osoitteesta 00 alkaen. Ohjelma talletetaan siis keskusmuistin alkuun. Kuvitteellisen tietokoneen konekieliset käskyt listataan seuraavassa. Käskyjen käyttötarkoitus selvenee kunhan tutustumme niillä tehtyihin ohjelmiin. Huomaa että jotkut käskyt ovat yksitavuisia käskyjä. Toisiin käskyihin liittyy toinenkin tavu joka on ns. operandi. VVH tarkoittaa arvoa (value) ja MMH tarkoittaa operandina annettavaa muistiosoitetta. ARITMEETTISLUONTOISET KÄSKYT: 11H VVH "add value to register A" "lisää arvo rekisteriin A" Arvo joka annetaan käskylle operandina VVH lisätään rekisterin A sisältämään arvoon. 12H "add register B to A" "lisää B rekisteriin A" Rekisterin B sisältämä arvo lisätään rekisterin A sisältämään arvoon, ja tulos jätetään rekisteriin A. Rekisteriin A tulee siis molempien rekisterien summa. Rekisterin B sisältö ei muutu tässä operaatiossa. 13H VVH "subtract value from register A" "vähennä arvo rekisteristä A" Operandina annettu arvo VVH vähennetään rekisterin A sisällöstä. Rekisterin A sisältö siis pienenee annetun operandin arvon verran. 14H "subtract register B from A" "vähennä B rekisteristä A" Rekisterin B sisältö vähennetään rekisteristä A ja vähennyslaskun tulos jää rekisteriin A. Rekisterin B sisältö ei muutu tässä operaatiossa. Kari Laitinen Kuvitteellinen tietokone - 11

12 15H VVH "load register A with value" "lataa arvo rekisteriin A" Rekisteriin A ladataan operandina annettu arvo VVH. Rekisterin A aiempi arvo tuhoutuu. 16H "increment register A" "kasvata rekisteriä A" Rekisterin A sisältöä kasvatetaan yhdellä. 17H VVH "load register B with value" "lataa arvo rekisteriin B" Rekisteriin B ladataan operandina annettu arvo VVH. Rekisterin B aiemmin sisältämä arvo tuhoutuu. 18H "increment register B" "kasvata rekisteriä B" Rekisterin B sisältöä inkrementoidaan eli kasvatetaan yhdellä. 1AH "decrement register A" "pienennä rekisteriä A" Rekisterin A sisältämää arvoa pienennetään eli dekrementoidaan yhdellä. 1CH "decrement register B" "pienennä rekisteriä B" Rekisterin B sisältämää arvoa pienennetään eli dekrementoidaan yhdellä. 1EH "move content of register A to B" "siirrä rekisterin A sisältö rekisteriin B" Rekisterin A sisältämä informaatio siirretään rekisteriin B. Rekisterin B aiempi informaatio tuhoutuu. Käskyn suorituksen jälkeen molemmat rekisterit sisältävät saman informaation. Kari Laitinen Kuvitteellinen tietokone - 12

13 KESKUSMUISTIN KÄYTTÖÖN LIITTYVÄT KÄSKYT: 21H MMH "set memory pointer" "aseta muistiosoitin" Tällä käskyllä annetaan rekisterille MEMORY POINTER operandina tuleva arvo MMH. Rekisterin MEMORY POINTER arvo määrää mihin kohtaan keskusmuistia muistioperaatiot kohdistuvat. 22H 24H 26H 28H 2AH 2CH "increment memory pointer" "kasvata muistiosoitinta" Tällä käskyllä rekisterin MEMORY POINTER sisältämän muistiosoitteen arvo kasvaa yhdellä. "decrement memory pointer" "pienennä muistiosoitinta" Tällä käskyllä rekisterin MEMORY POINTER sisältämä muistiosoite pienenee yhdellä. "store register A to memory" "talleta rekisteri A muistiin" Rekisterin A sisältö talletetaan siihen muistiosoitteeseen joka on talletettuna käskyn suoritushetkellä rekisteriin MEMORY POINTER. "load register A from memory" "lataa rekisteri A muistista" Rekisteriin A ladataan arvo siitä muistiosoitteesta joka on talletettu rekisteriin MEMORY POINTER. "store register B to memory" "talleta rekisteri B muistiin" Rekisterin B sisältö talletetaan siihen muistiosoitteeseen joka on talletettuna käskyn suoritushetkellä rekisteriin MEMORY POINTER. "load register B from memory" "lataa rekisteri B muistista" Rekisteriin B ladataan arvo siitä muistiosoitteesta joka on talletettu rekisteriin MEMORY POINTER. Kari Laitinen Kuvitteellinen tietokone - 13

14 HYPPYKÄSKYT 41H MMH "jump to address" "hyppää osoitteeseen" Tämän käskyn seurauksena ohjelman suoritusta jatketaan siitä osoitteesta joka annetaan operandina. Operandina annettu osoitearvo siis talletetaan rekisterin PROGRAM POINTER sisällöksi. 43H MMH "jump if registers equal" "hyppää jos rekisterit samoja" Suoritetaan hyppy annettuun osoitteeseen jos rekisterit A ja B sisältävät saman arvon. 45H MMH "jump if register A zero" "hyppää jos rekisteri A nolla" Jos rekisteri A sisältää arvon nolla ohjelman suoritusta jatketaan operandina annetusta osoitteesta. Muussa tapauksessa suoritus jatkuu seuraavasta käskystä normaalisti. 47H MMH "jump if register A smaller than B" "hyppää jos rekisteri A pienempi kuin B" Hypätään jos rekisterin A sisältämä arvo on pienempi kuin rekisterin B sisältämä arvo. 49H MMH "jump if register A greater than B" "hyppää jos rekisteri A suurempi kuin B" Hypätään jos rekisterin A sisältämä arvo on suurempi kuin rekisterin B sisältämä arvo. 4BH MMH "jump if input not ready" "hyppää jos input ei valmis" Tätä käskyä käytetään kun odotetaan merkkiä näppäimistöltä. Hypätään jos merkkiä ei ole vielä annettu. Kari Laitinen Kuvitteellinen tietokone - 14

15 ALIOHJELMIEN KUTSUMISEEN LIITTYVÄT KÄSKYT: 81H MMH "call subroutine" "kutsu aliohjelmaa" Tämä käsky aiheuttaa kutsun aliohjelmaan osoitteessa MMH. Ennenkuin rekisterin PROGRAM POINTER (ohjelmaosoitin) arvoksi asetetaan operandina annettu osoitearvo, senhetkinen ohjelmaosoittimen arvo talletetaan pinoon. 82H "return to calling program" "palaa kutsuvaan ohjelmaan" Pinosta otetaan sinne talletettu vanha ohjelmaosoittimen arvo ja asetetaan se rekisterin PROGRAM POINTER arvoksi. INPUT/OUTPUT - KÄSKYT 92H "output byte from register A" "outputtaa tavu rekisteristä A" Rekisterin A sisältö kirjoitetaan rekisteriin OUTPUT PORT, minkä seurauksena rekisterin A sisältöä vastaava merkki ilmestyy kuvitteellisen tietokoneen näytölle. 94H "output byte from register B" "outputtaa tavu rekisteristä B" Rekisterin B sisältö kirjoitetaan rekisteriin OUTPUT PORT, minkä seurauksena rekisterin B sisältöä vastaava merkki ilmestyy kuvitteellisen tietokoneen näytölle. 96H "input byte to register A" "inputtaa tavu rekisteriin A" Tällä käskyllä rekisterin INPUT PORT sisältö kopioidaan rekisteriin A. Käytännössä tällä käskyllä luetaan näppäimistöltä merkkien koodeja rekisteriin A. Kannattaa katsoa esimerkkiohjelmasta kuinka tätä käskyä käytetään, sillä tätä on käytettävä sopusoinnussa hyppykäskyn kanssa. Kari Laitinen Kuvitteellinen tietokone - 15

16 KÄSKYT PINON KÄYTTÖÖN: A1H MMH "set stack pointer" "aseta pino-osoitin" Tällä käskyllä rekisteri STACK POINTER saa operandina annetun arvon. A2H A4H "push register A to stack" "talleta rekisteri A pinoon" Rekisterin A sisältö kopioidaan pinon huipulle ja rekisterin STACK POINTER arvoa pienennetään. "pop register A from stack" "lue rekisteri A pinosta" Rekisteriin A luetaan arvo pinon huipulta ja STACK POINTERin arvoa kasvatetaan. PROSESSORIN PYSÄYTYSKÄSKY B2H "stop processing" "lopeta prosessointi" Tällä käskyllä prosessori menee tilaan STOPPED jolloin se ei enää tee mitään. Tätä käskyä käytetään ohjelmien lopussa. Tietokoneen toiminta sen käynnistyttyä Kuvitteellinen tietokoneemme ryhtyy suorittamaan keskusmuistissa olevia konekielisiä käskyjä kun se käynnistetään. Voimme kuvitella että siihen pannaan kuvitteelliset sähköt päälle ja suoritettava konekielinen ohjelma on saatu jotenkin ladattua keskusmuistiin. Kuvitteellinen tietokone toimii seuraavalla sivulla annettujen toiminta-askelten mukaan. Toiminta on siis näiden toiminta-askelten mekaanisluonteista suorittamista. (Emmehän voi koneelta juuri muuta odottaa kuin mekaanisluonteista toimintaa.) Tietokoneen toiminta riippuu täysin siitä minkälainen ohjelma on talletettu keskusmuistiin. Jos keskusmuistissa ei ole talletettuna mitään järkevää ohjelmaa, tietokone ei tee mitään järkevää. Kuvittelemme siis että jonkinlainen järkevä ohjelma on talletettuna keskusmuistiin ennen sähköjen päällekytkemistä. Kari Laitinen Kuvitteellinen tietokone - 16

17 Tietokoneemme toiminta sähköjen kytkemisen jälkeen koostuu toiminta-askelista, joita suoritetaan järjestyksessä ensimmäisestä askelesta alkaen. Huomaa että ensimmäinen askel suoritetaan vain kerran. Askeleesta 6 voidaan palata askeleeseen 2 josta toiminta jatkuu taas alaspäin. Toiminta-askeleet ovat: 1. Aseta rekisteri PROGRAM POINTER arvoon 00H ja rekisteri STACK POINTER arvoon FFH. (Myös muut rekisterit voidaan asettaa arvoon FFH, mutta näillä arvoilla ei tietokoneen toiminnan kannalta ole välttämättä suurta merkitystä.) PROGRAM POINTER siis pannaan arvoon joka osoittaa ensimmäiseen muistipaikkaan keskusmuistissa. STACK POINTER pannaan osoittamaan viimeistä muistipaikkaa keskusmuistissa. Kannattaa muistaa että tietokoneen rekisterit ovat kuin mitkä tahansa muistipaikat: ne pitävät sisältönsä muuttumattomana siihen asti kunnes sisältöä tietoisesti muutetaan. 2. Nouda käskykoodi siitä osoitteesta joka on talletettu rekisteriin PROGRAM POINTER. Talleta tämä käskykoodi rekisteriin INSTRUCTION CODE. Kasvata rekisterin PROGRAM POINTER sisällön arvoa yhdellä. 3. Jos rekisterin INSTRUCTION CODE sisältä on pariton (ts. jos käskykoodin vähiten merkitsevä bitti on ykkönen), nouda rekisterin PROGRAM POINTER sisältämästä osoitteesta keskusmuistista arvo ja talleta se rekisteriin INSTRUKTION OPERAND, ja kasvata rekisterin PROGRAM POINTER sisällön arvoa yhdellä. (Tässä askeleessa siis haetaan keskusmuistista parittomiin käskyihin liittyvä käskyn tarvitsema operandi.) 4. Jos rekisteri INSTRUCTION CODE sisältää arvon B2H (käskyn "stop processing" koodi), mene askeleeseen Käsittele rekisterissä INSTRUCTION CODE oleva käskykoodin kullekin käskylle määriteltyjen toimenpiteiden mukaisesti. (Eri käskyjen vaatimat toimenpiteet on selostettu jo aiemmin.) 6. Mene takaisin askeleeseen 2 ja jatka sieltä toiminta-askelien suoritusta normaalilla tavalla. 7. Lopeta prosessointi. Kari Laitinen Kuvitteellinen tietokone - 17

18 Tietokoneemme siis lukee keskusmuistista 8-bittisiä konekielisiä käskyjä ja tallettaa kunkin käskyn kerrallaan rekisteriin INSTRUCTION CODE. Parittomille käskyille luetaan vielä operandi. Kun käsky on suoritettu luetaan seuraava käsky ja jatketaan sen suorittamisella, ellei ole luettu toiminnan pysäyttävää käskyä B2H. Tietokonetekniikassa puhutaan tietokoneen toimintajaksoista. Käskyn noutojakso (instruction fetch cycle) tapahtuu edellä askelissa 2 ja 3. Käskyn suoritusjakso (instruction execution cycle) tapahtuu askelessa 5. Kannattaa huomata että käskyn noutojakso on kaikille käskyille samanlainen, mutta käskyn suoritusjakso on kaikille käskyille erilainen. Kuvassa 3 oleva tilakaavio selventää vielä tietokoneemme toimintaa. Kari Laitinen Kuvitteellinen tietokone - 18

19 [Computer is switched on.] RESET PROCESSOR: Load value 00H to register PROGRAM POINTER. Load value FFH to register STACK POINTER. FETCH INSTRUCTION CODE: Load register INSTRUCTION CODE from the address in register PROGRAM POINTER. Increment the address in register PROGRAM POINTER. [Instruction code is even.] [Instruction code is odd.] FETCH INSTRUCTION OPERAND: Load register INSTRUCTION OPERAND from the address in register PROGRAM POINTER. Increment the address in register PROGRAM POINTER. EXECUTE INSTRUCTION: The operations carried out in this state are specific to each instruction. The operations are explained in Table 4-1. [ Instruction code is not B2H.] [Instruction code is B2H.] PROCESSOR STOPPED Kuva 3. Kuvitteellisen tietokoneen toimintaperiaate esitettynä tilakaavion muodossa. Kari Laitinen Kuvitteellinen tietokone - 19

20 Konekielinen ohjelma joka tulostaa "Hello!" Seuraavana on konekielinen ohjelma, siis jono heksadesimaalisia koodeja, joka kuvitteellisessa tietokoneessa suoriintuessaan tulostaa näytölle tekstin "Hello!" (ilman heittomerkkejä). Ohjelma on alla annettu konekielisten käskyjen selostuksilla varustettuna ja se on "sijoitettu keskusmuistiin" kirjoittamalla muistin osoitteet vasempaan sarakkeeseen. Varsinainen ohjelma on sarakkeessa "Käskyt". Osoite Käskyt Selitys "lataa arvo rekisteriin A" Ladattava arvo: H:n ascii koodi "outputtaa tavu rekisteristä A" "lataa arvo rekisteriin A" pienen e-kirjaimen koodi 'e' "outputtaa tavu rekisteristä A" "lataa arvo rekisteriin A" 07 6c 'l' "outputtaa tavu rekisteristä A" "lataa arvo rekisteriin A" 0a 6c 'l' 0b 92 "outputtaa tavu rekisteristä A" 0c 15 "lataa arvo rekisteriin A" 0d 6f 'o' 0e 92 "outputtaa tavu rekisteristä A" 0f 15 "lataa arvo rekisteriin A" '!' "outputtaa tavu rekisteristä A" 12 b2 "lopeta prosessointi" Ohjelmassa on siis käytetty käskyä 15H joka lataa prosessorin sisäiseen rekisteriin REGISTER A käskyä seuraavassa muistipaikassa annetun arvon. Lisäksi siinä on käytetty konekielistä käskyä 92H jolla rekisterin A sisältämä arvo voidaan tulostaa ruudulle näkyvänä merkkinä. Kun rekisterissä A on ensin 48H (H:n ascii koodi), sitten 65H (e:n ascii koodi), sitten 6CH (l:n ascii koodi), jne., ruudulle tulostuu kirjain kerrallaan teksti "Hello!". Viimeisenä tulostetaan siis huutomerkin ascii koodi. Seuraava taulukko kuvaa tekstin Hello! tulostavan ohjelman suoriintumista kuvitteellisessa tietokoneessa. Kari Laitinen Kuvitteellinen tietokone - 20

21 Status PP IC IO RA RB MP SP FE FF Screen contents RESET 00 ff ff ff ff ff ff ff ff FETCH ff ff ff ff ff ff ff FETCH ff ff ff ff ff ff EXECUTE ff ff ff ff ff FETCH ff ff ff ff ff EXECUTE ff ff ff ff ff H FETCH ff ff ff ff ff H FETCH ff ff ff ff ff H EXECUTE ff ff ff ff ff H FETCH ff ff ff ff ff H EXECUTE ff ff ff ff ff He FETCH ff ff ff ff ff He FETCH c 65 ff ff ff ff ff He EXECUTE c 6c ff ff ff ff ff He FETCH c 6c ff ff ff ff ff He EXECUTE c 6c ff ff ff ff ff Hel FETCH 0a 15 6c 6c ff ff ff ff ff Hel FETCH 0b 15 6c 6c ff ff ff ff ff Hel EXECUTE 0b 15 6c 6c ff ff ff ff ff Hel FETCH 0c 92 6c 6c ff ff ff ff ff Hel EXECUTE 0c 92 6c 6c ff ff ff ff ff Hell FETCH 0d 15 6c 6c ff ff ff ff ff Hell FETCH 0e 15 6f 6c ff ff ff ff ff Hell EXECUTE 0e 15 6f 6f ff ff ff ff ff Hell FETCH 0f 92 6f 6f ff ff ff ff ff Hell EXECUTE 0f 92 6f 6f ff ff ff ff ff Hello FETCH f 6f ff ff ff ff ff Hello FETCH f ff ff ff ff ff Hello EXECUTE ff ff ff ff ff Hello FETCH ff ff ff ff ff Hello EXECUTE ff ff ff ff ff Hello! FETCH 13 b ff ff ff ff ff Hello! STOP 13 b ff ff ff ff ff Hello! Kukin taulukon rivi kuvaa kuvitteellisen tietokoneen prosessorin rekisterien sisällöt ja tietokoneen näyttöruudun sisällön kunkin prosessorin suoritusjakson jälkeen. Esimerkiksi kolmas rivi sanoo että on suoritettu käskyn noutojakso (FETCH) ja - rekisterin PROGRAM POINTER (PP) sisältö on 02H - rekisterin INSTRUCTION CODE (IC) sisältö on 15H - rekisterin INSTRUCTION OPERAND (IO) sisältö on 48H, siis 'H' - rekisterien REGISTER A (RA) ja REGISTER B (RB) sisältö on FFH - rekisterien MEMORY POINTER (MP) ja STACK POINTER (SP) sisältö on FFH - keskusmuistin osoitteissa FEH ja FFH olevat muistipaikat sisältävät FFH - tietokoneen kuvaruudun sisältö on tyhjää. Kari Laitinen Kuvitteellinen tietokone - 21

22 Yllä olevassa kuvassa näemme vielä ensimmäisen ohjelmamme simuloidun suorituksen siinä vaiheessa kun ohjelma on suoritettu kokonaan. Ohjelma on siinä suoritettu oikeassa tietokoneessa toimivassa kuvitteellisen tietokoneen simulointiohjelmassa nimeltä IC8. Simulointi on eräänlaista matkimista. Oikeassa tietokoneessa toimiva ohjelma toimii ikäänkuin se olisi todellinen versio kuvitteellisesta tietokoneestamme. Mainittu IC8-niminen simulointiohjelma on ns. Java-apletti joka saadaan käyttöön nettiosoitteen kautta. Jotta voit ajaa tätä ohjelmaa selaimellasi tulee selaimen tukea Javaa. Mainitusta nettiosoitteesta löytyy IC8-ohjelmalle myös käyttöohjeet englanniksi. Kannattaa muuten käydä edellisen sivun taulukko oikein ajan kanssa rivi riviltä läpi. Kuvitteellisen tietokoneen toiminta selkenee siten hiljalleen. Kari Laitinen Kuvitteellinen tietokone - 22

23 Parempi Hello!-ohjelma Alla on ohjelma joka myöskin tulostaa ruudulle "Hello!", mutta tämä ohjelma tekee tulostuksen erilaisella tavalla kuin aiemmin tutkimamme ohjelma. Alla olevassa ohjelmassa on tekstin "Hello!" ascii koodit pantu peräkkäin muistiin osoitteesta 0AH alkaen. Merkkien ascii koodien perässä on muistissa nolla, jonka perusteella tiedetään mihin kohtaan muistissa tulostettava teksti loppuu. (Ascii koodeista puhuttaessa käytetään nollasta usein nimitystä NULL. Tällä nimityksellä se voidaan helposti erottaa nollan ascii koodista joka on 30H.) Osoite Käskyt Selitys "aseta muistiosoitin" 01 0a muistiosoittimelle asetettava arvo "lataa rekisteri A muistista" "hyppää jos rekisteri A nolla" osoite johon mahdollisesti hypätään "outputtaa tavu rekisteristä A" "kasvata muistiosoitinta" "hyppää osoitteeseen" osoite johon hypätään 09 b2 "lopeta prosessointi" 0a 48 'H' 0b 65 'e' 0c 6c 'l' 0d 6c 'l' 0e 6f 'o' 0f 21 '!' NULL (Nolla) Edellä olevassa ohjelmassa käytetään hyväksi prosessorin rekisteriä MEMORY POINTER (muistiosoitin) joka kohdistetaan aina siihen merkkiin joka halutaan keskusmuistista lukea ja myöhemmin tulostaa. Konekielinen käsky 28H "lataa rekisteri A muistista" lataa rekisteriin A aina sen arvon joka on rekisterin MEMORY POINTER sisältämässä muistipaikassa. Ohjelman alussa MEMORY POINTER sisältää arvon 0AH, joten rekisteriin A ladataan ensimmäisellä kerralla arvo 48H joka on keskusmuistissa osoitteessa 0AH. Käsky 22H kasvattaa rekisterin MEMORY POINTER sisältämää arvoa yhdellä. Ensimmäisellä suorituskerralla tämä käsky aiheuttaa sen että rekisterin MEMORY POINTER arvo kasvaa arvosta 0AH arvoon 0BH. Kun muistiosoitinta, siis rekisteriä MEMORY POINTER, kasvatetaan käskyn 22H avulla, voidaan muistissa olevassa tekstissä ikäänkuin edetä kirjain kerrallaan. Kari Laitinen Kuvitteellinen tietokone - 23

24 Ohjelmassa on myös käytetty ns. hyppykäskyjä joiden avulla ohjelmaan on saatu aikaiseksi ns. silmukka. Käskyllä 45H hypätään osoitteeseen 09H siinä tapauksessa kun rekisterin A sisältö on nolla. Jos rekisterin A sisältö on nollasta poikkeava luku, ohjelman suoritus jatkuu normaaliin tapaan seuraavana olevasta käskystä osoitteessa 05H. Käskyllä 45H hypätään siis ohjelman loppuun käskyyn B2H siinä tapauksessa kun muistista on luettu tekstin perässä oleva nolla. Käsky 41H on ns. ehdoton hyppykäsky joka aiheuttaa aina hyppäämisen ohjelmassa siihen osoitteeseen joka on käskylle annettu operandina. Ohjelmassa hypätään käskyllä 41H osoitteeseen 02H. Tällä hypyllä siis mennään lukemaan seuraavaa tulostettavan tekstin merkkiä. Seuraavilla sivuilla on annettu taulukko josta nähdään mitä kuvitteellinen tietokoneemme tekee kun se suorittaa tässä esittelemämme ohjelman. Taulukko kannattaa käydä tarkkaan läpi. Jokaisen käskyn suorituksen kohdalla kannattaa tutkia edellä esitetystä käskylistasta mitä sen käskyn pitää tehdä. Taulukosta voi nähdä mitä käskyn suoritus on vaikuttanut tietokoneemme prosessorin rekisterien sisältöön. Taulukkoa tutkiessa kannattaa huomioida mm. seuraavat seikat: - FETCH-operaatioiden aikana, siis kun prosessori noutaa keskusmuistista käskyjä ja niiden operandeja, ei rekisterien REGISTER A (RA), REGISTER B (RB), MEMORY POINTER (MP) ja STACK POINTER (SP) arvot muutu. Näiden rekisterien arvot voivat muuttua vasta kun käskyjä suoritetaan EXECUTE-jakson aikana. - Kun prosessori lukee muistista käskyn jonka koodi on pariton, se suorittaa vielä toisen FETCH-operaation jolla se hakee käskyyn liittyvän operandin. (Operandit ovat ohjelmassamme muistiosoitteita. Ne voivat joidenkin käskyjen kohdalla olla myös arvoja.) Jälkimmäisen FETCHoperaation kohdalla vain rekisterin INSTRUCTION OPERAND (IO) arvo muuttuu. - Rekisterin MEMORY POINTER (MP) arvo muuttuu kun suoritetaan käskyjä 21H ja 22H. Nämä käskyt ovat englanniksi "set memory pointer" ja "increment memory pointer". Kari Laitinen Kuvitteellinen tietokone - 24

25 Status PP IC IO RA RB MP SP FE FF Screen contents RESET 00 ff ff ff ff ff ff ff ff FETCH ff ff ff ff ff ff ff FETCH a ff ff ff ff ff ff EXECUTE a ff ff 0a ff ff ff FETCH a ff ff 0a ff ff ff EXECUTE a 48 ff 0a ff ff ff FETCH a 48 ff 0a ff ff ff FETCH ff 0a ff ff ff EXECUTE ff 0a ff ff ff FETCH ff 0a ff ff ff EXECUTE ff 0a ff ff ff H FETCH ff 0a ff ff ff H EXECUTE ff 0b ff ff ff H FETCH ff 0b ff ff ff H FETCH ff 0b ff ff ff H EXECUTE ff 0b ff ff ff H FETCH ff 0b ff ff ff H EXECUTE ff 0b ff ff ff H FETCH ff 0b ff ff ff H FETCH ff 0b ff ff ff H EXECUTE ff 0b ff ff ff H FETCH ff 0b ff ff ff H EXECUTE ff 0b ff ff ff He FETCH ff 0b ff ff ff He EXECUTE ff 0c ff ff ff He FETCH ff 0c ff ff ff He FETCH ff 0c ff ff ff He EXECUTE ff 0c ff ff ff He FETCH ff 0c ff ff ff He EXECUTE c ff 0c ff ff ff He FETCH c ff 0c ff ff ff He FETCH c ff 0c ff ff ff He EXECUTE c ff 0c ff ff ff He FETCH c ff 0c ff ff ff He EXECUTE c ff 0c ff ff ff Hel FETCH c ff 0c ff ff ff Hel EXECUTE c ff 0d ff ff ff Hel FETCH c ff 0d ff ff ff Hel FETCH c ff 0d ff ff ff Hel EXECUTE c ff 0d ff ff ff Hel FETCH c ff 0d ff ff ff Hel EXECUTE c ff 0d ff ff ff Hel FETCH c ff 0d ff ff ff Hel FETCH c ff 0d ff ff ff Hel EXECUTE c ff 0d ff ff ff Hel FETCH c ff 0d ff ff ff Hel EXECUTE c ff 0d ff ff ff Hell Kari Laitinen Kuvitteellinen tietokone - 25

26 FETCH c ff 0d ff ff ff Hell EXECUTE c ff 0e ff ff ff Hell FETCH c ff 0e ff ff ff Hell FETCH c ff 0e ff ff ff Hell EXECUTE c ff 0e ff ff ff Hell FETCH c ff 0e ff ff ff Hell EXECUTE f ff 0e ff ff ff Hell FETCH f ff 0e ff ff ff Hell FETCH f ff 0e ff ff ff Hell EXECUTE f ff 0e ff ff ff Hell FETCH f ff 0e ff ff ff Hell EXECUTE f ff 0e ff ff ff Hello FETCH f ff 0e ff ff ff Hello EXECUTE f ff 0f ff ff ff Hello FETCH f ff 0f ff ff ff Hello FETCH f ff 0f ff ff ff Hello EXECUTE f ff 0f ff ff ff Hello FETCH f ff 0f ff ff ff Hello EXECUTE ff 0f ff ff ff Hello FETCH ff 0f ff ff ff Hello FETCH ff 0f ff ff ff Hello EXECUTE ff 0f ff ff ff Hello FETCH ff 0f ff ff ff Hello EXECUTE ff 0f ff ff ff Hello! FETCH ff 0f ff ff ff Hello! EXECUTE ff 10 ff ff ff Hello! FETCH ff 10 ff ff ff Hello! FETCH ff 10 ff ff ff Hello! EXECUTE ff 10 ff ff ff Hello! FETCH ff 10 ff ff ff Hello! EXECUTE ff 10 ff ff ff Hello! FETCH ff 10 ff ff ff Hello! FETCH ff 10 ff ff ff Hello! EXECUTE ff 10 ff ff ff Hello! FETCH 0a b ff 10 ff ff ff Hello! STOP 0a b ff 10 ff ff ff Hello! Kannattaa panna merkille että yllä oleva taulukko on huomattavasti pidempi kuin itse suoritettava ohjelma. Taulukko on pitkä sen tähden että samoja käskyjä suoritetaan ainakin kuuteen kertaan ohjelman suorituksen aikana. Ohjelma siis toistaa samoja käskyjään yhä uudelleen. Toistamisen loppuminen kontrolloidaan ohjelmassa hyppykäskyjen avulla. Alla on vielä ikkunakuvia jotka näyttävät tässä käsitellyn ohjelman suoriintumisen alun ja lopun. Ensimmäisessä kuvassa on simulaattorin Translate-nappulaa painettu jolloinka se on tulkannut konekieliset käskyt tekstuaaliseen muotoon. Kari Laitinen Kuvitteellinen tietokone - 26

27 Kari Laitinen Kuvitteellinen tietokone - 27

28 Ohjelmointikieli IML ja ohjelmien kääntäminen Edellä olemme nähneet että konekieliset tietokoneohjelmat ovat eräänlaisia tavujonoja joita tietokoneen prosessori tulkitsee. Suurin osa ohjelmien tavuista on käskykoodeja (instruction code) joiden perusteella prosessori toimii; osa ohjelmien tavuista on joihinkin käskyihin liittyviä operandeja (instruction operand). Operandit ovat dataa, esimerkiksi muistiosoitteita, vakioarvoaja tai merkkien ascii-koodeja. Edellä opiskelemamme perusteella voimme myös päätellä että tietokone on varsi turha ja mitääntekemätön kapistus jos siinä ei ole oikein toimivaa ohjelmaa ladattuna keskusmuistiin. Ohjelmien laatiminen on näin ollen tärkeimpiä asioita jos haluamme valjastaa tietokoneen tekemään jotain hyödyllistä tehtävää. Ohjelmien laatimista tietokoneille sanotaan ohjelmoinniksi tai ohjelmien kehitystyöksi. Laajoja tietokoneohjelmia laadittaessa puhutaan ohjelmistojen kehitystyöstä. Jos tietokoneohjelmia laaditaan konekielellä, siis asettelemalla konekielisiä käskyjä peräkkäin, ohjelmien kehitystyö on sangen vaikeaa ja hermoja rasittavaa toimintaa. Tämän vuoksi tietokoneiden ohjelmointia varten on kehitetty erityisiä ohjelmointikieliä, joiden avulla tietokoneohjelmat voidaan kirjoittaa eräänlaisessa tekstuaalisessa muodossa. Tekstuaalisena kirjoitetut ohjelmat voidaan sitten muuntaa eli transformoida konekieliseen muotoon erityisen kääntäjän avulla. Kun tekstuaalinen tietokoneohjelma on kirjoitettu oikein, kääntäjä tuottaa automaattisesti oikein toimivan konekielisen ohjelman. Esittelen nyt tässä yksinkertaisen ohjelmointikielen jolla voidaan kirjoittaa tekstimuotoisia ohjelmia kuvitteelliselle tietokoneelle. Tälle ohjelmointikielelle olen antanut nimen IML, Imaginary Computer s Machine-level Language. Tälle kielelle on olemassa myös alkeellinen kääntäjä joka toimii oikeassa tietokoneessa. Kääntäjän avulla voi IML-ohjelmia muuntaa konekieliseen muotoon, jotka voidaan sitten suorittaa (execute) eli ajaa (run) ICOMsimulaattorissa. Palaamme kuvitteellisen tietokoneen simulointiin eli eräänlaiseen matkittuun toteutukseen seuraavissa luvuissa. Kääntäjän käyttöä selitetään seuraavassa luvussa samalla kun puhutaan ICOM-simulaattorista. Kari Laitinen Kuvitteellinen tietokone - 28

29 Ajatelkaamme jo aiemmin tarkastelemaamme ohjelmaa englanninkielisillä selityksillä varustettuna: Osoite Käskyt Selitys "load register A with value" H "output byte from register A" "load register A with value" e "output byte from register A" "load register A with value" 07 6c l "output byte from register A" "load register A with value" 0a 6c 'l' 0b 92 "output byte from register A" 0c 15 "load register A with value" 0d 6f 'o' 0e 92 "output byte from register A" 0f 15 "load register A with value" '!' "output byte from register A" 12 b2 "stop processing" Saamme aikaiseksi yksinkertaisen IML-ohjelmointikielen kun ajattelemme että voimme tehdä automaattisen kääntäjän joka osaa muuntaa yllä olevat selitykset automaattisesti kokekielisiksi käskyiksi. Voimme kirjoittaa yllä olevan ohjelman seuravasti IML-kielellä: // hello.iml (c) Kari Laitinen // A program that prints the text "Hello!" on the screen. load_register_a_with_value output_byte_from_register_a load_register_a_with_value output_byte_from_register_a load_register_a_with_value output_byte_from_register_a load_register_a_with_value output_byte_from_register_a load_register_a_with_value output_byte_from_register_a load_register_a_with_value output_byte_from_register_a stop_processing 'H' 'e' 'l' 'l' 'o' '!' Kari Laitinen Kuvitteellinen tietokone - 29

30 Yllä olevassa IML-kielisessä ohjelmassa on ensimmäiset merkkiparilla // alkavat rivit ns. kommenttirivejä, jossa kerrotaan arvokasta tietoa ohjelmasta. Kommentit eivät varsinaisesti kuulu ohjelmaan vaan IML-kielen kääntäjä jättää kommentit huomiotta ohjelmaa kääntäessään. IML-kielen kääntäjä toimii siten että kun se esimerkiksi löytää tekstuaalisesta IML-ohjelmasta tekstin load_register_a_with_value se sijoittaa vastaavaan konekieliseen ohjelmaan arvon 15H. Kun kääntäjä tämän jälkeen löytää tekstuaalisesta ohjelmasta merkinnän H, se sijoittaa konekieliseen ohjelmaan koodin 48H (kirjaimen H ascii-koodi). IML-kielessä jokaista käskyä vastaa englanninkielinen teksti. Jokaisesta tekstistä IML-kielen kääntäjä generoi vastaavan numeerisen käskyn koodin sekä mahdollisesti lisää koodin perään konekieliseen ohjelmaan käskyn tarvitseman operandin. Eri käskyjen tekstit ja koodit on lueteltu oheisessa IMLkielen käskyjen käännöstaulukossa (Instruction Translation Table). Käskytekstit ovat siis englanninkielisiä lauseita joiden sanat ovat yhdistetyt alaviivoille. Nämä alaviivat ovat välttämättömiä jotta kääntäjä kykenee tunnistamaan eri käskyt. Oheisessa käskyjen tulkintataulukossa kukin käsky on vielä luokiteltu seuraavilla kuvauksilla: PLAIN_INSTRUCTION tarkoittaa käskyä joka on vain yksi tavu, ja johon ei liity operandia. VALUE_INSTRUCTION on kaksitavuinen käsky joka koostuu varsinaisesta käskyn koodista sekä siihen liittyvästä arvosta. ADDRESS_INSTRUCTION on myös kaksitavuinen käsky. Tällaiseen käskyyn kuuluu käskykoodin lisäksi muistiosoite. Kari Laitinen Kuvitteellinen tietokone - 30

31 IML-KIELEN KÄSKYJEN KÄÄNNÖSTAULUKKO (INSTRUCTION TRANSLATION TABLE) Tekstimuotoinen käsky Koodi Käskyn tyyppi add_value_to_register_a 11H VALUE_INSTRUCTION add_register_b_to_a 12H PLAIN_INSTRUCTION subtract_value_from_register_a 13H VALUE_INSTRUCTION subtract_register_b_from_a 14H PLAIN_INSTRUCTION load_register_a_with_value 15H VALUE_INSTRUCTION increment_register_a 16H PLAIN_INSTRUCTION load_register_b_with_value 17H VALUE_INSTRUCTION increment_register_b 18H PLAIN_INSTRUCTION decrement_register_a 1AH PLAIN_INSTRUCTION decrement_register_b 1CH PLAIN_INSTRUCTION move_content_of_register_a_to_b 1EH PLAIN_INSTRUCTION set_memory_pointer 21H ADDRESS_INSTRUCTION increment_memory_pointer 22H PLAIN_INSTRUCTION decrement_memory_pointer 24H PLAIN_INSTRUCTION store_register_a_to_memory 26H PLAIN_INSTRUCTION load_register_a_from_memory 28H PLAIN_INSTRUCTION store_register_b_to_memory 2AH PLAIN_INSTRUCTION load_register_b_from_memory 2CH PLAIN_INSTRUCTION jump_to_address 41H ADDRESS_INSTRUCTION jump_if_registers_equal 43H ADDRESS_INSTRUCTION jump_if_register_a_zero 45H ADDRESS_INSTRUCTION jump_if_register_a_smaller_than_b 47H ADDRESS_INSTRUCTION jump_if_register_a_greater_than_b 49H ADDRESS_INSTRUCTION jump_if_input_not_ready 4BH ADDRESS_INSTRUCTION call_subroutine 81H ADDRESS_INSTRUCTION return_to_calling_program 82H PLAIN_INSTRUCTION output_byte_from_register_a 92H PLAIN_INSTRUCTION output_byte_from_register_b 94H PLAIN_INSTRUCTION input_byte_to_register_a 96H PLAIN_INSTRUCTION set_stack_pointer A1H VALUE_INSTRUCTION push_register_a_to_stack A2H PLAIN_INSTRUCTION pop_register_a_from_stack A4H PLAIN_INSTRUCTION stop_processing B2H PLAIN_INSTRUCTION Kari Laitinen Kuvitteellinen tietokone - 31

32 IML-kielessä käytetään vakioita esimerkiksi käskyjen operandeina. Vakiot ovat numeerisia arvoja (sillä eihän tietokoneen muistissa voi säilyttää mitään muuta kuin kaksijärjestelmän mukaisia numeroarvoja). Numeeriset arvot voidaan kuitenkin ohjelmissa peittää jonkin tekstuaalismuotoisen ilmaisun alle. Ohjelmointikielen kääntäjä sitten muuntaa nämä tekstuaaliset vakiot koneen ymmärtämään numeeriseen muotoon. IML-ohjelmointikielellä kirjoitetuissa ohjelmissa voi olla esimerkiksi seuraavia vakioita: H ison H-kirjaimen ascii-koodi 48H a pienen a-kirjaimen ascii-koodi 61H? kysymysmerkin ascii-koodi 3FH välilyönnin ascii-koodi 20H \n rivinvaihdon ascii-koodi 0AH n pienen n-kirjaimen ascii-koodi 6EH 123 desimaalijärjestelmän luku 123, (siis 7BH) 0x22 heksadesimaalijärjestelmän luku 22H (siis 34) (tätä ei vanhoissa kääntäjän versioissa!) Edellisessä luvussa tarkastelimme kahta ohjelmaa, jotka tulostivat eri tavoin näytölle tekstin "Hello!". Tässä luvussa olemme jo esittäneet IML-kielisen version ensimmäisestä ohjelmasta. Alla on IML-kielinen versio toisesta tekstin "Hello!" tulostavasta ohjelmasta: // hello_loop.iml (c) Kari Laitinen // This program prints the characters of text "Hello!" // in a loop. The text is defined with the keyword STRING // in the end of the program. As the iml compiler puts a // zero in the end of the string, the program knows when // to stop printing characters. beginning_of_program: set_memory_pointer display_characters: load_register_a_from_memory jump_if_register_a_zero output_byte_from_register_a increment_memory_pointer jump_to_address address_of_text end_of_program display_characters end_of_program: stop_processing address_of_text: STRING "Hello!" Kari Laitinen Kuvitteellinen tietokone - 32

33 Tässä toisessakin tulostuksen "Hello" tuottavassa ohjelmassa ovat ohjelman alussa olevat //-alkuiset rivit kommentteja jotka eivät kuulu varsinaiseen ohjelmaan. Myöskin tyhjät rivit ovat merkityksettömiä ohjelman toiminnan kannalta. Verrattuna aiemmin tarkastelemaamme ohjelmaan "hello.iml" on ohjelmassa "hello_loop.iml" uutta ns. hyppykäskyjen ja tekstuaalisten osoitteiden käyttö. Seuraavassa on ohjelman "hello_loop.iml" konekielinen eli käännetty versio sekä lähdekielinen eli tekstuaalinen versio vierekkäin aseteltuna. Vasemmassa reunassa on lisäksi keskusmuistin osoitteet joihin eri käskyt muistissa asetetaan. Kaikki luvut ovat jälleen heksadesimaalisia. Os. Kone- Tekstuaalinen eli lähdekielinen versio kieli ohjelmasta // hello_loop.iml (c) Kari Laitinen // This program prints the characters of text "Hello!" // in a loop. The text is defined with the keyword STRING // in the end of the program. As the iml compiler puts a // zero in the end of the string, the program knows when // to stop printing characters. beginning_of_program: A set_memory_pointer address_of_text display_characters: load_register_a_from_memory jump_if_register_a_zero end_of_program output_byte_from_register_a increment_memory_pointer jump_to_address display_characters end_of_program: 09 B2 stop_processing 0A 48 0B 65 0C 6C 0D 6C 0E 6F 0F address_of_text: STRING "Hello!" Kari Laitinen Kuvitteellinen tietokone - 33

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

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

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

Lisätiedot

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

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

1. Keskusyksikön rakenne

1. Keskusyksikön rakenne 1. Keskusyksikön rakenne Kuvassa on esitelty TTK-91 esimerkkikoneen keskusyksikkö. Oikeiden tietokoneiden keskusyksiköt ovat luonnollisesti monimutkaisempia, mutta tämä riittää oikein mainiosti asian havainnollistamiseen.

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

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

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

5. HelloWorld-ohjelma 5.1

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

Lisätiedot

Ohjelmointi 1. Kumppanit

Ohjelmointi 1. Kumppanit Ohjelmointi 1 Kumppanit November 20, 2012 2 Contents 1 Mitä ohjelmointi on 7 2 Ensimmäinen C#-ohjelma 9 2.1 Ohjelman kirjoittaminen......................... 9 A Liite 11 3 4 CONTENTS Esipuhe Esipuhe 5

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne

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

Lisätiedot

Luento 1 Tietokonejärjestelmän rakenne

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

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

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

Käyttöjärjestelmän rakenne

Käyttöjärjestelmän rakenne Käyttöjärjestelmän rakenne Tietokonejärjestelmä = Laitteisto + ohjelmisto Sovellus saa laitteiston käyttöönsä kj:n avustuksella CPU ja muisti Oheislaitteet KJ tarjoaa laitteiston käytössä tarvittavat palvelunsa

Lisätiedot

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

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

Lisätiedot

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

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

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

Lisätiedot

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

Paavo Räisänen. Ohjelmoijan binaarialgebra ja heksaluvut. www.ohjelmoimaan.net

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

Lisätiedot

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

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

Lisätiedot

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena Mikrotietokone Moderni tietokone Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena Sen käyttötarkoitus on yleensä työnteko, kissavideoiden katselu internetistä tai pelien pelaaminen. Tietokoneen

Lisätiedot

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

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

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

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

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

Lisätiedot

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,

Lisätiedot

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

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

Lisätiedot

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

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012 OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012 Luento 6: Tiedon esittäminen tietokoneessa, osa 1 Tekijät: Antti Virtanen, Timo Lehtonen, Matti Kujala, Kirsti Ala-Mutka, Petri M. Gerdt et al. Luennon

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

Toinen harjoitustyö. ASCII-grafiikkaa 2017

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

Lisätiedot

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä Luento 2 (verkkoluento 2) Ttk-91 järjestelmä Ttk-91 laitteisto Tiedon sijainti Muistitilan käyttö Ttk-91 konekieli Tiedon osoitus ttk-91:ssä Indeksointi, taulukot, tietueet 1 Suorituksenaikainen suorittimen

Lisätiedot

Monipuolinen esimerkki

Monipuolinen esimerkki Monipuolinen esimerkki Lopuksi monipuolinen esimerkki, jossa ohjelmisto koostuu pääohjelmasta ja kahdesta aliohjelmasta, joista toinen on proseduuri ja toinen funktio. Funktio Sqrt(int n): int Sqrt(int

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Lisätiedot

Käännös, linkitys ja lataus

Käännös, linkitys ja lataus Luento 10 (verkkoluento 10) Käännös, linkitys ja lataus Ohjelmasta prosessiin Käännösyksikkö Kääntämisen vaiheet Makrot, literaalit Staattinen ja dynaaminen linkitys Nimien sidonta Lausekielestä suoritukseen

Lisätiedot

1 Kannat ja kannanvaihto

1 Kannat ja kannanvaihto 1 Kannat ja kannanvaihto 1.1 Koordinaattivektori Oletetaan, että V on K-vektoriavaruus, jolla on kanta S = (v 1, v 2,..., v n ). Avaruuden V vektori v voidaan kirjoittaa kannan vektorien lineaarikombinaationa:

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä Rekursiolause Laskennan teorian opintopiiri Sebastian Björkqvist 23. helmikuuta 2014 Tiivistelmä Työssä käydään läpi itsereplikoituvien ohjelmien toimintaa sekä esitetään ja todistetaan rekursiolause,

Lisätiedot

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

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

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Luento 1 (verkkoluento 1) Tietokonejärjestelmä Luento 1 (verkkoluento 1) Tietokonejärjestelmä Järjestelmän eri tasot Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä This image cannot currently be displayed.

Lisätiedot

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

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

Lisätiedot

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 811122P (5 op.) 12.12.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

Toinen harjoitustyö. ASCII-grafiikkaa

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

Lisätiedot

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

OHJELMISTOKEHITYS -suuntautumisvaihtoehto OHJELMISTOKEHITYS -suuntautumisvaihtoehto Suuntautumisvaihtoehdon esittely 1. vuoden opiskelijoille Kari Laitinen www.oamk.fi/~karil/opetus.html Ohjelmistokehitys -opintosuunnan valitsevista henkilöistä

Lisätiedot

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

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

5. HelloWorld-ohjelma 5.1

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

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Johdatus ohjelmointiin

Johdatus ohjelmointiin Johdatus ohjelmointiin Ohjelmistot tietokonejärjestelmissä Jaana Holvikivi Ohjelmistojen tehtävät Sovellusohjelmat tekstinkäsittely ja muut toimistosovellukset kirjanpito, tuotannonohjaus selaimet, mediaohjelmat

Lisätiedot

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

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

Lisätiedot

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007 Jaetun muistin muuntaminen viestin välitykseksi Otto Räsänen 15. lokakuuta 2007 1 Motivaatio 2 Valtuuden välitys Peruskäsitteitä 3 Kolme algoritmia Valtuuden välitys käyttäen laskuria ilman ylärajaa Valtuuden

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

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

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg Digitaalitekniikka (piirit) Metropolia / AKo Pikku nnitteluharjoitus: Suunnitellaan sekvenssipiiri, jolla saadaan numerot juoksemaan seitsensegmenttinäytöllä: VHDL-koodin generointi ASM-kaavioista Tässä

Lisätiedot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

Zeon PDF Driver Trial

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

Lisätiedot

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

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Harjoitus 2 (viikko 45)

Harjoitus 2 (viikko 45) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

Lisätiedot

SATAKUNNAN AMMATTIKORKEAKOULU Sähkötekniikan koulutusohjelma. M-koodit Omron servojen ohjauksessa. Luovutettu. Hyväksytty

SATAKUNNAN AMMATTIKORKEAKOULU Sähkötekniikan koulutusohjelma. M-koodit Omron servojen ohjauksessa. Luovutettu. Hyväksytty SATAKUNNAN AMMATTIKORKEAKOULU Sähkötekniikan koulutusohjelma M-koodit Omron servojen ohjauksessa Tekijän nimi Ryhmätunnus Syventävä työ Jouni Lamminen EE01POS 4. vuosikurssin syventävä Luovutettu Hyväksytty

Lisätiedot

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Verilogvs. VHDL. Janne Koljonen University of Vaasa Verilogvs. VHDL Janne Koljonen University of Vaasa Sälää Huom! Verilogistauseita versioita: 1995, 2001 ja 2005. Kommentit Javasta tutut // ja /* */ ovat kommenttimerkkejä. Case sensitivity Isot ja pienet

Lisätiedot

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000 Jakso 12 Yhteenveto Keskeiset asiat 1 Tavoitteet (4) Ymmärtää tietokonejärjestelmän keskeiset piirteet sillä suoritettavan ohjelman näkökulmasta Miten tietokonejärjestelmä suorittaa sille annettua ohjelmaa?

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 25.1.2010 1 / 41 Valintakäsky if Tähänastiset ohjelmat ovat toimineen aina samalla tavalla. Usein ohjelman pitäisi

Lisätiedot

Tietokoneen toiminta, K Tavoitteet (4)

Tietokoneen toiminta, K Tavoitteet (4) Jakso 12 Yhteenveto Keskeiset asiat 1 Tavoitteet (4) Ymmärtää tietokonejärjestelmän keskeiset piirteet sillä suoritettavan ohjelman näkökulmasta Miten tietokonejärjestelmä suorittaa sille annettua ohjelmaa?

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivointitietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

Luento 4 (verkkoluento 4) Aliohjelmien toteutus Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivaatiotietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit

Lisätiedot

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA Tavallisimmin lukuja käsittelevien datasanojen tyypiksi kannattaa asettaa kokonaisluku 16 bitin INT, jonka vaihtelualueeksi tulee

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? 2012-2013 Lasse Lensu 2 Transistori yhdessä

Lisätiedot

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

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

Lisätiedot

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0 Johdanto Nämä ohjeet opastavat sinut tekemään kurssiin TKT-1110 Mikroprosessorit liittyvät harjoitustyöt. Ohjeet sisältävät kolme osiota. Ensimmäisenä esitellään projektin luonti, mikä tehdään ainoastaan

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

ASCII-taidetta. Intro: Python

ASCII-taidetta. Intro: Python Python 1 ASCII-taidetta All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/18cplpy to find out what to do.

Lisätiedot

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

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

Lisätiedot

Harjoitustehtäväkierros 1

Harjoitustehtäväkierros 1 T-06.50 kurssihenkilökunta deadline Tiistai 20.0.2009 2:5 Johdanto Tämä tehtäväkierros käsittelee pääasiassa toisen luennon sisältöä. Harjoituksia saa tehdä yksin tai yhdessä. Yhdessä tekeminen on suositeltavaa,

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

Osa 7: Hahmojen ohjelmointi ja hienosäätö

Osa 7: Hahmojen ohjelmointi ja hienosäätö 1 Osa 7: Hahmojen ohjelmointi ja hienosäätö Tässä luvussa käymme läpi perusohjelmoinnin alkeita. - Ensimmäisenä koduhahmon ohjelmointia. 1. Program -osiossa tapahtuu itse se koodin kirjoitus, missä määrätään

Lisätiedot

Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot

Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot 1. vuosi Perusopinnot 2. vuosi 3. vuosi ELEKTRONIIKAN SUUNNITTELU JA TESTAUS MOBIILI TIETOLIIKENNE OHJELMISTOJEN KEHITYS 4. vuosi Ohjelmistojen kehitys

Lisätiedot

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

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä /+^2 Kirjoita muuten sama, mutta ota välilyönti :n jälkeen / +^2 Kopioi molemmat matematiikka-alueet ja liiku alueen sisällä

Lisätiedot

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

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

Käyttöjärjestelmät: poissulkeminen ja synkronointi Käyttöjärjestelmät: poissulkeminen ja synkronointi Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet

Lisätiedot

13. Hyvä ohjelmointitapa (osa 1) 13.1

13. Hyvä ohjelmointitapa (osa 1) 13.1 13. Hyvä ohjelmointitapa (osa 1) 13.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen tarvitaan ylläpitoa. Jotta koodin muuttaminen on mahdollista, on sen oltava myös muidenkin kuin

Lisätiedot

Käyttöjärjestelmät: prosessit

Käyttöjärjestelmät: prosessit Käyttöjärjestelmät: prosessit Teemu Saarelainen Tietotekniikka teemu.saarelainen@kyamk.fi Lähteet Stallings, W. Operating Systems Haikala, Järvinen, Käyttöjärjestelmät Eri Web-lähteet Käyttöjärjestelmä

Lisätiedot