Nykyisten ohjelmointikielten esi-isä: Algol60

Koko: px
Aloita esitys sivulta:

Download "Nykyisten ohjelmointikielten esi-isä: Algol60"

Transkriptio

1 Nykyisten ohjelmointikielten esi-isä: Algol60 Antti Krats Kai Lahti Sami Setämaa 1 Johdanto Tiivistelmä Artikkelissa kuvataan Algol60 ohjelmointikielen syntaksi sekä kaksi erilaista tapaa välittää parametreja aliohjelmille. Algolin kehittäminen aloitettiin 1950-luvun loppupuolella ja sen tuloksena saatiin ohjelmointikieliperhe, joka vaikutti suuresti nykyisiin ohjelmointikieliin. Tällöin kehitykseen käytetyt menetelmät ja ratkaisut olivat huomattavasti aikaansa edellä. Algol60 määrittelystä on julkaistu useita eri versioita, joista tunnetuimpia ovat "Revised report on the algorithm language ALGOL 60"[1] vuodelta 1963 ja "Modified Report on the Algorithmic Language ALGOL 60"[4] vuodelta Lisäksi Algol60:ssä on input/output funktioista kahdet erilaiset määritelmät, jotka on esitelty artikkeleissa "Report on Input-Output Procedures for ALGOL 60"[6] ja "A Proposal for Input-Output Conventions in ALGOL 60"[2]. Tämä artikkeli on koostettu siten, että toisessa luvussa käydään läpi Algol ohjelmointikieliperheen taustoja ja sen vaikutusta nykyisiin ohjelmointikieliin. Sen jälkeen tutustutaan Algol60 syntaksiin. Luvuissa neljä, viisi ja kuusi käydään läpi input/output funktiot, call-byvalue ja call-by-name. Lisäksi seitsemännessä luvussa esitellään muutamia esimerkkiohjelmia. 2 Yleistä Algol (Algorithmic Language) on ensimmäisiä lohkorakenteisia (eng. block-structured) ohjelmointikieliperheitä. Se kehitettiin yleiskäyttöiseksi ohjelmointikieleksi teolliseen ja tieteelliseen käyttöön. Algolin suunnitteli asiantuntijoista muodostettu komitea, jonka ehdotuksen pohjalta John Backus teki kielen ensimmäisen kääntäjän. Algolista kehittyi ajan kuluessa useita eri versioita, joista tärkeimpiä ovat Algol58 (IAL, International Algebraic Language), Algol60, Algol68, ABC Algol, Algol W ja S-Algol.[7] Algolin kehittäminen vuonna 1958 vaikutti paljolti sitä seuranneiden ohjelmointikielten kehittelyyn. Monet ohjelmointikielten ominaisuudet, joita nykyään pidetään itsestään selvinä esiteltiin ensi kertaa Algol60:ssä tai Algol68:ssa. Algol60 oli ensimmäisiä ohjelmointikieliä, jonka syntaksi oli formaalisti määritelty ennen kuin kielen kääntäjää oli tehty. Lisäksi Algol60:ssä ei ollut määritelty I/O-rutiineja. I/O-rutiinien puuttuminen ohjelmointikielestä oli 1950-luvun loppupuolella ennen kuulumatonta, mutta nykyään se on normaalia. Algol60:ssä on myöskin mielenkiintoinen ominaisuus, joka liittyy aliohjelmien parametrien välittämiseen. Algol60:ssä aliohjelmien parametreja pystyy välittämään kahdella eri menetelmällä, joita ovat call-by-value ja callby-name. Näistä jälkimmäisellä saatiin Algoliin eräänlainen dynaaminen vaikutusalue (eng. dynamic scoping). Tämän mahdollisti hidas, mutta joustava mekanismi nimeltään thunk. Algol60 tukee useita eri tietotyyppejä, joita ovat totuusarvo-, kokonaisluku- (useita eri kokoja), liukuluku- ja merkkijonotietotyypit. Merkkijonot olivat yksinkertaisia ja niiden käsittely oli rajoittunutta, tosin sitä parannettiin seuraavissa Algolin versioissa. Lisäksi Algolista puuttuu yleinen muistin hallinta ja dynaaminen muistinvaraus. [4] Algol60 vaatii, että kääntäjä tarkastaa aliohjelmien ja lauseiden parametrien tyypit. Kääntäjä ei myöskään hyväksy uusia tietotyyp- 1

