Demo 5

Huomautus: Lopulliset demotehtävät julkaistaan aina tasan viikkoa ennen deadlinea. Demotehtäviin saattaa ennen sitä tulla muutoksia tai korjauksia. Tehtäviä voi tulla lisää tai tehtäviä voi poistua. Tehdessäsi tehtäviä ennen virallista julkaisua, ota tekemästäsi koodista aina varmuuskopio omalle tietokoneellesi.

Palauta viimeistään ma 15.2. klo 11:59. Läpikäynti klo 12-14.

  • Muista: Harjoitustyön suunnitelma täytyy olla hyväksyttynä demo 5:n palautuksen määräaikaan mennessä.
  • Tehtäviä kannattaa tehdä Visual Studiossa, jolloin niitä voi debugata samalla ja etsiä mahdollisia virheitä siitä, miksi silmukka tms ei toimi. Kun vastauksia kopioi Visual Studiosta TIMiin, kannattaa olla huolellinen että kopioi nimenomaan sen osan, mikä TIMiin pitäisi kirjoittaa. Klikkaa TIMistä tehtävän kohdalta Näytä koko koodi -näppäintä, niin näet mitä kaikkea tehtävään on jo valmiiksi täytetty.
  • Tehtävien nimeämisestä: Anna cs-tiedostoille kuvaavat nimet. Esim. G1.cs on huono. Opetellaan käyttämään nimiä, jotka toimisivat oikeassakin ohjelmassa. Pallopeli.cs on taas paljon parempi. Muista myös luokan ja tiedoston nimen suhde.
  • Vinkki: Askella luentomonisteessa silmukka- ja taulukkoesimerkkejä läpi ja seuraa mitä silmukoissa tapahtuu. Nuo esimerkit ovat toistaiseksi hieman huonosti näkyvillä ja ne hyppäävät esiin kun vie hiiren niiden päälle. Niitä löytää kun etsii jonoa "Animaatio:".
  • Tällä demokerralla on kaksi TDD tehtävää. Tämä tarkoittaa sitä, että testien käytöstä voi poikkeuksellisesti saada jopa kaksi pistettä.

Monisteen lisäksi kannattaa lukea:

Osaamistavoitteet

Tämän demokerran päätteeksi

  • ymmärrät mihin taulukkoa voi käyttää ja osaat tehdä taulukon
  • ymmärrät silmukkarakenteiden (while, for, do-while) toimintaperiaatteen
  • algoritminen ajattelusi kehittyy

Ajankäyttösi tällä viikolla (0.5 p.)

Työtuntien kirjaamisesta saa 0.5 demopistettä. Aseta pisteesi Set Custom Points -toiminnolla.

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 (kalenteriviikko, ma klo 00:00 -- su klo 23:59) käyttämäsi aika: lähiopetukseen osallistuminen, oppimateriaalin lukeminen, demotehtävien tekeminen, luentovideon katsominen, demojen purkutilaisuuteen osallistuminen (maanantaina) 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.

# d5tunnit
# t1

Tehtävä 1*

Tässä tehtävässä ei ole valmiina mitään koodia. Kirjoita ohjelmaan, luokka, pääohjelma ja tarvittavat using-lauseet.

Tee kohdissa a ja b ohjelmat, joissa silmukkaa käyttäen tulostetaan

1a) luvut 0--100, jokainen luku omalle rivilleen. Tulosteessa ei saa olla mitään muuta. (0.5 p.)

Arviointi: Vastaus kääntyy ja siinä on käytetty silmukkaa, 0.2 p. Oikeasta tulostuksesta lisäksi 0.3 p. Tehtävässä on automaattinen arvostelu.

# lukujenTulostus1

Jos kirjoittaa vain luokan ja pääohjelman niin ajaessa huutaa erroria “Console does not exist in the current context”. Korjautui kun lisäsi alkuun “using Systems;”-litanian.

10 Feb 21

Olikohan mulla tässä mikä virhe, kun saan vain 0.2p? Tulostus kuitenkin näyttää ihan oikealta.

