L models. Vaatimusmäärittely. Ryhmä Rajoitteiset

Koko: px
Aloita esitys sivulta:

Download "L models. Vaatimusmäärittely. Ryhmä Rajoitteiset"

Transkriptio

1 Teknillinen Korkeakoulu T-76.5 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Vaatimusmäärittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset Vesa Salento Ensimmäinen versio, pohja asiakirjalle Vesa Salento Lisätty enemmän vaatimuksia Joonas Kekoni Kielivaatimukset lisätty ja kappaleet ja korjattu Vesa Salento Lisätty käyttäjävaatimuksia ja korjattu sisällysluetteloa Vesa Salento Päivitetty sisältö ryhmäpalaverissa tulleiden kommenttien mukaiseksi Jouni Karppinen Dokumenttipohja otettu käyttöön. Vähän muotoilua Vesa Salento Päivitetty vaatimuksia ja termistöä Jouni Karppinen & Mitro Kuha Dokumentti tarkastettu ja korjattu palautusta varten.

2 Sisällysluettelo Johdanto... Asiakastavoitteet... Määritykset.... Termistö... 4 Yleiskuva Käyttäjäryhmät Esimerkki rajoitustiedostosta... 5 Vaatimukset Kielivaatimukset Käyttäjävaatimukset Toiminnalliset vaatimukset Muut vaatimukset... 6 Liite A - Kielen formaali määritelmä... 7

3 Johdanto Ryhmän tavoitteena on rakentaa järjestelmä, jonka avulla voi ratkaista rajoitteita, jotka sisältävät sekä lineaarisia sekalukuyhtälöitä sekä loogisia rajoitteita. Järjestelmän tulee kyetä jäsentämään määritellyllä kielellä toteutettu ongelma sen suhteen, mitkä ovat annettujen muuttujien mahdolliset arvot, tai sen, että niitä ei ole. Ryhmän toteuttama järjestelmä ratkaisee ongelman muuttamalla lineaarisia ja loogisia yhtälöitä sisältävän ongelman lineaarisen optimoinnin tehtäväksi, jonka ratkaisemiseen käytetään tarkoitukseen tehtyä valmisohjelmaa tai komponenttia. Testikäyttöä varten komponentille rakennetaan myös käyttöliittymä. Käyttöliittymä on tarkoitettu vain testausta varten, ja itse järjestelmää on tarkoitus käyttää irrallisena komponenttina jo olemassa olevasta asiakkaan ohjelmasta käsin. Tästä syystä järjestelmälle ei tehdä myöskään käyttötapauskuvauksia. Asiakastavoitteet Projektin tavoitteena on tutkia, soveltuuko ratkaisumalli lineaaristen rajoitteiden lisäämiseen WeCoTin-konfigurointiohjelmaan, sekä tuottaa asiakkaalle komponentti, jonka he voivat tulevaisuudessa integroida WeCoTin-ohjelmistoon. Nykyään WeCoTin käyttää vain loogisia rajoitteita, mikä aiheuttaa rajoituksia numeerisen datan, kuten hinnan, toimitusajan sekä olosuhteista riippuvan tehon, käsittelyyn. Määritykset. Termistö Seuraavassa taulukossa on selitetty lyhyesti erikoistermistö, jota käytetään tämän asiakirjan eri kohdissa. Termi BNF CNF DNF Linearisointi Määrittely (Backus-Naur Form) Formaali matemaattinen tapa määritellä kielioppi. HUOM! ei yhteyttä CNF:ään ja DNF:ään. (Conjunctive Normal Form) Konjuktiivinen normaalimuoto. Muoto, jossa looginen lauseke on supistettu siten, että OR-operaatiot ovat AND-operaatioiden sisällä. NOT-operaatiot ovat terminaalien edessä. Esim. (a OR b OR NOT c) AND (d OR e). (Disjunctive Normal Form) Disjunktiivinen normaalimuoto. Muoto, jossa looginen lauseke on supistettu siten, että AND-operaatiot ovat OR-operaatioiden sisällä. NOT-operaatiot ovat terminaalien edessä. Esim. (a AND b) OR (c AND NOT d). Prosessi, jossa logiikkaa sisältävä kaava muutetaan lineaarisiksi operaatioiksi.