2 pejä tai rakenteita. Ainoa ohjelmoijan määriteltävissä oleva tietotyyppi on taulukko. Algol60:ssä oli myöskin nykyään yleiset lohkorakenteet ja täydelliset kontrollirakenteet: ifthen-else, case ja while-silmukka. Algolin tärkeimpiä ominaisuuksia ovat kuitenkin sisäkkäiset lohkorakenteet sekä paikallisten ja lohkomuuttujien leksikaalinen tulkinta. [5] 3 Syntaksi Algol60 on uudelleen määritelty useita eri kertoja, jolloin määrittelyjen välillä on pieniä eroja. Seuraavassa käydään läpi "Revised report on the algorithm language AL- GOL 60"[1] vuodelta Raportti määrittelee Algol60:n referenssikielen (eng. reference language). Sen lisäksi on olemassa myös laitteistokieli (eng. hardware representation), jota käytetään Algol-ohjelmien syöttämiseen kääntäjälle. Erona referenssikieleen on vähemmän ilmaisuvoimaiset avainsanat ja symbolit, jotka johtuvat standardisyötevälineistön rajoittuneisuudesta. 3.1 Symbolit Algol60:n symbolit koostuvat merkistöstä, numeroista, totuusarvoista ja välimerkeistä. Merkistönä käytetään pieniä ja isoja kirjaimia a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Yksittäisillä kirjaimilla ei ole erityistä merkitystä vaan niitä käyttäen muodostetaan muuttujia ja merkkijonoja. Numeroina toimivat normaalit 10-järjestelmän numerot joita voidaan käyttää numeroiden, muuttujien ja merkkijonojen muodostukseen. Numeroiden ja kirjaimien lisäksi on totuusarvot true f alse 3.2 Välimerkit Välimerkit koostuvat operaattoreista, erottimista, sulkeista, esittelyistä ja määrittelyistä. Operaattorit voidaan jakaa neljään eri ryhmään niiden merkityksen mukaan. Erilaisia ryhmiä ovat aritmeettiset-, relaatio-, loogisetja sekvenssioperaatiot. Aritmeettisia operaatioita ovat yhteen-, vähennys-, kerto-, jako- ja kokonaislukujen jakolasku sekä potenssi Relaatio-operaattoreita ovat pienempi, pienempi tai yhtä suuri, yhtä suuri, suurempi tai yhtä suuri, suurempi ja erisuuri Loogiset operaattorit ovat ekvivalenssi, implikaatio, disjunktio, konjunktio, negaatio!"#" $% Peräkkäistys-operaattorit ovat goto i f then else f or do Operaattoreille on määrätty laskujärjesteys, jonka mukaan lauseet käsitellään. Ensimmäisenä käsitellään aritmeettiset operaattorit seuraavassa järjestyksessä, &' ja. Aritmeettisten operaattoreiden jälkeen käsitellään relaatio-operaattorit ja niiden jälkeen loogiset operaattorit seuraavassa järjestyksessä $,#,!, ja. Erottimia ovat mm. pilkku, piste, exponentti, kaksoispiste, puolipiste, sijoitus ja välilyönti sekä avainsanat step, until, while ja comment ( ) * 10 : ; :+,- step until while comment Sulkeita ovat mm. kaari- ja hakasulut sekä begin ja ( ) [ ]./ begin Esittelyitä ovat own Boolean integer real array switch procedure ja määrittelyt ovat string label value 2!"! 1 %$'& ( $'& $))$*,+.-/!0- - 2!"''!.&

3 Seuraavassa on esimerkki edellä esitetyistä välimerkeistä. procedure esimerkki(a); value a; integer a; begin i f a 1 then goto pr1 else goto pr2 pr1 : print(. 1. ) goto loppu pr2 : print(. 2. ) loppu : 3.3 Rakenne Algol60-ohjelma koostuu sijoitusoperaattoreista, lohkoista, hyppykäskyistä, tyhjistä esittelyistä, ehtolauseista ja silmukoista. Seuraavassa käydään läpi tärkeimmät ominaisuudet. Sijoitusoperaattorin : avulla voidaan asettaa operaattorin vasemman puoleisen muuttujan arvoksi oikean puoleisen muuttujan, listan alkion tai funktion arvo. Lisäksi sijoitusoperaattoria voidaan käyttää aliohjelmissa tai funktioissa palautusarvon asettamiseksi. Lohkorakenteella voidaan erotella loogisia kokonaisuuksia toisistaan ja vähentää ohjelman käyttämän pinomuistin määrää. Algol60:ssä lohko on määritelty siten, että sen sisällä olevat esittelyt ovat voimassa ainoastaan lohkon sisällä. Lisäksi lohkossa B olevat esittelyt eivät ole voimassa lohkossa A, jos lohko A ei ole lohkon B alilohko. Jokainen aliohjelma, begin pari sekä label-lause muodostaa oman lohkonsa. Hyppykäskyllä goto voidaan lopettaa välittömästi nykyisen lohkon suoritus ja siirtyä eksplisiittisesti johonkin toiseen lohkoon, josta suoritusta jatketaan. Tyhjä lause (eng. dummy statement) ei suorita operaatiota, jolloin sitä voidaan käyttää label-lauseena. Tyhjää lausetta käytetään erityisesti goto:n yhteydessä, esimerkiksi begin ; loppu :. Ehtolauseet ovat yksinkertaisia i f then else - rakenteita, joissa i f - ja else-osioissa voi olla lohko. Ehtolauseen oikeellisuus aiheuttaa tiettyjen lohkon suorittamisen tai suorittamatta jättämisen. Moniosainen ehtolause tarkastetaan vasemmalta oikealle käyttäen operaattoreille määriteltyä laskujärjestystä. Silmukoita voidaan muodostaa f or-lauseen avulla. Tällöin f or- lauseen lohkoa suoritetaan kontrollimuuttujan ehdosta riippuen useita kertoja tai ei yhtään kertaa. Lisäksi f orlause tekee lisäyksen kontrollimuuttujaansa jokaisella lohkon suorituskerralla. Seuraava f or-silmukka tulostaa luvut f or i : 1 step1 until 10 do print(i) 3.4 Aliohjelmat Algol 60:n aliohjelmia kutsutaan nimellä procedure. Niiden tarkoitus on sama kuin kirjastofunktioiden, eli tehdä Algol-ohjelmista yksinkertaisempia. Kuten myös useimmissa muissa ohjelmointikielissä, aliohjelmat voidaan erottaa kahdeksi osaksi: aliohjelman määrittelyksi ja kutsuksi. Aliohjelman määrittely koostuu otsikosta ja kommenttiosasta, joka antaa informaatiota parametreistä. Otsikon yleinen muoto on seuraava: procedure I(p1 p2 pn); value l; parametrien kuvaus ;. Tässä I on aliohjelman nimi ja p:t parametrejä. Parametreja voidaan kommentoida käyttäen seuraavanlaista notaatiota ) : (, missä voi olla mikä tahansa kirjain. Seuraavassa esimerkki aliohjelman muodostamisesta. ) procedure pistetulo(a b n )tulos : ( sigma); value n; array a b; integer n; real sigma; comment : a ja b ovat vektoreita joissa on n alkiolta Pistetulo on sigmassa Parameteri n välitetään call by value tyyppisesti; begin integer k; sigma : 0; f or k : 1 step 1 until n do sigma : sigma a[k] b[k] pistetulo : ( 3

4 Otsikossa olevassa value l; osassa kirjain l kuvaa listaa niistä parametreistä, jotka näkyvät aliohjelmalle paikallisena. Nämä parametrit eivät näy aliohjelman ulkopuolelle ja niinpä paluuarvoja ei voida laittaa listaan l. Value osa voi myös olla tyhjä. Otsikon parametrien kuvauksessa voidaan kommentoida parametrien tyyppiä ja tarkoitusta. Usein tämä osa voidaan jättää tyhjäksi aliohjelman yksinkertaisuuden vuoksi. Seuraavaksi on määriteltävä aliohjelman toiminta lausekkeella. Yleensä lauseke on yhdistetty lauseke tai blokki, jos lokaaleja muuttujia on määritelty. Aliohjelman voi muuttaa funktioksi siirtämällä palautusarvon tyypin procedure sanan eteen. Tällöin palautusarvoon voidaan viitata suoraan funktion sisällä. Yksinkertainen esimerkki aliohjelman muuttamisesta funktioksi on esimerkin 7.4 ohjelma. [1][7] Aliohjelmakutsun yleinen muoto on I(p1 p2 pn). Tässä I on aliohjelman nimi, joko on oltava aikaisemmin määritelty aliohjelmamäärittelynä. Sulkeiden sisällä olevat p:t ovat aliohjelmalle välitettäviä argumentteja. Niiden tyypit on oltava samoja kuin aliohjelman määrittelyssä. [7] 3.5 Funktiot Perus-Algol60:ssä ei ole I/O-funktioita, joten ne käsitellään erikseen luvussa 4. Taulukossa 1 esitellään standardifunktiot sekä muunnosfunktio entier. Muunnosfunktiolla voidaan muuntaa liukuluku kokonaisluvuksi, jolloin kokonaisluvun arvoksi asetetaan alaspäin pyöristetty liukuluku. Paluuarvo Funktio Parametrit integer/real abs(x) integer/real real sqrt(x) integer/real real sin(x) integer/real real cos(x) integer/real real arctan(x) integer/real real ln(x) integer/real real exp(x) integer/real integer sign(x) integer/real integer entier(x) real Taulukko 1: Algol60 standardifunktiot 4 Input/output funktiot Algol60:ssä ei ole varsinaisia syöttö- ja tulostusfunktioita, koska kielen määrittelyvaiheessa ne koettiin liian laitteistoriippuvaisiksi. Algol60:n kehittyessä kuitenkin huomattiin, että funktiot voitaisiin esitellä yleisellä tasolla. Tällöin International Federation for Information Processing:n (IFIP) työskentelyryhmä 2.1 (WG2.1) julkaisi ehdotuksen uusista funktioista. Julkaisussa Report on Input-Output Procedures for Algol 60 esiteltiin taulukon 2 mukaiset funktiot. [6] Funktio insymbol outsymbol length inreal outreal inarray outarray Parametrit channel, string, destination channel, string, source string channel, destination channel, source channel, destination channel, source Taulukko 2: IFIP:n input/output funktiot Hieman myöhemmin Association for Computing Machinery (ACM) julkaisi oman ehdotuksensa syöttö- ja tulostusfunktioiksi. Julkaisussa A Proposal For Input-Output Conventions In ALGOL 60 esiteltiin taulukon 3 mukaiset funktiot. [2] Funktio out list in list h skip v skip put get out control in control Parametrit unit, layout, list unit, layout, list position, overflow position, overflow n, list n, list unit, x1, x2, x3, x4 unit, x1, x2, x3, x4 Taulukko 3: ACM:n input/output funktiot Funktiolla out list(unit layout list) voidaan tulostaa unit parametrilla määritellylle laitteelle parametrina annettu lista list. Tulostuksen muotoilu tapahtuu layout-parametrilla. Lista ja muotoilu parametrit ovat aliohjelmia, joiden muodon Knuth on määritellyt artikke- 4!"! 1 %$'& ( $'& $))$*,+.-/!0- - 2!"''!.&

5 lissaan [2]. Funktio in list toimii samoin kuin out list, mutta unit-parametri määrää laitteen josta luetaan. Tulostuksessa voidaan hypätä eteenpäin funktioita h skip(position over f low) ja v skip(position over f low) käyttäen. Tällöin tulostusalueen ylittyessä kutsutaan over f low-parametrin määräämää aliohjelma. Funktiolla h skip hypätään vaakasuunnassa ja funktiolla v skip pystysuunnassa. Listan väliaikainen tallentaminen muistiin tapahtuu funktion put(n list) avulla. Listan tallennuspaikka identifioidaan parametrina annetulla tunnusluvulla n. Funktiolla get(n list) voidaan hakea lista tunnusluvun määräämästä tallennuspaikasta. Tulostuslaitteelle voidaan lähettää erityisiä ohjainkäskyjä funktioiden out control(unit x1 x2 x3 x4) ja in control(unit x1 x2 x3 x4) avulla. 5 Call-by-value Algolissa aliohjelmaan voidaan välittää parametrejä kahdella tavalla, call-by-name ja callby-value menetelmällä. Call-by-value menetelmässä kopioidaan argumenttien arvot aliohjelman parametrien paikalle. Huonona puolena on se, että informaatiota pystytään siirtämään ainoastaan aliohjelmaan päin (katso esimerkki 7.1). Call-by-value:ssa parametrit sijoitetaan aliohjelman määrittelyssä value-listaan. Tällöin aliohjelmaa kutsuttaessa asetetaan kutsussa olevat argumentit niitä vastaaviin valuelistassa määrättyihin muuttujiin. Asettaminen tapahtuu ennen aliohjelman lauseke osaan etenemistä. Nyt value-lista voidaan kuvitella omaksi blokiksi, joka luodaan aliohjelmaan siirryttäessä. Listassa olevat muuttujat ovat lokaaleja kuvitteellisen blokkiin nähden, mutta ei-lokaaleja aliohjelman runkoon nähden. 6 Call-by-name Call-by-name (ts. name replacement) on Algolin erikoisuus, jolla voidaan siirtää parametrejä sisään ja ulos aliohjelmasta. Kontrollin siirtyessä kutsusta aliohjelmaan kopioidaan argumentit nimineen aliohjelman parametrien paikalle. Call-by-name:a voidaankin ajatella makrona, joka korvaa parametrin nimen argumentin nimellä. Jos kutsu on muotoa f oo(a), sijoitetaan aliohjelmassa parametrin paikalle a-kirjain, vaikka aliohjelman määrittelyssä parametrin nimeksi olisi määrätty i. Kuulostaa siltä, että menetelmä toimii, mutta ajatellaanpa seuraavaa tilannetta: Aliohjelmalle välitetään kaksi argumenttia, joista toinen argumentti riippuu ensimmäisestä. Jos ensimmäistä parametria mennään muuttamaan, niin muuttuu myös toisen parametrin arvo. Nyt aliohjelma ei välttämättä käyttäydy halutulla tavalla (katso esimerkki 6.3). Revised Report:n [1] mukaan systemaattisella muuttujien nimien muuttamisella edellä esitetyn kaltaiset ongelmat voitaisiin kiertää. Tällöin esimerkin 7.3 aliohjelma olisi kuitenkin huomattavan hankala toteuttaa. Call-by-name:a suunniteltaessa ajateltiin rakentaa parametrinvälitysmekanismi, joka toimisi kuten call-by-reference. Kielensuunnittelukomitealle tuli kuitenkin erehdys ja vika huomattiin vasta sitten, kun oli liian myöhäistä muuttaa kielen määrittelyä [3]. Silti Algol 60:n call-by-name vei ratkaisevasti eteenpäin ohjelmointikielten kehitystä. 6.1 Thunkit Algol60:n call-by-name mahdollistaa parametrien laskemisen joka kerta uudelleen niitä käytettäessä. Tällöin parametrit ovat itseasiassa funktioita, jotka palauttavat jonkun arvon. Tällainen funktio suoritetaan uudelleen aina, kun parametria käytetään, jolloin sen palauttama arvokin voi muuttua. Näitä funktioita kutsutaan thunkeiksi ja ne ovat kääntäjän tekijän keino toteuttaa call-by-name. Thunkien käyttö on hidasta johtuen jatkuvista funktiokutsuista, mutta niiden avulla Algolin kehittäjät saivat kieleen tarvittavaa dynaamisuutta. 5

6 7 Esimerkkiohjelmia Seuraavassa esitellään yksinkertaisten esimerkkien avulla kuinka call-by-valueta, callby-namea, funktiota ja aliohjelmia voidaan käyttää Algol60:ssä. 7.1 Call-by-value Call-by-value-tyyppinen parametrien välitys tapahtuu käyttäen value-määrittelyä. Tällöin aliohjelmaan vietävät parametrit ovat yksisuuntaisia, jolloin parametreihin tehdyt muutokset eivät näy aliohjelman ulkopuolelle. procudure set(n m); value n m; real n m; n : m; 7.2 Call-by-name 1 Call-by-name tyyppisten parametrien välittäminen tapahtuu kuten call-by-valuessa, joskin value-määrittely puuttuu. Call-byvaluessa parametrit ovat kaksisuuntaisia ja niiden arvot voivat muuttua kesken aliohjelman suorituksen. begin integer i; array A[1 : 6]; procedure inc(n); integer n; n : n 1; comment : Toimii kuin alioh jelma olisi muotoa : i : i 1; ; inc(i) comment : Toimii kuin alioh jelma olisi muotoa : A[k] : A[k] 1; ; inc(a[k]) 7.3 Call-by-name 2 Seuraava esimerkki havainnollistaa call-byname tyyppisen parametrien välityksen ongelmakohdan. Aliohjelmassa vaihdetaan kahden annetun kokonaislukumuuttujan arvot, jolloin parametri x:n arvo muutetaan ennen y:n muuttumista. procedure swap(x y) integer x y; begin integer t; t : x; x : y; y : t; ; Mikäli y-parametri on riippuvainen x- parametrin arvosta huomataan, että ohjelma ei toimi oikein. Esimerkiksi aliohjelmakutsu Swap(i A[i]) ei toimisi koska, i:n arvo vaihtuu ennen A[i]:hin sijoitusta. Tällöin A[i]:n arvo ei vastaa enää alkuperäistä. 7.4 Aliohjelma ja funktio Aliohjelma ja funktio ovat toteutukseltaan lähes identtisiä, joskin funktioissa paluuarvoon voidaan viitata suoraan. begin integer arvo; procedure plus(t a b); value a b; real a b t; t : a b; comment : laske 1 2 ja aseta tulos arvo muuttu jaan jonka jälkeen tulosta se ; plus(arvo 1 2) print(arvo) Kuten edellä huomattiin aliohjelmassa oleva muuttuja n korvataan parametrina annettavalla muuttujalla. Edellinen aliohjelma voidaan helposti muuttaa funktioksi. Se tapahtuu siirtämällä palautusarvo funktion eteen. 6!"! 1 %$'& ( $'& $))$*,+.-/!0- - 2!"''!.&

7 begin real procedure plus(a b); value a b; real a b; plus : a b; comment : laske 1 2 ja tulosta vastaus ; print(plus(1 2)) 7.5 Jensen s Device Klassisin esimerkki call-by-name tyyppisestä parametrien välityksen tehokkuudesta on Jensen s Device. Se laskee annetun summalauseen arvon erittäin vähillä operaatioilla. begin integer i; real procedure sum(i lo hi term); value lo hi; integer i lo hi; real term; begin real temp; temp : 0; f or i : lo step 1 until hi do temp : temp term; sum : temp ; print( sum(i i) 6 3 ) [2] D. E. Knuth: A proposal for input-output conventions in algol 60, Communications of the ACM, 7(5), ss , [3] Donald E. Knuth: The remaining trouble spots in algol 60, Communications of the ACM, 10(10), ss , 1967, ISSN [4] R. M. De Morgan, I. D. Hill ja B. A. Wichmann: Modified report on the algorithmic language algol 60, The Computer Journal, 19(4), ss , November [5] Peter Naur et al.: Report on the algorithmic language algol 60, Communications of the ACM, 3(5), ss , 1960, ISSN [6] International Federation of Information Processing: Report on input-output procedures for algol 60, Communications of the ACM, 7, s. 628, [7] H. R. Schwarz: An introduction to algol: a tutorial paper on algol with explanations and examples to make the use of the algol report more familiar, Communications of the ACM, 5(2), ss , 1962, ISSN Yhteenveto Artikkelissa kuvattiin Algol60- ohjelmointikielen syntaksi sekä kaksi erilaista tapaa välittää parametreja aliohjelmille. Parametrien välitystavoista todettiin callby-value:n rajoittuneisuus. Se on kuitenkin turvallisempi kuin call-by-name, koska call-by-name:n dynaamisuus tekee siitä vaarallisen työkalun huolimattomissa käsissä. Viitteet [1] J. W. Backus et al.: Revised report on the algorithm language algol 60, Communications of the ACM, 6(1), ss. 1 17, 1963, ISSN

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

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

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

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

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

Lisätiedot

Osoitin ja viittaus C++:ssa

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

Lisätiedot

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

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

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

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

Lisätiedot

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

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus) VISUAL BASIC OHJEITA Kutsuttava ohjelma alkaa kometoparilla Sub... End Sub Sub ohjelmanimi()...koodia... End Sub Muuttujat Muuttujan esittely Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency,