#-

Katso tehtävänannosta tarkasti mitkä luvut piti tulostaa. -AJL

13 Feb 21 (edited 13 Feb 21)

Antaa vain 0.2 pistettä. Mitä pitää muuttaa ohjelmassa? Tulostaa ainakin oikein. edit: numero 0 unohtui!

14 Feb 21 (edited 14 Feb 21)

1b) parittomat luvut 1, 3, 5, ..., 99, jokainen luku omalle rivilleen. Tulosteessa ei saa olla mitään muuta. (0.5 p.)

Arviointi: Silmukan käyttämisestä 0.2 pistettä, oikeasta tulostuksesta 0.3 pistettä. Tehtävässä on automaattinen arvostelu.

onko tarkoitus että luvun 5 jälkeen luvut toistuu normaalin lukujonon mukaan vai onko jokaisessa kahden luvun ero?

Vain parittomat luvut tulostetaan, ei muita. -AJL

11 Feb 21 (edited 11 Feb 21)
# lukujenTulostus2

Tulostuu ihan oikein, mutta pisteitä herui vain 0,2. Mikä meni pieleen?

Kokeile ottaa ylimääräiset välilyönnit pois tulostuksesta. -AJL

08 Feb 21 (edited 08 Feb 21)

Jostain syystä ohjelma ajaa aina 199 riville saakka, eikä pysähdy looppiin asetettuun <100 ehtoon.

Tulosteessa saa olla vain luvut 1, 3, …, 99, ei muuta. -AJL

10 Feb 21 (edited 10 Feb 21)
# t2

Tehtävä 2

Tee ohjelma joka tulostaa luvut 1--100, ja jos luku on jaollinen 5:llä, tulosta luvun perään teksti "Hep!" . Huom! Tässä tehtävässä pitää tulostuksen olla täsmälleen kuten mallissa. Ota huomioon välit ja rivinvaihdon kohta.

1
2
3
4
5 Hep!
6
7
8
9
10 Hep!

Arviointi: Vastaus kääntyy ja siinä on käytetty silmukkaa, 0.4 p. Oikeasta tulostuksesta lisäksi 0.6 p. Tehtävässä on automaattinen arvostelu.

# lukujenTulostusT2
# t3

Tehtävä 3

ei näkökjään ole automaattista arvostelua tässä, vaikka vastaus ois oikein niin silti näyttää points 0 / 0.3 eli pitää siis kokonaan asettaa pisteet ite vai?

Kyllä. -JuhoK

12 Feb 21 (edited 13 Feb 21)

Tee kohdat a, b ja c. Aseta pisteet Set Custom Points -toiminnolla.

M: 16. Toistorakenteet.

\((a)\) Tee aliohjelma TulostaKertotauluFor(n), joka tulostaa luvun n kertotaulun (lukujen 1 \(-\) 10 tulo luvun n kanssa) for-silmukalla. Esimerkiksi kutsu TulostaKertotauluFor(3) tulostaisi:

Kohdassa c sanotaan että siitä voisi saada 0.4 pistettä.

Jep, näin on. Korjasin tehtävänantoa. -AJL

08 Feb 21 (edited 08 Feb 21)
 1 * 3 =   3
 2 * 3 =   6
 3 * 3 =   9
 4 * 3 =  12
 5 * 3 =  15
 6 * 3 =  18
 7 * 3 =  21
 8 * 3 =  24
 9 * 3 =  27
10 * 3 =  30
# d5t3a

\((b)\) Tee aliohjelma TulostaKertotauluWhile(n, m), joka tulostaa luvun n kertotaulun lukuun m saakka. Toteutus pitää tehdä while-silmukalla. Esimerkiksi kutsu TulostaKertotauluWhile(3, 5) tulostaisi

 1 * 3 =   3
 2 * 3 =   6
 3 * 3 =   9
 4 * 3 =  12
 5 * 3 =  15

Kutsumalla TulostaKertotauluWhile(3, 0) ei siis saa tulostua mitään.

