C-, C++, PC osana mittausjärjestelmää
Moi oon Olli. Ollaanko nähty jossain?
Opintojakson suoritus
- Saattaa kuulostaa tutulta
- 60p: Viope, Tuubi/Wikitehtävät, tentti
- Tuubi/wikitehtäviä ei tarvitse tehdä järjestyksessä
- Viope: Olio-ohjelmoinnin perusteet C++ -kielellä
- Tentti n. 24p, läpipääsyraja 6p
Aihealueet
- Olio-ohjelmointi
- Viope-kurssi
- Qt/moodle-tehtävät
- Tilakoneet
- Tilat, tilojen komennot, siirtymät, haarautuminen, sisäkkäiset tilakoneet, ks. teoria
- Tilakoneiden toteutus
- Switch case
- Qt
- Twincat?
Ohjelmointi on... (Viope)
- Ongelman määrittelemistä
- Ongelman ratkaisemista
- Ratkaisun muuttamista toimintasuunnitelmaksi eli algoritmiksi
- Algoritmin muuttamista lähdekoodiksi ohjelmoimalla/koodaamalla
- Lähdekoodin kääntämistä konekieliseksi ohjelmaksi
- Ohjelman testausta
- Ohjelman virheiden korjaamista
- Dokumentointia
Vaatimusmäärittely
mieleenpalautusta
Viope:
Vaatimusmäärittely, algoritmin rajaus
- Tahvo haluaisi tulla Helsinkiin
- Rajaus: Lentäen
- Mitkä ovat askeleet?
Viope, Algoritmi 1.0: Matka Rovaniemeltä Helsinkiin
-
Mene lentoasemalle
- Osta lippu
- Mene lentokoneeseen
- Juo kahvit
- Poistu lentokoneesta
- Mene lentoaseman pääsisäänkäynnille
- Odota, kunnes tulen hakemaan
Yksityiskohtaisesti!
1. Mene lentoasemalle:
1.1. Astu kotiovesta ulos
1.2. Ota matkapuhelin taskusta
1.2.1. Jos matkapuhelin ei ole taskussa, hae se sisältä ja palaa kohtaan 1.1.
1.2.2. Jos matkapuhelin on taskussa, soita taksikeskukseen ja tilaa taksi
1.3. Odota, kunnes taksi saapuu
1.4. Astu taksiin
1.5. Kerro kuskille meneväsi Rovaniemen lentoasemalle
1.6. Odota, kunnes taksi on perillä ja taksimies kertoo hinnan
1.8. Maksa taksimatka
1.9. Astu ulos taksista
1.10. Astu sisään lentoasemalle
2. Osta lippu:
2.1. Etsi lipunmyyntipiste
2.2. Mene jonoon, kun olet löytänyt pisteen
2.3. Odota jonossa
2.4. Kun pääset luukulle, pyydä lentolippua Helsinkiin
2.5. Kysy lipun hinta
2.6. Kun myyjä ojentaa lipun, anna rahat ja ota lippu
3. Mene lentokoneeseen:
3.1. ...
3.2. ...
3.3. ...
...
Vaatimusten määrittely?
- Miten liikennevalot toimii?
- Sanallinen kuvaus: mitä tulee ensin mieleen
Tilakoneet
Vaatimusmäärittely
Osion tavoitteet
Perusymmärrys tilakoneista
Osion tavoitteet
Perusymmärrys tilakoneista 2
- Jos tilakoneessa ei ole sisäkkäisiä tiloja, tilakone voi olla vain yhdessä tilassa kerralla
- Tilakoneiden toteutus Switch casella, QTimerillä
Pidemmälle menevää asiaa
(Tentissä lisäpisteitä)
- Sisäkkäiset tilakoneet
- Qt:n käyttöliittymät
- Ikuinen luuppi -tilakoneet
Vaatimusten määrittely
- Tarkempi kuvaus
- Toiminnallisuuden vaiheittainen kuvaus
- Mitä informaatiota järjestelmä sisältää?
Tilakonemalli
UML-kaavio
Caps lock?
-> Mallinna
Piirto-ohjelma
Tilakoneen toteuttaminen
- Switch case
- Qt:n QStateMachine ja QState -luokat
Tilakoneen toteutus
typedef enum
{
STATE_1 = 0,
STATE_2,
STATE_3
} my_state_t;
my_state_t state = STATE_1;
void foo(char input)
{
...
switch(state)
{
case STATE_1:
if(input)
state = STATE_2;
break;
case STATE_2:
if(input)
state = STATE_3;
else
state = STATE_1;
break;
case STATE_3:
...
break;
}
...
}
Tilakoneiden käytettävyydestä
- Tiloja voidaan kutsua myös moodeiksi
- Käyttöliittymäsuunnittelussa usein ongelmallisia
- Käyttöliittymässä on tila, jos käyttöliittymässä sama kontrolli (widget, esim painike) tekee eri tilanteissa eri asioita
- Tilat, niiden vaihtuminen, ja tilojen vaihtumisen seuraukset kannattaa tehdä hyvin näkyviksi ja ennustettaviksi
- Valikot? Tabit? Ikkunat?
http://savolai.net/software/moodle/2011/08/27/dangers-of-moded-user-interfaces/
Tilakoneen toteutus Qt:ssa
Tilakoneet Qt:ssa
- Qt:n oman ajastimen QTimerin käyttö vaatii että on luokkia ja niissä sloteja, joita ajastin voi laukoa
- Tilakoneen tilan välittäminen erikseen tapahtumankäsittelijäfunktiolle on kömpelöä. Luokassa tila voi olla luokan jäsenmuuttujana
- Esim. reaaliaikajärjestelmissä tilakone tikkaa tietyn millisekuntimäärän välein. Tehdään tilakone, joka havainnollistaa tätä logiikkaa
Isompi tilakone
Alitilakoneet
Tehtävät
-
https://wiki.metropolia.fi/pages/viewpage.action?pageId=14686602
-
PC osana mittausjärjestelmää -tehtävät -otsikko
-
Tallenna vastaukset toistaiseksi kotihakemistoon/Z-asemalle
PC osana mittausjärjestelmää
By Olli Savolainen
PC osana mittausjärjestelmää
- 2,767