Lisätiedot

811120P Diskreetit rakenteet

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

Lisätiedot

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

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

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

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

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

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

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

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

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

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

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

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

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

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

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

Lisätiedot

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

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

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

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Muistutus aikatauluista

Muistutus aikatauluista Muistutus aikatauluista (Nämä eivät välttämättä koske avoimen yo:n opiskelijoita Erkki Kailan rinnakkaisella kurssilla) Luento 1: kotitehtävät sulkeutuvat 20.9 12:00, ennen tutoriaalia Tutoriaali 1 sulkeutuu

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

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

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

Lisätiedot

4.2. ALIOHJELMAT 71. Tulosvälitteisyys (call by result) Tulosvälitteinen parametri kopioidaan lopuksi

4.2. ALIOHJELMAT 71. Tulosvälitteisyys (call by result) Tulosvälitteinen parametri kopioidaan lopuksi 4.2. ALIOHJELMAT 71 sisältyä kaikki tarvittavat kontrollia ohjaavat rakenteet. Jos se on lause (yleensä lohko), niin on ratkaistava, miten paluuarvo ilmaistaan. Joissakin kielissä (esimerkiksi Pascal)

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

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

Lisätiedot

Fortran 90/95. + sopii erityisesti numeriikkaan:

Fortran 90/95. + sopii erityisesti numeriikkaan: Fortran 90/95 + sopii erityisesti numeriikkaan: + optimoivat kääntäjät tehokas koodi + mukana valmiiksi paljon varusfunktioita + kompleksiluvut + taulukko-operaatiot + operaattorit laajennettavissa myös

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

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

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