Muista laittaa pisteet Set Custom Pointsilla.

# d5t3b

\((c)\) Tee aliohjelma kuten kohdassa \((b)\) mutta käyttäen do-while-silmukkaa.

# d5t3c

Tehtävä 4

M: 12.4 Muokattavat merkkijonot: StringBuilder.

Pääohjelmassa (annettu alla valmiiksi) kutsutaan LisaaAlkuunJaLoppuun-nimistä aliohjelmaa. Toteuta kyseinen aliohjelma. TODO Void.

public static void Main(string[] args)
{
  StringBuilder jono = new StringBuilder("kissa istuu");
  LisaaAlkuunJaLoppuun(jono, "***"); // jono muuttuu aliohjelmassa
  Console.WriteLine("Jono on nyt " + jono); 
  // tulostaa: Jono on nyt *** kissa istuu ***
}

Vinkki: Katso StringBuilderin dokumentaatiosta miten voit lisätä tekstiä jonon keskelle ja miten loppuun.

Tehtävässä saa sen ajamisesta 0.4 p. + testien läpäisemisestä + 0.5 p. + dokumentaatiosta 0.1 p.

Oljenkorsi 1

Oljenkorsi 2

Oljenkorsi 3

# alkuunjaloppuund5

Puuttuuko testeistä j1:n vertailurivi tarkoituksella, ja jos niin miksi?

VL: Luulisin että vahingossa unohtunut. Siihenhän voi periaattessa itse lisätä uusia testirivejä kun laittaa koko tuon <example> hässäkän.

Jep, oli unohtunut. Lisäsin sen nyt paikalleen. -AJL

14 Feb 21 (edited 14 Feb 21)

Tehtävä 5*

M: 15. Taulukot, 16. Toistorakenteet.

Seuraavissa kohdissa taulukko tarkoittaa int-tyyppisiä kokonaislukuja sisältävää taulukkoa.

Toteuta aliohjelma TulostaYli(taulukko, raja), joka tulostaa parametrina annetusta taulukosta kaikki ne luvut, jotka ylittävät raja-parametrina annetun luvun.

Huomaa, että tämä on void-aliohjelma, joten se ei palauta mitään arvoa.

Rajan ylittävät luvut tulee tulostaa samalle riville välilyönnein eroteltuna. Esimerkiksi pääohjelma...

public static void Main(string[] args)
{
  int[] luvut = { 12, 3, 5, 9, 7, 1, 4, 9 };
  TulostaYli(luvut, 4);
}

...tulostaisi...

12 5 9 7 9

Arviointi: Tehtävässä saa sen ajamisesta 0.4 p. ja oikeasta tulostuksesta 0.6 p. Tehtävässä on automaattinen arvostelu.

# tulostaylid5

saan tästä oikean tulostuksen näkyviin, mutta pointsit ei päivity?

VL: Vertasitko onko tulostus saman näköinen kuin tehtävän määrittelyssä?

12 Feb 21 (edited 12 Feb 21)

Aivan mielenvikainen tehtävä. Lentääkö kurssilta nyt pihalle jos ei saanut tuota tehtyä oikein?

Oleellisin virhe on että sinulta puuttuu tulostaminen kokonaan. Eli Write tai WriteLine -metodeita, näistä löytyy käyttöesimerkkejä kurssimonisteesta. Yrität if-lauseen sisällä ilmeisesti muokata taulukkoa, mikä ei ole sallittua. Lisäksi tämä on void-aliohjelma, eli ei saa palauttaa mitään (aliohjelman esittelyriviä täytyy myös muuttaa), tähän asiaan löytyy lisäapua TIMistä “Lisäsivut” -> “Monisteen täydennykset” -> “Aliohjelmat”. -JuhoK

15 Feb 21 (edited 15 Feb 21)

Täällä tulee kanssa hylky!!

Tallennatko Timiin vastauksesi niin mekin pääsemme tarkastelemaan sitä. -AJL

15 Feb 21 (edited 15 Feb 21)

Saan oikean tulostuksen, mutta erroria pukkaa. Mistä kiikastaa? edit. Sain korjattua

