avoin/avoin23
Huom! TÄMÄ ON AVOIMEN YLIOPISTON SIVU.
Et voi suorittaa kurssia, ellet ole ilmoittautunut täällä.
Ohjelmointi 1, avoin 2023, luento 08
- Pahasti Pihalla
- M: 13. Ehtolauseet
- Lue demoja varten myös: Aliohjelminen kutsuminen
- Muista aina katsoa välillä C#-pikasyntaksi
- Tee omatoimisesti Pong-tutoriaalin vaiheet 1-3. Demoissa tehdään sitten 4-7.
- Voit tehdä myös Läpsylintu-tutoriaalin
- Voit tehdä myös Läpsylintu-tutoriaalin
- Lukuja.cs - esimerkki funktiosta jossa if-lause
- M: 12. Merkkijonot
- String-luokan MSDN-dokumentaatio
- StringBuilder-luokan MSDN-dokumentaatio
- Merkkijonoja.cs - esimerkkejä merkkijonoista ja kirjaimista sejä merkijonofunktiosta
- Jonoja.cs - esimerkkejä merkkijonofunktioista
- Luennolle tehdyt koodit versionhallinnassa
- Luennon koodit versionhallinnassa
- 8. luento videona: Osa 1 ja 2 MP4 alkuperäinen
- luentoseinä
Pääteohjaukset
- muistakaa ilmoittautua uudelleen, käykää hakemassa apu!
Animaatiot
Etsikää monisteesta Animaatio-tekstiä ja suorittakaan niitä!
Animaatio: Tutki funktion kutsua
Versionhallinta
https://gitlab.jyu.fi/tie/ohj1/2021s/esimerkit.git
git clone https://gitlab.jyu.fi/tie/ohj1/2021s/esimerkit.git .
Etäsäilytykseen ei muutoksia kannata tallentaa jokaisen sitoutumisen jälkeen, vaan kokonaisuuksina sitten, kun on varma, että kaikki on kunnossa. Tarvittaessa on helpompi peruuttaa paikallisia muutoksia kuin etäsäilytykseen joutuneita muutoksia.
—Ehtolauseet
- Katso myös versioiden kehitys
- lisätään ehtolause edellisen päivän KolmionMetsasys-peliin.
- Katso moniste: Ehtolauseet
if (ehto)
{
lause1;
lause2;
...
lauseN;
}
Kysymyksiä:
Open plugin
Open plugin
Open plugin
Open plugin
Merkkijonot
Aliohjelmakutsuihin EI tule tyyppejä (ellei samalla luoda new
:llä uusia olioita, mutta siitä myöhemmin). Olisi 'väärin' kirjoittaa seuraavasti.
y = double Math.Sin(double x); // TÄMÄ ON VÄÄRIN!!! Kutsuun ei tule tyyppejä!
Alla oleva on oikein (olettaen että x
on hyvin määritelty).
y = Math.Sin(x);
Muista!
string
on muuttumaton (immutable). Vertaa tienviitta. Teksti ei voi muuttua.- jos tarvitsee muuttaa sisältöä, niin valinta on
StringBuilder
. Vertaa vaikka junan info-taulu.
Arvot muistissa
Olisi kivempi kun olisi robotille voitu sanoa
int a // laskisi autom mikä on vapaa paikka
input
copyto(a)
input
add(a)
output
Muistissa voisi olla:
osoite 100:
00000000000000000000000000000101000000000000000000000011110111100000000000000000000000000000010100000000000000000000001111100110
...
osoite: 990:
00000101010011010110000101110100011100110110100100000000000000000000010101101101011000010111010001110011011010010000000000000000
Ihmisen olisi tuota aika vaikea lukea ja siksi jaetaan tavuihin (8bit) ja vielä tavu kahtia ja merkitään samalla miten kääntäjä ja ajon aikainen muistinhallinta olisi voinut jakaa muistia:
i: 100 0000 0000 0000 0000 0000 0000 0000 0101 (5)
mj: 104 0000 0000 0000 0000 0000 0011 1101 1110 (990)
pituus: 108 0000 0000 0000 0000 0000 0000 0000 0101 (5)
mjPienena 112 0000 0000 0000 0000 0000 0011 1110 0110 (998)
...
990 0000 0101 0100 1101 0110 0001 0111 0100 (5 'M' 'a' 't')
994 0111 0011 0110 1001 0000 0000 0000 0000 ('t' 'i')
998 0000 0101 0110 1101 0110 0001 0111 0100 (5 'm' 'a' 't')
1002 0111 0011 0110 1001 0000 0000 0000 0000 ('t' 'i')
Tätäkin on vielä hankala lukea, joten usein 4bit jonoa merkitään vastaavalla heksadesimaalisymbolilla:
00 00 00 05 00 00 03 DE 00 00 00 05 00 00 03 E6 ... 05 4D 61 74 74 69 00 00 05 6D 61 74 74 69 00 00
ja jaettuna miten kääntäjä ja muistinallokointi olisi saattanut paikat nimetä:
i: 100 00 00 00 05 (5)
mj: 104 00 00 03 DE (990)
pituus: 108 00 00 00 05 (5)
mjPienena 112 00 00 03 E6 (998)
...
990 05 4D 61 74 (5 'M' 'a' 't')
994 74 69 00 00 ('t' 'i')
998 05 6D 61 74 (5 'm' 'a' 't')
1002 74 69 00 00 ('t' 'i')
Tätäkin on aika tylsä ajatella näin ja siksi pyrimme piirtämään saman ajatuksen visuaalisemmin:
Draw.io
vars.js
Animaatio: Tutki ToLower-toimintaa
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.