sohvi 1. Perusrakenteita

Koko: px
Aloita esitys sivulta:

Download "sohvi 1. Perusrakenteita"

Transkriptio

1 1 sohvi Sofistikoitunut hämäläinen variaabeleiden inspektori LKTT 2008 (per I-III) 25. ELOKUUTA 2008, VERSIO 10 Kielen määrittely annetaan laajennetulla BNF-notaatiolla, joka on seuraava. <nimi> ::= määrittely määrittelee välisymbolin nimi a1 a2 a1 jota välittömästi seuraa a2 a1 a2 a1 tai a2 [ a ] a tai ei mitään { a } nolla tai useampia kertoja a ( a1 a2 ) a3 kaarisulut määräävät vaikutusalueen (esimerkissä a1 tai a2 ja heti perään a3) Kun <nimi> esiintyy operaattorin ::= oikealla puolella, on sen merkitys täsmälleen sama kuin määrittely. 1. Perusrakenteita 1.1. Kommentti on merkkijono, joka a) alkaa ++ ja päättyy rivin loppuun, tai b) alkaa merkeillä (+ ja loppuu merkkeihin +) (voi siis olla useampirivinen) Alkioiden (non-terminaalit) välissä saa olla tyhjiä merkkejä: välilyönti, rivinvaihto tai tabulaattori digit ::= integer ::= digit { digit } 1.5. scale_factor ::= ( E e ) [ + - ] integer 1.6. float ::= integer. integer [ scale_factor ] 1.7. number ::= integer float 1.8. letter ::= a... z A... Z ö Ö ä Ä 1.9. ident ::= letter { letter digit _ } ident_list ::= ident {, ident } full_ident ::= ident [ [ expression_list ] ] qualident ::= { full_ident. } full_ident sohvi.tex 1 Rev: 10, August 25, 2008

2 designator ::= qualident single_character ::= ascii merkki character ::= single_character \ single_character char_constant ::= character string_constant ::= { character } Kielen varatut sanat (tunnistetaan pienellä kirjoitettuna): addressof and apiece const div else end entry eval exit external fi finish function if import in internal is iterate launch map mod module monitor next not of or out perform pointer procedure protected repeat requires return returns stack struct type vector when while with Näiden lisäksi varattuja sanoja ovat myös kaikki kielen tietotyyppien nimet: bool, char, double, int, str, vector, map, stack, condition sekä sisäisten funktioiden ja proseduurien nimet: await, chr, convert, dispose, len, isempty, new, ord, pop, print, println, push, read, readln, signal, spawn, osoittimiin liittyvät nimet val, nil sekä vakiot true, false. 2. Kielen syntaksi 2.1. Käännösyksikkö compilation ::= module { module } module ::= module_type ident := [ import_part ] declaration_part procedure_part [ launch statement_sequence ] finish ident module_type ::= module monitor protected 2.2. Moduulin pääosat import_part ::= import ident_list ; declaration_part ::= { type_declaration ; variable_declaration ; } procedure_part ::= { procedure_declaration ; function_declaration ; entry_declaration ; } sohvi.tex 2 Rev: 10, August 25, 2008

3 Peruslauseita boolean_exp ::= expression statement ::= assignment procedure_call if_statement loop_statement while_statement iterate_statement eval expression exit [ boolean_exp ] return [ expression ] statement_sequence ::= [ with declaration_part perform ] statement ; { statement ; } assignment ::= designator := expression procedure_call ::= qualident [ actual_parameters ] if_statement ::= if boolean_exp next statement_sequence { else if boolean_exp next statement_sequence } [ else statement_sequence ] fi loop_statement ::= repeat statement_sequence finish while_statement ::= while boolean_exp loop_statement iterate_statement ::= iterate ident in range loop_statement apiece ident in expression loop_statement range ::= expression.. expression 2.4. Funktiot ja proseduurit fp_section ::= [ in ] [ out ] ident_list : type formal_parameters ::= ( fp_section { ; fp_section } ) procedure_heading ::= procedure ident [ formal_parameters ] procedure_body ::= statement_sequence finish [ ident ] procedure_declaration ::= procedure_heading := procedure_body function_heading ::= function ident [ formal_parameters ] returns type function_declaration ::= function_heading := procedure_body entry_heading ::= entry ident [ formal_parameters ] when boolean_exp sohvi.tex 3 Rev: 10, August 25, 2008

