Tehtävä 1 (1 p.)
Valmistelu: Avaa JetBrains Rider, luo uusi solution ja valitse Jypeli -> ConsoleMain
. Nimeä solution kuvaavasti, esimerkiksi PP1
. Nimeä myös projekti kuvaavasti, esimerkiksi PP1-MatkanKesto
. Seuraavien tehtävien projektit luodaan tähän samaan solutioniin.
Tee funktio MatkanKestoTunteina
. Funktio ottaa parametreina matkan pituuden ja keskinopeuden, ja palauttaa kuinka kauan matka kestää. Pääohjelma ja luokka on annettu valmiiksi, näet ne painamalla palautuslaatikon Näytä koko koodi -painiketta.
Tehtävä 2 (1 p.)
Valmistelu: Tämä tehtävä on jatkoa edelliseen tehtävään, uutta projektia ei tarvitse luoda.
Tee nyt funktio MatkanKestoSekunteina
, joka laskee matkan keston sekunteina. Kutsu tässä funktiossa edellisen tehtävän funktiota MatkanKestoTunteina
.
Tehtävä 3 (1 p.)
Valmistelu: Luo uusi projekti samaan solutioniin edellisen tehtävän kanssa. Luo projekti käyttäen ConsoleMain
-pohjaa.
Tehdään ohjelma, joka kysyy lukua ja ilmoittaa kuuluuko luku välille \([-5, 5]\).
Pääohjelma ja luokka on annettu valmiiksi, näet ne painamalla palautuslaatikon Näytä koko koodi -painiketta.
Aloita lisäämällä ohjelmaan funktio nimeltään OnkoValilla
, joka ottaa parametrina yhden kokonaisluvun ja palauttaa tiedon siitä, onko annettu luku välillä \([-5, 5]\).
Aja ohjelma ja testaa sen toimintaa eri luvuilla.
Kirjoita luomallesi funktiolle dokumentaatio.
Tehtävä 4 (1 p.)
Valmistelu: Tämä tehtävä on jatkoa edelliseen tehtävään, uutta projektia ei tarvitse luoda.
Tässä tehtävässä on tarkoitus tehdä funktiosta OnkoValilla
kuormitettu versio, jolle voi luvun lisäksi itse antaa parametrina ala- ja ylärajan.
Jätä olemassa oleva OnkoValilla
koodiisi ja tee sen lisäksi uusi OnkoValilla
funktio, joka ottaakin kolme parametria. Tee tästä uudesta OnkoValilla
funktiosta sellainen, että annetut parametrit toimivat ylä- ja alarajana -5:n ja 5:n sijaan.
Testaa jälleen ohjelman toimintaa ja varmista, että ohjelma toimii oikein.
Funktiota voi nyt käyttää siten, että sille annetaan vain luku, jolloin rajojen oletetaan olevan -5 ja 5, tai sitä voi käyttää siten, että sille annetaan itse halutut rajat.
Tehtävä 5 (1p.)
Valmistelu: Luo uusi projekti samaan solutioniin edellisen tehtävän kanssa. Luo projekti käyttäen ConsoleMain
-pohjaa.
Tee ohjelma, missä kysytään kolme sanaa käyttäjältä, ja tulostetaan pisin sana. Pääohjelma ja luokka on annettu valmiiksi, näet ne painamalla palautuslaatikon Näytä koko koodi -painiketta.
Sinun pitää tehdä funktio Pisin
, sekä sille dokumentaatio. Aloita tekemällä funktion esittelyrivi (se missä on public static
jne.).
Valmis ohjelma tulostaa konsoliin esimerkiksi tällaista. ([ret]
tarkoittaa Enter-näppäimen painallusta, eikä se kuulu varsinaiseen merkkijonoon.)
Anna 1. sana > Koira[ret]
Anna 2. sana > Pekka[ret]
Anna 3. sana > Kalle-Petteri[ret]
Kiitos vastauksistasi! Pisin sana on "Kalle-Petteri".
Kannattaa myös kokeilla, että ohjelma toimii, vaikka pisin sana ei olisikaan juuri kolmantena syötetty.
Kopioi vastauksesi Rideristä alla olevaan koodilaatikkoon ja kirjoita kolme merkkijonoa omille riveilleen tehtävälaatikon alapuolella olevaan input-laatikkoon. Paina lopuksi Aja
, jotta vastauksesi tallentuu TIMiin.
Tehtävä 6 (1 p.)
Tee funktio LaskeSanat
, jolle annetaan parametrina merkkijonotaulukko, sekä etsittävä merkkijono. Funktio laskee, kuinka monta etsittävää sanaa taulukosta löytyi.
Funktiota voisi kutsua näin (laita tämä pääohjelmaan):
string[] sanat = {"Omena", "Mandariini", "Appelsiini", "Omena", "Omena", "Päärynä"};
int montakoLoytyi = LaskeSanat(sanat, "Omena");
Console.WriteLine("Omena-sanoja löytyi " + montakoLoytyi);
Huomaa, että tehtävässä ei ole mitään koodia valmiina. Kirjoita siis itse luokka, pääohjelma sekä LaskeSanat
-aliohjelma.
Tehtävä 7 (1 p.)
Voit tehdä kohdat a ja b samaan kooditiedostoon.
\((a)\) Tee ohjelma (aliohjelmia ei tässä tarvita), joka tulostaa parilliset luvut väliltä 0..100 (sekä nolla että sata kuuluvat väliin). (0.5 p.)
\((b)\) Tee ohjelma (jatka edellisen perään), joka tulostaa kaikki luvut väliltä 0..100, ja jos luku on jaollinen 4:llä, luvun perään tulostuu 'Jaollinen neljällä!' (0.5 p.)
Esimerkkitulostus
61
62
63
64 Jaollinen neljällä!
65
66
67
68 Jaollinen neljällä!
69
70
Tehtävä 8
Tehtävä 8.1 (1 p.)
Tee pääohjelmaan silmukka, joka tulostaa 30 lukua siten, että ensimmäinen luku on 1, toinen luku on 1, ja seuraavat luvut ovat aina kahden edellisen summa. Eli tulostuksen alku näyttäisi tältä 1 1 2 3 5 8. (1 p.)
Tehtävä 8.2 (1 p.)
Tee uusi projekti, ja siihen aliohjelma nimeltä TaytaFibonacci
. Anna aliohjelmalle parametrina int-taulukko. Aliohjelma täyttää taulukon edellisen tehtävän mukaisilla luvuilla. Muista, että taulukon koon saat Length
-ominaisuuden avulla. Aliohjelma ei palauta eikä tulosta mitään. Koska parametrina on taulukko, joka on siis olio, niin muutokset näkyvät myös siellä missä aliohjelmaa kutsuttiin. Tee nyt Main-pääohjelmassa uusi, esimerkiksi 40 mittainen taulukko ja kutsu tekemääsi aliohjelmaa. Älä edelleenkään tulosta mitään, katso debuggerissa tuliko oikeat luvut taulukkoon. (1.0 p.)
Tehtävä 8.3 (1 p.)
Tee funktio TaytaFibonacci
, jolle annetaan parametrina taulukon alkioiden määrä (eli kuinka iso taulukko tehdään), ja palauttaa uuden taulukon joka on täytetty kuten kohdassa 2. Eli melkein sama tehtävä kuin edellisessä kohdassa, mutta nyt funktiosi tekee uuden taulukon ja palauttaa sen. (1.0 p.)
Tehtävä 8.4 (0.5 p.)
Kirjoita edellisen tehtävän funktiolle muutama Comtest-testi. Alla on esimerkki. (0.5 p.)
Tehtävä 9 (1 p.)
Tee funktio TeeTaulukko
, joka saa kaksi parametria, taulukon koon ja luvun, jolla taulukko täytetään.
Funktiota voitaisiin kutsua esimerkiksi seuraavasti:
Pääohjelma ja luokka on annettu valmiiksi, näet ne painamalla palautuslaatikon Näytä koko koodi -painiketta.
Tehtävä 10 (1 p.)
Tee funktio LaskeJonot
, jolle annetaan parametrina merkkijonotaulukko, sekä etsittävä kirjain. Funktio laskee, kuinka monta kertaa etsittävä kirjain löytyi kaikista taulukon merkkijonoista yhteensä löytyi.
Luokka ja pääohjelma on annettu tässäkin valmiiksi.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.