15 Feb 21 (edited 15 Feb 21)

Tehtävä 6

Toteuta funktio SummaYli(taulukko, raja), joka ottaa parametrina taulukon sekä raja-arvon, ja palauttaa summan niistä luvuista, jotka ylittävät raja-arvon. Esimerkiksi pääohjelma...

public static void Main(string[] args)
{
    int[] luvut = { 12, 3, 5, 9, 7, 1, 4, 9 };
    int summa = SummaYli(luvut, 4);
    Console.WriteLine("Yli 4 olevien lukujen summa on: " + summa);
}

…tulostaisi…

Yli 4 olevien lukujen summa on: 42

Huomaa, että tämä funktio ei saa tulostaa mitään. Tulostaminen tehdään pääohjelmassa (ks. Näytä koko koodi).

Arviointi: Ajamisesta 0.4 p. ja testien läpäisemisestä 0.6 p. Tehtävässä on automaattinen arvostelu.

# summaylid5

Mikä tässä on väärin? Lopputulos kuitenkin oikein.. Yritetty uusiksi, mutta ei vaan ymmärrä. :-)

Testattavan funktion täytyy olla julkinen, ts. public-sana puuttuu. Jos näkyvyysmäärettä ei kirjoiteta, funktion näkyvyydeksi tulee private. -AJL

Painoitko Aja ja sitten Test? -AJL

12 Feb 21 (edited 12 Feb 21)

En painanut Test erikseen, mutta meni näköjään läpi kun painoin.. Ehkä tuo test painallus olisi hyvä olla tuossa tehtävän annossa.. Kiitos!

12 Feb 21

Tehtävä 7

Et tarvitse Visual Studiota/C#:ia tässä tehtävässä.

M: Moniulotteiset taulukot

Olkoon meillä 4 x 4 matriisi, siis 2-ulotteinen taulukko (voit ajatella ruudukkona), jossa on 16 alkiota. Tässä hakasulut kuvaavat vain matriisin reunoja, ei mitään sen "syvällisempää".

[ 1 0 1 1 ]
[ 0 1 1 0 ]
[ 1 0 0 0 ]
[ 1 0 0 1 ]

Ykköset kuvaavat tässä "sopuleita", ja nollat ovat tyhjiä paikkoja.

Lisäksi olkoon seuraavanlainen algoritmi:

Jos ruudussa on sopuli (eli alkion arvo on 1)
  * Jos sillä on naapureita (ykkösiä) yksi tai 
    nolla kappaletta, se kuolee yksinäisyyteen 
    (muuttuu nollaksi).
  * Jos sillä on neljä tai enemmän naapureita, 
    se kuolee ylikansoitukseen (muuttuu nollaksi).
  * Sellainen, jolla on täsmälleen kaksi tai kolme 
    naapuria, selviää hengissä.
Jos ruutu on tyhjä (eli arvo on 0)
  * Jos on täsmälleen kolme naapuria, ruutu "herää 
    eloon" (muuttuu ykköseksi).

Tee yllä olevalle matriisille kolme seuraavaa generaatiota, eli käy jokainen alkio läpi yllä annettua algoritmia käyttäen. Naapureita ovat sekä pysty-, vaaka- että "vinot" naapurit.

Tee tehtävä kahdella eri tavalla: 1. Niin, että aina teet uuden tyhjän taulukon ja siihen vastinpaikkaan kuuluvan alkion arvon katsot edellisestä taulukosta em. säännöillä. 2. Kopioit edellisen taulukon ja lähdet kopiota muuttamaan "laskemalla" arvot kopiotaulukosta itsestään. Alkiot käsitellään vasemmalta oikealle, ylhäältä alas.

Tuleeko eri tavoilla tehtynä eri tulos? Miksi?

*Palauta vastaus, joka sisältää alkuperäisen taulukon lisäksi kumpaankin eri tapaan kolme uutta samankokoista taulukkoa. Kirjoita taulukot allekkain.