4 entry_declaration ::= entry_heading := procedure_body actual_parameters ::= ( [ expression_list ] ) function_call ::= qualident actual_parameters 2.5. Tyypit ja muuttujat type ::= qualident [ pointer ] record_type ::= struct ident : type { ; ident : type } vector_type ::= vector [ range {, range } ] of type map_type ::= map of type, type stack_type ::= stack of type type_declaration ::= type ident := ( type record_type vector_type map_type stack_type ) map_val ::= factor : expression map_init ::= { map_val {, map_val } } vector_init ::= [ expression_list ] initialization ::= expression vector_init map_init variable_declaration ::= ident_list : type [ := initialization ] const ident := initialization 2.6. Lausekkeet primary ::= number char_constant string_constant qualident function_call ( expression ) prefix_op ::= + - not addressof factor ::= [ prefix_op ] primary mult_op ::= * / div mod term ::= factor { mult_op factor } add_op ::= + - & simple_expression ::= term { add_op term } relation_op ::= = # = = sohvi.tex 4 Rev: 10, August 25, 2008

5 relation ::= simple_expression [ relation_op simple_expression ] expression ::= relation { and relation } relation { or relation } expression_list ::= expression {, expression } 2.7. Import-moduulin rakenne import_module ::= ident external [ requires_part ] import_declaration_part import_procedure_part requires_part ::= requires ident_list ; import_type_declaration ::= type_declaration import_variable_declaration ::= ident : [ const ] type internal string_constant import_declaration_part ::= { import_variable_declaration ; import_type_declaration ; } import_procedure_part ::= { procedure_heading internal string_constant ; entry_heading internal string_constant ; function_heading internal string_constant ; } sohvi.tex 5 Rev: 10, August 25, 2008

6 6 3. Tietotyypit 3.1. bool : totuusarvot true ja false char : ascii-merkki (8 bittinen) int : etumerkillinen kokonaisluku, joka on yhteensopiva saman ympäristön C-kielisen int -tietotyypin kanssa (esim. 32 bittinen) double : liukuluku, joka on yhteensopiva saman ympäristön C-kielisen double -tietotyypin kanssa (esim. 64 bittinen) str : merkkijono (kuten C-kielessä eli ascii-merkit ja viimeisenä tavuna nolla). Merkkijonoa voi indeksoida, jolloin saatu yksittäinen merkki on tyyppiä char vector : Samaa tietotyyppiä sisältävä 1 N ulotteinen taulukko map : Assosiatiivinen taulukko stack : Pino, jota käsitellään aliohjelmilla push, pop ja isempty condition : monitorin ehtomuuttuja. 4. Semantiikkaa (tämä ei ole täydellinen luettelo, tarkista WWW-sivulta) 4.1. Leksikaalit Merkkiliteraalien ja merkkijonojen yhteydessä voidaan käyttää merkintää \x, joka tarkoittaa merkkiä x itse tai erikoismerkintää jostain ohjauskoodista. Tällä tavoin saadaan kirjattua esim. merkkijonon sisään lainausmerkki. Ainakin seuraavien symbolien on toimittava: \n rivinvaihto (kuten C-kielessä) \t tabulaattori \0 nolla (merkkijonon lopetusmerkki) \ merkki itse (heittomerkki) \" merkki itse (lainausmerkki) \\ merkki itse (takakenoviiva) Merkkijonon sisällä esiintyvät kommenttimerkit eivät aloita tai lopeta kommenttia Kielen varattu sana ei saa esiintyä muussa kuin syntaksin määräämässä merkityksessä. Varattu sana ei siis voi olla esim. moduulin, muuttujan tai tietotyypin nimenä qualident tarkoittaa pisteillä toisistaan eroteltuja nimiä (esim. moduuli.funktionimi ). sohvi.tex 6 Rev: 10, August 25, 2008

