Sinun UserID: 0
Ilmoittaudu missä ryhmässä (live/zoom/video) katsot demojen vastaukset (huom joka viikolla oma ilmoittautuminen)
Please
to interact with this component. Please
to interact with this component. Please
to interact with this component. Please
to interact with this component. Please
to interact with this component.
Alla demotilanteesi.
- Pisteet eivät päivity tähän automaattisesti, vaan aina pienellä viiveellä.
- Värit: Punainen: Minimit ei täyty. Vihreä: vähintään 5p joista 2p tähtitehtävistä.
Ohjelmointi 1, s 2023 / Demo 3
Jos haluat harjoitella vastaavilla tehtävillä, joihin saat myös mallivastaukset, niin katso:
HUOM! Joka kerta on saatava vähintään 2p tähtitehtävistä! Alle 5p tehneillä on huono ennuste loppukurssissa.
Demot palautetaan viimeistään ma 25.9 klo 11:00 mennessä. Voit palauttaa osan tai kaikki tehtäväsi etukäteenkin ja täydentää vastauksia määräaikaan mennessä. Alla mainitut mallivastaukset näkyvät vasta kun demojen palautustilaisuudet on pidetty.
- huomaa että Answer-linkistä pääset katsomaan muiden vastauksia kun palautusaika on ummessa
- mallivastaukset
- muiden vastaukset
Oppimistavoitteet
Klikkaile ruksit niihin kohtiin jotka olet oppinut. Työkirja-sivulla näet yhteenvedon kaikista demoista.
Demokerran päätteeksi kirjoita arvio tällä viikolla käyttämästäsi työmäärästä. Laske työmäärään mukaan kaikki tällä viikolla käyttämäsi aika: lähiopetukseen (tai zoom) osallistuminen, oppimateriaalin lukeminen, demotehtävien tekeminen, luentovideon katsominen, demojen palautustilaisuuteen osallistuminen ja niin edelleen. Voit päivittää lukua viikon edetessä, se voi helpottaa arvion tekemistä. Huom! Siis tähän ei laiteta kurssin alusta kaikkia tunteja yhteensä, vaan vain tämän viikon tunnit. Tästä annettava 0.25 näkyy Pisteet-sivun demokerran summassa. Kirjoita pelkkä luku esim tyyliin 13.5
Ajankäyttösi tällä viikolla:
Please
Huomattavaa
On suositeltavaa (ja demosta 4 lähtien pakollista!) tehdä vähintään yksi tehtävä Riderilla.
Huomaa, että jos teet tehtäviä Riderilla Jypelin projektimalleja käyttäen, niin silloin pääohjelma jää erilliseen tiedostoon ja sitä ei saa enää uudestaan toistaa omassa ohjelmassa. Kääntäen jos otat esimerkin joka on tehty Jypelin projektimallilla ja haluat kääntää sen komentoriviltä, niin sinun on lisättävä pääohjelma (Main()
) kuten kurssin alkuesimerkeissä.
Kurssin ydinsisällön kannalta tärkeät tehtävät ovat 4 ja 5. Ne kannattaa tehdä ensin. Ohjeita noihin on pääteohjauksessa 3.
Kun tehtävien vastaukset on julkistettu (esim demopalautuksissa), pitää jokaisen korjata omat vastauksensa niin, että ainakin Tauno ja perustehtävät 1-6 tuottavat vähintään 1p kukin. Eli demon palautuksen jälkeen pitää demosivun näyttää vähintään 7 p.
Siis esim. ennen demo 2 tehtävien aloittamista pitää demoista 1 tulla vähintään mainittu pistemäärä.
Voit saada demopisteitä indeksoimalla luento/demovideoita, ks: Videoiden hakemisto aihepiireittäin 23 Lisää em. videosivulle vähintään 3-linkkiä ja kirjoita alla olevaan laatikkoon, mitkä linkit lisäsit. Joka demokerralle voi merkitä aina vähintään 3:sta linkistä yhden demotehtävän.
Tauno 1 a
Koita vastauksissa välttää turhia apumuuttujia ja mieti kuinka hyvin ratkaisusi yleistyy jos taulukon kokoa kasvatetaan.
Lisää aluksi Taunossa tulos
-niminen muuttuja ja tee sitten Taunolla ohjelma, joka laskee tulos
-muuttujaan parillisissa paikoissa olevien lukujen summa miinus parittomissa paikoissa olevien summa. Alkuperäistä taulukkoa ei saa muuttaa.
Esim:
5 4 6 2 9 1 => (5-4) + (6-2) + (9-1) = 13
Tauno 1 b
Lisää aluksi Taunossa tulos
-niminen muuttuja ja tee sitten Taunolla ohjelma, joka laskee yhteen taulukon luvut niin, että summa (1. - viimeinen) + (2. - toiseksi viimeinen) jne... (kunnes kaikkiin on "koskettu") on lopuksi tulos
-nimisessä muuttujassa. Edellä 1. tarkoittaa ensimmäinen.
Esim:
5 4 6 2 9 1 => (5-1) + (4-9) + (6-2) = 3
ViLLE 1
Tee ViLLE-tehtävät: 3.1, 3.2, 3.4, 7.1 - 7.6. (Villessä voi olla virhe, että Sum on välillä kirjoitettu isolla ja välillä pienellä, kuvittele että se on aina kirjoitettu isolla alkukirjaimella.)
Muista: Villen käyttöohje.
Tehtävä 1. Negatiiviset binääriluvut
M: 26.4 Negatiiviset binääriluvut:
Tämä tehtävä kannattaa tehdä mikäli on alan pääaineopiskelija tai haluaa tietää miksi kahden positiivisen luvun summa voikin olla negatiivinen. Muiden kannattaa ehkä ensin tehdä tehtäviä 2-6 ja tämä jos aikaa jää.
Tehtävän selitys ja itse tehtävät vievät sen verran tilaa, että ne on oletuksena piilotettu. Aukaise tehtävä [+]
-merkistä tai otsikosta klikkaamalla.
Useimmiten nykytietokoneissa käytetään negatiivisille luvuille niin sanottua kahden komplementtia. Eli positiivinen luku muutetaan negatiiviseksi muuttamalla kaikki bitit päinvastaisiksi ja sitten lisäämällä saatuun lukuun 1. Esimerkiksi:
3 = 0000 0011
-3 tehdään seuraavasti: 1) kaikki päinvastoin 1111 1100
2) +1 = 1111 1101 = -3
Vastaavasti kun lukua muutetaan "ihmismuotoon" (eli 10-järjestelmään), katsotaan sen ensimmäinen bitti ja jos se on 1, niin kyseessä on negatiivinen luku ja se muutetaan positiiviseksi ottamalla siitä kahden komplementti (kaikki bitit päinvastoin ja +1). Tällöin tulostuksessa tulostetaan ensin -
merkki ja sitten itse luvun arvo.
Esimerkiksi jos meillä on binääriluvut 0010 1101
ja 1101 1111
ja ne pitäisi tulkita, niin tulkinta aloitetaan seuraavasti:
0010 1101 luku on positiivinen, eli 45
1101 1111 luku on negatiivinen, siis ensin 2:n komplementti
0010 0000 + 1 = 0010 0001 = 33, eli tulos on -33
Huom! Komplementin kääntämisen jälkeen tehtävä +1 lisäys tehdään myös alla olevien bittien yhteenlaskusääntöjen mukaan eli esim.
1111 1110 luku on negatiivinen, siitä ensin 2:n komplementti
0000 0001 + 1 = 0000 0010 = 2, eli tulos on -2
Bittien yhteenlasku
0 + 0 = 0 => 0 ja 0 muistiin
0 + 1 = 1 => 1 ja 0 muistiin
1 + 0 = 1 => 1 ja 0 muistiin
1 + 1 = 10 => 0 ja 1 muistiin
1 + 1 + 1 = 11 => 1 ja yksi muistiin
Esimerkki yhteenlaskusta allekkain 4-bittisillä luvuilla kaikki vastinbiteistä saadut muistinumerot merkiten (esimerkissä muistinumero on merkitty myös oikeanpuoleiseen pariin vaikka se aina onkin 0. Tätä ei ehkä kaikki merkitse tästä syystä).
esim1 esim2
muistinumero 01110 11110
luku 1 0101 1111
luku 2 + 0011 + 1111
===== =====
summa 1000 1110
Vinkki binäärilukujen yhteenlaskuun
Tehtävän 1 kohdissa a-d laskettiin allekkain neljä binäärilukujen yhteenlaskua. Seuraavaksi muunnetaan kukin luku ja summa 10-järjestelmään. e)-kohdassa olettaen että käytössä ei ole negatiivisia lukuja ja f)-kohdassa kun oletetaan että luvut ovat 2-komplementtimuodossa.
Kirjoita vastauksesi alla oleviin e)- ja f)-kohtiin muodossa
a) 11 + 22 = +33
tai vähennyslaskuissa
b) 11 - 22 = -11
HUOM. Älä laske laskuja 10-järjestelmän laskuina vaan laske ne binäärilaskuina.
10-järjestelmässä laskun tulos ei välttämättä ole siis oikea tehtävän kannalta.
Vastauksissa ei saa olla ylimääräisiä merkkejä (esimerkiksi sulkuja).
Em. 4 bitin esimerkissä olisi ollut (tehtävään vastataan siis omien 8-bitin laskujen mukaan)
e) f) e) f)
muistinumero 0111 1111
0101 5 5 1111 15 -1
+ 0011 3 3 + 1111 15 -1
===== =====
1000 8 -8 1110 14 -2
jolloin vastattaisiin e) kohtaan
a) 5 + 3 = 8
b) 15 + 15 = 14
ja f) kohtaan
a) 5 + 3 = -8
b) -1 - 1 = -2
Pääteohjauksessa katsottu, että oikein. Muttei anna pisteitä? (Vesa? :))
VL: Näköjään ei saanut kirjoittaa muodossa x + -y = z
vaan piti kirjoittaa x - y = z
: Lisäsin tuon yhteenlaskun muodon kanssa sallituksi.
Em. 4-bitin esimerkissä olisi ollut
g) 5 + 3 = 8 olisi ollut oikein e-kohdan tulkinnalla (ei etumerkkiä),
15+15 ei mahtunut 4 bittiin
h) -1 - 1 = -2 olisi ollut oikein f-kohdan tulkinnalla (2-komp.),
5+3 tuotti negatiivisen luvun
Tehtävä 2. Muuttujien tyypit ja nimet
M: 7. Muuttujat. Lue ensin em. monisteen luku. Miten esittelisit (tyyppi ja nimi) muuttujat seuraavia tilanteita varten. Anna myös esimerkki miten sijoittaisit muuttujalle jonkin arvon. Kirjoita yksi kohta per rivi.
a) Työmatkan pituus polkupyörällä
b) Suoritettujen opintopisteiden määrä
c) Koko tutkinnon laajuus opintopisteissä
d) Tehtyjen demojen lukumäärä
e) Kirjan ensimmäinen kirjain
f) Sadan metrin juoksun voittajan aika.
g) 3 kuukauden euribor-korko
h) euron markka-muuntokerroin
Tehtävä 3. Muuttujien nimien kritisointia
M: 7. Muuttujat. Lue ensin em. monisteen luku. Arvostele seuraavat muuttujien tyypit ja nimet. Ovatko syntaktisesti oikein? Entä ovatko hyviä valintoja:
int mansikanKiloHinta;
double default;
char omaNimi;
double metriMm;
double tuntejaVuorokaudessa;
real nopeus;
boolean AuringonEtaisyys;
ulong kuukaudenKeskiLampo;
int kissoja,2_kanaa,kolmeKoiraa;
int i,j,l,I;
Tehtävä 4*. Funktioita
M: 9. Aliohjelman paluuarvo, erityisesti YmpyranAla paluuarvo.
Lue myös 6.2 Aliohjelmien kirjoittaminen.
Vaihda ISOLLA kirjoitettujen sanojen tilalle oikeat sanat ja sitten täydennä funktio KuutionTilavuus
toimivaksi. Älä vaan lisää parametrien määrää, koska yksi riittää!
Katso tehtävissä Näytä koko koodi
, niin näet, miten funktioita kutsutaan ja samalla näet, mitä on valmiina ja mitä kirjoittamatta.
Huomaa, että tehtävissä, joissa on Aja
ja Test
-painikkeet sekä Document
-linkki, pitää sinun painaa niitä kaikkia saadaksesi täydet pisteet tehtävästä. Ja dokumentissa pitää katsella minkälaisia linkkejä sieltä löytyy (ja miettiä miksi).
Vinkki: Jos yhtään vaikeuksia, katso: Demojen harjoittelu ja tee ensin siellä oleva tehtävä.
Muutamilla seuraavia virheitä (vaikka olisikin täydet pisteet, samoja virheitä myös T5):
- sisennykset väärin
- jos kutsutaan funktiota, sulku kiinni nimeen
- ei ole olemassa operaattoria
s^3
- muuttujien nimien pitää alkaa pienellä kirjaimella
- tyyppi on
double
eikäDouble
- dokumenttikommentit tulevat ennen funktion esittelyriviä
- dokumenttikommenteissa (jotka oli nyt jo valmiina) pitää esitellä myös parametrien nimet ja paluuarvon
- valmiissa kommentissa oli parametrin sivunpituus nimeksi annettu
s
ja sitä pitäisi käyttää! - turhia tyhjiä rivejä
- parametria ei saisi käyttää apumuuttujana
Tehtävä 5*. FahrenheitToCelsius
M: 9. Aliohjelman paluuarvo. Lue myös 6.2 Aliohjelmien kirjoittaminen. Katso Wikipediasta miten fahrenheitit muunnetaan celsius-asteiksi. Älä kuitenkaan Copy/Paste sieltä mitään, sillä miinusmerkiltä näyttävä merkki ei välttämättä ole siellä miinus (-), vaan muuten vaan saman näköinen merkki. Desimaalierottimena maasta riippumatta C#:issa käytetään pistettä (.) ei pilkkua (,). Kirjoita (funktio)aliohjelma, jota voidaan kutsua seuraavasti esim. 13°F muuttamiseksi Celsius asteiksi:
double lampotilaC;
lampotilaC = FahrenheitToCelsius(13);
Katso tehtävissä Näytä koko koodi
, niin näet miten funktioita kutsutaan ja samalla näet mitä on valmiina ja mitä on kirjoittamatta. Vertaa nyt edelliseen tehtävään ja kirjoita siis itse kaikki mitä edellisen tehtävän pohjassa oli kirjoitettu ISOilla kirjaimilla.
Tämä tehtävä kannattaa harjoitella Riderilla tekemällä ConsoleMain mallin avulla konsolisovellus (aukaise ohje [+]
-merkistä):
Avaa Rider, aloita uusi projekti ja valitse C# / Jypeli / ConsoleMain
(tai C# / Console application jos et ole asentanut Jypeliä). Nimeä projektisi esimerkiksi Muunnos
, ja nimeä myös luokan nimeksi Muunnos.cs
, jos Rider ei sitä automaattisesti nimeä. Kirjoita ohjelmakoodisi Muunnos.cs
-luokkaan. Muistathan edelleen, että yliopiston tietokoneilla ohjelmien ajaminen onnistuu vain kansiosta C:\MyTemp
.
Huom! Visual Studiossa oletusarvoisesti konsoli-ikkuna sulkeutuu välittömästi ohjelman päätyttyä mikäli se ajetaan debug-tilassa (F5
). Näin kuuluukin tapahtua. Konsoli-ikkunan saa jäämään näkyviin, kun ajaa ohjelman painamalla Ctrl-F5
.
HUOM: Tehtävä on TÄYSIN identtinen edellisen Kuutio-tehtävän kanssa. Voit kirjoittaa samaan luokkaan monta funktiota (vrt: luentojen video ja esimerkki Funktioita.cs tai sama kommentoimattomana). Jos teet Riderilla, niin kopioi vastauslaatikkoon vain funktion esittelyrivi JA toteutus. Pääohjelma, kommentit ja testit ovat tässä TIM-tehtävässä jo valmiiksi mukana.
Kirjoita vastaava funktio, joka muuntaa mailit (brittiläiset) kilometreiksi. Katso kaava muunnosta varten Wikipediasta.
En tarkistamistenkaan jälkeen tiedä miksi 0.1 pistettä jäi saamatta. Tarkistin siis demon purkutilaisuudesta.
VL: oletko painanut Document ja lukenut sen?
—Tehtävä 6. Aritmeettiset lausekkeet
Onko Console.Writeline mahdollista tulostaa muuta kuin teksti+luku yhdistelmää? Haluaisin saada tulostumaan yksikön luvun perään eli yhdistelmä olisi (teksti+luku+teksti). Onko se jotenkin mahdollista?
VL Ihan kuten tuossa kirjoitit, voit liimata merkkijonoja ja lukuja yhteen noin. Nykyaiaisempi ja parempi tapa on käyttää muotoilujonoa: ks moniste.
—M: 7.7 Operaattorit (ja aritmeettiset lausekkeet). Kirjoita lausekkeet, joilla lasket muuttujiin, joille olet valinnut hyvät nimet, alla luetellut arvot. Tee Console C#-ohjelmaksi, Main()
riittää, ei tarvitse aliohjelmia:
a) vuorokauden sekuntien lukumäärän
b) vuoden tuntien lukumäärän
c) kauanko valolla kuluu aikaa matkaan auringosta maahan
(keskietäisyydet riittävät).
d) valovuosi kilometreinä
Tulosta muuttujien arvot. Periaatteessa tyyliin (katso monisteesta Reaalilukujen muotoilu):
int tunnissaSekunteja = 60*60;
System.Console.WriteLine("Tunnissa sekunteja {0}",tunnissaSekunteja);
tai toimii myös muoto:
int tunnissaSekunteja = 60*60;
System.Console.WriteLine($"Tunnissa sekunteja {tunnissaSekunteja}");
tai tässä jopa merkkijonojen "liimaaminen":
int tunnissaSekunteja = 60*60;
System.Console.WriteLine("Tunnissa sekunteja " + tunnissaSekunteja);
L1. Liukuhihna
Dokumentissa Liukuhihna on hauska robotti. Vastaa siellä oleviin kysymyksiin. Maksimissaan voit tuolta kerätä 2.5 p. Kirjoita alla olevaan tehtävään miltä liukuhihnatehtävä tuntui ja laita itse tehtävän pisteisiin liukuhihnan tuloksesi. Saat tehdä tähän demoon sen tehtävästä osan jota et jo tehnyt demo2:ssa, kunhan kumpaankin merkkaamasi (demo2 + demo3) summa on sama kuin Liukuhihnatehtävän pistemäärä.
Huom! Pisterajatarkistus ei vättämättä toimi, joten et saa huijata laittamalla liikaa pisteitä!
B1. Pallojen pukkailu
Katso Voimia ja sitominen. Tee ohjelmasta sellainen, että voit "pukkailla" keskipalloa nuoli vasemmalle ja nuoli oikealle näppäimillä. Tehtävä kannattaa tehdä Riderilla, koska TIMillä ei voi tehdä interaktiivisia C#-pelejä. Kopioi tekemäsi koodi alle ja paina aja-nappia. Tosin näet vain ensimmäisen pelikierroksen staattisen kuvan.
(Huom. Kun olet tallentanut vastauksesi, arvioi oma suoriutumisesi tehtävästä asteikolla 0-1p. valitsemalla automaatin antaman pistemäärän vierestä Set custom points.)
B2. Kuormittaminen
M: 6. Aliohjelmat (Kuormittaminen). Ota Demo 2:n Portaat-esimerkkin mallivastaus (jonkin luokan sisälle). Tehtävänä on muuttaa ohjelma sellaiseksi, että PiirraNelio
-aliohjelmaa voidaan kutsua kahdella eri tavalla (eli on kaksi eri PiirraNelio
-aliohjelmaa joissa eri parametrimäärät kummassakin):
Jälkimmäinen linkki on rikki.
VL: vaihdettu linkki demotehtävään.
—a) Ilman "sädettä", piirtää aina neliön, jonka sivu on 80
(parametrina siis keskipisteen koordinaatit)
PiirraNelio(this,0,0); // kuten nyt portaiden piirtämisessä
b) antamalla neliön "säde" (eli puolet sivun pituudesta, näin se
on helpompi samaistaa ympyrään) koko
PiirraNelio(this,0,0,50); // neliö, jonka sivunpituus on 100.
Ennenkuin teet mitään muutoksia, kokeile niin, että Jypelin pääohjelma (Begin
) on täsmälleen sama kuin mallissa portaiden piirtämiseksi. Kun tämä toimii, lisää Begin
-metodiin portaiden jälkeen vielä yksi rivi niin, että piirretään yksi erikokoinen neliö portaiden ulkopuolelle (eli kutsutaan uutta 4 parametristä aliohjelmaa). Muista kommentointi!
Vinkki: Ks: kuormitettu lumiukko, luento 05 tai Monisteen luku aliohjelman kuormittamisesta (function overload).
Jos haluat välttää fysiikan, joka tökkii neliöt hieman vinoon, käytä PhysicsObject
tilalla GameObject
.
(Huom. Kun olet tallentanut vastauksesi arvioi oma suoriutumisesi tehtävästä 0-1p. asteikolla valitsemalla automaatin antaman pistemäärän vierestä Set custom points)
"Compile error kuormittaminen.cs(37,3): error CS0106: The modifier 'public' is not valid for this item kuormittaminen.cs(50,5): error CS0106: The modifier 'public' is not valid for this item" Saan yllä olevan virheen vaikka Riderissa toimii OK. En ymmärrä. :(
VL: Sulla on sulut väärin, sillä nyt sun funtiot jää Begin-metodin sisään.
Tietysti... Kiitos!
—B3. Prosessorin toiminta
Alla olevat linkit voit avata toiseen ikkunaan tai tabiin ja katsoa niitä välillä samalla kun katsot videota.
Katso alla oleva video ja täytä alla olevia prosessorin rekistereitä samaa tahtia kuin videossa. Kannattaa painaa Ins
-painiketta, niin voi kirjoittaa ilman että työntää edellä olevia merkkejä eteenpäin.
Ohjelmamuisti:
==============
100 102 104 106 108 10A 10C 10E 110
B3 62 80 FB 61 72 08 80 FB 7A 77 03 80 EB 20 A1 F4 .. .. ..
Käskyjen merkitys:
==================
72 = jos vertailu oli pienempi, niin lisää ohjelmalaskuriin
seuraavan tavun arvo
IP+2
77 = jos vertailu ei ollut pienempi tai yhtäsuuri lisää
ohjelmalaskuriin seuraavan tavun arvo
IP+2
80 EB = vähennä BL-rekisterin arvosta seuraava tavu
IP+3
80 FB = vertaa BL rekisterin arvoa seuraavana olevaan tavuun
IP+3
A1 F4..= tulosta kirjaimena BL-rekisterissä oleva luku
B3 = ota seuraavana oleva tavu ja laita se BL-rekisteriin
IP+2
Miltä käännetty koodi näyttää? Voit katsoa esim: https://godbolt.org/.
G1-2. Suppeneva laatikkojono
Jatketaan demo 2 tehtävää 5. Tee ohjelmasta sellainen, että se piirtää viiden laatikon sijaan n
laatikkoa, vieläpä siten, että laatikot pienenevät. Tällöin i
:nnen laatikon koko tulisi olla
(n+1-i) / n * laatikonKoko
missä laatikonKoko
on ensimmäisen laatikon sivun pituus. Esimerkiksi jos halutaan piirtää yhteensä 10 laatikkoa, niin 7:nnen laatikon koko on
(10+1-7) / 10 * laatikonKoko = 4/10 * laatikonKoko
Tarkista kaava 10+1-7 / 10 = 4/10 * laatikonKoko. Pitäisikö laatikonKoko olla =-merkin molemmin puolin?
Korjattu. -AJL
—(Huom. Kun olet tallentanut vastauksesi arvioi oma suoriutumisesi tehtävästä 0-2p. asteikolla valitsemalla automaatin antaman pistemäärän vierestä Set custom points)
Kuten aiemmalla kommentoijalla, minullakin menee laatikot päällekkäin hieman ja tästä syystä vinoon. Matemaattisesti näin ei pitäisi tapahtua. Onko ongelma esimerkiksi int ja double välisten laskutoimitusten pyöristyksissä vai jossakin muualla?
VL: fysiikka ei anna niiden edes hipaista. Vaihda GameObject
tilalle jos häiritsee.
Sain apua pääteohjauksessa ja annan tännekin. Jos piirtelee ihan muutamien pikselien neliöitä (r<=10) niin neliöt menevät vinoon vaikkeivat edes koskisi. Ongelma poistui kun kasvatti r=1000. Jos neliöt ovat vielä hassuja niin silloin matikassa on kun onkin ongelma.
—TDD 1
Lisätehtävä "ammattilaisiksi" tähtääville.
Jos tarkistat vähintään kahden funktion toiminnan automaattisella testillä (ComTest), saat merkitä yhden lisäpisteen. Vastauksena kerro minkä tehtävän ja minkä funktion/funktioiden toiminnan testasit. Voit antaa vastauksessa palautetta ja kehitysehdotuksia ComTestin käytöstä. Huom! Ohjelmia joissa on pelkkä pääohjelma on vielä tämän kurssin tiedoilla aika haastava testata, samoin esim. peli-juttuja. Siksi testaamista kannattaa ehkä tehdä tässä demoissa vain sellaisille funktioille, jotka selkeästi palauttavat jotakin. Tässä demossa sellaisia on tehtävässä 4 ja 5. Tämän kirjoittaminen antaa sinulle 0.5 p ja saat itse nostaa yhteensä 1 p jos olet Riderissa tai Xamarinissa kirjoittanut vähintään kahteen funktioon itse testejä (erilaisia kuin mitä näistä demoista saa kopioimalla).
Korvaavia tehtäviä jotka ovat ei-pelejä
Tehtävät B1-B3 sekä G1-2 vaativat Jypelin käyttöä. Tähän kerätään vaihtoehtoisia tehtäviä, joissa on sama oppimistavoite, mutta voidaan tehdä tekstuaalisena konsolisovelluksena. Tehtävät ovat ensisijaisesti tarkoitettu niille, jotka eivät halua tai eivät voi käyttää Jypeliä. Tehtäviä voivat kuitenkin tehdä myös muutkin.
B1e Jokin viikon aiheeseen liittyvä tehtävä
Tee jokin ohjelma (joka mahdollisesti sisältää aliohjelman/funktion), joka liittyy selkeästi viikon aiheeseen, mutta on ainakin hieman vaikeampi kuin perustehtävät.
(Huom. Kun olet tallentanut vastauksesi, arvioi oma suoriutumisesi tehtävästä asteikolla 0-1p. valitsemalla automaatin antaman pistemäärän vierestä Set custom points.)
B2e Kuormittaminen
Kuormittaminen (override) on sitä, että on samannimisiä aliohjelmia/funktioita, mutta ne eroavat toisistaan erilaisen parametrilistan perusteella. Tee tehtävän vastauksena joku kokonainen ohjelma (eli pääohjelma ja vähintään kaksi aliohjelmaa/funktiota), jossa on vähintään kaksi kutsua samannimiseen aliohjelmaan, mutta erilaisilla parametreilla. Tietysti myös funktioiden toteutukset ja mielellään myös niiden testit.
Esimerkiksi on funktio LaskeAlennettuHinta
, jolle viedään parametrina tavaran hinta ja se palauttaa tavaran 20% alennetun hinnan. Sitten on toinen samanniminen funktio, jolle viedään parametrina tavaran hinta ja alennusprosentti.
(Huom. Kun olet tallentanut vastauksesi, arvioi oma suoriutumisesi tehtävästä asteikolla 0-1p. valitsemalla automaatin antaman pistemäärän vierestä Set custom points.)
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.