Ohjelmointi 1, syksy 2022, luento 06

6. luento: ti 13.09.2022 klo 14:15-16:00: Aihe: aliohjelman paluuarvo, funktio ja parametrin välitys (luentokysymyksiä)

Kysymyksiä

1. Demot

2. 1-bit Wegematic 1000

3. Negatiiviset binääriluvut

# muistiinpanoja

4. Syntaksista

4.1 Esimerkki syntaksista

# shell
  • https://www.bottlecaps.de/rr/ui

  • pastea seuraava kielioppi:

    Lause ::= subjekti predikaatti (paikka)? "."
    subjekti ::= "kissa" | "koira" | "kana"
    predikaatti ::= "istuu" | "haukkuu" | "kotkottaa" | "nukkuu"
    paikka ::= "puussa" | "pihalla" | "kanalassa" | "orrella"

Seuraavissa kokeile kirjoittaa erilaisia lauseita. Mitkä ovat oikein syntaktisesti (kieliopiltaan)? Mitkä semanttisesti (merkitykseltään)?

# Plugin1
# cslause

4.2 Ohjelmointikielen syntaksi

# junanradat

5. Aliohjelmat ja funktiot

  • oikeasti lappuihin olisi pitänyt kirjoittaa pelkkiä bittejä tyyliin:

    0000 0100
    0000 1010

    ja aliohjelma olisi tiennyt miten nuo tulkitaan vain siksi että sille on kerrottu että mitä tyyppiä monesko parametri on.

  1. Jaa ongelma osiin.
  2. Mieti millaisella aliohjelmakutsulla pistät tietyn osaongelman ratkaisun käyntiin.
  3. Kirjoita aliohjelman kutsurivi ja mieti sen tarvitsemat parametrit.
  4. Kirjoita (aluksi manuaalisesti, myöhemmin generoi automaattisesti) aliohjelman esittelyrivi (otsikkorivi, eng. header).
    • mieti tarve public, static - sanoille
    • aliohjelman paluutyyppi void vai jotakin muuta?
    • aliohjelman nimi
    • parametrin lukumäärä sama kuin kutsussa
    • parametrien tyyppi sijoitusyhteensopivaksi kutsun kanssa.
  5. Tee aliohjelmasta syntaktisesti oikea tynkä joka kääntyy, esimerkiksi funktioaliohjelmassa pitää olla return-lause joka palauttaa lausekkeen (vaikka yksi luku) joka on samaa tyyppiä (tai muuntuu automaattisesti samaksi) kuin funktion tyyppi.
  6. Dokumentoi aliohjelma (nyt unohda mistä sitä kutsuttiin, sitä et enää saa ajatella).
  7. Kirjoita testit (TDD).
  8. Aja testit (pitää "feilata" = NÄE PUNAISTA).
  9. Muuta aliohjelma toimivaksi
  10. Aja testit (toista kohdat 8-10 kunnes toimii, = NÄE VIHREÄÄ)
  11. Siirry seuraavaan aliohjelmaan.
    /// <summary>
    /// 
    /// </summary>
    /// <param name="luku1"></param>
    /// <param name="luku2"></param>
    /// <returns></returns>
    /// <example>
    /// <pre name="test">
    ///  
    /// </pre>
    /// </example>
    /// <summary>
    /// 
    /// </summary>
    /// <param name="k"></param>
    /// <param name="maara"></param>
    /// <param name="isona"></param>
    /// <returns></returns>
    /// <example>
    /// <pre name="test">
    ///  
    /// </pre>
    /// </example>
    XXX YYY ZZZ Monista(???)
    {
        StringBuilder tulos = new StringBuilder("");
        char kirjain = Char.ToLower(k);
        if (isona) kirjain = Char.ToUpper(k);
        for (int i = 0; i < maara; i++)
            tulos.Append(kirjain);
        return tulos.ToString();
    }
# helloeka

6. Voimia peliin

# lumiukko1

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