7 Nimien peittyminen on sallittua (eli jos esim. funktion parametrina on muuttuja i ja funktion rungossa silmukan silmukkamuuttuja on i, niin silmukan sisällä i-tarkoittaa silmukkamuuttujaa ja edellisen tason muuttujaan ei pystytä viittaamaan) Moduulit Määrittelyn lopussa oleva ident on sama kuin moduulin nimi Import-moduuli ei esiinny yksinään käännösyksikkönä, vaan se luetaan erillisestä tiedostosta import -lauseen seurauksena Import-moduulin requires -osassa luetellut moduulit otetaan automaattisesti mukaan käännökseen ( moduulinimi.o ) ja niiden alustuskoodi suoritetaan Ohjelmakoodi lähtee suoritukseen Main-nimisen moduulin alustuskoodista. Kaikki muut moduulit ovat käännösyksiköitä, joista tuotetaan esittelytiedosto ja objektitiedosto Esittelytiedosto tuotetaan nimelle moduulinimi.sohvidef Kaikkien import-moduulina käyttöön otettujen moduulien alustuskoodit on suoritettava ennen Main:n käynnistymistä Jokaisen moduulin ohjelmakoodissa on globaali rutiini assemblernimellä moduulinimi$init, joka suorittaa moduulin alustuksen Import-moduulien internal -määreet (merkkijono) kertovat rakenteista käytettävän nimen assembler-tasolla Lauseet for ja apiece -silmukan silmukkamuuttuja on näkyvissä ainoastaan silmukan sisällä Silmukkamuuttujaan ei saa sijoittaa Pinolle suoritettu apiece käy läpi pinon kaikki alkiot (suunnassa pinon päältä pohjalle ) Map-taulukolle suoritettu apiece käy läpi taulukon kaikki avaimet type T = map of str, int; puhelinluettelo : T := { "jyke": 12345, "bitti": }; ++ tulosta kaikki numerot apiece nimi in puhelinluettelo repeat println( nimi, ":", puhelinluettelo[nimi] ); finish; sohvi.tex 7 Rev: 10, August 25, 2008

8 Taulukolle suoritettu apiece on määritelty vain yksiulotteisille taulukoille exit boolean_exp poistuu sisimmästä silmukasta jos ehtolauseen arvo on true exit -lause voi esiintyä ainoastaan silmukkarakenteen sisällä eval suorittaa lausekkeen ja hukkaa sen arvon (käytetään lähinnä silloin, jos halutaan kutsua funktiota ilman, että sen paluuarvolla on merkitystä) with... perform luo uuden näkyvyysalueen, jossa määritellyt tyypit ja muuttujat ovat voimassa seuraavaan lohkon sulkevaan rakenteeseen Tietotyypit Tietotyypeillä on rakenne-ekvivalenssi Automaattisia tyyppimuunnoksia tietotyyppien välillä ei ole olemassa Osoittimilla on erityinen tyhjä arvo nil, joka on tyyppiyhteensopiva kaikkien osoitintietotyyppien kanssa struct -tyyppi saa sisältää osoittimen samaa tietotyyppiä oleviin alkioihin. type IntList = struct x : int; next : IntList pointer end; Jos osoitinta käytettäessä on yksikäsitteistä, että tarkoitetaan osoittimen päässä olevaa arvoa, toiminta tehdään automaattisesti. Jos käyttötilanne ei ole selkeä, kerrotaan varatulla sanalla val tilanteet joissa halutaan käyttää osoittimen päässä olevaa arvoa. nimi osoitin osoitin.val osoitin.nimi merkitys osoittimen arvo osoittimen osoittama arvo osoittimen päässä olevan struct:n kenttä (jolle tehdään tulkinta uudelleen) a, b : IntList; p, q : IntList pointer; p := nil; ++ sijoitetaan osoitinmuuttujaan tyhjä arvo sohvi.tex 8 Rev: 10, August 25, 2008

