PP1

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 Teamsin PP-kanavalla. 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.

Kun olet tehnyt kaikki tehtävät pyydä ohjaajaa tarkastamaan tekemäsi tehtävät. 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ä. Opettaja vie pisteet talteen tilaisuuden jälkeen.

Tehtävä 0: Kahoot (1 p.)

(Tätä tehtävää ei ole keväällä 2021.) Kirjoita 'Tein kahootin' jos osallistuit kahoot-kyselyyn.

# pp1kahoot

Tehtävä 1 (1 p.)

Tässä tehtävässä tehdään ohjelma, joka laskee matkustusaikojen kestoja.

Aloita tätä tehtävää varten Visual Studiossa uusi projekti. Valitse projektimalliksi ConsoleMain, solutionin nimeksi vaikka PP1 ja projektin nimeksi Matkustusajat. Seuraavien tehtävien projektit luodaan tähän samaan solutioniin.

Tee funktio MatkanKestoTunteina, joka laskee, kuinka kauan jokin matka kestää annetulla matkan pituudella ja keskinopeudella, ja palauttaa tuon tiedon. Pääohjelma voisi näyttää tältä (voit copy-pastettaa tämän omaan ohjelmaasi Visual Studioon projektimallin pääohjelman tilalle).

public static void Main(string[] args)
{
    double matkanPituusKm = 124.5;
    double keskinopeusKmH = 120;

    double matkanKestoTunteina = MatkanKestoTunteina(matkanPituusKm , keskinopeusKmH);
    Console.WriteLine("Matka kestää " + matkanKestoTunteina + " tuntia");
}

Etene seuraavasti: (1) Funktion esittelyrivi, (2) minimaalinen toteutus esim. return 0, (3) dokumentaatio, (4) lopullinen toteutus.

# matkanKestoTunteinaPP1

Tehtävä 2 (1 p.)

Tee ohjelma, missä kysytään kolme sanaa käyttäjältä, ja tulostetaan pisin sana.

Tee tämä projekti samaan solutioniin edellisen tehtävän kanssa käyttäen ConsoleMain-pohjaa. Jos et osaa lisätä uutta projektia solutioniin, kysy ohjaajalta apua.

Ota tästä valmiiksi tehty pääohjelma (tätä EI tarvitse muuttaa).

public static void Main(string[] args)
{
  Console.Write("Anna 1. sana > ");
  String sana1 = Console.ReadLine();
  Console.Write("Anna 2. sana > ");
  String sana2 = Console.ReadLine();
  Console.Write("Anna 3. sana > ");
  String sana3 = Console.ReadLine();
  String pisin = Pisin(sana1, sana2, sana3);
  Console.WriteLine("Kiitos vastauksistasi! Pisin sana on \"" + pisin + "\".");
}

Tee funktio Pisin. Etene samassa työjärjestyksessä kuin edellisessä tehtävässä.

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 Visual Studiosta alla olevaan koodilaatikkoon. Kirjoita vertailtavat kolme sanaa tehtävälaatikon alapuoliseen syötelaatikkoon omille riveilleen. Paina lopuksi Aja, jotta vastauksesi tallentuu TIMiin.

# pisinSanaPP1

Tehtävä 3 (1 p.)

Tässä tehtävässä tehdään ohjelma, kysyy lukua ja ilmoittaa kuuluuko luku välille \([-5, 5]\).

Luo uusi projekti samaan solutioniin edellisen tehtävän kanssa. Luo projekti käyttäen ConsoleMain-pohjaa.

Ota tästä itsellesi pääohjelma:

    public static void Main(string[] args)
    {
        Console.Write("Anna luku > ");
        int luku = int.Parse(Console.ReadLine());

        bool sisapuolella = OnkoValilla(luku);

        if (sisapuolella)
        {
            Console.WriteLine("Luku " + luku + " on välin sisäpuolella.");
        }
        else
        {
            Console.WriteLine("Luku " + luku + " on välin ulkopuolella.");
        }
    }

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.

# onkoValillaPP1

Tehtävä 4 (1 p.)

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.

Lisää pääohjelmassa olevaan funktiokutsuun kaksi parametria lisää, esimerkiksi näin:

bool sisapuolella = OnkoValilla(luku, 0, 50);

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.

# kuormitettuPP1

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