Harjoitustehtävät 6
Osaamistavoitteet
Tämän harjoituksen päätteeksi
- Osaat käyttää silmukoita ja taulukoita
- Osaat "kulkea" silmukan avulla taulukon läpi
- Muistat, että
double-lukuja ei voi vertailla luotettavasti==-operaattorilla
Testaaminen ja pisteytys
Kaikki tehtävät, joissa on Aja omat testit -painike, tulee testata. Omien testien kirjoittaminen ja ajaminen on tämän kerran tehtävissä vaadittua täysien pisteiden saamiseksi. ComTest testeissä voit käyttää pohjana seuraavaa:
Lisäohjeita ComTestin syntaksiin löydät ComTest-ohjeista.
T0. Palaute tästä osasta (0,5 p.)
Auta meitä parantamaan tätä kurssia antamalla palautetta tästä kurssin osiosta.
Huom: Vastaa tähän vasta, kun olet valmis tämän harjoitustehtäväkerran tehtävien kanssa
Vastaa alla oleviin kohtiin tämän kurssin osasa käsiteltyjen materiaalien ja tehtävien (luennot, esimerkit, kurssimoniste, harjoitustehtävät) perusteella.
Saat 0,25 pistettä vastaamalla kaikkiin alla oleviin väittämiin.
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 osallistuminen, oppimateriaalin lukeminen, harjoitustehtävien tekeminen, luentovideon katsominen, tehtävien purkutilaisuuteen osallistuminen ja niin edelleen.
T1*. Tee taulukko (1 p.)
Lue ensin monisteesta: 15. Taulukot.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Tee funktio TeeTaulukko. Funktio ottaa parametrina kokonaisluvun, ja palauttaa taulukon, jossa on luvut kyseisestä luvusta alaspäin ykköseen saakka.
Esimerkiksi kutsu TeeTaulukko(5) palauttaisi taulukon [5, 4, 3, 2, 1], TeeTaulukko(1) palauttaisi taulukon [1], jne.
Funktio ei saa tulostaa mitään.
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.
Lisää luomaasi taulukkoon alkiot silmukassa. Helpointa on luoda silmukka, joka käy alkiot läpi "vasemmalta oikealle", ts. laskurimuuttuja i alkaa arvosta 0.
Jos et keksi miten saat alkiot lisättyä laskevassa järjestyksessä, lisää ne aluksi nousevassa järjestyksessä.
Taulukon paikkaan i sijoitettavan arvon saat pääteltyä taulukon pituudesta sekä laskurimuuttujasta i. Keksitkö miten? Kirjoita paperille luvut 5...1 ja mieti miten taulukon pituus ja i-muuttuja liittyvät kuhunkin alkioon.
Jostain syystä en saa "aja omat testit" osiota hyväskymään koodia, Saan virhekoodin, jonka mukaan Tim ei löydä funktiota tai tarvittavaa lähdetiedostoa, Voinko vaikuttaa tähän, miten koodia pitäisi muuttaa että toimisi? Sama toistuu T2 tehtävässä (kun en voi muuttaa esim sulkeiden paikkoja palautelaatikon ulkopuolella)
Aja omat testit ei mene läpi, koska et kirjoittanut omia testejä. Katso tämän sivun yläpuolella olevaa Testaaminen ja pisteytys -osiota ohjeita varten. Lisäesimerkkejä testien kirjoittamisesta dokumentaation yhteydessä löytyy myös Luennon 12 koodiesimerkeissä -DZ
—T2*. Itseisarvo (1 p.)
Lue ensin monisteesta: 13. Ehtolauseet sekä 9. Aliohjelman paluuarvo.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Kirjoita funktio Itseisarvo, joka antaa luvun itseisarvon, eli annetun luvun etäisyyden nollasta lukusuoralla. Funktiota tulee voida kutsua seuraavasti.
Math.Abs-funktiota, tai mitään muutakaan valmista funktiota ei saa käyttää.
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.
Miksi koodini suostunut ajamaan, mutta opiskelutoverini jakama koodi joka oli identtinen toimii?
Sinulla näyttä kyllä tässä 0.9 p, eli ajamisesti tuli kyllä täydet pisteet. Aja omat testit -painike puolestaan vaatii, että kirjoitat ComTest-dokumentaatiotesteja. -DZ
Ole tarkkana myös aliohjelman nimen kanssa (Itseisarvo vs ItseisArvo). -AJL
—T3. Kahden luvun välinen etäisyys (1 p.)
Lue ensin monisteesta: 9. Aliohjelman paluuarvo.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Kirjoita funktio Etaisyys, joka palauttaa kahden luvun välisen etäisyyden. Funktiota tulee voida kutsua seuraavasti.
double a, b;
a = 3.2; // Nämä ovat esimerkkilukuja.
b = 8.5; // Luonnollisesti nämä voisivat olla muitakin lukuja.
double etaisyys = Etaisyys(a, b);Esimerkiksi Etaisyys(3.2, 8.5) on likimain 5.3, kuten myös Etaisyys(8.5, 3.2). Edelleen, Etaisyys(-1, 1) on 2.
Voit hyödyntää Tehtävässä T2 luomaasi Itseisarvo-funktiota liittämällä se mukaan tähän vastaukseen.
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.
T4. Keskiarvo (1 p.)
Lue ensin monisteesta: 16. Toistorakenteet (silmukat), 15. Taulukot.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Tee funktio Keskiarvo, joka ottaa vastaan kokonaislukuja sisältävän taulukon, ja palauttaa niiden keskiarvon.
int[] luvut = { 10, 3, 5, 7, 12, 105, 10, 2, -1, 15, 20 };
double keskiarvo = Keskiarvo(luvut);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");Yllä oleva esimerkki palauttaisi keskiarvoksi noin 17.0909. Jos luvut-taulukko on tyhjä, tulee funktion palauttaa 0.0. Keskiarvo-funktio ei saa tulostaa mitään.
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.
T5. Keskiarvo negatiiviseen asti (1 p.)
Lue ensin monisteesta: 16.8. Silmukan suorituksen kontrollointi.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Muuta Tehtävän T4 Keskiarvo-funktiota niin, että jos aineistossa tulee vastaan negatiivinen luku, palautetaan keskiarvo siihen asti käsitellyistä luvuista. Aineiston käsittely loppuu siihen. Jos aineisto ei sisällä yhtään sopivaa lukua, tulee funktion palauttaa 0.0.
Esimerkki:
int[] luvut = { 10, 3, 5, -1, 15, 20 };
double keskiarvo = Keskiarvo(luvut);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");Tämä ohjelma tulostaa 6, koska (10 + 3 + 5) / 3 = 6. Lukua -1 ja sen jälkeen olevaa aineistoa ei oteta mukaan.
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.
Ryderissa on jokin ongelma, se antaa virhettä näillä samoilla testeillä. Mistäköhän johtuu?
—Tehtävä väittää, että 0+0+0+0+0/5=4?
"Funktion Keskiarvo ratkaisusi on osittain väärin. Löydetyt virheet: * Negatiivinen luku tulee päättää aineiston käsittelemisen. * Esimerkiksi syötteellä: [0, 0, 0, 0, 0], pitäisi palauttaa: 4. Sinun funktiosi palauttaa: 0."
Tässä oli valitettavasti tarkistimessa bugi, mikä rikkoi tulostuksen. Tämä nyt korjattu. Yleisesti vinkkinä: katso monisteesta Luku 16.8. ja GitLabista SummaAlle sekä JaaEnnenNollaa -esimerkkejä. -DZ
—T6. Keskiarvo alarajalla (1 p.)
Lue ensin monisteesta: 16. Toistorakenteet, 15. Taulukot.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Muuta Tehtävän T4 Keskiarvo-funktiota niin, että sillä on lisäksi toinen parametri int minimi. Jos aineistossa tulee vastaan luku, joka on pienempi tai yhtäsuuri kuin kyseinen minimi-parametrin arvo, se hylätään, mutta aineiston käsittelyä kuitenkin jatketaan.
Jos aineisto ei sisällä yhtään sopivaa lukua, tulee funktion palauttaa minimi-parametrin arvo.
Esimerkki:
int minimi = 3;
int[] luvut = { 11, 4, 2, 6 };
double keskiarvo = Keskiarvo(luvut, minimi);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");Tämä ohjelma tulostaa 7, koska (11 + 4 + 6) / 3 = 7. Lukua 2 ei oteta mukaan, koska vain minimi-parametria suuremmat luvut otetaan mukaan.
Voit halutessasi tehdä Keskiarvo-funktiosta uuden version kahdella parametrilla käyttäen aliohjelman kuormitusta, niin ei tarvitse välttämättä tuhota edellistä vastaustasi. Voit myös suoraan kopioida Tehtävän T4 vastaukseksi ja muokata sen tämän tehtävän vaatimuksiin sopivaksi.
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.
"Funktion ratkaisusi on osittain virheellinen. Ensimmäinen löydetty virhe: * Minimi voi olla positiivinen. Esimerkiksi syötteillä: [5, 4, 3, 2, 1], 3 Pitäisi palauttaa: 4.5 Funktiosi palauttaa: 4 " Mutta 5,4,3 keskiarvo on 4 ...? Ja kyllä, minimi voi olla positiivinen.
Tehtävänannon mukaan vain vain minimi-parametria suuremmat luvut otetaan mukaan keskiarvoon laskentaan. Jos minimi = 3, lukua 3 ei siis oteta mukaan, koska se on yhtäsuuri kuin minimi. -DZ
"Esimerkiksi syötteillä: [7, 7, 7], 7 - Pitäisi palauttaa: 7" ei taida pitää paikaansa?
Kyseisessä esimerkissä ei ole yhtään keskiarvoon mukaanotettavaa lukua. Silloin tehtävänannon mukaan pitäisi palauttaa itse minimi, joka on 7. -SS
—V1. ViLLE (1 p.)
Tee ViLLE-tehtävät: 5.6-5.8, 9.4-9.6.
B1. Keskiarvo raja-arvolla (1 p.)
Lue ensin monisteesta: 16.8. Silmukan suorituksen kontrollointi.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Muuta Tehtävän T6 Keskiarvo-funktiota lisäämällä siihen uusi parametri int maksimi. Jos aineistossa tulee vastaan luku, joka on vähintään yhtä suuri kuin kyseinen maksimiarvo, aineiston käsittely päättyy siihen.
// Esimerkki 1
int minimi = -7
int maksimi = 99
int[] luvut = { -5, 1, -4, 0, 98 };
double keskiarvo = Keskiarvo(luvut, minimi, maksimi);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");Tämä ohjelma tulostaisi 18. Aineisto on kokonaisuudessaan minimin ja maksimin välissä, joten lasketaan "tavallinen" keskiarvo.
// Esimerkki 2
int minimi = 3;
int maksimi = 99;
int[] luvut = { 11, 4, 2, 6, 99, 12, 0, -3 };
double keskiarvo = Keskiarvo(luvut, minimi, maksimi);
Console.WriteLine($"Keskiarvo on {keskiarvo}.");Tämä tulostaisi 7. Vain luvut 11, 4, ja 6 lasketaan keskiarvoon mukaan: 2 on alle minimin, ja käsittely päättyy lukuun 99.
Voit halutessasi tehdä Keskiarvo-funktiosta uuden version kahdella parametrilla käyttäen aliohjelman kuormitusta, niin ei tarvitse välttämättä tuhota edellistä vastaustasi. Voit myös suoraan kopioida Tehtävän T6 vastaukseksi ja muokata sen tämän tehtävän vaatimuksiin sopivaksi.
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 0,9 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,1 p.
B2-3. Paras hinta-arvio asunnolle (2 p.)
Lue ensin monisteesta: 16. Toistorakenteet, 15. Taulukot.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Antti-Jussi haluaa myydä asuntonsa. Hän on saanut eri kiinteistönvälittäjiltä useita hinta-arvioita asunnostaan, ja pohtii nyt, mikä olisi sellainen myyntihinta, joka ei ole liian korkea (koska silloin asunto ei mene kaupaksi), mutta ei myöskään liian matala (koska silloin hän ei saa parasta mahdollista hintaa). Hän päätyy seuraavaan ratkaisuun.
Hän laskee ensin välittäjien antamien hinta-arvioiden keskiarvon. Sitten hän laskee, kuinka paljon kukin yksittäinen hinta-arvio poikkeaa tästä keskiarvosta. Paras hinta-arvio (ja siten myös paras välittäjä Antti-Jussin määritelmän mukaan) on se, jonka poikkeama on pienin. Jos tällaisia hinta-arvioita on useita, paras hinta-arvio on näistä suurin. Antti-Jussi valitsee tämän kiinteistövälittäjän.
Merkitään asuntojen hinta-arvioita yksinkertaisuuden vuoksi lukuina siten, että 100 tarkoittaa 100 tuhatta euroa, 105 tarkoittaa 105 tuhatta euroa, jne.
Esimerkiksi jos Antti-Jussin asunnosta on saatu hinta-arviot 100, 110, 90, 105 ja 115, niin niiden keskiarvo on 104. Poikkeamat ovat 4, 6, 14, 1 ja 11. Paras hinta-arvio on 105, koska se on lähimpänä keskiarvoa (poikkeama on 1).
Tee funktio ParasHintaArvio, joka ottaa hinta-arviot (int-taulukko) ja palauttaa niiden perusteella sen hinta-arvion, joka on lähimpänä taulukon lukujen keskiarvoa.
Esimerkki aliohjelman toiminnasta:
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Tehtävässä on automaattinen arvostelu. Jos vastaus kääntyy ja toimii odotetusti, 1,8 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,2 p.
Jos automattinen arvostelu antaa mielestäsi väärät pisteet sinulle, käytä Mukautetut pisteet -toimintoa ja arvioi oma suorituksesi asteikolla: 25% = 0.5 p, 50% = 1 p., 75% = 1.5 p., 100% = 2 p.
Vinkit:
- Tee ensin funktio
Summa. SittenKeskiarvo, joka laskee hinta-arvioiden keskiarvon. - Tee sitten funktio
Itseisarvo, tai käytä aiemmassa tehtävässä tekemääsi toteutusta. Tarvitset tätä funktiota laskeaksesi kunkin hinta-arvion poikkeaman keskiarvosta. - Tarvitset myös
Etaisyys-funktiota, kun lasketaan kunkin alkion etäisyyttä keskiarvosta. Jos et tehnyt tätä funktiota aiemmin, tee se nyt. - Huomaa, että keskiarvo voi olla desimaaliluku, samoin yksittäisen luvun poikkeama keskiarvosta.
Saattaa olla hyödyllistä aluksi unohtaa koko C# ja tee kynällä ja paperilla vastaava tehtävä ja mieti vaiheittain mitä joudut tekemään ja mitä apumuuttujia käyttämään. Ajattele niin, että joku näyttää sinulle yksi kerrallaan yhtä lukua, et tiedä tulevia etkä muistele menneitä, joten sinun täytyy "pitää muistissa" tietoa siitä, mikä on tähän mennessä lähinnä etsittävää lukua.
Kahden luvun välinen etäisyys on lukujen erotuksen itseisarvo.
Tarkistin antaa väärät pisteet, vaikka ilmottaakin että ratkaisu oikein ja testin toimivat. Onkohan tarkistimessa jotain häikkää vai onko vastaus vielä puutteellinen?
Kiitos, tämä korjattu nyt -DZ
—B4. Esittelyrivi ja tynkä toteutus (1 p.)
Lue ensin: Aliohjelmien kirjoittaminen.
Tee seuraavia funktiokutsuja vastaavat funktioiden esittelyrivit ja lyhyimmät mahdolliset toteutukset (tynkä), jotta ohjelma kääntyy. Näin ohjelmasta saadaan syntaktisesti toimiva, mutta sen ei tarvitse toimia loogisesti oikein. Muista kirjoittaa myös dokumentaatiot: niiden tekeminen onnistuu, vaikka ohjelma ei vielä toimikaan loogisesti oikein.
Esimerkki (älä kopioi tätä):
Tehtävässä annetaan pääohjelma valmiina. Ohessa esimerkki.
/// <summary>Funktiokutsu ja apumuuttuja</summary>
/// <param name="args">Ei käytössä</param>
public static void Main(string[] args)
{
string lyhyempi = LyhyempiJono("Matti", "Pertti");
}Tämä koodi ei kuitenkaan käänny, koska LyhyempiJono-funktiota ei ole olemassa. Niinpä seuraava koodi (aliohjelman esittelyrivi sekä toteutuksen "tynkä") pitää itse kirjoittaa.
/// <summary>
/// Palauttaa kahdesta merkkijonosta lyhyemmän.
/// </summary>
/// <param name="s1">Ensimmäinen jono</param>
/// <param name="s2">Toinen jono</param>
/// <returns>Lyhyempi jonoista</returns>
public static string LyhyempiJono(string s1, string s2)
{
return s1;
}Nyt ohjelma kääntyy. Funktio ei vielä oikeasti palauta lyhyempää jonoa, mutta tämä riittää tämän tehtävän vastaukseksi.
Palautus: Palautuslaatikkoihin palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Tehtävä koostuu alatehtävistä B4.1-B4.5. Kussakin alatehtävässä oikein kääntyvästä ohjelmasta saa 0,2 p.
Vinkki: B4.1-kohdassa funktion toteutukseksi riittää pelkkä return false;.
Huomaa, että alatehtävässä B4.4 ei todella tarvitse laittaa lukuja palautettavan double-taulukon sisällöksi. Tyhjä double-taulukko riittää paluuarvoksi.
B5. Pisteiden etäisyys 2-ulotteisella tasolla (1 p.)
Lue ensin monisteesta: 9. Aliohjelman paluuarvo.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Pythagoraan lauseen avulla voidaan laskea 2-ulotteisella tasolla olevan kahden pisteen välisen etäisyys.
Tee funktio Etaisyys, jonka esittelyrivi on seuraava:
Pythagoraan lauseen yhteydessä saatat saatat tarvita laskea luvun neliöjuuren . Koodina tämä olisi
Voit myös katsoa muistin virkistykseksi Harjoitustehtäväkerran 2 Tehtävän T5 (Lumilyhty).
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Koodin ajamisesta Aja -painikkeella 0,1 p; oikeasta tulostuksesta 0,4 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,5 p.
Kannattaa rajoittaa Comtest-testeissä liukulukujen vertailutarkkuutta käyttämällä TOLERANCE-ominaisuutta, ks. kohta Testaaminen.
B6. Luvun skaalaus (1 p.)
Lue ensin monisteesta: 9. Aliohjelman paluuarvo.
Jos haluat tehdä tehtävän Riderissa: Komentorivitehtävien tekeminen Riderissa.
Tee aliohjelma Skaalaa(luku, min, max), joka skaalaa välillä [0, 1] olevan luvun välille [min, max].
Esimerkkitapauksia:
Skaalaa(0.2, -3.0, 3.0) ~~~ -1.8;
Skaalaa(0.2, 1.0, 6.0) ~~~ 2.0;
Skaalaa(0.0, 1.0, 6.0) ~~~ 1.0;
Skaalaa(1.0, 1.0, 6.0) ~~~ 6.0;Esimerkiksi ensimmäinen testitapaus tarkoittaa että välin luku
on omaan väliinsä nähden samassa suhteessa kuin luku
on väliin
.
Piirrä vaikka molemmat välit ja ko. luvut oman välinsä sisälle.
Palautus: Palautuslaatikkoon palautetaan pelkkä funktio, ei class- eikä Main-koodia. Pääohjelma on jo TIM-versiossa valmiiksi mukana.
Arviointi: Koodin ajamisesta Aja -painikkeella 0,1 p; oikeasta tulostuksesta 0,4 p. Omien testien kirjoittamisesta ja onnistuneesta ajamisesta Aja omat testit -painikkeella 0,5 p.
Jos sinulla on luku väliltä ja haluat saada siitä luvun välille
, niin mieti mitä pitää tehdä jotta
:sta tulisi
ja
:stä
. (eli
).
Edellä vinkissä on väli esimerkkinä, koska ohjelmointikielten tyypillinen satunnaislukugeneraattori tuottaa lukuja puoliavoimelle välille ja jatkossa meillä on tälle
Skaalaa-funktiolle käyttöä nimenomaan tuottamaan satunnaisia lukuja muillekin väleille. Tosin onneksi esim. Jypelissä tämä on valmiina. Pyöristysten kanssa on nimittäin oltava tarkkana :-)
Tehtävä ei näytä tomivan, sillä ensimmäinen linja koodia on "File not found https://svn.cc.jyu.fi/srv/svn/ohj1/luentomonistecs/esimerkit/Pohja/Pohja/Pohja4.cs"
Kiitos huomiosta! Korjattu -DZ
—G1. Game of Life: simulointi Jypelissä (1 p.)
Jos haluat tehdä tehtävän Riderissa: Jypeli-tehtävien tekeminen Riderissa.
Katso Harjoitustehtvien 5 Tehtävän G1-2 mallivastaus menemällä tehtävän palautuslaatikon kohdalle ja painamalla laatikon yläpuolella olevaa Näytä mallivastaus -painiketta. Tee mallivastausta ja Jypeliä käyttäen graafinen versio, jossa on paljon ruutuja (suuruusluokkaa 60 y-suunnassa) ja sukupolvia lasketaan 0.1 sekunnin välein.
Saat mallivastauksen Rider-projektiisi seuraavasti:
Tee FysiikkaPeli-projekti kopioi tämän tehtävän pohjakoodi Rideriin seuraavalla ohjeella: Jypeli-tehtävien tekeminen Riderissa.
Liitä projektiin mallivastaus tiedostoon
Sopulit.cs. Saat sen helpointen Riderissa seuraavasti:- Solution Explorerissa paina hiiren oikeata projektin nimen päällä
- Valitse Add -> Class/Interface
- Kirjoita nimeksi
Sopulitja painaEnter-painiketta - Avaa
Sopulit.csklikkaamalla se kahdesti Solution Explorerissa - Kumita kaikki tiedoston sisältö pois ja liitä tilalle Harjoitustehtävien 5 Tehtävän G1-2 mallivastaus
- Tallenna tiedosto lopuksi (
Ctrl+StaiCmd+S)
Palaa takaisin pelitiedostoon (
.cs-tiedosto, joka on samanniminen kuin tekemäsi projekti) ja täydennä aliohjelmien toteutukset.
Palautus: Palautuslaatikkoon palautetaan peliluokan sisältö, eli Begin- ja muut aliohjelmat. Peliluokka on TIM-versiossa valmiiksi mukana (ks. Näytä koko koodi -linkki palautuslaatikossa).
Arviointi: Käytä Set custom points -toimintoa TIMissa. Tee itsearvio pistemäärästäsi ja syötä omat pisteesi väliltä 0-1. Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.
G2. Game of Life: kentän muokkaus (1 p.)
Jos haluat tehdä tehtävän Riderissa: Jypeli-tehtävien tekeminen Riderissa.
Täydennä Tehtävän G1 vastauksesi siten, että voit näppäimistön Delete-painikkeella tyhjentää kentän ja sitten hiirellä klikkailla päälle ja pois ruutuja. Hiiren klikkaus pysäyttää aina animaation ja sitten voi rauhassa rakentaa haluamansa kuvion (ks: Bitstorm ja Wikipedia) ja sitten laittaa Enter-nappulalla animoinnin uudelleen käyntiin. Välilyönti arpoo kokonaan uuden alkutilanteen.
Palautus: Palautuslaatikkoon palautetaan peliluokan sisältö, eli Begin- ja muut aliohjelmat. Peliluokka on TIM-versiossa valmiiksi mukana (ks. Näytä koko koodi -linkki palautuslaatikossa).
Arviointi: Käytä Set custom points -toimintoa TIMissa. Tee itsearvio pistemäärästäsi ja syötä omat pisteesi väliltä 0-1. Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.