9 9 p := addressof a; q := addressof b; q.next := nil; q.x := 42; ++ tiedetään kohteen olevan muuttuja p.val := q.val; ++ q:n osoittama struct kopioidaan ++ p:n osoittamaan paikkaan p.next := q; p.next.x := 1; ++ muuttujan b kenttä x p.next.next := nil; p.next.next.val := b; ++ semanttisesti oikein, ++ viittaus nil:n läpi p := q; ++ osoitin q muuttujaan p Eri tietotyyppien oletusalkuarvot ovat: false, a, 0, 0.0, "sohvi", nil ja condition -muuttujilla toteuksen mukainen alustus Lausekkeet # on erisuuruusoperaattori boolean_exp on lauseke, jonka laskettu lopputulos on tietotyyppiä bool Peruslaskutoimitukset toimivat totutulla tavalla tietotyypeillä int ja double Perustietotyyppien välillä ei ole automaattisia tyyppimuunnoksia. (Erityisesti int ja double eivät ole yhteensopivia.) mod ja div toimivat vain kokonaisluvuilla int ja toteuttavat ehdot x = (x div y) y + (x mod y) 0 (x mod y) < y tai y < (x mod y) Merkkijonoilla str katenointi ( & ) tuottaa uuden merkkijonon, joka on yhdistelmä laskun termeistä Operaattori addressof antaa muuttujaan viittaavan osoittimen Osoittimien arvoilla toimivat yhtä- ja erisuuruusvertailut and ja or noudattavat oikosulkuevaluointia (ketjutetun lausekkeen laskeminen lopetetaan heti kun sen lopputulos on tiedossa) Muuttujat const -muuttujien tietotyyppi määräytyy määrittelyn alustuslausekkeen tietotyypin mukaan. sohvi.tex 9 Rev: 10, August 25, 2008

10 Funktiot ja proseduurit Aliohjelmaa (procedure) saa kutsua vain lauseessa Funktiota saa kutsua vain lausekkeessa (erillisenä lauseena kutsu tehdään eval -lauseen avulla) Funktiot ja proseduurit ovat ylimääriteltyjä siten, että nimen lisäksi tarvitaan parametrien lukumäärä ja tietotyypit tunnistamaan aliohjelma. Sisäisiä funktioita ei saa ylimääritellä Funktion ja proseduurin määrittelyn lopussa oleva ident on oltava sama kuin ko. aliohjelman nimi (koodin selkeyteen tähtäävä syntaksi) Parametrimääreiden toiminta: Määre <tyhjä> in out in out Käyttö sijoituksessa Luku ja kirjoitus. Kuten paikallinen muuttuja (arvoparametri). Vain luku. Vakioparametrimuuttuja. Vain kirjoitus. Viitepaluuarvo. Luku ja kirjoitus. Kuten viiteparametri Arvon palauttaminen return -lauseella proseduurista on virhe Tyhjä return -lause funktiossa on virhe. sohvi.tex 10 Rev: 10, August 25, 2008

11 Kielen sisäiset funktiot Nimi len(x) Argumentin tyyppi str, vector, stack Tulostyyppi int Toiminta x:n pituus (alkioiden lukumäärä, jossa merkkijonoilla ei ole mukana loppunollaa) ord(x) char int x:n järjestysnumero chr(x) 0 int char x:s ascii-merkki 255 pop(p) pino arvo Palauttaa pinon päällimmäisen alkion ja samalla poistaa ko. alkion pinosta. Jos pino on tyhjä, niin toiminta on määrittelemätön isempty(p) pino bool Palauttaa true jos pino on tyhjä, muutoin false convert(x,t) X T Palauttaa arvon joka on tietotyyppiä T ja jonka arvo on x convert -funktion tulee ymmärtää vähintään muunnokset Muunnos convert(d, int) convert(i, double) Toiminta Palauttaa suurimman kokonaisluvun joka on d Palauttaa liukuluvun, jonka arvo on i sohvi.tex 11 Rev: 10, August 25, 2008