4 Termi Malli Nonterminaali Määrittely Rajoitteiden muodostama kokonaisuus, jolle pyritään löytämään vähintään yksi ratkaisu rajojen sisällä. Kieliopin osa, joka koostuu terminaaleista, nonterminaaleista tai molemmista. Esim. aliohjelma, kaava tai muuttujamäärittely. Säännöllinen lauseke Säännöllinen lauseke (regexp, regular expression) on merkkijonon määrittelemä kaava, jota voidaan käyttää toisten merkkijonojen osien erittelemiseen. Supistaminen Terminaali Prosessi, jossa tulkittu kieli muutetaan joko CNF- tai DNFmuotoon, sekä mahdolliset numeeriset lausekkeet muutetaan muotoon, jossa muuttujat varustettuina mahdollisilla kertoimilla ovat vertailuoperaation vasemmalla puolella ja vakio oikealla. Kieliopin osa, jota ei enää jaeta pienempiin osiin. Esim. muuttuja, vakio tai operaattori. Translaatio Prosessi, jossa kieli tulkitaan ohjelman sisäiseen tietorakenteeseen. Taulukko : Asiakirjassa käytetty erikoissanasto. 4 Yleiskuva 4. Käyttäjäryhmät Järjestelmällä on kahdenlaisia käyttäjiä. Ensimmäiset ovat henkilöitä, jotka syöttävät konfigurointilausekkeet järjestelmään, ja toiset ovat niitä, jotka käyttävät näitä lausekkeita ratkaistessaan ongelmia. 4. Esimerkki rajoitustiedostosta Järjestelmän pitää tukea kieltä, jolla voidaan kuvata vaikkapa seuraavanlainen rajoitusmääritelmä: 5 Vaatimukset # muuttujat määritellään ennen rajoitetta boolean kaksitaajuus, lahialue, ilta_tai_viikonloppu; # kokonais- ja liukulukumuuttujat, joilla on sama domain, # voidaan määrittää samalla kertaa integer C, CD, PC [0,]; float kuukausimaksu [5.5,00]; # rajoite (kaksitaajuus implies (C = 0)) and (not(kaksitaajuus or kaksitaajuus or kaksitaajuus ) implies (CD = 0)) and (lahialue implies (C = 0)) and (not(lahialue) implies (PC = 0)) and (ilta_tai_viikonloppu implies (CD = 0)) and (not(ilta_tai_viikonloppu) implies (PC = 0)) and (C + CD + PC = ) and (. * C +.5 * CD +.67 * PC <= kuukausimaksu) Vaatimukset voidaan jakaa neljään eri osaan. Ensimmäisenä ryhmänä on kielelle olevat

5 määritykset, joilla määritellään runko koko järjestelmälle. Seuraavana ryhmänä on käyttäjävaatimukset, joihin kuuluvat vaatimukset siitä, mitä käyttäjät haluavat kyetä tekemään järjestelmällä. Toiminnalliset vaatimukset kertovat eriteltynä, mitä toimintoja järjestelmän täytyy pystyä suorittamaan. Muihin vaatimuksiin on jätetty ne vaatimukset, jotka eivät sisälly em. ryhmiin. Kaikille vaatimuksille on annettu yksilöivä tunniste sekä prioriteettinumero, joka kertoo kuinka tärkeä vaatimus on. Seuraava taulukko sisältää tarkemman kuvauksen eri prioriteeteista. Prioriteetti Määritelmä Järjestelmän kannalta kriittinen vaatimus, jota ilman se ei voi toimia. Ilman tätä vaatimusta järjestelmän toiminta on huomattavasti suppeampi, kuin mikä olisi tarkoitus, ja siksi kaikki tämän prioriteetin vaatimukset pitää toteuttaa. Järjestelmän kannalta tärkeä vaatimus, joka olisi hyvä toteuttaa. Ilman tätä toiminnallisuus kärsii, mutta järjestelmää voidaan kuitenkin käyttää sen käyttötarkoitukseen. Kaikki tämän prioriteetin vaatimukset on tarkoitus toteuttaa. Järjestelmän kannalta lisätoiminta tai muuten vain käytettävyyttä helpottava vaatimus. Mikäli aikataulu sallii, niin nämä olisi tarkoitus toteuttaa. Taulukko : Prioriteettiluokkien kuvaukset. 5. Kielivaatimukset Kielen tavoitteena on kuvata lineaarisia ja loogisia rajoitteita, joita tuotteella voidaan ratkaista, sekä määritellä niiden muuttujat tyyppeineen ja rajoineen. Tunniste Vaatimus Prioriteetti LANG-REQ-0 Kielen pitää tukea seuraavia muuttujatyyppejä: totuusarvo (boolean), kokonaisluku (integer) ja liukuluku (float). LANG-REQ-0 Kaikille muuttujille pitää määritellä sekä nimi että muuttujatyyppi. LANG-REQ-0 Kaikkien käytettyjen muuttujien määrittely on pakollista. LANG-REQ-04 Samalla rivillä pitää voida määritellä useita muuttujia. LANG-REQ-05 Numeerisille muuttujille (integer, float) pitää määritellä rajat, jotka kertovat muuttujan kelvolliset arvot. LANG-REQ-06 Totuusarvotyyppisille muuttujille voidaan määritellä arvoksi tosi (true) tai epätosi (false), mutta tämä on vapaaehtoista. LANG-REQ-07 Loogisia ja numeerisia tyyppejä ei saa sekoittaa. Loogisella tyypillä ei ole numeerista arvoa, eikä numeerisella tyypillä loogista arvoa.

