Ohjelmointi 1, syksy 2024, luento11
Muu sisältö: Aliohjelmien tekeminen, taulukot, silmukat, if-lauseet, etsiminen, debuggaus, pelikenttä merkkijonosta
- Alkukysely
- muista animaatiot
- M: 10.3 Debuggaus
- M: 8. Oliotietotyypit, luokat ja oliot
- M: 14. Olioiden ja alkeistietotyyppien ero
- SuurinJaPienin.cs - taulukon Suurimman ja pienimmän etsiminen
- SuurinJaPienin.cs - luennolla tehty versio jossa ei päästy yhtä pitkälle
- TIM-lisäsivut: 2-ulotteiset taulukot
- M: 15.5 Moniulotteiset taulukot
- LumiukotTaulukolla.cs - lumiukon pallot taulukkoon
- Matriisit.cs -esimerkki 2-ulotteisesta taulukosta
- KentanMuokkaus.cs, moniulotteisten taulukkojen hyödyntäminen käytännössä
- Luennolle tehdyt koodit versionhallinnassa
- Luennon koodit versionhallinnassa
- 11. luento videona: Osa 1 ja2 MP4 alkuperäinen
- luentoseinä
1. Kurssin esimerkkiohjelminen hakeminen
siirry tyhjään hakemistoon johon haluat esimerkit
git clone https://gitlab.jyu.fi/tie/ohj1/v/2024/syksy/esimerkit.git .
seuraavan kerran jos olet muutellut niin
git stash
sitten
git pull -r
2. Rider/Visual Studion sanastoa
Katso: Sanasto, löytyy myös menusta
- assignment = sijoitus
- unassigned = sijoittamaton, alustamaton
Kerro jos jotakin puuttuu, sinne voi jättää kommentin tai lisätä loppuun puuttuvia sanoja, niin siirretään oikealla paikalleen ja selitetään.
Demot:
- Ollaan puolessa välissä! (d11 on tentin harjoittelu)
- Aloittakaa demojen teko ajoissa niin ehditte pääteohjauksissa saada apua!
- Muistakaa demojen harjoittelusivut
- Katsokaa tämä sivun silmukka-animaatioita
- Katsokaa Luento 10-sivun StringBuilder-animaatioita
3. Kertausta
4. Animaatiot ja silmukat
Lasketaan robotilla yhteen Input-hihnalla olevat luvut ja lopetetaan kun tulee vastaan 0. Lopuksi laitetaan tulos Output-hihnalle. Oletetaan että hihnalla on aina ainakin yksi 0. Muistipaikka 0:aa käytetään summana.
4.1 while
- muista myös debuggerilla mennä silmukoita läpi!
Robotti joka "tulostaa" luvut 1-3 (alle 4, muistipaikassa 0). count
on muistipaikassa 2. Muistipaikassa 1 on askeleen koko.
4.2 do-while
do
{
lause1;
lause2;
lauseX;
} while (ehto);
Robotti joka "tulostaa" luvut 1-3 (alle 4, muistipaikassa 0). count
on muistipaikassa 2. Muistipaikassa 1 on askeleen koko.
4.3 for
for (muuttujien alustukset; ehto; kasvatuslauseet)
{
lauseet; // silmukan runko-osa
}
Älä muuta silmukkamuuttujan arvoa muualla kuin tuolla for
-rivin kasvatuslauseissa.
4.4 Robottitehtävä
Muuta robotin ohjelma sellaiseksi, joka laskee Input-liukuhihnalla olevat positiiviset luvut yhteen ja "tulostaa" niiden summan Output-hihnalle. Laskeminen lopetetaan ja tulos tulostetaan kun hihnalta tulee vastaan luku 0. Oletetaan että hihnalla on aina luku 0.
4.5 foreach
int i = 0;
while (i < luvut.Length)
{
int luku = luvut[i];
...
i++;
}
vastaava for-silmukka
for (int i = 0; i < luvut.Length; i++)
{
int luku = luvut[i];
...
}
tätä vastaa foreach
, jossa ei esiinny indeksiä:
foreach (int luku in luvut)
{
...
}
5. Viitteet
5.1 Piirrostehtävä
5.1.1 drawio
Muokkaa alle kuvaa samaa tahtia kun etenet debuggerilla Olioviitteet
-luokan ohjelmaa.
5.1.2 vars.js
- piirtämisestä vars.js ohjeissa
Vastaus:
8010 = eka
s1 -> 8010
8040 = eka
s2 -> 8040
i1 = 11
i2 = 11
8070 = 3
it1-> 8070
8080 = 3
it2 -> 8080
s2 -> 8010
ref s1 -> new $1 eka
ref s2 -> new $2 eka
val i1 = 11
val i2 = 11
gn $3 w: 1
ref it1 -> [] $3 v1
$3[0] = 3
gn $4 w: 1
ref it1 -> [] $4 v1
$4[0] = 3
s2 -> $1
style $2 fill=lightgray
Vastaus:
ref s1 -> new $1 eka
new $2 eka
ref s2 -> $1
val i1 = 11
val i2 = 11
ref it1 -> [] $3 v1 3
ref it2 -> [] $4 v1 3
style $2 fill=lightgray
Muita kysymyksiä
Lisätäämpä vielä rivit
Console.WriteLine(s2);
s1.Append("Toka");
Console.WriteLine(s2);
6. Taulukot
- SuurinJaPienin.cs, demoissa!
2-ulotteiset taulukot
[0,0], [1,3], [2,0], [2,3], [3,2], [3,3], [5,2], [5,4]
1. Lumiukot taulukolla
LumiukotTaulukolla simple
Piirrä kuva kun ukot on palautettu taulukossa.
2. Matriisit
3. Kentän muokkaus matriisilla
TODO: vaihda kaikki public private
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.