Mathematica Sekalaista asiaa

Mathematica Sekalaista asiaa Mathematica Sekalaista asiaa Asetusoperaattorit Mathematicassa voi käyttää omia muuttujasymboleja melko rajattomasti ja niiden nimeämisessä voi käyttää miltei mitä tahansa merkkejä. Käytännössä nimeämisessä

Lisätiedot

Osoittimet ja taulukot

Osoittimet ja taulukot C! ja taulukot 1.2.2018 Tiedotteita Tämän jälkeen taas pari väliviikkoa (tenttiviikko) Seuraava luento 22.2. Laskareita ei tenttiviikolla 12.2. 16.2. 2 ja muisti Muisti Keskusyksikkö Suorittaa muistissa

Lisätiedot

Tieto- ja tallennusrakenteet

Tieto- ja tallennusrakenteet Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Tulkin muokkaaminen, sisäiset määrittelyt, makrot (mm. SICP 3.2.4, 4-4.1.6) Riku Saikkonen 29. 11. 2012 Sisältö 1 Kirjan tulkin muokkaaminen 2 Yksityiskohta:

Lisätiedot

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19 Ohjelmointikieli TIE-20306 Principles of Programming Languages Syksy 2017 Ryhmä 19 Juho Kärnä Ville Mäntysaari 1. Johdanto D on yleiskäyttöinen, strukturoitu, staattisesti tyypitetty, käännettävä ohjelmointikieli

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

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

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn

Lisätiedot

Palautetta viime luennosta

Palautetta viime luennosta Palautetta viime luennosta Kuka saa ja kenen täytyy suorittaa 5op kokonaisuus? Sivuaineopiskelijat suorittavat jos heidän sivuainekokonaisuuteen on merkitty niin Kokonaisuuksia on useita eri tiedekunnittain,

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

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

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

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

Lisätiedot

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli TIE-20306 PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli Seminaariesitelmä ryhmä 24 Markku Ahokas Jani Kuitti i SISÄLLYSLUETTELO 1. YLEISTÄ EIFFELISTÄ... 1 1.1 Historia ja tausta... 1 1.2

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

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

ALKEIS-kielen semantiikan aksiomaattinen määrittely

ALKEIS-kielen semantiikan aksiomaattinen määrittely ALKEIS-kielen semantiikan aksiomaattinen määrittely Antti Jokipii antti.jokipii@republica.fi Antti Vuorenmaa anvuoren@cc.jyu.fi Eero Lempinen eerolem@cc.jyu.fi Pete Räsänen peter@cc.jyu.fi Tiivistelmä

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

Makrojen mystinen maailma lyhyt oppimäärä

Makrojen mystinen maailma lyhyt oppimäärä Makrojen mystinen maailma lyhyt oppimäärä Makrot osana SAS-teknologiaa Yleiskuva Jouni Javanainen Aureolis lyhyesti Aureolis on jatkuvia Business Intelligence -palveluita tuottava asiantuntijaorganisaatio

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

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