6 Tunniste Vaatimus Prioriteetti LANG-REQ-08 Kielen pitää mahdollistaa aritmeettisten lausekkeiden esittäminen seuraavilla operaatioilla: yhteenlasku (+), vähennyslasku (-) ja tulo (*). Kahden muuttujan kertomista ei tueta, sillä se ei ole lineaarinen operaatio. LANG-REQ-09 Kielen pitää tukea vakiolla jakamista (/). Muuttujalla jakamista ei tueta, sillä se ei ole lineaarinen operaatio. LANG-REQ-0 Kielen pitää tukea seuraavia loogisen tuloksen tuottavia aritmeettisia operaatioita: pienempi kuin (<), suurempi kuin (>), pienempi tai yhtäsuuri kuin (<=), suurempi tai yhtäsuuri kuin (>=), yhtäsuuri kuin (=) ja erisuuri kuin (!=). LANG-REQ- Kielen pitää tukea seuraavia loogisia operaatioita: konjunktio (AND), disjunktio (OR), negaatio (NOT), ehdoton tai (XOR), implikaatio (IMPLIES) ja ekvivalenssi (EQUIV). LANG-REQ- Kielen pitää tukea tavallisia aritmeettisten operaatioiden laskujärjestyssääntöjä, joissa tulo lasketaan ennen yhteenja vähennyslaskua. On sallittua kirjoittaa a+b*40<00, jolla tarkoitetaan samaa kuin a+(b*40)<00, sillä sulut eivät ole tässä pakollisia. LANG-REQ- Loogisilla operaatiolla noudatetaan seuraavia laskujärjestyssääntöjä: ensin negaatio (NOT), sitten konjunktio (AND), sen jälkeen disjunktio (OR) ja ehdoton tai (XOR) alkaen vasemmalta ja lopuksi ekvivalenssi (EQUIV) ja implikaatio (IMPLIES) alkaen vasemmalta. Esim. a AND (NOT b) voidaan kirjoittaa ilman sulkeita muodossa a AND NOT b. LANG-REQ-4 Kielen tulee tukea ketjudisjunktioita ja -konjunktioita. Lauseke voidaan kirjoittaa muodossa a AND b AND c sen sijaan, että se kirjoitettaisiin (a AND b) AND c tai a AND (b AND c). Taulukko : Järjestelmän kielivaatimukset. 5. Käyttäjävaatimukset Käyttäjävaatimukset tulevat käyttäjien tarpeista järjestelmälle. Ne ovat yleisiä toiminnallisuuksia, mitä käyttäjä haluaa tehdä järjestelmällä. 4

7 Tunniste Vaatimus Prioriteetti USER-REQ-0 Järjestelmän on tarjottava käyttöliittymä, josta käyttäjä voi syöttää järjestelmän ratkaistavaksi kieliopin mukainen malli. USER-REQ-0 Järjestelmän on tarjottava käyttäjälle mahdollisuus valita mallin ratkaisuun käytettävä ratkaisija. USER-REQ-0 Järjestelmän on mahdollistettava ratkaisijakohtaisten alustusasetusten asettaminen. USER-REQ-04 Järjestelmän on mahdollistettava ratkaisijakohtaisten alustusasetusten määrittäminen. USER-REQ-05 Järjestelmän on kyettävä ratkaisemaan kieliopin mukainen käyttäjän syöttämä malli. USER-REQ-06 Järjestelmän on kyettävä laskemaan muuttujille kelvollisten arvojen rajat kieliopin rajoitteiden puitteissa. USER-REQ-07 Käyttäjän on kyettävä valitsemaan muuttujille arvoja laskettujen rajojen puitteissa. USER-REQ-08 Käyttäjän on kyettävä muuttamaan muuttujille valittuja arvoja. USER-REQ-09 Käyttäjän muutettua muuttujien arvoja järjestelmän on kyettävä laskemaan tämän muutoksen jälkeen muiden muuttujien mahdolliset uudet rajat. USER-REQ-0 Käyttäjän on kyettävä muuttamaan jo tehtyjä valintoja, jolloin tilanne päivitetään muutosten mukaiseksi. USER-REQ- Järjestelmän on näytettävä käyttäjälle eri muuttujien mahdolliset arvot valittujen muiden muuttujien aiheuttamien rajojen perusteella. USER-REQ- Järjestelmän on mahdollistettava useamman eri muuttujan arvojen muuttaminen ennen tilanteen päivitystä. USER-REQ- Järjestelmän on kyettävä näyttämään ratkaisuun käytetty prosessoriaika käyttöliittymässä. USER-REQ-4 Järjestelmän on kyettävä näyttämään linearisoidun mallin koko valituilla muuttujien arvoilla (jäljellä olevien muuttujien ja yhtälöiden määrä). USER-REQ-5 Järjestelmän on kyettävä näyttämään jokin ratkaisu, mikäli sellainen on olemassa muuttujien valittujen arvojen puitteissa. USER-REQ-6 Järjestelmän käyttöliittymän on oltava englanniksi. Taulukko 4: Järjestelmän käyttäjävaatimukset. 5. Toiminnalliset vaatimukset Järjestelmän pitää kyetä lukemaan kieliopin mukaan määritelty malli, jäsentämään siitä jäsennyspuu sekä supistamaan se konjunktiiviseen ja disjunktiiviseen normaalimuotoon. 5

