Principles of Programming Languages Introduction to Lua Ryhmä 10

Koko: px
Aloita esitys sivulta:

Download "Principles of Programming Languages Introduction to Lua Ryhmä 10"

Transkriptio

1 Principles of Programming Languages Introduction to Lua Ryhmä 10

2 1 Johdanto Lua (lausutaan /ˈlu.a/ ja tarkoittaa kuuta Portugalin kielellä) on Brasiliassa vuonna 1993 kehitetty skriptikieli, joka erikoistuu sulautettavuuteen ja suorituskykyyn. Sen on suunnitellut ja toteuttanut Pontifical Catholic University of Rio de Janeiro, jossa sitä edelleen ylläpidetään. Tässä kirjoitelmassa käymme läpi Luan perusominaisuudet. Luvussa kaksi esitellään joitakin tunnettuja Luan käyttökohteita. Luku kolme puolestaan keskittyy kielen toteutukseen ja teknisiin ominaisuuksiin. Lopuksi luvussa neljä esitellään kielen syntaksia. 2 Käyttökohteet Lualla on useita käyttökohteita; aina pelien laajennoksista autoihin. Vaikka käyttökohteita on useita, on suurin paino peleissä sekä erinäisten ohjelmien liitännäisissä. Taulussa 2.1 on listattuna eri kategorioita, missä Luaa on käytetty. Taulukko 2.1 Luan käyttökohteita Kategoria Ohjelmat Autot Tietokannat/Tietokantojen hallinta Pelimoottorit Pelit Kuvien käsittely CMS Verkon diagnostiikka Serverit Missä Adobe Lightroom Mercedes-Benz käyttää Luaa useassa automallissa MySQL Proxy ja MySQL Workbench Aleph One, LÖVE, CryEngine Total War, World of Warcraft GIMP MediaWiki Wireshark Apache, nginx, lighttpd Erityisesti pelisovelluksissa Luan käyttöä perustellaan helpolla muokattavuudella ja prototypioinnilla. Se myös mahdollistaa käyttäjien itsensä tekemät muokkaukset pelien käyttöliittymiin (World of Warcraft) tai jopa uuden sisällön luomisen peliin (Garry s Mod). 3 Tekniset ominaisuudet Lua on skriptikieli, joka tukee useaa ohjelmointiparadigmaa kuten olio-ohjelmointi, funktionaalinen ohjelmointi ja proseduraalinen ohjelmointi. Lua-koodia kirjoitetaan dynaamisesti ja sitä ajetaan Javan tapaan kääntämällä kirjoitettua koodia tavukoodi käskyiksi, tai ns. toimintakoodiksi, jota prosessoidaan erillisessä virtuaalikoneessa. Toisin kuin Javassa, Luan virtuaalikone ei ole pino-pohjainen vaan rekisteripohjainen. Lua on toteutettu C-kirjastoksi ja täten se on helppo "sulauttaa" mukaan toiseen koodiin. Tämän ominaisuuden ansiosta Lua on määritelty laajennus kieleksi (extension language).