Lisätiedot

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

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne. Proseduurit Proseduuri voi olla 1) Funktio, joka palauttaa jonkin arvon: real function sinc(x) real x sinc = sin(x)/x... y = sinc(1.5) 2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 8: Pienen ohjelmointikielen tulkki (ohjelmoitava laskin) (mm. SICP 4-4.1.5 osin) Riku Saikkonen 15. 11. 2012 Sisältö 1 Nelilaskintulkki, globaalit muuttujat

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset

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

Lisätiedot

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

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

T211003 Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet

T211003 Sovellusohjelmat Matlab osa 4: Skriptit, funktiot ja kontrollirakenteet Ohjelmointi Matlab-komentoja voidaan koota ns. M-tiedostoon. Nimi tulee tiedoston tarkentimesta.m. Matlabilla voidaan ohjelmoida kahdella eri tavalla: Skriptit eli komentojonot eli makrot Funktiot eli

Lisätiedot

Hohde Consulting 2004

Hohde Consulting 2004 Luento 5: XQuery AS-0.110 XML-kuvauskielten perusteet Janne Kalliola XQuery XQuery uudet funktiot sekvenssit muuttujat Iterointi järjestys suodatus järjestäminen Ehtorakenteet Muita toimintoja www.hohde.com

Lisätiedot

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

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

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 5: Sijoituslause, SICP-oliot, tietorakenteen muuttaminen (mm. SICP 33.1.3, 3.33.3.2) Riku Saikkonen 6. 11. 2012 Sisältö 1 Muuttujan arvon muuttaminen:

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

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

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet

Koka. Ryhmä 11. Juuso Tapaninen, Akseli Karvinen. 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet Koka Ryhmä 11 Juuso Tapaninen, Akseli Karvinen 1. Taustoja 2. Kielen filosofia ja paradigmat 3. Kielen syntaksia ja vertailua JavaScriptiin Lähteet 1 1. Taustoja Koka on Daan Leijenin ja Microsoft:n kehittämä

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

1. Logiikan ja joukko-opin alkeet

1. Logiikan ja joukko-opin alkeet 1. Logiikan ja joukko-opin alkeet 1.1. Logiikkaa 1. Osoita totuusarvotauluja käyttäen, että implikaatio p q voidaan kirjoittaa muotoon p q, ts. että propositio (p q) ( p q) on identtisesti tosi. 2. Todista

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

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

11.4. Context-free kielet 1 / 17

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

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Matlab- ja Maple- ohjelmointi

Matlab- ja Maple- ohjelmointi Perusasioita 2. helmikuuta 2005 Matlab- ja Maple- ohjelmointi Yleistä losoaa ja erityisesti Numsym05-kurssin tarpeita palvellee parhaiten, jos esitän asian rinnakkain Maple:n ja Matlab:n kannalta. Ohjelmien

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 4: Symbolit, derivojaesimerkki, kierroksen 1 ratkaisut (mm. SICP 2.32.3.2) Riku Saikkonen 1. 11. 2011 Sisältö 1 Symbolit ja sulkulausekkeet 2 Lisää Schemestä:

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

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

Lisätiedot