8 Osalle muuttujista on määritelty niiden arvot ja osa arvoista on käyttäjän valittavissa. Ohjelman pitää kyetä laskemaan niiden muuttujien arvoille mahdolliset rajat, joille ei ole vielä valittu mitään arvoa. Tunniste Vaatimus Prioriteetti FUNC-REQ-0 Järjestelmän on kyettävä jäsentämään kieliopin mukainen syöte jäsennyspuuksi. FUNC-REQ-0 Järjestelmän pitää kyetä tunnistamaan kieliopin vastainen syöte. FUNC-REQ-0 Järjestelmän on kerrottava, missä kohtaa mallissa on virhe, mikäli sille syötetään kieliopin vastainen syöte. FUNC-REQ-04 Järjestelmän pitää pystyä optimoimaan supistettua mallia, jotta sen ratkaiseminen voi tapahtua mahdollisimman nopeasti. FUNC-REQ-05 Järjestelmän pitää kyetä ratkaisemaan yhtä aikaa useampaa eri tehtävää. Taulukko 5: Järjestelmän toiminnalliset vaatimukset. 5.4 Muut vaatimukset Loput vaatimukset on esitetty taulukossa 6. Ne eivät sisälly mihinkään edellisistä vaatimusryhmistä, ja ovat siksi koottu omaan ryhmäänsä. Tunniste Vaatimus Prioriteetti MISC-REQ-0 Järjestelmän käyttämien ratkaisijoiden vaihtaminen pitää olla mahdollista. MISC-REQ-0 Järjestelmän käyttämä aika ratkaisun etsimiseen pitää olla rajoitettavissa. MISC-REQ-0 Järjestelmän ei pidä jumiutua millään syötteellä. MISC-REQ-04 Järjestelmän pitää toimia useammassa eri käyttöjärjestelmässä, joten se ei saa tukeutua mihinkään yksittäisen käyttöjärjestelmän erityisominaisuuteen. MISC-REQ-05 Käyttäjälle on tarjottava selainpohjainen käyttöliittymä järjestelmän testausta varten. Taulukko 6: Järjestelmän muut vaatimukset. 6

9 Liite A - Kielen formaali määritelmä Koska kieli on suurimmalta osaltaan asiakkaan määrittelemä, niin se on siksi sisällytetty tähän vaatimusmäärittelyyn liitteeksi. Kieliopin pitää toteuttaa kielelle määritellyt vaatimukset, jotka on lueteltu kohdassa 5. Kielivaatimukset. Seuraava määrittely toteuttaa nämä ja on oikeata kielioppia, mutta käyttää loogisia ja numeerisia tyyppejä sekaisin. Kielen terminaalien määrittely Alla on kielen terminaalit määriteltynä säännöllisillä lausekkeilla. Säännöllinen lauseke Terminaali ";" SEMI "+" PLUS "-" MINUS "*" TIMES "/" DIV "(" LPAREN ")" RPAREN "[" LBRACK "]" RBRACK "," COMMA "=" "==" EQ "!=" NEQ ">" GT "<" LT ">=" GE "<=" LE "and" AND "or" OR "not"" NOT "xor" XOR "implies" "imp" IMPLIES "equiv" "xnor" EQUIV "boolean" VBOOL "integer" "int" VINT "float" "double" VFLOAT \#.* -ei terminaalia- [0-9]*[0-9] INT [0-9]*\.?[0-9]+(([e+] [e-])[0-9]+)? FLOAT [a-za-z][a-za-z0-9_]* ID "true" "TRUE" TRUE "false" "FALSE" FALSE [ \t\r\n\f] -ei terminaalia- Kielen nonterminaalien määrittely Seuraavassa nonterminaalit on määriteltynä BNF:llä. terminal SEMI, COMMA; terminal PLUS, MINUS, TIMES, DIV, UMINUS; terminal LPAREN, RPAREN, LBRACK, RBRACK; terminal EQ, NEQ, GT, LT, GE, LE; terminal AND, OR, NOT, XOR, IMPLIES, EQUIV; terminal VBOOL, VINT, VFLOAT; terminal Double INT; 7

10 terminal Double FLOAT; nonterminal Double NUMBER; // float or int terminal String ID; terminal Boolean TRUE; terminal Boolean FALSE; non terminal Nodes.Expr expr; non terminal Nodes.Declaration decl; non terminal Nodes.DecList declist; non terminal Nodes.Declaration booldec; non terminal Nodes.Declaration intdec; non terminal Nodes.Declaration floatdec; non terminal Nodes.VarNameList varnamelist; non terminal Nodes.NumLimit numlim; non terminal Nodes.NumLimit intlim; non terminal Nodes.Problem file; precedence left EQUIV,IMPLIES; precedence left OR,XOR; precedence left AND; precedence left NOT; precedence nonassoc EQ, NEQ, GT, LT, GE, LE; precedence left PLUS, MINUS; precedence left TIMES,DIV; precedence left UMINUS; start with file; ~file ::= declist expr declist expr SEMI; NUMBER ::= FLOAT INT ; declist ::= decl declist decl; decl ::= booldec {: :} floatdec {: :} intdec {: :}; booldec ::= VBOOL varnamelist SEMI VBOOL varnamelist TRUE SEMI VBOOL varnamelist FALSE SEMI; varnamelist ::= ID:p COMMA varnamelist:v ID:p; numlim ::= LBRACK NUMBER COMMA NUMBER RBRACK; intlim ::= LBRACK NUMBER COMMA INT RBRACK; floatdec ::= VFLOAT varnamelist numlim SEMI; intdec ::= VINT varnamelist intlim SEMI; expr ::= LPAREN expr RPAREN expr AND expr expr OR expr 8