12 Kielen sisäiset proseduurit read(m,s) readln(m,s) muuttuja ja boolean status muuttuja ja boolean status Nimi Argumentin Toiminta tyyppi spawn(x) katso käynnistää uuden suoritussäikeen await(x) condition jää odottamaan ehdon toteutumista signal(x) condition signaloi ehdon toteutuneen new(p) osoitinmuuttuja dynaaminen muistinvaraus, johon mahtuu osoittimen tietotyyppiä oleva alkio, osoitinmuuttuja osoittaa varattuun lohkoon dispose(p) osoitinmuuttuja poistaa osoittimen päässä olevan alkion käytöstä ja asettaa parametrina olevan osoittimen arvoksi nil. print(a,b,...) luettelo dataa tulostaa parametrit println(a,b,...) luettelo dataa toimii kuten print, mutta tulostaa viimeisenä rivinvaihdon lukee käyttäjältä merkkejä, jotka muunnetaan parametrin m arvoksi. s on true on muunnos onnistui. (Toteutusvinkki: scanf()) lukee käyttäjältä rivin merkkejä, jotka muunnetaan parametrin m arvoksi. s on true on muunnos onnistui. Myös rivinvaihtomerkki luetaan pois syötteestä. push(p,x) pino ja arvo laittaa pinon p päällimmäiseksi uuden arvon x (joka on pinon tyyppiä) int, double ja str tietotyyppien parametrinvälityksen on oltava yhteensopiva C-kielestä tuotetun koodin kanssa (C:n vastaavat tietotyypit int, double ja char*). Tämä takaa sen, että sohvi-ohjelmat voivat käyttää C-kielellä tehtyjä kirjastoja. sohvi.tex 12 Rev: 10, August 25, 2008

13 await ja signal proseduureja voi käyttää ainoastaan monitorrakenteen sisällä Osoitintyypeille määritellyt new ja dispose varaavat ja vapauttavat dynaamista muistia. Molemmat ottavat yhden osoitintyyppisen argumentin. Lause new(p); varaa p:n osoittaman tyypin tarvitseman määrän dynaamista muistia, ja lause dispose(p); vapauttaa p:n osoittaman muistin. Lauseen new(p) suorittamisen jälkeen p sisältää varatun muistilohkon osoitteen (tai nil jos muistinvaraus epäonnistui). 5. Rinnakkaisuusominaisuudet 5.1. Suoritussäikeet Kutsu spawn(p, i) käynnistää uuden suoritussäikeen, joka ryhtyy suorittamaan proseduuria p. Proseduurin esittelyn eli signatuurin tulee olla muotoa: procedure p( i : integer ); Uuden säikeen käynnistyessä aliohjelma p saa parametrinaan spawnkutsun toisen parametrin (kokonaisluku) Säikeen suoritus päättyy kun se palaa aliohjelmasta. Vastaavasti Main-säie lopettaa kun se suorittanut Main-moduulin alustuksen viimeisen lauseen Koko ohjelman suoritus päättyy kun kaikki sen käynnistämät spawnsäikeet ja Main-säie ovat lopettaneet suorituksensa Monitor Monitor-moduulin kaikki aliohjelmat suorittavat keskinäisen poissulkemisen siten, että vain yksi suoritussäie kerrallaan voi olla suorittamassa moduulin määrittelemää koodia kerrallaan Monitorin esittelemät muuttujat eivät ole käytettävissä moduulin ulkopuolelta (ne eivät ole näkyvissä import-lauseen avulla) Tietotyyppi condition sekä proseduurit await() ja signal() ovat käytettävissä ainoastaan Monitor-moduulin sisällä signal(x) siirtää välittömästi monitorin suoritusvuoron yhdelle ehtomuuttujassa x odottavalle säikeelle. Jos yhtään odottajaa ei ole olemassa, niin proseduuri ei tee mitään Protected Poissulkemisen ja näkyvyyksien kannalta Protected-moduuli käyttäytyy kuten Monitor-moduuli. sohvi.tex 13 Rev: 10, August 25, 2008

