avoin/avoin23
Huom! TÄMÄ ON AVOIMEN YLIOPISTON SIVU.
Et voi suorittaa kurssia, ellet ole ilmoittautunut täällä.
```
Demotilanne:
- Pisteet päivittyvät pienellä viiveellä.
- Värit: Punainen - puutteellinen. Vihreä - hyväksytty (vähintään 6p, joista 2p tähtiä)
Please
Osa-alue |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
12 |
12 |
Luennot | 1&2 | 3&4 | 5&6 | 7&8 | 9&10 | 11&12 | 13&14 | 15&16 | 17&18 | 19&20 | 21&22 | 23&24 | |||
Deadlinet |
HT1 (suu- nnitelma) |
Väli- kysely |
Debug- näyte |
HT2 (50%) |
Tentti- ilmo |
HT3 (100%) |
Tentti | ||||||||
Ohjaus | 1 | 2 | 3 | 4 | 5 | ||||||||||
Demo | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Summa | d% | |
Pisteet |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
|
Korjattu |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
||||
Tunnit |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please |
Please
Ohjelmointi 1, avoin 2023 / Demo 7
Tehtävät perustuvat luentoihin: 11 ja 12.
OPPIMISTAVOITTEET
Täytä sitä mukaa, kun koet oppineesi uusia asioita. Työkirja-sivulla näet yhteenvedon kaikkien demojen osalta.
Testaamisesta
Tämän kerran tehtävät vaikuttavat pitkiltä, mutta itse asiassa vastausten itse kirjoitettujen rivien lukumäärä tulee olemaan kurssin lyhimpiä. Eli lue tehtävät huolella ja keskity, tehtävät eivät ole niin vaikeita kuin tehtävien pituudesta voisi päätellä. Tehtävät 5, 6, ja B1 ovat muuten kanssa helppoja tehtäviä.
Mikroluokkia varten huom
Tiedot XNA-asennuksesta aina välillä "hajoavat" joidenkin henkilöiden profiileista. Tämä näkee jos yrittää tehdä Jypeli-projektia tai avata olemassa olevaa projektia ja siitä tulee virheilmoituksia. Ratkaisuna on "asentaa" XNA uudelleen:
- Sammuta Visual Studio
- Mene Explorerilla (tiedostoselain) hakemistoon
C:\MyTemp\VL_VSIX
taiN:\kurssit\MyTemp\VL_VSIX
- Klikkaa käyntiin
XNA Game Studio 4.0.vsix
- Vastaile Ok tarvittaessa
- Tulee virheilmoitus että on jo asennettu, mutta niin pitääkin.
- Avaa Visual Studio 2017 ja jatka hommia.
Jos ComTest ei ole asennettu tai ei toimi, niin
- Sammuta Visual Studio
- Mene Explorerilla (tiedostoselain) hakemistoon
C:\MyTemp\VL_VSIX
taiN:\kurssit\MyTemp\VL_VSIX
- Klikkaa käyntiin
C:\MyTemp\VL_VSIX\ComTestCSPlugin.vsix
- Vastaile Ok tarvittaessa (myös siinä missä kysytään että mihin Visual Studion versioon ja vaikka siinä ei näykkään VS2019).
- Tulee virheilmoitus että on jo asennettu, mutta niin pitääkin.
- Avaa Visual Studio 2019 ja jatka hommia.
Muista tarvittaessa monisteen täydennyssivut! (ylälinkissä kohdassa lisämateriaali).
Kysely 1
Käy lukemassa mitä demo 6:sta kerättiin kurssin palautteeseen palaute-sivulta ja osallistu siellä keskusteluun.
Jos et vastannut demo 6:ssa, niin vastaa kurssin välikyselyyn (ei kesän kurssilla). Kopioi kyselystä kohta Analysoi omia vaikeuksiasi tai tarkenna edellisiä alla olevaan laatikkoon. Muista painaa return aina kun rivi tulee täyteen ettei tule yli 65 merkkiä pitkiä rivejä. Tai paina wrap
aina välillä. Jos kirjoitit jotakin uutta, jota ei ole palaute-sivulla käsitelty, niin kopioi vastauksesi tai osa siitä palaute-sivulle
Pisteen tästä tehtävästä saavat merkitä ne, jotka eivät käyttäneet sitä demo 6:n vastaavassa kohdassa.
Ville 1
Muista että jos et tykkää Villestä, näitä ei ole pakko tehdä.
Tee Ville-tehtävät: 5.9-5.13,9.8 Villen käyttöohje
Jeliot 1
Tämäkään ei ole pakollinen, mutta voi olla hyvä havainnollistus jollekin! Vajaasta 30:stä tässä (syksy 2018) demossa kokeilleelta on tullut palautetta että oli hyötyä!
Ota itsellesi Jeliot.jar, eli ota tuo .zip, pura jonnekin ja käynnistä syntynyt Jeliot.jar. Copy/Paste koodialueelle Kutsuminen.java (vertaa Kutsuminen.cs, jollet ole nähnyt kutsunäytelmää, niin katso se samalla kun teet tätä). Nyt sinun on tarkoitus Jeliotilla katsella sama asia parametrin välityksestä, mikä oli kutsunäytelmässä. Kun koodi on koodialueella, paina Compile ja sen jälkeen lähde ajamaan ohjelmaa askel kerrallaan ja mieti ajatuksen kanssa mitä missäkin kohti tapahtuu. Vaikka esimerkkikoodi on Javaa, kaikki tapahtuu täsmälleen samalla tavalla C#:issa. Kerro mitä opit tästä ja/tai kutsunäytelmästä.
"Jeliot.jar"- 403 forbidden, ei ole oikeuksia tälle sivulle. saako tuon jostain muualta?
VL: Tutkitaa ja kysellään, eipä ainakaan äkkiä löytynyt.
—Tauno 1
Kohdassa b toteuta a-kohdassa Taunolla tekemäsi koodin pohjalta funktioaliohjelma
MuutaYli(int[] t, int raja, int miksi)
joka muuttaa taulukosta kaikki annetun rajan ylittävät alkiot miksi
-parametrissa annetuksi arvoksi ja joka palauttaa muutettujen alkioiden lukumäärän.
Tauno 2
Matriisin sisätulo: kerrotaan kahden matriisin vastinalkiot keskenään ja lasketaan tulot yhteen. Tässä tehtävässä lasketaan maskimatriisin ja varsinaisen matriisin osamatriisin sisätulo. Alla olevassa kuvassa hvainnollistettu tilannetta, jossa varsinaisesta matriisista otetaan indeksin [2,1]
ympärillä oleva maskin kokoinen osamatriisi.
Matriisi, kohdan [2,1] ympärillä oleva 3x3 osamatriisi merkitty vihreallä:
Maski:
Yllä olevan kuvan tapauksessa sisätulo olisi:
35*1 + 50*1 + 60*1 +
50*1 + 90*1 + 102*0 +
20*0 + 34*1 + 44*1 = 363
Kun yllä olevassa kuvassa laitat maskin johonkin kohti, näet missä indekseissä olevat luvut kerrotaan keskenään ja summataan. Huomaa että maskin indeksit eivät riipu siitä, mihin kohti matriisissa se laitetaan.
Tätä tehtävää ei tehdä oikealla Taunolla, mutta periaatteessa samalla idealla. Ongelmana on tällä kertaa matriisin sisätulon laskeminen. Eli lyhyesti sanottuna otetaan kahden matriisin vastaavissa paikoissa olevat alkiot ja kerrotaan ne keskenään ja lasketaan näiden tulojen summa. Itse asiassa Sopulipelin ja sen harjoittelutehtävän naapurien määrän laskeminen olivat sisätuloja, joissa maski-matriisina olivat
1 1 1 0 1 0
1 0 1 1 0 1
1 1 1 0 1 0
Tee alla olevan aliohjelman tehtävä taunomaisesti, eli käyttäen vain vakionumeroita (lisättävä 6 riviä valmiiseen koodiin). Tehtävänä siis laskea mallimatriisin pisteen
[2,1]
ympärille tulevan 3x3 osamatriisin ja maskin sisätulo, eli kertoa vastinalkiot keskenään ja laskea tulot yhteen. Vrt. Demo 6 Tauno 2. Huom. Nyt "keskipiste" ei ole mikään erikoistapaus.Kohtaan Tauno 2.2 muuta vastauksesi niin, että käytät hyväksesi indeksejä
ix
,iy
vakioiden sijaan niin, että minkä tahansa ei-reunassa olevan osamatriisin sisätulo voidaan laskea. Eli aloita vaihtamalla[2,1]
tilalle[iy+0,ix+0]
ja muihin vastaavasti.(Vapaaehtoinen) koita tehdä sama silmukalla
Muuta vielä edellistä vastausta niin, että saat kaikki rivit muotoon
summa += luvut[iy + y, ix + x] * maski[y+1, x+1]; x++;
Sarja D. Käyttäjältä kysyminen (3 p)
- Sarjatehtävät ovat useammasta osasta koostuvia tehtäviä, joissa samaa ohjelmaa työstetään kussakin osassa eteenpäin.
- Seuraavaan osaan pääset aina vasta, kun olet lukinnut antamasi vastauksen.
- Lukitsemisen jälkeen voit edelleen työstää osioon antamaasi vastausta, muttet voi enää saada siitä lisää pisteitä.
- Ei haittaa, vaikket onnistu jokaisessa osassa, sillä saat lukitsemisen jälkeen aina kyseisen osan mallivastauksen, jotta voit edetä tehtävässä.
Lue ensin: 16.3.1 Kysyminen käyttäjältä.
Tässä sarjassa opetellaan kysymään ja hyödytämään käyttäjän syötteitä. Tavoitteena on rakentaa monesta aliohjelmasta koostuva ohjelma, joka analysoi ja tulostaa tietoa annetuista syötteistä.
Osa 1. Virkkeen kysyminen I
Aloita tekemällä syötettä kysyvä aliohjelma KysySyöte
. Tätä aliohjelmaa voitaisiin kutsua pääohjelmasta seuraavasti (ks. "Näytä koko koodi").
string syote = KysySyote();
Console.WriteLine($"Syötteesi oli \"{syote}\".");
Huom! Pisteytyksen toimimiseksi ohjelman tulee tulostaa TÄSMÄLLISESTI
Anna virke >Kissa istuu puussa
Syötteesi oli "Kissa istuu puussa".
Vinkki! Tarvitset syötteen kysymisessä ohjelmaa Console.ReadLine()
.
Osa 2. Virkkeen kysyminen II
Nyt kun syöte on onnistuneesti saatu kysyttyä, voidaan sen sisältöä lähteä jatkokäsittelemään. Paloitellaan syötetty virke vaikka aluksi osiin välilyöntien kohdilta. Toisin sanottuna katkotaan virke sanoiksi.
Tee aliohjelma Erottele
, joka palauttaa virkkeen sanat taulukossa.
Huom! Pisteytyksen toimimiseksi ohjelman tulee tulostaa TÄSMÄLLISESTI
Anna virke >Kissa istuu puussa
Syötteesi koostui sanoista:
Kissa
istuu
puussa
Osa 3. Virkkeen kysyminen III
Syötettä on nyt onnistuneesti käsitelty, mutta se tapahtuu vielä toistaiseksi pääohjelmassa (Main
). Voisikin olla järkevämpää käsitellä syöte jo aliohjelmassa KysySyote
.
Muuta aliohjelmaa KysySyote
niin, että syötetty virke pilkotaan sanoiksi jo sen sisällä.
Huom! Pisteytyksen toimimiseksi ohjelman tulee tulostaa TÄSMÄLLISESTI
Anna virke >Kissa istuu puussa
Syötteesi koostui sanoista:
Kissa
istuu
puussa
Vinkki! Älä turhaan kirjoita erottelevaa algoritmia uudestaan, vaan kutsu jo tekemääsi aliohjelmaa Erottele
sopivassa paikassa.
Osa 4. Sanojen kysyminen I
Käyttäjältä voidaan pyytää useampikin kuin yksi syöte. Tehdäänkin nyt a-c -kohtien toteutus toisin päin: sen sijaan, että pilkotaan pitkä teksti lyhyemmiksi paloiksi; muodostetaan nyt pienistä paloista pidempi teksti.
Muuta aliohjelma KysySyote
kysymään käyttäjältä niin monta merkkijonoa, kunnes syötetään tyhjä (""
), mikä päättää kysymisen ja palauttaa yhdistää annetut syötteet yhdistettynä merkkijonona.
Huom! Et tarvitse tässä osassa aliohjelmaa Erottele
, mutta pisteytyksen toimimiseksi ohjelman tulee tulostaa TÄSMÄLLISESTI
Anna 1. sana >Kissa
Anna 2. sana >istuu
Anna 3. sana >puussa
Anna 4. sana >
Syötteet yhdistettynä: "Kissa istuu puussa"
Vinkki! Kannattaa käyttää StringBuilderia
ja loputonta silmukkaa. Mikä tahansa silmukka (myös näennäisesti loputon) voidaan lisäksi keskeyttää milloin tahansa komennolla break
, joka usein annetaan tietyn ehdon täyttyessä (esim. syötetään tyhjä rivi ""
).
Osa 5. Sanojen kysyminen II
Voimme edelleen muuttaa ohjelman palauttamaan yhden merkkijonon sijaan kaikki annetut merkkijonot, jokainen omana alkionaan, yhdessä taulukossa.
Muuta KysySyote
palauttamaan yhden merkkijonon sijaan annetut syötteet merkkijonotaulukkona. Käytä osan 3 ohjelmaa Erottele
hoitamaan tuo syötteen muuttaminen merkkijonotaulukoksi.
Huom! Pisteytyksen toimimiseksi ohjelman tulee tulostaa TÄSMÄLLISESTI
Anna 1. sana >Kissa
Anna 2. sana >istuu
Anna 3. sana >puussa
Anna 4. sana >
Syötteet:
Kissa
istuu
puussa
Sarja D jatkuu demoissa 8...
Sarja E*. Merkkijonojen muodostaminen (2 p)
- Sarjatehtävät ovat useammasta osasta koostuvia tehtäviä, joissa samaa ohjelmaa työstetään kussakin osassa eteenpäin.
- Seuraavaan osaan pääset aina vasta, kun olet lukinnut antamasi vastauksen.
- Lukitsemisen jälkeen voit edelleen työstää osioon antamaasi vastausta, muttet voi enää saada siitä lisää pisteitä.
- Ei haittaa, vaikket onnistu jokaisessa osassa, sillä saat lukitsemisen jälkeen aina kyseisen osan mallivastauksen, jotta voit edetä tehtävässä.
Tässä sarjassa harjoitellaan yhdistämään ja muuttamaan muuttujien sisältöjä tulostamista varten selkeään ja esittämiskelpoiseen muotoon.
Huom! Vain osa sarjan tehtävistä on tähtitehtäviä. Ne kaikki on erikseen merkitty tähdellä.
Osa 1*. Merkkijonojen yhdistmäinen
Tee ensin aliohjelma YhdistaJonot
, joka yhdistää kaksi merkkijonoa yhdeksi, erottaen ne toisistaan yhdellä välilyönnillä ' '.
Huom! Ei saa käyttää valmiita ohjelmia, kuten string.Join
.
Osa 2*. Merkkien yhdistäminen
Tee seuraavaksi aliohjelma MerkitJonoksi
, joka osaa yhdistää minkä tahansa mittaisen merkkitaulukon alkioiden arvot yhdeksi merkkijonoksi.
Huom! Ei saa käyttää valmiita ohjelmia, kuten string.Join
.
Osa 3. Yhdistäminen erottimella
Usein taulukon sisällön tulostaminen putkeen (b-kohta) tai allekkain riittää. Joskus saatetaan kuitenkin haluta erottaa alkiot selkeammäin toisistaan ja listata ne jonkin merkin, kuten välilyönnin (' ') avulla. Tällaista merkkiä kutsutaan erottimeksi. Kokonaisuuksien erottaminen voi kuitenkin olla kuitenkin yllättävän haastavaa, jos erottimena halutaan käyttää jotakin kuin pelkkää välilyöntiä. Näin käy erityisesti silloin, kun listaus tehdään silmukassa.
Muuta aliohjelmaa MerkitJonoksi
siten, että se erottelee jokaisen merkin toisestaan merkkijonolla ", ". Ohjelman tulee toimia seuraavasti:
char[] merkit = new char[] { 'V', 'e', 's', 'k', 'u' };
string merkitJonona = MerkitJonoksi(merkit);
Console.WriteLine($"Taulukko lueteltuna: \"{merkitJonona}\".");
Tulostaa: Taulukko lueteltuna: "V, e, s, k, u".
Huom! Ylimääräisiä erotinmerkkejä ei saa olla listaa edeltämässä tai sen perässä, ainoastaan lueteltavien väleissä. Ei myöskään saa käyttää valmiita ohjelmia, kuten string.Join
.
Sarjan E loppu.
Sarja F*. Merkit ja kirjaimet (4 p)
- Sarjatehtävät ovat useammasta osasta koostuvia tehtäviä, joissa samaa ohjelmaa työstetään kussakin osassa eteenpäin.
- Seuraavaan osaan pääset aina vasta, kun olet lukinnut antamasi vastauksen.
- Lukitsemisen jälkeen voit edelleen työstää osioon antamaasi vastausta, muttet voi enää saada siitä lisää pisteitä.
- Ei haittaa, vaikket onnistu jokaisessa osassa, sillä saat lukitsemisen jälkeen aina kyseisen osan mallivastauksen, jotta voit edetä tehtävässä.
Lue ensin: 12.8 Char-luokka ja 27. ASCII-koodi.
Tässä sarjassa tutkitaan lisää merkkien ja kirjainten eroja sekä niiden suhdetta merkkijonoon.
Nähdäksesi pääohjelman Main
, voit avata sen ja kaiken muun piilotetun koodin jokaisessa osassa painamalla linkkiä "Näytä koko koodi".
Huom! Vain osa sarjan tehtävistä on tähtitehtäviä. Ne kaikki on erikseen merkitty tähdellä.
Osa 1*. Merkillä alkaminen
Tee aliohjelma AlkaakoMerkilla(jono, merkki)
, joka palauttaa totuusarvon siitä, alkaako merkkijono valitulla merkillä, ei kirjaimella.
Osa 2*. Kirjaimella alkaminen
Tee aliohjelma AlkaakoKirjaimella(jono, kirjain)
, joka palauttaa totuusarvon siitä, alkaako merkkijono valitulla kirjaimella, ei merkillä.
Huom! Merkkien ja kirjainten välillä on merkitsevä ero. Siinä missä kirjaimet ovat aina merkkejä, merkit eivät aina ole kirjaimia. Mieti vaikkapa, ovatko esim. 'X'
ja 'x'
samoja merkkejä? Entäpä kirjaimia?
Osa 3*. Kirjaimen esiintyminen
Nyt kun ymmärretään kenties paremmin merkkien ja kirjainten erot, voidaan tehdä vähän haastavampiakin ohjelmia. Voidaan esimerkiksi tutkia esiintyykö jossakin merkkijonossa tiettyä kirjainta.
Tee aliohjelma EsiintyykoKirjain(jono, kirjain)
, joka palauttaa totuusarvon siitä, onko merkkijonossa yhtään etsittävää kirjainta.
Huom! Ei saa käyttää valmiita ohjelmia, kuten string.Contains
.
Osa 4. Merkkien ja kirjainten määrät
Pelkästään esiintymisen toteaminen ei aina anna riittävästi tietoa. Usein voikin olla parempi selvittää tarkempi tieto siitä, kuinka usein jokin esiintyy.
Tee aliohjelmat Merkkeja(jono, merkki)
ja Kirjaimia(jono, kirjain)
, jotka palauttavat merkkijonon merkkien ja kirjainten lukumäärät.
Osa 5. Useimmin esiintyvä merkki
Hyödyntämällä tietoa siitä, kuinka monta tiettyjä merkkejä jonossa esiintyy, voidaan myös selvittää vaikkapa jonossa useimmin esiintyvä merkki.
Tee aliohjelmat Eniten(jono, ehdokkaat)
, jolle annetaan parametreinä tutkittava jono ja merkkitaulukko vertailtavista merkeistä. Ohjelma palauttaa vertailtavista merkeistä sen, joka esiintyy tutkittavassa jonossa useimmin.
Vinkki! Voit hyödyntää osassa 4 tekemääsi ohjelmaa Merkkeja
selvittämään kunkin vertailtavan ehdokasmerkin määrän.
Sarja F jatkuu demoissa 9...
B1. Lukujen erottaminen merkkijonosta
Lue ensin: 17. Merkkijonojen pilkkominen ja muokkaaminen.
Merkkijonojen pilkkominen: Tee funktioaliohjelma ErotaLuvut(String jono)
, jonka ansiosta seuraava pääohjelma
public static void Main(String[] args)
{
double[] luvut = ErotaLuvut("2.23 3 4 5 k 9 ;5");
Console.WriteLine(String.Join(" ", luvut));
}
tulostaisi
2.23 3 4 5 0 9 5
Huom! Tehtävää ja sen testaamista voi vaikeuttaa se, että eri maissa ja koneiden asetuksissa käytetään eri desimaalimerkkiä. TIMissä ajettaessa käytetään desimaalipistettä.
Käytä String.Split
-funktiota ja Taulukot.cs:ssä olevaa ErotaDouble
-funktiota yksittäisen merkkijonon muuttamisessa reaaliluvuksi. Kopioi tämä aliohjelma (sisältöineen) mukaan koodiin. ErotaDouble
toimii vaikka jonoksi annetaan vääränlaisiakin syötteitä ja sille voi valita mitä tällöin palautetaan. Ks. funktion ComTestit
.
Tälle eräs hyötykäyttö on esimerkin Kuvaaja.cs metodissa KysyKoordinaatti
, jota kutsutaan jos painetaan hiiren oikeata nappia. Tällöin kysytään käyttäjältä pisteen koordinaatti ja luodaan uusi vihreä pallo ko. kohtaan. Ohjelman puhelinversiossa sama kysytään kun pyyhkäistään näyttöä ylhäältä alas.
B2. Monenneksiko eniten
Tehtävänäsi on tehdä funktio Yleisin
, joka palauttaa merkkijonon n:nneksi yleisimmän merkin. Yleisin
vastaanottaa kaksi paramteriä: 1) tutkittavan merkkijonon ja 2) luvun, joka kertoo monenneksiko yleisintä merkkiä etsitään. Tuon jälkimmäisen parametrin tulee myös olla valinnainen, jonka oletusarvona on 1
.
Laita siis alla olevan ohjelman valmiiksi annettu pääohjelma Main
toimimaan edellä mainituilla ohjeilla.
Vinkki! Kannataa ehkä tallettaa tutkittava merkkijono StringBuilder
-muuttujaan, ja poistaa siitä "kerroksittain" yleisimmät merkit pois, kunnes ollaan tarpeeksi "syvällä" ja löydetään n:näs merkki, josta ollaan kiinnostuneita. Kannattaa myös jakaa noita tehtäviä useampaan aliohjelmaan, eikä tehdä kaikkea yhdessä.
G1. Pyrstötähdet V
Ota demojen 6 mallivastaus tehtävään Pyrstötähdet IV ja aja se ensin sellaisenaan.
Muuta ohjelmaa niin, että pelissä pistelaskurin maksimiarvo on 20 ja siihen sidotaan näkyvien pisteiden (Label
) lisäksi nyt myös pistepalkki (ProgressBar
), joka täyttyy samaa tahtia, kun pisteitä kerätään.
Kun pistelaskuri saavuttaa maksimiarvonsa, ilmestyy ruudulle voitto-onnittelut. Samalla pelaajan ohjaimet poistetaan käytöstä.
Kokeile että toimii.
Pelissä käytetyt kuvat:
H1. Harjoitustyöhön joku viikon luentoihin liittyvä ominaisuus
Jatkossa on aina vapaaehtoinen tehtävä H1, jolla voi korvata muita tehtäviä mikäli harjoittelee samaa osaamistavoitetta kuin varsinaisissa tehtävissä tai Bonus-tehtävissä.
Lisää harjoitustyöhösi (se voi olla aluksi hyvinkin tyhjä "lumiukkopohja" jokin kurssiviikon aiheeseen liittyvä ominaisuus. Kommentoi koodiin selvästi missä "viikon" ominaisuutta on käytetty. Tällä viikolla esimerkiksi merkkijonon pilkkominen, silmukat, taulukot ja 2-ulotteiset taulukot.
Jos harjoitustyöhön ei ominaisuutta saa lisättyä, voit tehdä myös pienen muun ohjelman, jossa harjoittelet ko. ominaisuuksia mikäli varsinaisista tehtävistä ei mieleistä vastaavaa harjoittelua löydy.
Pyydetty linkki esim. muodossa:
https://gitlab.jyu.fi/oma_kayttajatunnus/ohj1ht
Mikäli teit toisenkin lisäyksen harjoitustyöhön, laita muutos seuraavaan laatikkoon.
PP1
Tee aliohjelma, joka kopioi annetun taulukon alkioittan uuteen taulukkoon. Tee myös aliohjelma, joka kopioi taulukon alkioit uuteen taulukkoon mutta kääntäen siten, että ensimmäinen alkio menee uuden taulukon viimeiseksi alkioksi, toinen alkio uuden taulukon toiseksi viimeiseksi jne.
Vinkki! Taulukot, 15. Taulukot ja 16.4 for-silmukka.
PP2
Tee funktio(aliohjelma) LaskeMerkkijonot
, jolle annetaan parametrina merkkijonotaulukko, sekä etsittävä merkkijono. Funktio laskee, kuinka monta etsittävää merkkijonoa taulukosta löytyi.
Vinkki! Taulukot, 15. Taulukot, 16.4 for-silmukka ja 13.2 if-rakenne.
Omaa tuotantoa
Näihin tehtäviin voit palauttaa jonkin oman kurssin tämän hetken oppimistavoitteita vastaavia tehtäviä. Ei kuitenkaan enää jos vastaavat tehtävät on tehty edellä olevissa tehtävissä.
Nämä on tarkoitettu lähinnä niille, joilla ei ole mahdollisuutta tehdä varsinaisia tehtäviä ajallaan esimerkiksi kertausharjoitusten tai sairauden takia. Yleensä jos tulee ajoissa ennakoitavia esteitä, pitäisi tehdä perustehtäviä tehdä etukäteen.
Nämä arvostellaan manuaalisesti ja opiskelijan pitää ottaa yhteyttä kurssin opettajiin kun toivoo näitä arvosteltavan. Jos tehtävä on liian lähellä mallivastauksia, ei sitä arvostella tai voidaan pyytää muuttamaan vastaustaan erilaiseksi. Samoin jos tehtävä ei liity viikon oppimistavoitteisiin (vertaa esim tähtitehtävät). Luonnollisesti nuo kaksi ohjelmaa eivät saa olla samanlaisia. Laita ohjelman kommentteihin mitä perustehtäviä nämä korvaisivat ja mikä olisi oma peruste millekin pistemäärälle (se voi olla enemmänkin kuin 1p/tehtävä).
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.