11 expr XOR expr expr EQUIV expr expr IMPLIES expr NOT expr LPAREN expr EQ expr RPAREN LPAREN expr NEQ expr RPAREN LPAREN expr LT expr RPAREN LPAREN expr GT expr RPAREN LPAREN expr LE expr RPAREN LPAREN expr GE expr RPAREN TRUE FALSE ID NUMBER expr PLUS expr expr MINUS expr expr TIMES expr expr DIV expr MINUS expr:e {: :} %prec UMINUS; 9

L models. Vaatimusmäärittely. Ryhmä Rajoitteiset

L models. Vaatimusmäärittely. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.5 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Vaatimusmäärittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

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

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

Lisätiedot

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

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

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

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

Loogiset konnektiivit

Loogiset konnektiivit Loogiset konnektiivit Tavallisimmat loogiset konnektiivit ovat negaatio ei konjunktio ja disjunktio tai implikaatio jos..., niin... ekvivalenssi... jos ja vain jos... Sulkeita ( ) käytetään selkeyden vuoksi

Lisätiedot

Aki Taanila LINEAARINEN OPTIMOINTI

Aki Taanila LINEAARINEN OPTIMOINTI Aki Taanila LINEAARINEN OPTIMOINTI 26.4.2011 JOHDANTO Tässä monisteessa esitetään lineaarisen optimoinnin alkeet. Moniste sisältää tarvittavat Excel ohjeet. Viimeisin versio tästä monisteesta ja siihen

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

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

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

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

Python-ohjelmointi Harjoitus 2

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

Lisätiedot

L models. Tekninen määrittely. Ryhmä Rajoitteiset

L models. Tekninen määrittely. Ryhmä Rajoitteiset Teknillinen Korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L models Tekninen määrittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

L m o d els. Tekninen määrittely. Ryhmä Rajoitteiset

L m o d els. Tekninen määrittely. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija L m o d els Tekninen määrittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

T Logiikka tietotekniikassa: perusteet Kevät 2008 Laskuharjoitus 5 (lauselogiikka ) A ( B C) A B C.

T Logiikka tietotekniikassa: perusteet Kevät 2008 Laskuharjoitus 5 (lauselogiikka ) A ( B C) A B C. T-79.3001 Logiikka tietotekniikassa: perusteet Kevät 2008 Laskuharjoitus 5 (lauselogiikka 6.1 7.2) 27. 29.2.2008 Ratkaisuja demotehtäviin Tehtävä 6.1 a) A (B C) Poistetaan lauseesta ensin implikaatiot.

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

Johdatus logiikkaan I Harjoitus 4 Vihjeet

Johdatus logiikkaan I Harjoitus 4 Vihjeet Johdatus logiikkaan I Harjoitus 4 Vihjeet 1. Etsi lauseen ((p 0 p 1 ) (p 0 p 1 )) kanssa loogisesti ekvivalentti lause joka on (a) disjunktiivisessa normaalimuodossa, (b) konjunktiivisessa normaalimuodossa.

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

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

LAUSEKKEET JA NIIDEN MUUNTAMINEN

LAUSEKKEET JA NIIDEN MUUNTAMINEN LAUSEKKEET JA NIIDEN MUUNTAMINEN 1 LUKULAUSEKKEITA Ratkaise seuraava tehtävä: Retkeilijät ajoivat kahden tunnin ajan polkupyörällä maantietä pitkin 16 km/h nopeudella, ja sitten vielä kävelivät metsäpolkua

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

YHTÄLÖ kahden lausekkeen merkitty yhtäsuuruus

YHTÄLÖ kahden lausekkeen merkitty yhtäsuuruus YHTÄLÖ kahden lausekkeen merkitty yhtäsuuruus Ensimmäisen asteen yhtälö: :n korkein eksponentti = 1 + 5 = 4( 3) Toisen asteen yhtälö: :n korkein eksponentti = 3 5 + 4 = 0 Kolmannen asteen yhtälö: :n korkein

Lisätiedot

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

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

Lisätiedot

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

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos...

Nimitys Symboli Merkitys Negaatio ei Konjuktio ja Disjunktio tai Implikaatio jos..., niin... Ekvivalenssi... jos ja vain jos... 2 Logiikkaa Tässä luvussa tutustutaan joihinkin logiikan käsitteisiin ja merkintöihin. Lisätietoja ja tarkennuksia löytyy esimerkiksi Jouko Väänäsen kirjasta Logiikka I 2.1 Loogiset konnektiivit Väitelauseen

Lisätiedot