14 Entry-aliohjelmat ovat käytettävissä ainoastaan Protected-moduulin sisällä Entry-aliohjelmaa kutsuttaessa se suoritetaan ainoastaan, jos aliohjelman when -ehtolause evaluoituu arvoon true. Jos ehto ei toteudu niin kutsun tehnyt säie jää odottamaan kyseisen entryaliohjelman jonoon Jokaisen protected-moduulin aliohjelman suorituksen jälkeen (ennen moduulin poissulkemisen lukituksen vapauttamista) tarkastetaan odottavien entry-aliohjelmien ehdot ja jos toteutunut ehto löydetään, niin suoritusvuoro annetaan tälle suoritussäikeelle (entry-jonot siis ohittavat mahdollisesti ulkupuolelta moduuliin samanaikaisesti tulevat kutsuyritykset). Vaikka toteutuneita ehtoja olisi useampia vain yksi odottava säie herätetään suoritukseen. sohvi.tex 14 Rev: 10, August 25, 2008

15 15 6. Käyttöliittymä 6.1. Kääntäjää ajetaan komennolla sohvic 6.2. Kääntäjän on ymmärrettävä seuraavat komentoriviparametrit -h tulostaa käyttöohjeen. tiedosto(t) luettelo lähdekooditiedostoja. -o btiedosto valmis binääri tulee nimelle btiedosto (oletuksena sohvi.out). -S käännös tuottaa tiedostoon moduulinimi.s käännöksen LLVMassembler muodossa. -llib linkittää mukaan kirjaston lib, joka on yhteensopiva C-kirjaston kanssa (esim. libcurses). -Lpath hakemisto, josta kirjastoja, moduuleja ja import-esittelyitä etsitään (jos tarvitaan useampia hakemistoja, niin valitsin annetaan useamman kerran). Työskentelyhakemisto on aina mukana etsinnässä. -Xstring asettaa päälle toteuttajien oman laajennuksen kääntäjässä. Esimerkkinä vaikkapa -Xgs ottaa käyttöön roskienkeruun tuotetussa binäärissä tai -Xjava tuottaa suoritettavan koodin javan tavukoodina Kääntäjä osaa ottaa itse automaattisesti mukaan kaikki tarvitsemansa apukirjastot ilman että käyttäjän tarvitsee niitä luetella -l ja -L vipusilla. Omat apukirjastot tulee sijoittaa hakemistoon, joka on kerrottu kääntäjän käännösvaiheessa Makefilen PREFIX-muuttujalla (katso tarkemmin työn palautusohjeista WWW-sivuilla) Vinkki: tätä kaikkea ei ole tarvis nysvätä itse, vaan osan ominaisuuksista voi toteuttaa käyttämällä hyväksi valmiita työkaluja (llvm-gcc ja llvm-sovelluskehyksen työkalut). Sopivilla parametreilla ja vipusilla kirjastojen linkitys mukaan yms. saa toteutettua helposti. sohvi.tex 15 Rev: 10, August 25, 2008

mai 1. Perusrakenteita

mai 1. Perusrakenteita 1 mai Mekaanisen Aritmetiikan Ideaali LKTT 2007 (per I-III) 2. LOKAKUUTA 2007, VERSIO 10 Kielen määrittely annetaan laajennetulla BNF-notaatiolla, joka on seuraava. ::= määrittely määrittelee välisymbolin

Lisätiedot

abba 1. Perusrakenteita

abba 1. Perusrakenteita 1 abba angry birds bombing apparatus LKTT 2012 (periodit II-III) 17. SYYSKUUTA 2012, VERSIO 1.0 Kielen määrittely annetaan laajennetulla BNF-notaatiolla, joka on seuraava. ::= määrittely määrittelee

Lisätiedot

SAtunnaisen YÖkooderin NAputtelun RAtkaisija. LKTT syksy 2006

SAtunnaisen YÖkooderin NAputtelun RAtkaisija. LKTT syksy 2006 1 sayōnara SAtunnaisen YÖkooderin NAputtelun RAtkaisija LKTT syksy 2006 2. KESÄKUUTA 2006, VERSIO 1.11 Kielen määrittely annetaan laajennetulla BNF-notaatiolla, joka on seuraava. ::= määrittely

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

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

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

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

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

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

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

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) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

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

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

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

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

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

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

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

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

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

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double

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

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

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

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

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi ero taulukkoon taulukossa alkiot samantyyppisiä tietueessa alkiot voivat olla erityyppisiä tiedot kuitenkin yhteen kuuluvia ohjelmoinnin perusteet,