3 3.1 Tyypit ja ympäristöt Luan tyypit ovat dynaamisia. Tämä tarkoittaa, että itse muuttujilla ei ole tyyppiä mutta arvoilla on. Kaikki arvot ovat ns. First-Class arvoja eli kaikkia arvoja voidaan välittää parametrina, sijoittaa muuttujiin ja palauttaa paluuarvona. Kielessä on kahdeksan perustyyppiä: nil, boolean, number, string, function, userdata, thread ja table. Nil on Luassa sama kuin monessa muussa kielessä null eli sillä kuvataan arvon puuttumista. Nil tyyppi voi saada arvokseen ainoastaan yhden arvon: nil. Boolean kuvaa totuusarvoa ja voi saada arvot true ja false; nil ja false tekevät ehdosta epätoden, muut arvot toden. Number tyyppi voi saada arvokseen niin kokonaislukuja kuin liukulukuja. String tyyppi kuvastaa kahdeksen bittistä muuttumatonta merkkijonoa. Function tyyppi voi saada arvokseen joko Lualla kirjoitetun funktion tai C:llä kirjoitetun funktion. Userdata kuvaa raakaa muistilohkoa. Tämä voi olla joko oikea muistilohko tai C osoitin arvo. Thread nimensä mukaisesti kuvaa yksittäisiä säikeitä. Näiden avulla voidaan toteuttaa rinnakkaisuutta, josta lisää kappaleessa 3.5. Table tyyppi kuvaa tauluja, joita voi indeksoida millä tahansa arvolla paitsi nil. Luassa taulut ovat ainoa tietorakenne mekanismi. Taulujen avulla kuvataan kaikki tarvittava kuten esimerkiksi normaalit taulut, graafit, puut sekä sekvenssit. Luassa on käytössä ympäristöt. Jokainen muuttuja, joka määritellään, lisätään tauluun nimeltä _ENV. _ENV taulut ovat sen hetkisen näkyvyysalueen muuttujat. Koko ohjelman kattavat globaalit muuttujat lisätään _G tauluun. 3.2 Virheidenhallinta Virheidenkäsittely on Luassa toteutettu seuraavasti: isäntäohjelma kutsuu C-koodin avulla funktiota Lua kirjastosta ja mikäli virhe tapahtuu, kontrolli palautetaan isäntäohjelmalle, joka voi tehdä tarvittavat toimenpiteet saadulle virheelle. Luassa on erillinen error funktio, jota kutsumalla voidaan itse generoida virhe ja virhe teksti. Virheitä voi ottaa kiinni käyttämä funktioita pcall ja xpcall. Luan itsensä generoimat virheet ovat aina merkkijonoja, jotka sisältävät virheen syyn. 3.3 Metataulut Luassa jokaisella arvolla voi olla metataulu. Nämä taulut ovat normaaleja tauluja, joissa määritellään arvon käyttäytyminen halutuissa operaatiossa. Näitä metataulun operaatioita kutsutaan metametodeiksi. Metametodien aivan/indeksi taulussa on string tyyppinen kuvaus tapahtumasta, jonka alussa on kaksi alaviivaa; esim. yhteelasku operaatio add. Metataulujen muokattavat metametodit on esitetty taulussa 3.1.