LAUSELOGIIKKA (1) Sanalliset ilmaisut ovat usein epätarkkoja. On ilmaisuja, joista voidaan sanoa, että ne ovat tosia tai epätosia, mutta eivät molempia. Ilmaisuja, joihin voidaan liittää totuusarvoja (tosi,

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

T kevät 2007 Laskennallisen logiikan jatkokurssi Laskuharjoitus 1 Ratkaisut

T kevät 2007 Laskennallisen logiikan jatkokurssi Laskuharjoitus 1 Ratkaisut T-79.5101 kevät 2007 Laskennallisen logiikan jatkokurssi Laskuharjoitus 1 Ratkaisut 1. Jokaiselle toteutuvalle lauselogiikan lauseelle voidaan etsiä malli taulumenetelmällä merkitsemällä lause taulun juureen

Lisätiedot

LOGIIKKA johdantoa

LOGIIKKA johdantoa LOGIIKKA johdantoa LUKUTEORIA JA TO- DISTAMINEN, MAA11 Logiikan tehtävä: Logiikka tutkii ajattelun ja päättelyn sääntöjä ja muodollisten päättelyiden oikeellisuutta, ja pyrkii erottamaan oikeat päättelyt

Lisätiedot

T Kevät 2005 Logiikka tietotekniikassa: erityiskysymyksiä I Kertausta Ratkaisut

T Kevät 2005 Logiikka tietotekniikassa: erityiskysymyksiä I Kertausta Ratkaisut T-79.146 Kevät 2005 Logiikka tietotekniikassa: erityiskysymyksiä I Kertausta Ratkaisut 1. Jokaiselle toteutuvalle lauselogiikan lauseelle voidaan etsiä malli taulumenetelmällä merkitsemällä lause taulun

Lisätiedot

1 Logiikkaa. 1.1 Logiikan symbolit

1 Logiikkaa. 1.1 Logiikan symbolit 1 Logiikkaa Tieteessä ja jokapäiväisessä elämässä joudutaan tekemään päätelmiä. Logiikassa tutkimuskohteena on juuri päättelyt. Sen sijaan päätelmien sisältöön ei niinkäään kiinnitetä huomiota. Päätelmät

Lisätiedot

Diskreetit rakenteet. 3. Logiikka. Oulun yliopisto Tietojenkäsittelytieteiden laitos 2015 / 2016 Periodi 1

Diskreetit rakenteet. 3. Logiikka. Oulun yliopisto Tietojenkäsittelytieteiden laitos 2015 / 2016 Periodi 1 811120P 3. 5 op Oulun yliopisto Tietojenkäsittelytieteiden laitos 2015 / 2016 Periodi 1 ja laskenta tarkastelemme terveeseen järkeen perustuvaa päättelyä formaalina järjestelmänä logiikkaa sovelletaan

Lisätiedot

5.1 Semanttisten puiden muodostaminen

5.1 Semanttisten puiden muodostaminen Luku 5 SEMNTTISET PUUT 51 Semanttisten puiden muodostaminen Esimerkki 80 Tarkastellaan kysymystä, onko kaava = (( p 0 p 1 ) (p 1 p 2 )) toteutuva Tätä voidaan tutkia päättelemällä semanttisesti seuraavaan

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

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

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

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

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

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

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

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto

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

Ratkaisu: Käytetään induktiota propositiolauseen A rakenteen suhteen. Alkuaskel. A = p i jollain i N. Koska v(p i ) = 1 kaikilla i N, saadaan

Ratkaisu: Käytetään induktiota propositiolauseen A rakenteen suhteen. Alkuaskel. A = p i jollain i N. Koska v(p i ) = 1 kaikilla i N, saadaan HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 2 Ratkaisuehdotukset 1. Olkoon totuusjakauma v sellainen että v(p i ) = 1 kaikilla i N ja A propositiolause, jossa

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

Ratkaisu: Yksi tapa nähdä, että kaavat A (B C) ja (A B) (A C) ovat loogisesti ekvivalentit, on tehdä totuustaulu lauseelle

Ratkaisu: Yksi tapa nähdä, että kaavat A (B C) ja (A B) (A C) ovat loogisesti ekvivalentit, on tehdä totuustaulu lauseelle HY / Matematiikan ja tilastotieteen laitos Johdatus logiikkaan I, syksy 2018 Harjoitus 3 Ratkaisuehdotukset 1. Olkoot A, B ja C propositiolauseita. Näytä, että A (B C) (A B) (A C). Ratkaisu: Yksi tapa

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

Lmodels. Tekninen määrittely. Ryhmä Rajoitteiset

Lmodels. Tekninen määrittely. Ryhmä Rajoitteiset Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö Lineaaristen rajoitteiden tyydyttämistehtävän ratkaisija Lmodels Tekninen määrittely Ryhmä Rajoitteiset Versio Päivämäärä Tekijä Muutokset

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

Fortran 90/95. + sopii erityisesti numeriikkaan:

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

Lisätiedot

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

2 Yhtälöitä ja epäyhtälöitä

2 Yhtälöitä ja epäyhtälöitä 2 Yhtälöitä ja epäyhtälöitä 2.1 Ensimmäisen asteen yhtälö ja epäyhtälö Muuttujan x ensimmäisen asteen yhtälöksi sanotaan yhtälöä, joka voidaan kirjoittaa muotoon ax + b = 0, missä vakiot a ja b ovat reaalilukuja

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

Kesälukio 2000 PK2 Tauluharjoituksia I Mallivastaukset

Kesälukio 2000 PK2 Tauluharjoituksia I Mallivastaukset Kesälukio 2000 PK2 Tauluharjoituksia I Mallivastaukset 2000-08-03T10:30/12:00 Huomaa, että joihinkin kysymyksiin on useampia oikeita vastauksia, joten nämä ovat todellakin vain mallivastaukset. 1 Logiikkaa

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

uv n, v 1, ja uv i w A kaikilla

uv n, v 1, ja uv i w A kaikilla 2.8 Säännöllisten kielten rajoituksista Kardinaliteettisyistä on oltava olemassa (paljon) ei-säännöllisiä kieliä: kieliä on ylinumeroituva määrä, säännöllisiä lausekkeita vain numeroituvasti. Voidaanko

Lisätiedot

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014 Yhtälönratkaisusta Johanna Rämö, Helsingin yliopisto 22. syyskuuta 2014 Yhtälönratkaisu on koulusta tuttua, mutta usein sitä tehdään mekaanisesti sen kummempia ajattelematta. Jotta pystytään ratkaisemaan

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

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö

3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö 3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö Yhtälön (tai funktion) y = a + b + c, missä a 0, kuvaaja ei ole suora, mutta ei ole yhtälökään ensimmäistä astetta. Funktioiden

Lisätiedot

5. HelloWorld-ohjelma 5.1

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

Lisätiedot

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

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

Lisätiedot

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

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

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen: S A S B Samaan jäsennyspuuhun päästään myös johdolla S AB Ab ab: S A S B Yhteen jäsennyspuuhun liittyy aina tasan yksi vasen

Lisätiedot

Kirjoita käyttäen propositiosymboleita, konnektiiveja ja sulkeita propositiologiikan lauseiksi:

Kirjoita käyttäen propositiosymboleita, konnektiiveja ja sulkeita propositiologiikan lauseiksi: 1 Logiikan paja, kevät 2011 Ratkaisut viikolle I Thomas Vikberg Merkitään propopositiosymboleilla p i seuraavia atomilauseita: p 0 : vettä sataa p 1 : tänään on perjantai p 2 : olen myöhässä Valitaan konnektiiveiksi,

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

2.2 Muunnosten käyttöön tutustumista

2.2 Muunnosten käyttöön tutustumista 2.2 Muunnosten käyttöön tutustumista Tunnin rakenne: - Esimerkki (min) - Tehtävä -, jokerit tarvittaessa (2 min) - Loppukoonti ja ryhmäarviointi ( min) Tunnin tavoitteet: - Analysoidaan ja pohditaan valmiiksi

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

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

Trigonometrian kaavat 1/6 Sisältö ESITIEDOT: trigonometriset funktiot

Trigonometrian kaavat 1/6 Sisältö ESITIEDOT: trigonometriset funktiot Trigonometrian kaavat 1/6 Sisältö Ulkoa muistettavat peruskaavat Trigonometrisia funktioita koskevia kaavoja on paljon. Seuraavassa esitetään tärkeimmät ja lyhyet ohjeet niiden muistamiseen. Varsinaisesti

Lisätiedot

30A01000 Taulukkolaskenta ja analytiikka Luku 8: Lineaarinen optimointi ja sen sovellukset

30A01000 Taulukkolaskenta ja analytiikka Luku 8: Lineaarinen optimointi ja sen sovellukset 30A01000 Taulukkolaskenta ja analytiikka Luku 8: Lineaarinen optimointi ja sen sovellukset Mitä on lineaarinen optimointi (LP)? LP= lineaarinen optimointiongelma (Linear Programming) Menetelmä, jolla etsitään

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

Luku 5 Kertaus. Tehtävä 1 Kerratkaa oppimanne asiat yhdessä keskustellen.

Luku 5 Kertaus. Tehtävä 1 Kerratkaa oppimanne asiat yhdessä keskustellen. Luku Kertaus Tehtävä 1 Kerratkaa oppimanne asiat yhdessä keskustellen. - Samanmuotoiset termit - Lausekkeen ja yhtälön ero - Yhtälön totuusarvon tutkiminen - Yhtälön ratkaisun etsiminen - Yhtälön ratkaisun

Lisätiedot

Aluksi. 2.1. Kahden muuttujan lineaarinen epäyhtälö

Aluksi. 2.1. Kahden muuttujan lineaarinen epäyhtälö Aluksi Matemaattisena käsitteenä lineaarinen optimointi sisältää juuri sen saman asian kuin mikä sen nimestä tulee mieleen. Lineaarisen optimoinnin avulla haetaan ihannearvoa eli optimia, joka on määritelty

Lisätiedot

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia HTML - sivun rakenne ja osiot HTML HEAD STYLE SCRIPT STYLEsheet Javascript file BODY Javascript

Lisätiedot

Demo 1: Simplex-menetelmä

Demo 1: Simplex-menetelmä MS-C2105 Optimoinnin perusteet Malliratkaisut 3 Ehtamo Demo 1: Simplex-menetelmä Muodosta lineaarisen tehtävän standardimuoto ja ratkaise tehtävä taulukkomuotoisella Simplex-algoritmilla. max 5x 1 + 4x

Lisätiedot

5 Kertaus. Tehtävä 1 Kerratkaa oppimanne asiat yhdessä keskustellen.

5 Kertaus. Tehtävä 1 Kerratkaa oppimanne asiat yhdessä keskustellen. 5 Kertaus Tehtävä 1 Kerratkaa oppimanne asiat yhdessä keskustellen. - Samanmuotoiset termit - Lausekkeen ja yhtälön ero - Yhtälön totuusarvon tutkiminen - Yhtälön ratkaisun etsiminen - Yhtälön ratkaisun

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

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

Lisätiedot

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus

FORMAALI SYSTEEMI (in Nutshell): aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus FORMAALI SYSTEEMI (in Nutshell): Formaali kieli: aakkosto: alkeismerkkien joukko kieliopin määräämä syntaksi: sallittujen merkkijonojen rakenne, formaali kuvaus esim. SSM:n tai EBNF:n avulla Semantiikka:

Lisätiedot

Rajoittamattomat kieliopit (Unrestricted Grammars)

Rajoittamattomat kieliopit (Unrestricted Grammars) Rajoittamattomat kieliopit (Unrestricted Grammars) Laura Pesola Laskennanteorian opintopiiri 13.2.2013 Formaalit kieliopit Sisältävät aina Säännöt (esim. A -> B C abc) Muuttujat (A, B, C, S) Aloitussymboli

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

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

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

MS-A0402 Diskreetin matematiikan perusteet

MS-A0402 Diskreetin matematiikan perusteet MS-A0402 Diskreetin matematiikan perusteet Osa 1: Joukko-oppi ja logiikka Riikka Kangaslampi 2017 Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kiitokset Nämä luentokalvot perustuvat Gustaf

Lisätiedot

L models. Testisuunnitelma. Ryhmä Rajoitteiset

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

Lisätiedot

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

Logiikan kertausta. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos. TIE303 Formaalit menetelmät, kevät 2005 Logiikan kertausta Antti-Juhani Kaijanaho antkaij@mit.jyu.fi Jyväskylän yliopisto Tietotekniikan laitos TIE303 Formaalit mentetelmät, 2005-01-27 p. 1/17 Luento2Luentomoniste

Lisätiedot

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 9. lokakuuta 2016 TIEA241 Automaatit ja, syksy 2016 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 9. lokakuuta 2016 Sisällys Kontekstiton kielioppi Kontekstiton kielioppi koostuu joukosta päätemerkkejä (engl. terminal symbols),

Lisätiedot

Kahden lausekkeen merkittyä yhtäsuuruutta sanotaan yhtälöksi.

Kahden lausekkeen merkittyä yhtäsuuruutta sanotaan yhtälöksi. 10.1 Yleistä Kahden lausekkeen merkittyä yhtäsuuruutta sanotaan yhtälöksi. Esimerkkejä: 2x 8 = 12 A = πr 2 5 + 7 = 12 Yhtälöissä voi olla yksi tai useampi muuttuja Tuntematonta muuttujaa merkitään usein

Lisätiedot

Luku 3. Listankäsittelyä. 3.1 Listat

Luku 3. Listankäsittelyä. 3.1 Listat Luku 3 Listankäsittelyä Funktio-ohjelmoinnin tärkein yksittäinen tietorakenne on lista. Listankäsittely on paitsi käytännöllisesti oleellinen aihe, se myös valaisee funktio-ohjelmoinnin ideaa. 3.1 Listat

Lisätiedot

Matemaattinen Analyysi

Matemaattinen Analyysi Vaasan yliopisto, 009-010 / ORMS1010 Matemaattinen Analyysi 7 harjoitus 1 Määritä seuraavien potenssisarjojen suppenemissäteet a) k k x 5)k b) k=1 k x 5)k = k k 1) k ) 1) Suppenemissäteen R käänteisarvo

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

Sopimuspohjainen olio-ohjelmointi

Sopimuspohjainen olio-ohjelmointi Sopimuspohjainen olio-ohjelmointi Jouni Smed Kevät 2007 Yleistä Laajuus: 5 op. (3 ov.) Esitiedot: Olio-ohjelmoinnin perusteet (tai ent. Ohjelmointi I) Ilmoittautuminen: https://www.it.utu.fi/kurssi-ilmo/

Lisätiedot

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 VII Logiikkaohjelmointi Sisältö 1. Johdanto 2. Predikaattilogiikan käsitteistöä 3. Prolog 815338A Ohjelmointikielten periaatteet, Logiikkaohjelmointi 2

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

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

ALGORITMI- MATEMATIIKKA. Keijo Ruohonen

ALGORITMI- MATEMATIIKKA. Keijo Ruohonen ALGORITMI- MATEMATIIKKA Keijo Ruohonen 1993 Kirjallisuutta ANDERSON, I.: A First Course in Combinatorial Mathematics. Oxford University Press (1979) GRAHAM, R.L. & KNUTH, D.E. & PATASHNIK, O.: Concrete

Lisätiedot