Lisätiedot

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

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

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

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

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

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

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 2015-2016. Harjoitus 5 Vastaukset

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

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

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

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

Lisätiedot

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

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

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

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

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

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

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

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

Lisätiedot

TIETORAKENTEET JA ALGORITMIT

TIETORAKENTEET JA ALGORITMIT TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle

Lisätiedot

Algoritmit 1. Demot Timo Männikkö

Algoritmit 1. Demot Timo Männikkö Algoritmit 1 Demot 2 1.-2.2.2017 Timo Männikkö Tehtävä 1 (a) Ei-rekursiivinen algoritmi: laskesumma(t, n) sum = t[0]; for (i = 1; i < n; i++) sum = sum + t[i]; return sum; Silmukka suoritetaan n 1 kertaa

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

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 Taulukot ja merkkijonot Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko

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

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

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

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

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

C++11 lambdat: [](){} Matti Rintala

C++11 lambdat: [](){} Matti Rintala C++11 lambdat: [](){} Matti Rintala bool(*)(int) Tarve Tarve välittää kirjastolle/funktiolle toiminnallisuutta Callback-funktiot Virhekäsittely Käyttöliittymät Geneeristen kirjastojen räätälöinti STL:n

Lisätiedot

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

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

Lisätiedot

6. Muuttujat ja Java 6.1

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

Lisätiedot

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

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

Rakenteiset tietotyypit Moniulotteiset taulukot

Rakenteiset tietotyypit Moniulotteiset taulukot C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen

Lisätiedot

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Groovy. Niko Jäntti Jesper Haapalinna Group 31 Groovy Niko Jäntti Jesper Haapalinna Group 31 Johdanto Groovy on Apachen kehittämä Javaan perustuva dynaaminen oliopohjainen ohjelmointikieli. Kielen kehitys alkoi vuonna 2003, versio 1.0 julkaistiin 2007

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

Harjoitus 5 (viikko 48)

Harjoitus 5 (viikko 48) Moni tämän harjoituksen tehtävistä liittyy joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Harjoitustyö edistyy sitä paremmin, mitä enemmän tehtäviä ratkaiset. Mikäli tehtävissä on jotain

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

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

Lisätiedot

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

Loppukurssin järjestelyt C:n edistyneet piirteet

Loppukurssin järjestelyt C:n edistyneet piirteet C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura

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

Jakso 4 Aliohjelmien toteutus

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

Lisätiedot

Ohjelmoinnin 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

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 20. toukokuuta 2016 Yleistä Tentti 1 oli pistekeskiarvon (11.6) perusteella vaikea. Omasta tehtäväpaperista saa kopion Antti-Jussilta,

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

Algoritmit 1. Luento 4 Ke Timo Männikkö

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

Lisätiedot

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

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

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

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

Lisätiedot

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

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

Lisätiedot

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

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

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

Lisätiedot

6. Muuttujat ja Java 6.1

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

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

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

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

05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript Digitaalisen median tekniikat ent. LiveScript (Netscape), muunnelma JScript (Microsoft) yhteensopivat yksinkertaisissa asioissa, aiemmin yhteensopimattomat hiemankin edistyneemmissä nyk. ECMAScript (standardi)

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

Digitaalisen median tekniikat JavaScript

Digitaalisen median tekniikat JavaScript Digitaalisen median tekniikat JavaScript 5.4.2004 Harri Laine 1 JavaScript ent. LiveScript (Netscape), muunnelma JScript (Microsoft) yhteensopivat yksinkertaisissa asioissa, aiemmin yhteensopimattomat

Lisätiedot

Digitaalisen median tekniikat JavaScript Harri Laine 1

Digitaalisen median tekniikat JavaScript Harri Laine 1 Digitaalisen median tekniikat JavaScript 5.4.2004 Harri Laine 1 JavaScript ent. LiveScript (Netscape), muunnelma JScript (Microsoft) yhteensopivat yksinkertaisissa asioissa, aiemmin yhteensopimattomat

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