(Lue tästä vinkki, jos tehtävä ei lähde aukeamaan.)

# sopulitd5

TDD1

  1. (0.5 p.) Lataa ja asenna ComTest. Voit palauttaa vastauksen kun ko. sivulla oleva esimerkkitesti (Example Test) menee läpi. Kirjoita vastaukseen hieman kommenttia sitiä, kuinka asennus onnistui.
# comTestd5

En tajua miksi ComTest antaa aina saman ongelman “CS0234”. Se valittaa tuosta namespacesta jokaisen koodin kohdalla, paitsi testikoodissa. Voi olla hyvin mahdollista, että en vain osaa käyttää tuota oikein, mutta olisiko vinkkejä tähän:D?

VL: Hyvin vaikea sanoa kun sulla ei tässä kohtiole mitään koodia mihin olet tämän kommentin jättnäyt. Tuossa LakeYhteen-kohdassahan näyttää toimivan ihan hyvin. Tosin nykyisin sitä luokan nimeä ei siihen kutsun eteen kannata kirjoittaa vaikka saakin kirjoittaa.

14 Feb 21 (edited 14 Feb 21)

Minulla ComTest on toiminut kyllä jo aiemmin, mutta tuo Example Test aiheutti pitkän listan erroreita. Googletin virhekoodia ja löysin ratkaisuksi laittaa raksin ruutuun “Create a project directory within the solution directory” uuttaa projektia luodessa Visual Studiossa. Tämän jälkeen Example Test meni läpi.

14 Feb 21

Sain toimimaan kun laitoin rastin uutta projektia luodessa “place solution and project in the same directory”! Kiitos

20 Feb 21
  1. (0.5 p.) Täydennä seuraavaan funktioon ComTest-testit, missä toinen laskettavista luvuista on negatiivinen, sekä ainakin yksi sellainen testi, missä tulos on negatiivinen. Paikka, mihin testit kirjoitetaan on tässä kommentoitu TODO-sanalla. Kirjoita myös ympärille luokka, sekä luokan pääohjelma omatoimisesti. Pääohjelma voi olla "tyhjä", eli sen ei tarvitse tehdä mitään. Palauta tehtäväkenttään koko luokka.

Toteuta myös itse funktio ja täydennä puuttuvat sanat, jotka on alla xxx:llä. Aja testit ja totea että ne menevät läpi.

/// <summary>Lasketaan yhteen kaksi lukua</summary>
/// <param name="luku1">ensimmäinen yhteenlaskettava</param>
/// <param name="luku2">toinen yhteenlaskettava</param>
/// <returns>lukujen summa</returns>
/// <example>
/// <pre name="test">
///  Laskut.LaskeYhteen(2, 3) ~~~ 5;
///  Laskut.LaskeYhteen(2.4, 0) ~~~ 2.4;
///  // TODO: testi jossa toinen on negatiivinen ja tulos positiivinen
///  // TODO: testi jossa toinen on positiivinen ja tulos negatiivinen
/// </pre>
/// </example>
public static xxx LaskeYhteen(xxx luku1, xxx luku2)
{
  // toteuta funktio
}

Huomaa: Liukulukuja (eli double, float tai decimal-lukuja) 'ei saa' verrata ComTestissa kolmella yhtäsuuruusmerkillä (===), vaan ''niitä täytyy verrata kolmella matomerkillä ~~~''.

Syy, miksi reaalilukuja ei voi (muutamia poikkeuksia lukuunottamatta) verrata ComTestissä === -merkinnällä, eikä tavallisessa koodissa == -vertailuoperaattorilla, on, että tietokoneella voidaan tarkasti ilmoittaa ainoastaan 2-potenssien summia (ks. binäärilukujen perusteet?)

