PP2
Mitä ovat PP-tehtävät?
PP-tehtävät on tarkoitettu niille, joilla edellisten demojen tekeminen on tuottanut hankaluuksia, tai muusta syystä demot ovat jääneet tekemättä. Nämä ovat siis kertaavia tehtäviä, joiden avulla palautetaan mieliin aikaisempia demoja uudesta näkökulmasta. PP-tehtävät eivät ole tarkoitettu niille, jotka ovat tehneet säännöllisesti 4 tai enemmän tehtäviä/kerta. PP-tehtävillä voi myös (enintään kaksi kertaa koko kurssin aikana) hyvittää sen tilanteen että aikaisemmalla demokerralla ei ole tehnyt tähtitehtäviä. Edelleen, PP-tehtävät lasketaan mukaan 40%:n sääntöön (siis sääntö joka sanoo että vähintään 27 pisteen edestä pitää olla tehty tehtäviä koko kurssilla).
PP-tehtäviä voivat palauttaa vain ne, ketkä osallistuvat erillisiin PP-ohjaustuokioihin. Ilmoittautumista ei tarvita, ilmaannu vain paikalle Teamsiin PP-kanavalle. Jos et ole PP-tuokioihin osallistunut, niin et voi saada PP-tehtävistä myöskään pisteitä. Tehtäviä voi tietysti tehdä vaikka ei ryhmään pääsisi mukaan.
Tee tehtävät aina Visual Studiossa / Riderissä. Tehtävän tehtyäsi liitä kirjoittamasi koodi TIM:iin ja paina Aja/Tallenna.
Pyydä ohjaajaa tarkastamaan tekemäsi tehtävät. Saat pisteet niistä tehtävistä, jotka olet tehnyt, vaikka ne eivät olisikaan täydellisesti oikein. Näissä tehtävissä ei ole automaattista pistelaskua. Tehtävien tarkistuksen jälkeen voit laittaa oikean määrän pisteitä Set custom points
-toimintoa käyttämällä.
Jos et ole tehnyt PP1-kerran tehtäviä, voit halutessasi tehdä ne ensin.
Aliohjelmien ja funktioiden kutsuminen ja kirjoittaminen:
PP Tehtävä 1 (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.
PP Tehtävä 2 (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
PP Tehtävä 3 (1 - 3.5 p.)
\((a)\) 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.)
\((b)\) 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.)
\((c)\) 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.)
\((d)\) Kirjoita yo. funktiolle Comtest-testit. Paluuarvona tulevan taulukon (alla luvut
) voit testata esimerkiksi tehtävän alla olevan esimerkin tyylisesti (kirjoita tehtävän alapuolella oleva koodi funktion dokumentaation ComTest-osaan). (0.5 p.)
ComTest tehtävään 3 d
/// int[] luvut = TaytaFibonacci(5);
/// String.Join(" ", luvut) === "1 1 2 3 5";
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.