Sinun UserID: 0

```

Palautus viimeistään: klo 11:00 ma 3.10.
Katso luennot-sivulta luennot 09 ja 10.

Ilmoittaudu missä ryhmässä (zoom) katsot demojen vastaukset (huom joka viikolla oma ilmoittautuminen)

  • Please to interact with this component.

    Ma 14-16
  • Please to interact with this component.

    Ma 16-18
  • Please to interact with this component.

    Ma 14-16 Zoomista
  • Please to interact with this component.

    Ma 16-18 Zoomista
  • Please to interact with this component.

    Katson demonpalautuksen videolta

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ä.
# aikajana
Tiedot päivittyvät tunnin välein. Viimeksi:

Please to interact with this component.

{}


Viikko 35
26.8.
36
2.9.
37
9.9.
38
16.9.
39
23.9.
40
30.9.
41
7.10.
42
14.10.
43
21.10.
44
28.10.
45
4.11.
46
11.11.
47
18.11.
48
25.11.
Luennot 1&2 3&4 5&6 7&8 9&10 11&12 13&14 15&16 17&18 19&20 21&22 23&24
Tärkeät ti: bonus
pe: HT1
Väli-
kysely
pe: Debug-
näyte

ti: bonus
pe: HT2
ti: bonus
pe: HT3
Tentti
pe: 2.12
dh 1 2 3 4 5 6 7 8 9 10 11 Summa %
Demot

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.

{}

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.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Korjattu

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.

{}

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.

{}

Please to interact with this component.

{}

Tunnit

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.

{}

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.

{}

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.

{}

Ohjelmointi 1, s 2022 / Demo 5


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 maanantaina 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.

# vdr1
# vdr2

Oppimistavoitteet

Klikkaile ruksit niihin kohtiin jotka olet oppinut. Työkirja-sivulla näet yhteenvedon kaikista demoista.

# Oppimistavoitteet

Palautus

Demot palautetaan viimeistään maanantaina klo 11:00 mennessä. Voit palauttaa osan tai kaikki tehtäväsi etukäteenkin ja täydentää vastauksia määräaikaan mennessä.

Ajankäyttösi tällä viikolla (0.25p)

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 (=zoom) 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. Tästä annettava 0.25 näkyy Pisteet-sivun demokerran summassa. Kirjoita pelkkä luku esim tyyliin 13.5

Ajankäyttösi tällä viikolla: Plugin numericfield error: Task id refers to another document, but you do not have access to that document.

# vaikeaa

Edellisten demojen vastausten korjaaminen E1 (pakollinen)

# korjattu

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ä.

Itsearvio A1 (vapaaehtoinen)

Video 1

Voit saada demopisteitä indeksoimalla luento/demovideoita, ks: Videoiden hakemisto aihepiireittäin 22 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.

# video1

TDD-pohja

Tässä voit testata ohjelmiasi jos ComTest ei toimi koneellasi

# ComTestPohjaCSx

Demot

Tehtäviä voi tehdä suoraan TIMissä, mutta niitä kannattaa jo ruveta tekemään 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.

Muista: Jotta konsolisovelluksen tekeminen olisi helpompaa, ota "parempi" template ConsoleMain Jypelin alta.

Samaan solutioniin kannattaa tehdä useampi demotehtävä. Suositus, olisi että tekee 1. tehtävää varten projektin, jolle antaa kuvaavan nimen (esim JonojenLisaily ja sen solutionille nimen demo5). Sitten seuraavaa tehtävää varten klikkaa hiiren oikealla Solution Explorerissa Add/New project ja näin lisää projektin olemassa olevaan solutioniin. Muista taas antaa projekille kuvaava nimi!

Tehtävien nimeämisestä: Älä anna C#-tiedostoille nimiä, jotka eivät ole kuvaavia! Esimerkiksi tehtG1.cs on huono sen kannalta, että tarkoitus on opetella käyttämään nimiä, jotka toimisivat oikeassakin ohjelmassa. Pallopeli.cs on taas paljon parempi (ja muista se luokan nimen suhde tiedoston nimeen).

HUOM! Älä käytä C#:in valmiita luokkakirjastojen nimiä omien luokkien niminä! Esim. tehtävässä 1 älä käytä nimeä StringBuilder omalle luokallesi, projektillesi, solutionillesi tms., sillä se peittää (hides) silloin näkyvistä C#:in oman luokan, ja saat vain virheitä jokaisesta rivistä, jossa lukee StringBuilder. Varminta on siis nimetä omia "juttuja" aina tässä vaiheessa opettelua suomenkielisillä nimillä, jolloin vältät nimikonfliktit C#:in valmiiden nimien kanssa.

Kurssin ydinasian kannalta tärkeät tehtävät: Tauno 1, 1, 2, 3, 4 ja 6.

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:".

Monisteen lisäksi kannattaa lukea:

Kunkin kerran minimipistemäärä 2 on tehtävä käyttäen *-merkittyjä tehtäviä. Esim. pelkkä Ville ja Tauno ei riitä minimimäärään. Jos pakolliset tehtävät eivät lähde luonnistumaan, kannattaa käydä pääteohjauksissa tai Pahasti Pihalla -ryhmissä saamassa apua.

Tauno 1

Huomaa, että nyt Tauno on muuttunut. Et voi enää ottaa mitä tahansa taulukon alkiota, vaan sinun pitää ensin luoda indeksimuuttuja (joka tässä tehtävässä sinulle on luotu valmiiksi). Sitten indeksimuuttuja pitää raahata sen taulukon alkion alle, johon sen halutaan "viittaavan" (tehty valmiiksi 1. kerralla). Vain sellaisen taulukon alkion voit raahata jonnekin, jonka alla sinulla on indeksimuuttuja.

Indeksimuuttujan paikkaa voit vaihtaa raahaamalla sen toisen taulukon alkion alapuolella tai kohdentamalla siihen +1 tai -1 operaatioita.

# Plugin1

Huom! Jos haluat Taunon sijaan tehdä suoraan silmukoita, niin tee sama silmukkakoodi a) ja b) kohtiin.

# lisaaTaulukkoonJuokseva

Kun olet saanut Taunossa koodin toimimaan, kirjoita alle vastaava koodi silmukalla. Aloittelijalla while-silmukka on aluksi helpompi. Ja se on helppo sitten muuttaa for-silmukaksi.

Katso tarvittaessa mallia aikaisempien demojen palautusvideoista Tauno-tehtävän käsittelyn kohdalta.

# lisaaTaulukkoonJuoksevaSilmukka

Yleisiä virheitä, katso onko sinulla

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. Muista Villen käyttöohje.

# villev1

TDD 1

Jos tarkistat vähintään kahden funktion toiminnan automaattisella testillä (esim ComTest) Visual Studiossa tai vastaavassa, saat merkitä yhden lisäpisteen. Testit eivät saa olla täsmälleen samoja kuin mitkä saa kopioimalla tehtävien TIM-versiosta. Vastauksena kerrot minkä tehtävän ja minkä funktion/funktioiden toiminnan testasit. Voit antaa samalla palautetta ja kehitysehdotuksia Comtestin käytöstä.

Taulukon testaaminen ComTestillä:

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

Jos haluat viedä testiin taulukon "luomatta" sitä apumuuttujaan, niin seuraava auttaa:

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

Valitettavasti 2-ulotteiselle taulukolle ei ole vastaavaa Join-funktiota, vaan sellaisen joutuu tekemään itse. StringBuilderin arvon testaaminen pitää suorittaa ToString()-metodin avulla.

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

Tulostavia tai Jypeliin perustuvia aliohjelmia on turhan vaikea vielä nykytietämyksellä testata ComTestillä. Joten niitä ei vaadita testattavaksi. Tyydytään testaamaan funktio-tyylisiä aliohjelmia. Toki myös sellaisia jotka ovat void, mutta muuttavat taulukko tai StringBuilderiä.

# tdd

userid: 0

Tehtävä 1. StringBuilder

M: 12.4 Muokattavat merkkijonot: StringBuilder.
AliohjelmienKutsuminen.cs - katso tämä malliksi siitä, miten StringBuilderin metodeja kutsutaan.

Tee seuraavaan pääohjelmaan tarvittava aliohjelma:

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

Jos yhtään vaikeuksia, katso: tehtävä jolla voi harjoitella.

Oljenkorsi 0

Oljenkorsi 1

Oljenkorsi 2

Oljenkorsi 3

Oljenkorsi 4

# alkuunjaloppuun

Yleisiä virheitä, katso onko sinulla

# suurinpienin

Tehtävä 2*. 3-paikkaisen taulukon suurin ja pienin

M: 15. Taulukot.

Kopioi Demon 4 mallivastauksista tehtävän 5 vastauksesta (SuurinJaPienin.cs) Suurin ja Pienin funktioiden toteutukset. Alla pääohjelma on muutettu käyttämään taulukoita (ks näytä koko koodi).

Linkki johtaa sivulle, jossa tulee "Error 404 Page not found"

VL: Korjattu niille,, jotka ovat gitlabiin kirjautuneet. Mutta aina toimii myös ko demon kohdasta "Mallivastaus" ja sehän sun on joka tapauksessa pitänyt täydentää.

27 Sep 22 (edited 27 Sep 22)

Sitten pitää muuttaa funktiot niin, että ne käsittelevät 3-paikkaista taulukkoa. Tässä TIMiin palautettavassa tehtävässä tehdään vain tuo aliohjelmien (funktioiden) muutos. Muista aluksi vaihtaa esittelyrivin parametrilista oikeaksi, vertaa luentojen Summa-funktio. Tässä ensimmäisessä taulukkotehtävässäsi saat poikkeuksellisesti olettaa, että taulukossa on TASAN 3 alkiota, jatkossa näin ei saa tehdä.

Ideana tässä on siis suurinpiirtein korvata funktioiden runkokoodissa (ei esittelyrivillä)

 a => luvut[0]
 b => luvut[1]

Jos yhtään vaikeuksia, katso: tehtävä jolla voi harjoitella.

Oljenkorsi 1

# kolmensuurin

Yleisiä virheitä, katso onko sinulla

Tehtävä 3*. Kertotaulu

TODO tulevaisuuteen (syksy 2023): Vaihda järjestys while, for, do-while

Pohjamateriaalia tehtävälle:

  • M: 16. Toistorakenteet.
  • Taulukoita.cs - täällä on iso joukko silmukoita ja taulukoita käyttäviä aliohjelmia malliksi (esim TulostaTaulukko ja erityisesti TulostaLuvut).
  • katso luento 11 kooste silmukoista

Tehtävänä on tehdä kolme eri tapaa tuosta kertotaulu. Eli tehdään 3 eri aliohjelmaa, joissa kussakin on erilainen silmukka ks pääohjelma.

  1. Tee aliohjelma, joka tulostaa luvun n kertotaulun for-silmukalla. Esimerkiksi TulostaKertotaulu(3) tulostaisi 3:n kertotaulun 10:een asti:

     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
  1. Tee vielä toinen aliohjelma, joka tulostaa kokonaisluvun n kertotaulusta m kpl rivejä. Toteutus while-silmukalla. Esimerkiksi TulostaKertotauluWhile(3, 5) tulostaisi:

     1 * 3 =   3
     2 * 3 =   6
     3 * 3 =   9
     4 * 3 =  12
     5 * 3 =  15
  1. Tee sama vielä do-while -silmukalla. Mitä TulostaKertotauluDoWhile(6, 0); tulostaa, jos ei tehdä mitään erikoislisäyksiä? Pohdi mitä pitäisi lisätä? Laita tarvittava lisäys kommentteihin, koska pistetarkistus katsoo, että käytössä on "puhdas" do-while.

Jos yhtään vaikeuksia, katso: tehtävä jolla voi harjoitella.

Oljenkorsi 1

Oljenkorsi 2

# kertotaulu

Se tulostaa luvun 6. Pitäisi lisätä erikoislisäys, jossa tarkistetaan, että onko kyseessä luku 0. Jos on, niin tulostetaan luku 0.

VL: Mihin tämä liittyy vai onko omaa pohdintaa? Jos omaa pohdintaa, niin kommentti kannattaa laittaa vain itselleen :-)

01 Oct 22 (edited 01 Oct 22)

Yleisiä virheitä, katso onko sinulla

Tehtävä 4. Rajan ylittävät

M: 15. Taulukot, 16. Toistorakenteet.

Muista katsoa Tauno-tehtävien palautusvideoita siitä kohti, missä vastauksia muutetaan silmukoiksi (eli kunkin demon sarake Video MP4 tai iltaryhmä).

Olkoon meillä taulukko, joka sisältää int-tyyppisiä kokonaislukuja. Tee aliohjelma TulostaYli(taulukko, raja), joka tulostaa yhdelle riville taulukosta kaikki ne luvut (alkiot), jotka ylittävät annetun rajan eli tietyn luvun (yhtäsuuret eivät ylitä). Tee vastaava funktio SummaYli(taulukko, raja), joka palauttaa rajan ylittävien taulukon lukujen summan. Esimerkiksi pääohjelma

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

tulostaisi

12 5 9 7 9
Yli 4 olevien lukujen summa on: 42

Oljenkorsi 1

# tulostayli

Tässä ei varmaan olisi tarkoitus olla tuota testausnappia näkyvillä? Testejä ei ole, joten siitä tulee virheilmoitusta, ja tämäntyyppisiä aliohjelmia on toisaalla kuvattu turhan haastaviksi testata vielä nykytietämyksellä. muoks: jaa, tuossa alla olikin yleisissä virheissä mainittu, ettei kannata yrittää testata

VL: Mutta toisaalta ei se haittaakaan. Edistyneemmät saavat kirjoittaa testejä ja kokeilla. Pisteet eivät kuitenkaan jää testaamisen takia saamatta.

27 Sep 22 (edited 27 Sep 22)

En saa täysiä pisteitä luultavasti, koska en pysty testaamaan ohjelmaa.

VL: ei vaan sun tuloste on väärin, ei ole saman näköinen kuin mallissa.

Niinpä tietenki

30 Sep 22 (edited 30 Sep 22)

Yleisiä virheitä, katso onko sinulla

Oljenkorsi 2

Jos yhtään vaikeuksia, katso: tehtävä jolla voi harjoitella.

# summayli
# tsopulit

Tehtävä 5. Sopulit

Moniulotteiset taulukot. Et tarvitse Visual Studiota/C#:ia tässä tehtävässä. Olkoon meillä 4 x 4 matriisi (siis 2-ulotteinen taulukko):

[ 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. Uusi generaatio aina uuteen taulukkoon: Teet uuden tyhjän taulukon ja siihen vastinpaikkaan kuuluvan alkion arvon katsot edellisestä taulukosta em. säännöillä.
  2. Kaikki generaatiot yhdessä taulukossa: Teet muutokset "lähtötaulukossa" vasemmalta oikealle, ylhäältä alas. Kun olet mennyt taulukon läpi, otat siitä "kuvan" (eli kopioit vaiheen tilanteen) ja jatkat sitten samalla taulukolla uudestaan vasemmasta yläkulmasta.

Tuleeko eri tavoilla tehtynä eri tulos? Miksi?

Kopioi alle olevaan laatikkoon alkuperäisen taulukon (sukupolvi) alle kumpaankin eri tapaan kolme uutta samankokoista taulukkoa (sukupolvea). Kirjoita taulukot allekkain. Yhteensä siis 7 taulukkoa.

# sopulit

Tarkista vastauksesi, onko sinulla:

  • ensimmäisen tavan kolmannessa generaatiossa on vain kaksi ykköstä vinosti toisiinsa nähden
  • toisen tavan kolmannessa generaatiossa on 4 ykköstä neliön muotoisessa alueessa

Tehtävä 6. Lukujen kysyminen silmukassa

M: 15. Taulukot, 16. Toistorakenteet.

Lisää tehtävään 2 kirjoittamasi aliohjelmat pääohjelman alle ja muuta pääohjelma sellaiseksi, että luvut kysytään silmukassa. Eli löydä ensi koodista riveiltä 4-9 samanlaisen toistuvat kolme koodin osaa ja korvaa ne silmukalla. Samalla tavalla kuin luennoilla tehtiin Summa-funktiossa.

# kysyminensilmukassa

Ohjeistus on hieman hämäävä. Pitääkö siis kirjoittaa se, mitä konsolille tulostuu kun ohjelman ajaa VisualStudiossa vai käyttäjän antamat numerot?

VL: se mitä käyttäjä kirjoittaisi jos puhut tuosta "syöte"-ikkunasta!

27 Sep 22 (edited 27 Sep 22)

Kun yritän ajaa ohjelmaa, niin saan virheilmoituksen: "The modifier 'public' is not valid for this item" jokaisesta rivistä missä lukee "public". Virheilmoitus tulee myös mallivastauksesta.

VL: Luokka puuttui mallivastauksesta. Se oli tehtävässä pohjana.

07 Oct 22 (edited 07 Oct 22)

Yleisiä virheitä, katso onko sinulla

# liuku

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 aikaisemmissa, kunhan kumpaankin merkkaamasi (demo2 + demo3 + demo4 + demo5) summa on sama kuin Liukuhihnatehtävän pistemäärä.

Huom!. Pisterajatarkistus ei vättämättä toimi, joten et saa huijata laittamalla liikaa pisteitä!

# tehtavaL1

B1. Lässytystä

M: 12. Merkkijonot.

Tuliko Demo 4 tehtävässä 3 isot kirjaimet huomioitua? Muuta tehtävän 3 vastausta niin, että teet funktioaliohjelman (palauttaa siis merkkijonon), jota kutsutaan seuraavasti:

string tulos = MuutaKirjaimet(jono, 'r', 'l');

Funktio muuttaa sekä isot että pienet kirjaimet (vinkki: Eli kun funktiolle tuodaan esimerkiksi 'r' ja 'l', niin se vaihtaa 'r' -> 'l' ja 'R' -> 'L'.) Funktiota käyttäen voitaisiin vanhan demon ohjelma muuttaa toimaan seuraavasti:

Toittan mitä tanot, mutta en otaa tanoa kirjainta t!
Anna teksti >Seppo tykkää jätskistä.
Tanoit tiit: Teppo tykkää jättkittä.

Ohjelma saadaan siis kahden merkin vaihtamisella toimimaan edellisen kerran tehtävän 3 vastauksena. Tehtävän TIM versiosta tietojen kysely on yksinkertaistamisen vuoksi jätetty pois, koska tarkoituksena on vaan tehdä ja testata tuota funktiota.

# lassytysta

B2. Pistelaskuri

Alustus

Ota ohjeilla:

kurssin demojen mallivastaukset omaan koneeseesi.

Kopioi sieltä demo4 hakemisto alihakemistoineen johonkin oman koneesi toiseen hakemistoon ja avaa demo4.sln Visual Studiolla tai JetBrains Riderilla.

Kokeile että Pallot-projekti toimii.

Tehtävä

Katso Jypelin ohjeista, miten lisätään pistelaskuri ja sille tapahtuma, kun pisteitä tulee tarpeeksi. Lisää pallopeliin laskuri, joka lisääntyy aina, kun saat "metsästettyä" pallon puolen välin yläpuolella. Kun 10 palloa on saatu poksautettua, lisää tähän joku onnittelu.

# pistelaskuri

G1-3. GameOfLife

Tee konsoli-ohjelma, joka tulostaa vaiheittain tehtävän 5 generaatioita. Täydellisen 3-pisteen merkinnän saat, mikäli tehtävässä on myös automaattiset testit (ComTest tai NUnit) kummankin tapauksen 3:lle generaatiolle. Testaamisen helpottamiseksi tee aliohjelma (funktio), joka palauttaa 2-ulotteisen taulukon merkkijonona.

HUOM! Muutin palautusta niin, että kaikki kopioidaan tähän, myös using yms... Jos olet jo palauttanut, lisää using ja class-jutut.

# gameoflife

PP

PP tehtävät (Pahasti Pihalla) on tarkoitettu niille, joilla on vaikeuksia aivan perusasioissa.

Tarkoitus on että nämä ovat helpompia ja kertaavia tehtäviä, joiden avulla pakollisen viikottaisen 2 pisteen saaminen on mahdollista. PP tehtävät eivät ole tarkoitettu niille, jotka ovat tehneet säännöllisesti 4 tai enemmän tehtäviä/kerta. Tekemällä kaikki PP-tehtävät voit saada enintään 1 pistettä.

PP1

Seuraava pääohjelma laskee ihmisen painoindeksin. Tee tarvittavat aliohjelmat, jotta pääohjelma toimii.

public static void Main()
{
    Console.WriteLine("Ohjelma laskee painoindeksisi.");
    string nimi = KysyNimi();
    Console.WriteLine("Hei " + nimi);
    Console.Write("Syötä pituutesi (m) muodossa x,xx > ");
    double pituus = double.Parse(Console.ReadLine());
    Console.Write("Syötä painosi (kg) > ");
    double paino = double.Parse(Console.ReadLine());
    double indeksi = LaskePainoIndeksi(pituus, paino);
    Console.WriteLine("Painoindeksisi on {0:00.00}", indeksi);
}

Vinkkejä painoindeksin laskemiseen voit katsoa luentomonisteesta

# pp1

PP 2

Kopioi alla oleva ohjelma painamalla ENSIN Näytä koko koodi-nappulaa ja tämän jälkeen Copy-Nappulaa. Korvaa sitten konsoliprojektisi .cs-tiedoston sisältö juuri kopioimallasi sisällöllä. Kun olet tehnyt tehtävän Visual Studiossa, kopioi .cs-tiedoston sisältö alla olevaan tehtävälaatikkoon.

Tehtävänäsi on kutsua annettuja aliohjelmia oikeassa järjestyksessä sopivilla parametreillä, jotta ohjelma tulostaa "Autot lastattu onnistuneesti!". Kiinnitä huomiota erityisesti aliohjelmien paluuarvoihin sekä siihen, missä kohti kutsut mitäkin aliohjelmaa.

# pp2

Omaa tuotantoa

Näihin tehtäviin voit palauttaa jonkin oman kurssin tämän hetken oppimistavoitteita vastaavia tehtäviä. Ei kuitenkaan enää jos vastaavat tehtävät on tehty edellä olevissa tehtävissä.

Nämä on tarkoitettu lähinnä niille, joilla ei ole mahdollisuutta tehdä varsinaisia tehtäviä ajallaan esimerkiksi kertausharjoitusten tai sairauden takia. Yleensä jos tulee ajoissa ennakoitavia esteitä, pitäisi tehdä perustehtäviä tehdä etukäteen.

Nämä arvostellaan manuaalisesti ja opiskelijan pitää ottaa yhteyttä kurssin opettajiin kun toivoo näitä arvosteltavan. Jos tehtävä on liian lähellä mallivastauksia, ei sitä arvostella tai voidaan pyytää muuttamaan vastaustaan erilaiseksi. Samoin jos tehtävä ei liity viikon oppimistavoitteisiin (vertaa esim tähtitehtävät). Luonnollisesti nuo kaksi ohjelmaa eivät saa olla samanlaisia. Laita ohjelman kommentteihin mitä perustehtäviä nämä korvaisivat ja mikä olisi oma peruste millekin pistemäärälle (se voi olla enemmänkin kuin 1p/tehtävä).

# oma1
# oma2

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