Esimerkiksi luku 0.1 ei ole 2-potenssien summa, joten tietokoneen näkökulmasta se onkin tietokoneen näkökulmasta jotain himpun verran yli 0.1 (ks. http://bit.ly/1589Imk).

Luku 0.75 sen sijaan onkin 2-potenssien summa (ks. http://bit.ly/zn6R9Y)...

\(1*2^{-1} + 1*2^{-2}\)

...joten tietokoneen näkökulmasta se on tasan 0.75.

Aihetta käsitellään vielä luennoilla ja demoissa, mutta tässä vaiheessa on tärkeintä muistaa:

  • jos funktion paluuarvo double, niin vertailu tehdään ComTestissa ~~~ -merkinnällä
  • "normaalissa" koodissa ollaan varovaisia double-lukujen vertailuun == -operaattorilla, koska yleensä se menee pieleen

Tehtävästä saa pisteet (0.5 p.) kun testit menevät läpi.

# comtestd5

Ville 1

Tee Ville-tehtävät: 4.5, 4.6, 5.1-5.5, 9.1, 9.2, 9.3.

Huom: Lue tarkasti kysymykset (montako kertaa, montako tulostetaan). Villen mallissa loppusulkuun } mennään kun silmukka loppuu.

# villev1d5

TDD2

Jos tarkistat vähintään kahden funktion toiminnan Comtestillä, saat merkitä tästä tehtävästä yhden pisteen. Huom: Tehtävän TDD1 testeistä ei saa tässä enää pisteitä :-)

Kirjoita vastauslaatikkoon mihin tehtävään teit Comtest-testit. Voit kirjoittaa myös ajatuksia miltä testaaminen tuntui

Taulukon testaaminen Comtestilla:

/// int[] luvut = {1,3,6};
/// String.Join(luvut, " ") === "1 3 6";

Jos haluat viedä testiin taulukon ilman, että luot apumuuttujaa, niin tee seuraavasti.

/// SuurinJaPienin.Pienin(new int[]{1, 2 ,3}) === 1;

Valitettavasti 2-ulotteiselle taulukolle ei ole vastaavaa Join-funktiota, vaan sellaisen joutuu tekemään itse (Voit copy-pastettaa tämän tai tehdä oman.)

StringBuilderin arvon testaaminen pitää suorittaa ToString()-metodin avulla

/// StringBuilder j1 = new StringBuilder("123");
/// Jonoja.LisaaAlkuunJaLoppuun(j1, "XX");
/// j1.ToString() === "XX 123 XX";
# tddd5

TDD-pohja

Jos ComTest ei toimi koneellasi, voit Copy/Pasteta ohjelmia alla olevaan laatikkoon ja testata siinä.

# ComTestPohjaCS

B1

Tee konsolisovellus-peli, jossa käyttäjän pitää arvata ohjelman arpoma kokonaisluku. Ohjelman tulee kysyä lukua kunnes käyttäjä arvaa oikean luvun, ja kullakin kerralla antaa sopiva ohjeteksti. Alla mallituloste.

TODO: Tim ei käsittele syötettä joten tätä ei voi kokeilla Timissä.

Aseta itsellesi pisteet Custom Points -toiminnolla.

Arvaa luku väliltä 1-100 > 27
Liian pieni!
Arvaa luku väliltä 1-100 > 73
Liian pieni!
Arvaa luku väliltä 1-100 > 89
Liian iso!
Arvaa luku väliltä 1-100 > 82
Liian iso!
Arvaa luku väliltä 1-100 > 78
Liian iso!
Arvaa luku väliltä 1-100 > 76
Liian pieni!
Arvaa luku väliltä 1-100 > 77
Oikein! :)
# numeronArvaus

Visual Studiossa kaikki menee hyvin ja TIMkin hyväksyy, mutta onkohan jotain pielessä, kun “rullaa” tulostusta ikuisesti TIMin puolella?

Oikea luku pitää arpoa, ei asettaa kiinteästi. -AJL

11 Feb 21 (edited 12 Feb 21)

toimiii visual studiossa niinkuin kuuluu mutta ei timissä? missä vika?

tätä ei voi kokeilla Timissä. -AJL

14 Feb 21 (edited 14 Feb 21)

B2

M: 12. Merkkijonot. Tee funktio MuutaKirjaimet, jota voi kutsua esimerkiksi seuraavasti:

string jono = "Kalle tykkää jätskistä.";
string tulos = MuutaKirjaimet(jono, 'k', 'g');

Funktio ottaa kolme parametria: (1) merkkijonon, (2) korvattavan merkin, ja (3) merkki jolla korvataan.

Funktio palauttaa uuden merkkijonon, jossa on vaihdettu annetut merkit (toinen parametri) jälkimmäiseksi merkiksi (kolmas parametri).

Funktion tulee käsitellä sekä isot että pienet kirjaimet huolimatta siitä onko argumenttina annettu suuraakkosia vai pienaakkosia. Esimerkiksi yllä oleva kutsu ottaisi vastaan jonon "Kalle tykkää jätskistä." ja palauttaisi jonon "Galle tyggää jätsgistä."

Tässä esimerkki, miten kyseistä funktiota voitaisiin käyttää.

Toistan mitä sanot, mutta en osaa sanoa kirjainta g.
Anna teksti > Kalle tykkää jätskistä.
Sanoit siis : Galle tyggää jätsgistä.

Tehtävässä saa sen ajamisesta 0.2 p. + testien läpäisemisestä + 0.7 p. + dokumentaatiosta 0.1 p.

Ratkaisussa ei saa käyttää valmiita merkkijonon käsittelyyn liittyviä metodeja, kuten String.Replace.

# lassytystad5

B3

Ota Demo 4 guru-tehtävän pallopelin mallivastaus.

(Saat halutessasi myös koko demo4:n mallivastauskansion zipattuna tästä linkistä.)

Katso Jypelin ohjeista miten lisätään pistelaskuri ja sille tapahtuma kun tulee tarpeeksi pisteitä.

Lisää pallopeliin laskuri jonka arvo kasvaa aina kun saat "metsästettyä" pallon puolen välin yläpuolella. Kun 10 palloa on saatu poksautettua, lisää tähän joku onnittelu (vaikka MessageDisplay-oliolla).

Jos et halua käyttää kuvia, kommentoi koodista pois kuviin liittyvät asiat tai laita omia kuvia tilalle.

# pistelaskurid5

G1-2 (2 p.)

Tee konsoliohjelma, joka tulostaa vaiheittain tehtävän 7 generaatioita.

Testaamisen helpottamiseksi voit käyttää valmista funktiota, joka palauttaa matriisin merkkijonona.

# gameoflifed5

G3

  • Mitä eroa on seuraavilla taulukoilla?
  • Miksi C#:ssa on kaksi eri tapaa ilmaista moniulotteisia taulukoita?
int[,] a = new int[3, 2];
int[][] b = new int[3][];
# g3v1

G4 (1 p.)

Tee tehtävä 6 käyttäen C#:n LINQ:lla tai lambdoilla. Vinkki (jos tarvit :)): Saat muutettua Where:n palauttaman IEnumerable:n taulukoksi käyttäjällä ToArray-metodia.

Tehtävässä saa sen ajamisesta ilman virheitä 1.0 p.

Huomautus: Aiemmin tehtävässä mainittiin tehtävä 5:stä. Jos teit sen niin, niin voit antaa itsellesi pisteen.

# linqOrlamb

G5 (1 p.)

Tehtävänantoa tarkennettu 11.2. klo 22:00.

Tee void-funktio SuurempiJaParillinenIndeksi, joka ottaa kaksi parametria: int[]-taulukon (luvut) ja yhden int-luvun (raja). Funktion tulee tulostaa ne luvut, jotka ovat suurempia kuin raja ja jotka ovat parillisissa indekseissä.

Esimerkiksi kutsu

int[] luvut = { 12, 3, 5, 9, 7, 1, 4, 9 };
SuurempiJaParillinenIndeksi(luvut, 4);

tulostaisi

12 5 7

Arviointi: Tehtävässä saa pisteitä virheittä ajamisesta 0.1 p + oikeasta tulostuksesa 0.8 p ja dokumentaation katsomisesta 0.1 p.

# suurempiJaParillinen

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.