4 Taulukko 3.1 Metataulun metametodit. Avain Operaatio sub Vähennys (-) operaatio mul Kerto (*) operaatio div Jako (/) operaatio mod Modulo (%) operaatio pow Eksponentti (^) operaatio unm Negaatio (unaari -) operaatio idiv Lattia jako (//) operaatio band Bitwise AND (&) operaatio bor Bitwise OR ( ) operaatio bxor Bitwise XOR (binääri ~) operaatio bnot Bitwise NOT (unaari ~) operaatio shl Bitwise left shift (<<) operaatio shr Bitwise right shift (>>) operaatio concat Ketjutus (..) operaatio len Pituus (#) operaatio eq Yhtäsuuruus (==) operaatio lt Pienempi kuin (<) operaatio le Pienempi tai yhtäsuuri kuin (<=) operaatio index Indeksointi määritys - taulu[avain] newindex Indeksointi sijoitus - taulu[avain] = arvo call Call-operaatio - func(args) Taulukon 3.1 operaatiot ovat perusoperaatioita ja koska metataulut ovat normaaleja tauluja, voi ne sisältää muutakin tietoa, esimerkiksi roskienkeruuseen liittyvää. Metatauluja ja metametodeja voidaan hyvin verrata C++:n operaattorien uudelleenmäärittelyyn (Operator overloading). Vaikka toteutus on huomattavasti erilainen, on ajatus sama: kustomoidaan operaattorin toimintaa määrittelemällä sen toteuttava toiminto itse. 3.4 Roskienkeruu Luassa on käytössä automaattinen muistin hallinta. Käyttäjän ei tarvitse huolehtia muistin varaamisesta ja ennen kaikkea muistin vapauttamisesta. Tämä on toteutettu siten, että Lua ajaa roskienkeruuta, joka kerää ja poistaa ns. kuolleet objektit. Käyttäjällä on mahdollisuus myös vaikuttaa roskienkeräykseen säätämällä arvoja garbage-collector pause ja garbage-collector step multiplier. Näiden arvojen avulla määrätään kauanko roskienkeruu odottaa ennen seuraavaa sykliä sekä keruun nopeutta. Kuten aikaisemmin on mainittu, roskienkeruuta koskevia metametodeja voidaan asettaa tauluihin. Tällöin tulee objektit merkitä viimestelyyn. Tämä toteutetaan laittamalla metatauluun indeksi gc. Indeksiä vastaavan metametodin tulee olla funktio tai muutoin Lua sivuuttaa ko. kentän.

5 Roskienkeruu ei huomio heikkoja viittauksia. Täten objekti, johon on vain heikkoja viittauksia, kerätään roskiin. 3.5 Rinnakkaisuus Rinnakkaisuus on tuettuna Luassa. Luassa on taulu coroutine, jonka avulla voidaan luoda uusia thread tyypin objekteja. Nämä vastaavat suoritussäiettä, jonka suoritus päättyy kahdella tavalla: joko suorittamalla komennot loppuun tai manuaalisesti kutsumalla yield funktiota. Luan rinnakkaisuutta voi kontrolloida myös C-rajapinnan kautta. Se sisältää funktiot lua_newthread, lua_resume ja lua_yield, joiden avulla voidaan suoraan ohjata yksittäisen säikeen toimintaa. Rajapinnan toiminnasta kerrotaan lisää seuravaassa luvussa. 3.6 C-rajapinta Lua on laajennos kieli (extension language). Jotta muut kielet ja ohjelmat voisivat käyttää Luaa, on sitä varten tehty C-rajapinta. C-rajapinta on oikeastaan vain joukko C funktioita isäntäohjelmalle. Näiden funktioiden avulla isäntäohjelma pystyy kutsumaan Luaa. Monen muun C kirjaston tavoin, Lua rajapinta ei tee tarkistuksia annetuille parametreille vaan tämä on kehittäjän omissa käsissä. Kaikki arvot C:stä ja C:hen menee virtuaalisen pinon kautta. Pinon jokainen elementti kuvastaa Luan arvoa (nil, string jne). Kun C funktiota kutsutaan, luodaan uusi pino, joka on aivan erillinen muista pinoista. Pino sisältää aluksi kaikki C funktiolle tarkoitetut parametrit ja lopuksi myös C funktion palauttaman arvon. Rajapintaa käytettäessä kehittäjän on huomioitava, että käytetty pino on eheä. Tällä tarkoitetaan sitä, että on kehittäjän vastuulla tarkastaa, että pinossa on tarpeeksi tilaa puskea uutta tietoa. Kutsuttaessa C funktiota Lua luo pinon, jossa on 20 ylimääräistä elementtiä. 4 Syntaksi Perussyntaksi on Luassa hyvin C:n tapainen. Käännettävää koodia kutsutaan nimellä chunk, joka koostuu listasta sekventiaalisesti suoritettavia käskyjä, josta käytetään nimitystä block. Nämä kaksi määritelmää on esitetty BNF-notaatioissa 4.1 ja 4.2. Notaatiossa 4.2 stat tarkoittaa käskyä ja {stat} käskyistä koostuvaa listaa. chunk ::= block (4.1) block ::= {stat} (4.2) exp ::= nil false true Numeral LiteralString (4.3)... functiondef prefixexp tableconstructor exp binop exp unop exp

6 Käskyt voivat koostua esimerkiksi muuttujien määrittelyistä, funktiokutsuista, erilaisista kontrollirakenteista tai sijoitusoperaatioista, ja ne erotetaan toisistaan rivinvaihdolla. Käskyt voivat sisältää erilaisia lausekkeita, jotka kuvaavat esimerkiksi totuusarvoa, kokonaislukua, tai merkkijonoa. Peruslausekkeet on määritelty Luan dokumentaatiossa notaatiolla 4.3. Erilaisten operaatiolausekkeiden määrittelyyn palataan luvussa Muuttujat Luan muuttujat jaetaan paikallisiin ja globaaleihin muuttujiin. Globaalit muuttujat eivät tarvitse erillistä määrittelyä, vaan niihin voidaan vapaasti viitata koodissa. Paikalliset muuttujat puolestaan tarvitsevat erillisen määrittelykäskyn. Kolmanneksi muuttujatyypiksi luetaan taulukoiden kentät, joita myös tavalliset muuttujat käytännössä ovat (luku 3.1). Muuttujan määrittely on ilmaistu notaatiossa 4.4, jossa Name on muuttujan tunniste, ja kaksi jälkimmäistä määrittelyä ilmaisevat kaksi vaihtoehtoista tapaa käsitellä taulukoiden kenttiä. var ::= Name prefixexp [ exp ] prefixexp. Name (4.4) stat ::= local Name [ = exp ] (4.5) Paikallinen muuttuja määritellään antamalla sen tunniste notaation 4.5 mukaisesti. Käskyn avainsanalla local muttuja sidotaan käskyn näkyvyysalueelle paikalliseksi muuttujaksi. Näkyvyysalueen ulkopuolelta tunnisteeseen Name tehdyt viittaukset osoittavat kyseisen tunnisteen globaaliin muuttujaan, kun taas näkyvyysalueen sisällä tehdyt viittaukset osoittavat määriteltyyn paikalliseen muuttujaan. Sama paikallinen muuttuja voidaan myös määritellä useaan kertaan sisäkkäisillä näkyvyysalueilla. Tässä tapauksessa muuttujaan tehdyt viittaukset osoittavat jokaisella näkyvyysalueella aina lähimpään ulompaan muuttujaan, eivätkä sisempien muuttujien arvot vaikuta ulompien muuttujien arvoon käskyjen suorituksen aikana. Muuttujien näkyvyysalueisiin voidaan myös vaikuttaa määrittelemällä erillinen näkyvyysalue notaation 4.6 mukaisesti. stat ::= do block end (4.6) Paikalliselle muuttujalle voidaan määrittelyn yhteydessä myös antaa alkuarvo notaation 4.5 hakasulkeissa olevalla sijoituslausekkeella. Jos muuttujaa ei alusteta, se saa oletuksena arvon nil, joka on myös globaalien muuttujien alkuarvo. Muuttujaan sijoitus tapahtuu vastaavasti notaatiolla 4.7 stat ::= var = exp (4.7) namelist ::= Name {, Name} (4.8) explist ::= exp {, exp} (4.9) stat ::= local namelist [ = explist] (4.10) stat ::= varlist = explist (4.11) Lua tukee myös useampien muuttujien käsittelyä yhdellä käskyllä. Näin notaatioit 4.5 ja 4.7 voidaan yleistää notaatioiksi 4.10 ja 4.11 käyttäen notaatioita 4.8 ja 4.9. Tätä ominaisuutta voi hyödyntää erityisesti vararg-parametrien yhteydessä, jotka esitellään tarkemmin luvussa 4.5.

7 4.2 Kontrollirakenteet Lua sisältää C-kielen kanssa hyvin samanlaisia kontrollirakenteita. While-silmukat ja if-lauseet toimivat C- kielen kanssa täysin vastaavasti, ja repeat-until-silmukka vastaa C-kielen do-while-silmukkaa. Myös silmukan keskeyttävä break-käsky toimii vastaavalla tavalla C-kielen kanssa. Näiden rakenteiden syntaksi on kuvattu notaatiolla stat ::= while exp do block end repeat block until exp (4.12) if exp then block {elseif exp then block} [else block] end break Ehtolauseissa arvot nil ja false tulkitaan totuusarvoksi false ja kaikki muut totuusarvoksi true. Repeatuntil-silmukan ehtolauseke voi lisäksi viitata silmukan sisällä määriteltyihin paikallisiin muuttujiin. Kielestä löytyvät myös goto ja label käskyt, joiden syntaksi on määritelty notaatioissa Goto-käsky hyppää siihen label-käskyyn, jossa on sama notaatiolla 4.13 ilmaistu tunniste. Hypyn kohteena oleva label-käsky on tyhjä käsky, joka ei suorita mitään operaatiota. Label-käskyllä määritellyt tunnisteet noudattavat samoja näkyvyysperiaatteita kuin paikalliset muuttujat luvussa 4.1. label ::= :: Name :: (4.13) stat ::= label goto Name (4.14) Lua tarjoaa kaksi eri vaihtoehtoa for-silmukalle. Näistä ensimmäinen on numeerinen for, joka on esitelty notaatiossa Se määrittelee silmukkamuuttujan, joka aloittaa sille määritellystä alkuarvosta ja jatkaa silmukan suorittamista, kunnes se läpäisee annetun ehtolausekkeen. Silmukalle voidaan antaa myös erillinen päivityslauseke, joka muuttaa silmukkamuuttujan arvoa jokaisen kierroksen päätteeksi. stat ::= for Name = exp, exp [, exp] do block end (4.15) stat ::= for namelist in explist do block end (4.16) Toinen vaihtoehto on geneerinen for, joka on määritelty notaatiossa 4.16 käyttäen luvun 4.1 notaatioita 4.8 ja 4.9. Tämä for-silmukka käyttää iteraattorifunktiota, joka tuottaa seuraavan arvon määritellyille silmukkamuuttujille jokaisen kierroksen jälkeen. Silmukka pysähtyy kun iteraattorifunktio tuottaa arvon nil. Geneerisen for silmukan yhteydessä käytetään yleensä Luan standardikirjastossa määriteltyjä apufunktioita (esimerkiksi pairs) helpottamaan silmukan käyttöä. 4.3 Lausekkeet Tässä luvussa käydään läpi lausekkeiden syntaksia ja eri operaatioihin liittyviä toiminnallisuuksia. Luan binääri- ja unaarioperaatiot on esitelty taulukossa 4.1 jaettuna bitti- ja vertailuoperaatioihin sekä loogisiin ja aritmeettisiin operaatioihin. Näiden lisäksi Lua sisältää ketjutusoperaation.. sekä pituusoperaation #. Operaatioiden suoritusjärjestus on kuvattu taulukossa 4.2. Ketjutus- ja eksponenttioperaatiot ovat oikealle assosiatiivisia, ja muut binäärioperaatiot ovat vasemmalle assosiatiivisia.

8 Taulukko 4.1 Binääri- ja unaarioperaatiot. Aritmeettiset operaatiot Bittioperaatiot Vertailuoperaatiot Loogiset operaatiot Summa + AND & Yhtäsuuruus == and Vähennys - OR Erisuuruus ~= or Kertominen * EXCLUSIVE OR ~ Pienempi < not Liukulukujako / RIGHT SHIFT >> Suurempi > Lattiajako // LEFT SHIFT << Pienempi tai <= Modulo % NOT (Unaari) ~ yhtäsuuri eksponentti ^ Suurempi tai >= Miinus (unaari) - yhtäsuuri Taulukko 4.2 Suoritusjärjestys Prioriteetti Operaatiot (Suurempi luku suoritetaan ensin) 1 or 2 and 3 < > <= >= ~= == 4 5 ~ 6 & 7 << >> * / // % 11 (unaarioperaatiot) not # - ~ 12 ^ Lua suorittaa operaatioiden vaatimat tyyppikäännökset automaattisesti suoritusaikana. Binäärioperaatoissa operandit muutetaan kokonaisluvuiksi ja liukulukujaossa sekä eksponenttioperaatioissa operandit muutetaan liukuluvuiksi. Muissa aritmeettisissa operaatioissa operandit muutetaan liukuluvuiksi, jos yksikin operandeista on liukuluku. Ketjutusoperaatio muuttaa aina operandit merkkijonoiksi ja palauttaa merkkijonon. 4.4 Taulukot Taulukot mahdollistavat monimutkaisempien tietorakenteiden luomisen. Taulukkoja voidaan tallentaa muuttujiin samalla tavalla kuin muitakin arvoja. Taulukon rakentajaa käytetään notaatioiden mukaisesti. tableconstructor ::= { [fieldlist] } (4.17) fieldlist ::= field {fieldsep field} [fieldsep] (4.18) field ::= [ exp ] = exp Name = exp exp (4.19) fieldsep ::=, ; (4.20)

9 Taulukkoa voidaan indeksoida luvun 4.1 notaatiossa 4.4 annetuilla vaihtoehdoilla. Ensimmäinen vaihtoehto on C-kielen tapaan hakasulkeilla. Toisena vaihtoehtona on olio-ohjelmoinnille tyypillinen pistenotaatio. 4.5 Funktiot Luan funktiomäärittely tapahtuu notaatioiden mukaisesti. Vaihtoehtona tarjotaan myös notaation 4.24 mukaiset määrittelykomennot. Funktiomäärittely on siis lauseke, jonka paluuarvo on tyyppiä function. stat ::= var = function funcbody (4.21) funcbody ::= ( [parlist] ) block end (4.22) parlist ::= namelist [,... ]... (4.23) stat ::= [local] function Name funcbody (4.24) Funktiokutsun yhteydessä annettujen parametrien lista sovitetaan automaattisesti funktiomäärittelyn parametrilistaan. Vararg-parametri (notaation ) mahdollistaa funktioille vaihtelevan määrän parametreja. functioncall ::= prefixexp args (4.25) args ::= ( [explist] ) tableconstructor LiteralString (4.26) Funktiota kutsutaan notaatioiden 4.25 ja 4.26 mukaisesti. Jos notaation prefixexp-lauseke viittaa funktioon, käynnistetään vastaava funktiokutsu. Muussa tapauksessa kutsutaan kyseisen arvon callmetametodia. Lua mahdollistaa myös häntärekursiivisen funktiokutsun, kun funktiokutsun yhteydessä käytetään return-avainsanaa (return functioncall).

Tie Principles of Programming Languages Seminar Essay. Lua. Group 23 Miikka Koskinen Joose Sainio

Tie Principles of Programming Languages Seminar Essay. Lua. Group 23 Miikka Koskinen Joose Sainio Lua Group 23 Miikka Koskinen Joose Sainio Johdanto Lua on kevyt skriptikieli, joka on pääasiallisesti suunniteltu muiden kielien tueksi laitteistoläheiseen ohjelmointiin. Luan kehittäminen aloitettiin

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

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

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

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

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

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

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

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

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

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

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

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

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC LOAD, =X LOAD R2, X int x =; symbolin X arvo muuttujan X arvo

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

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

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

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Muuttujan X osoite on 230 Muuttujan X arvo on 12 Symbolin X arvo on 230 symbolit ovat yleensä

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

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

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Muuttujan X osoite on 230 Muuttujan X arvo on 12 Symbolin X arvo on 230 Tieto ja sen osoite

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

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

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

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

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

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

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

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

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

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

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

11. Javan toistorakenteet 11.1

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

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

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

Lisätiedot

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

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

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 2: SICP kohdat 22.2.3 Riku Saikkonen 2. 11. 2010 Sisältö 1 Linkitetyt listat 2 Listaoperaatioita 3 Listarakenteet 4 Gambit-C:n Scheme-debuggeri Linkitetyt

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

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

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

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

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

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

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

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages

Ruby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages Tampere University of Technology Department of Pervasive Computing TIE-20306 Principles of Programming Languages Ruby Ryhmä 8 Juho Rintala Sami Paukku Sisällysluettelo 1 Johdanto... 3 2 Paradigma... 3

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

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

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if-else-lauseet. Orpo else. Valintaa toisin: switch-lause. 11.2 If-lause Merkitään varatulla sanalla if. Kuvaa yksisuuntaisen päätöksen: rakenteen lauseet

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Keskeneräinen luento 3: Listat (mm. SICP 22.2.3) Riku Saikkonen 31. 10. 2011 Sisältö 1 Linkitetyt listat 2 Linkitetyt listat (SICP 2.1.1, 2.2.1) funktionaalinen

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

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC 12 LOAD R1, =X LOAD R2, X int x =12; symbolin X arvo muuttujan

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

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

Lisätiedot

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. TIETOKONEOHJELMIEN RAKENNE Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. Teollisuusautomaation ohjelmiin on lainattu runsaasti perinteisen

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

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

Lisätiedot

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

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

TIE Principles of Programming Languages CEYLON

TIE Principles of Programming Languages CEYLON TIE-20306 Principles of Programming Languages CEYLON SISÄLLYSLUETTELO 1. YLEISTIETOA KIELESTÄ JA SEN KEHITTÄMISESTÄ... 1 2. CEYLONIN OMINAISUUKSIA... 2 2.1 Modulaarisuus... 2 2.2 Tyypit... 2 2.3 Muita

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

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

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014

Racket ohjelmointia osa 2. Tiina Partanen Lielahden koulu 2014 Racket ohjelmointia osa 2 Tiina Partanen Lielahden koulu 2014 Sisältö 1) Funktiot ja muuttujat (kertaus) 2) Animaatiot & pelit (big-bang) 3) Vertailuoperaattorit sekä boolean arvot 4) Tietorakenteet (struct)

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Lyhyt kertaus osoittimista

Lyhyt kertaus osoittimista , syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Olio-ohjelmointi Syntaksikokoelma

Olio-ohjelmointi Syntaksikokoelma C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja

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

Muuttujat ja kontrolli. Ville Sundberg

Muuttujat ja kontrolli. Ville Sundberg Muuttujat ja kontrolli Ville Sundberg 14.9.2007 Alkeistyyppi Alin abstraktiotaso josta tarvitsee välittää Yksittäinen, jakamaton tiedonjyvä Tavallaan kaikki alkeistyypit ovat lukuja arvojoukko vaihtelee

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

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

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tyyppejä ja vähän muutakin TIEA341 Funktio ohjelmointi 1 Syksy 2005 Viime luennolla... Haskellin alkeita pääasiassa Hello World!... ja muita tutunoloisia ohjelmia Haskellilla Haskellin voima on kuitenkin

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

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

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

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki PERL TIE-20306 Principles of Programming Languages Ryhmä 4: Joonas Lång & Jasmin Laitamäki 1. Johdanto Perl on ohjelmointikielten perhe, johon kuuluu Perl 5 ja Perl 6. Kielet ovat kuitenkin erilliset ohjelmointikielet

Lisätiedot

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...

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

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan soveltamista List-luokan metodeja Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan metodeja List-luokan

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

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

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

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