Sinun UserID: 0
```
Ilmoittaudu missä ryhmässä (zoom) katsot demojen vastaukset (huom joka viikolla oma ilmoittautuminen)
Please
to interact with this component. Please
to interact with this component. Please
to interact with this component. Please
to interact with this component. Please
to interact with this component.
Alla demotilanteesi.
- Pisteet eivät päivity tähän automaattisesti, vaan aina pienellä viiveellä.
- Värit: Punainen: Minimit ei täyty. Vihreä: vähintään 5p joista 2p tähtitehtävistä.
Please
Viikko |
35 25.8. |
36 1.9. |
37 8.9. |
38 15.9. |
39 22.9. |
40 29.9. |
41 6.10. |
42 13.10. |
43 20.10. |
44 27.10. |
45 3.11. |
46 10.11. |
47 17.11. |
48 24.11. |
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 | ||
Tärkeät |
ti: bonus pe: HT1 |
Väli- kysely |
pe: Debug- näyte |
ti: bonus pe: HT2 |
ti: bonus pe: HT3 |
Tentti pe: 2.12 |
||||||||
dh | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Summa | % | |
Demot |
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
Ohjelmointi 1, s 2022 / Demo 11
Jos haluat harjoitella vastaavilla tehtävillä, joihin saat myös mallivastaukset, niin katso:
HUOM! Joka kerta on saatava vähintään 2p tähtitehtävistä! Alle 5p tehneillä on huono ennuste loppukurssissa.
Demot palautetaan viimeistään maanantaina klo 11:00 mennessä. Voit palauttaa osan tai kaikki tehtäväsi etukäteenkin ja täydentää vastauksia määräaikaan mennessä. Alla mainitut mallivastaukset näkyvät vasta kun demojen palautustilaisuudet on pidetty.
- huomaa että Answer-linkistä pääset katsomaan muiden vastauksia kun palautusaika on ummessa
- mallivastaukset
- muiden vastaukset
Oppimistavoitteet
Klikkaile ruksit niihin kohtiin jotka olet oppinut. Työkirja-sivulla näet yhteenvedon kaikista demoista.
Palautus
Demot palautetaan viimeistään maanantaina klo 11:00 mennessä. Voit palauttaa osan tai kaikki tehtäväsi etukäteenkin ja täydentää vastauksia määräaikaan mennessä.
Ajankäyttösi tällä viikolla (0.25p)
Demokerran päätteeksi kirjoita arvio tällä viikolla käyttämästäsi työmäärästä. Laske työmäärään mukaan kaikki tällä viikolla käyttämäsi aika: lähiopetukseen (=zoom) osallistuminen, oppimateriaalin lukeminen, demotehtävien tekeminen, luentovideon katsominen, demojen purkutilaisuuteen osallistuminen (maanantaina) ja niin edelleen. Voit päivittää lukua viikon edetessä, se voi helpottaa arvion tekemistä. Huom! Siis tähän ei laiteta kurssin alusta kaikkia tunteja yhteensä, vaan vain tämän viikon tunnit. Tästä annettava 0.25 näkyy Pisteet-sivun demokerran summassa. Kirjoita pelkkä luku esim tyyliin 13.5
Ajankäyttösi tällä viikolla: Plugin numericfield error: Task id refers to another document, but you do not have access to that document.
Edellisten demojen vastausten korjaaminen E1 (pakollinen)
Kun tehtävien vastaukset on julkistettu (esim demopalautuksissa), pitää jokaisen korjata omat vastauksensa niin, että ainakin Tauno ja perustehtävät 1-6 tuottavat vähintään 1p kukin. Eli demon palautuksen jälkeen pitää demosivun näyttää vähintään 7 p.
Siis esim. ennen demo 2 tehtävien aloittamista pitää demoista 1 tulla vähintään mainittu pistemäärä.
Huomaa että useissa tehtävissä automaattiarvostelu ei ole likikään täydellinen ja vaikka automaatti antaisi täydet pisteet, se ei takaa että tehtävä olisi likikään oikein. Oikea vastaus on aina tarkistettava demonpalautuksesta (paikan päällä tai videoista).
Katso demonpalautusvideo ja kuvaile miten edellisen viikon demot sujuivat itsearviolomakkeeseen.
Kirjoita alla olevaan tekstilaatikkoon kunkin edellisen demokerran tehtävän kohdalle === katkoviivan alle
- millainen vastauksesi oli verrattuna malliin/demojen palautuksessa käsiteltyyn tehtävään
- olisiko vastauksessasi pitänyt olla jotakin enemmän/vähemmän
- jos et ollut tehtävää tehnyt, niin miksi?
- jos et ollut tehtävää tehnyt, niin mitä ymmärsit vastaavasta mallivastauksesta tai demojen palautuksessa käsitellystä vastauksesta
- osaisitko mallin nähtyäsi tehdä vastaavan tehtävän? Miten?
Lisää tarvittavat otsikkorivit lopuille tehtäville samaan tyyliin kuin alla on tehty.
Video 1
Voit saada demopisteitä indeksoimalla luento/demovideoita, ks: Videoiden hakemisto aihepiireittäin 22 Lisää em. videosivulle vähintään 3-linkkiä ja kirjoita alla olevaan laatikkoon, mitkä linkit lisäsit. Joka demokerralle voi merkitä aina vähintään 3:sta linkistä yhden demotehtävän.
TDD-pohja
Tässä voit testata ohjelmiasi jos ComTest ei toimi koneellasi
Kyselyt
Alla kolme kyselyä. Kustakin saa + 1p demokertymään, mutta kunkin kerran ei-tenttiä vaihtoehdon 5p pitää kerätä tästä demosta niin, että siinä on ainakin 4p muuta kuin näitä kyselyjä. Kaikki kyselypisteet silti toki otetaan summaan huomioon.
Kysely TIMin käytettävyydestä (1p)
Mikäli et vastannut vielä Demon 10:n yhteydessä alla olevaan vastaa nyt. Muista seurata onko edellisen kerran kysymykseesi/palautteesi vastattu.
HUOMAA LUKEA HUOLELLA MIHIN PALAUTE LAITETAAN!!!
Huomaa että kurssin asioihin, eli TIMiin kirjoitettuun sisältöön, liittyvät ehdotukset tulee laittaa joko kurssin keskusteluun tai palautteeseen. Esim: voisiko kaikki demot näkyä yhdellä sivulla - on kurssin kehitysehdotus, ei TIMin.
Kerro TIMin parannusehdotuksia. Ei ole pakko keksiä mitään uutta, voit olla samaa tai eri mieltä jonkin olemassa olevan kanssa. Eli mene sivulle TIMin parannusehdotuksia.
Sitten kun olet antanut palautteen, niin muista seurata miten siihen on vastattu! Palautteesta saa laittaa vain 0.5 p ja palautteen vastaukseen vastaamisesta toisen 0.5 p. Jos edellisdemossa on tuo jälkimmäinen 0.5 p jäänyt puuttumaan, voit hoitaa sen nyt.
Muista että et koskaan käytä palautteissa Miksi
-sanaa. Mieti myös miten antamasi palaute on suhteessa muihin käyttämiisi järjestelmiin ja mikä on teknisesti kallista/haastavaa toteuttaa ja kuinka oleellinen on toivomuksesi suhteessa n. 1000 toivomuksen listaan :-) Eli "Olisi kivaa" - "Toimii väärin ja korjattava välittömästi" akselilla on iso jatkumo.
Kirjoita alle lyhyesti mistä kerroit ja erityisesti jos sinulla on konkreettisia parannusehdotuksia.
Mitä ohjelmointi on - kysely (1p)
Vastaa kurssin jälkeisellä tiedolla kyselyyn: Mitä ohjelmointi on. Älä katso syksyn vastauksiasi ennen vastaamista, mutta vastaamisen jälkeen voit verrata syksyn vastauksiisi.
Linkin takana monet viittaukset kurssin syksyn 2021 kurssiin. Myös kyselyn lopussa oleva linkki palauttaa 2021 syksyn demoon.
VL: korjasikohan joku, koska mulla tuo menee 22 kyselyyn? Sen lopussa oli kyllä väärä linkki, sen korjasin.
—Yliopiston virallinen kurssikysely (1p)
Tämän sähköposti ei ole vielä tullut, yritän pyytää digipalveluilta että se saataisiin liikkeelle viimeistään pe 11.11.2022 Onko linkki tullut?
Vastaa yliopiston teettämään viralliseen kurssikyselyyn (tästä olisi pitänyt tulla teille henkilökohtainen sähköposti 10.11.2022). Mikäli postia ei ole tullut, tutki vielä roskaposti ja mainokset (erityisesti hotmail-käyttäjät ja gmail-käyttäjät).
Hätävara: Jos roskistakaan ei löydy, voit vastata käyttäen julkista vastauslinkkiä.
Tähän vastaaminen on sikäli tärkeää, että meitä arvioidaan sekä opettajina että yksikköinä (vain?) näiden perusteella :-(
On tullut
—Mallitentti
Tämä demo on pääasiassa mallitentti.
Tehtävien perässä olevat pisteet (6p jne.) tarkoittavat pisteitä "leikki"tentissä. Demopisteet lasketaan ja näytetään kuten ennenkin eli pääosin 1p/tehtävä.
Muista testit, kommentit ja hyvät ohjelmointikäytännöt myös niin "leikki"tentissä kuin oikeassakin.
Tehtävä 1-2*. Taulukot
Pääohjelma kutsuu aliohjelmaa (funktiota) EtsiToiseksiSuurin
, joka etsii ja palauttaa parametrina viedyn kokonaislukutaulukon toiseksi suurimman alkion. Jos taulukossa ei ole riittävästi alkioita, palautetaan int.MinValue
. Aliohjelma EI saa järjestää taulukkoa. Eikä käyttää muitakaan valmiita funktioita taulukon käsittelyyn.
Ennen aliohjelman kirjoittamista kirjoita EtsiToiseksiSuurin
-funktiolle testit.
Toiseksi suurimmalle on selkeästi kaksi eri vaihtoehtoa:
Ajattele toiseksi suurin seuraavasti: jos olisi kilpailu ja kilpailijoille tulokset, niin kuka olisi voittaja ja kuka toinen (mahdollisesti samalla tuloksella). Eli joukon
{3,2,8,5,8}
suurin on8
ja toiseksi suurin on myös8
. Sama voidaan tulkita niinkin, että aineisto ensin järjestetään (tässä tehtävässä ei saanut järjestää) ja sitten otetaan sen aineistoin toiseksi viimeinen luku, eli esimerkissä järjestetty aineisto olisi{2,3,5,8,8}
.Tämä ei ole ainoa tulkinta, toki tulkinta voisi olla sellainenkin, missä etsitään ensin joukon erilaiset alkiot ja niistä siten suurin ja toiseksi suurin. Tällä tulkinnalla edellisen aineiston suurin olisi
8
ja toiseksi suurin5
.
Myöhemmin olevat testien testit olettavat tuon 1. tulkinnan.
Tämän jälkeen taulukko ja sen toiseksi suurin alkio tulostetaan. Taulukon tulostaminen hoidetaan omalla aliohjelmalla TulostaTaulukko
. Tulostavia aliohjelmia ei tarvitse testata tällä kurssilla. (12 p)
Halutessaan helpoin tapa testata niitä on suunnitella ne testattaviksi, eli jakaa aliohjelman kahteen osaan: Funktioon joka tuottaa tarvittavan tulosteen merkkijonona (joka ei tulosta mitään tietenkään, mutta on funktiona helppo testata) ja tulostavaan aliohjelmaan, joka kutsuu tuota funktiota. Tulostava osa jää edelleen testaamatta, mutta jos se on vain yksi WriteLine
, niin sen voisi olettaa toimivan. Tästä on esimerkki ComTestien esimerkki-sivulla.
Esimerkki:
taulukko:
3 1 -7 9 15 8
funktio
EtsiToiseksiSuurin
palauttaa arvon 9 (ei tulosta), jonka jälkeen aliohjelmaTulostaTaulukko
tulostaa täsmälleen seuraavasti:Taulukon 3 1 -7 9 15 8 toiseksi suurin alkio on 9
Tulostuksen pitää olla TÄSMÄLLEEN mallin kaltainen kustakin "testistä".
Muista että kynä ja paperia on kovaa valuuttaa algoritmia ja ehtoja mietittäessä! Tai pelaa kaverin kanssa korttia niin että kaveri antaa yksitellen kortteja ja sinun pitää milloin tahansa olla valmis vastaamaan että mikä oli toiseksi suurin kortti. Mitä muistiinpanoja pitää minimissään tehdä?
Vinkki: Kaksi silmukkaa vain vaikeuttaa asioita tässä tapauksessa, yhdellä pärjää mainiosti!
Mikä output?
VL: Se että ohjelman tuoste on se mitä pitää.
—Tämä ei anna käyttää StringBuilderia. Onko tarkoituksella? Herjaa: error CS0246: The type or namespace name 'StringBuilder' could not be found (are you missing a using directive or an assembly reference?)
VL: System.Test lisätty.
—En saa jostain syystä noita output pisteitä vaikka ohjelmani tulostaa tismalleen saman mitä pyydetään. Missä vika?
VL: laskeppa käsin tuosta sun tulosteesta mikä on kunkin taulukon 2. suurin luku.
näköjään se kynä ja paperia auttaa aina
—Testeistä tulee minulla compile erroria, mutta en millään huomaa missä vika. Mikä on pielessä testeissä?
VL: Et voi alustaa taulukkoa tuolla {...}
-notaatiolla muuta kuin esittelyn yhteydessä. Mutta toimii
t = new int[]{...};
— Moi, mielestäni ohjelmani tulostaa oikeanlaisen lopputuloksen, mutta pisteet ovat toista mieltä. Osaatko auttaa löytämään ongelman?
VL: Sulla on välilyönti rivin alussa.
—Vinkki: Jos algoritmi ei ole kristallin kirkas, harjoittele Taunolla ja/tai kynällä ja paperilla.
Yleisiä virheitä:
- turhan monimutkaisia
- testeistä puuttuu
- tyhjä taulukko
- yhden alkion taulukko
- taulukossa suurinta lukua monta kpl
- sisennykset
- mystiset vakiot kuten 0, -1, -9999 jne...
- foreach:issä i ei oo hyvä alkion nimi
- ei tarvii kahta silmukkaa
- kommentit
- mitä tekee
- erikoistapaukset (tosin voi löytyä testeistä)
- paramaterit
- paluuarvon
Testien testaaminen 1 p
Seuraavissa testiajoissa oletetaan:
- jos taulukossa kaksi suurinta (eli yhtäsuurta suurinta), niin toinen niistä on 2. suurin
- jos ei riittävästi alkioita, palautetaan
int.MinValue
Testi: "Ekaa ei huomioitu: pitäisi tulla Failed, tuli: Passed. Pisteitä: 0" - Missä menee vikaan? Haastava korjata, kun en näe, mihin ekaan tämä testin tarkistus viittaa. :)
VL: ekaan alkioon.
—Testien testaaminen sanoo "Oikea koodi: pitäisi tulla Passed, tuli: Failed. Pisteitä: -20" En ymmärrä mitä tällä tarkoitetaan. Tarkoittaako se, että ylemmän kohdan koodissa on jotakin vikaa? Ylempi tehtävä antaa kyllä oikeat vastaukset ja täydet pisteet tehtävästä.
VL: "Antaa oikeat vastaukset" perustuu sinin omiin testeihisi. Nyt kun tetsejä testaaan, niin täysin oikein toimivasta mallikoodista testisi väittävät että se ei toimi.
—Testien testaamiseksi paina yllä olevaa Tarkista testit
-painiketta. Tässä testejäsi ajetaan joukkoa valmiiksi kirjoitettuja funktiota vastaan. Yksi funktiosta on täysin määritelmänmukaisesti toimiva ja siihen liittyvien testien pitäisi aina mennä läpi. Muut ovat erilaisia "viallisia" funtkioita joissa oleva vika pitäisi testeillä huomata, eli testien pitäisi paluttaa niistä Failure.
Ajon tuloksen tulee joukko rivejä tyyliin:
Vakiofunktio 4: pitäisi tulla Failure, tuli: Success. Pisteitä: 0
Tulkinta:
Vakiofunktio 4: testiä on ajettu sellaista funktiota vastaan, joka
on aina return 4; Yksikään testeistä ei huomaa
että tällainen funktio ei ole oikein
pitäisi tulla Failure: eli testien ajamisen olisi pitänyt tuottaa
epäonnistuminen
tuli: Success mutta testien ajaminen tuotti tuloksen että
testit menisivät läpi
Pisteitä: 0 onnistumisen määrä tällä testifunktiolla
Eli yksittäisen funktion testaaminen on onnistunut silloin, kun pitäisi tulla
ja tuli
jälkeiset tekstit ovat samat.
Tehtävä 3. Nimet
Pääohjelman taulukossa on nimiä muodossa
Ekaetunimi Tokaetunimi Kolmasetunimi Sukunimi
Sukunimi on aina mukana, etunimiä on vähintään yksi, enintään kolme. Tee aliohjelma TulostaNimet
joka tulostaa nimet aakkosjärjestyksessä sukunimen mukaan (järjestämiseen saa käyttää C#:in valmiita työkaluja), muodossa
Sukunimi E.T.K.
Ohjelma siis tulostaa:
Taulukko sisältää nimet:
Kaarle Kustaa Korkki
Seppo Pentti Ville Kinnunen
Åke Aarnio
Ulla-Maija Wikholm-Seppänen
Nimet tulostettuna oikeassa muodossa ja aakkosjärjestyksessä:
Aarnio Å.
Kinnunen S.P.V.
Korkki K.K.
Wikholm-Seppänen U.
(6p)
Miksi saan tästä 6p tehtävästä vain 0.4 pistettä vaikka kirjoittamani koodi tulostaa nimet tehtävänannon mukaisesti?
VL: oiskohan sulla yksi rivinvaihto liikaa?
Korjasin rivinvaihdon mutta edelleen 0.4 pistettä.
VL: sulla on ylimääräisiä välilyöntejä rivien lopuissa. Esim Notepad++:aan saa pluginin (ks menusta Plugins) Comapare
. Tässä tapauksessa yhteen tabiin tuon mallin sisältö ja toiseen oman ohjelman tuloste ja sitten vertaamaan.
Totta joo. Korjasin tämän ja nyt pisteet on 1. Vielä puuttuu aika monta pistettä :/
VL: Siis demoissahan näistä ei tule kuin se piste/tehtävä. Tuo 6p on mitä vastaisi tentissä.
Ok, kiitos vinkistä!
—Tehtävä 4. Aliohjelmakutsu
Kerro omin sanoin ja esimerkein mitä tapahtuu aliohjelmakutsun yhteydessä. Käsittele funktiomaista aliohjelmaa, jossa on ainakin muutama parametri. Milloin mikäkin muuttuja syntyy ja milloin häviää. Mikä ero on aliohjelmakutsun kannalta perusmuuttujilla (bool, char, int, double) ja oliomuuttujilla. (6 p)
Tehtävä 5. Poista
Kirjoita aliohjelma Poista(jono, kirjain), jolle seuraavat aliohjelman testitapaukset toimisivat. Tyypit joudut miettimään itse. Samoin miten <- käytännössä toteutetaan. Kirjoita aliohjelmalle testit ja pieni pääohjelma, jossa aliohjelman toimintaa testataan.(6 p.)
TYYPPI jono <- "kissa istuu puussa"; // alustetaan jono
Poista(jono, ' ') === 2; jono.ToString() === "kissaistuupuussa";
Poista(jono, 'u') === 4; jono.ToString() === "kissaistpssa";
Poista(jono, 'k') === 1; jono.ToString() === "issaistpssa";
Poista(jono, 'a') === 2; jono.ToString() === "issistpss";
Poista(jono, 's') === 5; jono.ToString() === "iitp";
Poista(jono, 'x') === 0; jono.ToString() === "iitp";
Tehtävä 6. Teoriakysymyksiä
Vastaa seuraaviin muutamien rivien selostuksella ja/tai esimerkillä (kerää max. 6p edestä osatehtäviä): (demossa kustakin saa 0.125 p, koska demoissa on tarkoitus tehdä ne kaikki).
Mitä teen väärin kun tämä tehtävä ei anna pisteitä?
VL: näköjään regexp ei tykkää alussa olevasta tyhjästä rivistä
—Hei! Nämä teoriakysymysdemot antavat 0.125 laittaa tähän sitten mitä tahansa bittejä. Onko mahdollista saada systeemi niin, että piste olisi merkki myös siitä, että demovastaus on oikein?
VL: ei jaksa kun jokainen kirjoittaa niin eri näköisen vastauksen että luotettavan tarkistimen tekeminen on tuskaa... Tai sitten pitäisi määritellä ihan tarkasti sen vastauksen muoto.
—Tehtävä 7*8: Piirtäminen
Seuraavassa on pala ohjelmasta, jossa on lista Object-tyyppisistä olioista. Object on tyyppi, joka voi olla mikä tahansa tietotyyppi C#:issa. Object listaan voidaan tallentaa niin merkkijonoja, StringBuildereitä kuin taulukoitakin. Ja paljon muutakin jos tarvitaan. Object-listan käsitte on sikäli hankalaa, että kun kohdalla oleva olio voi olla mitä tahansa, niin ei tiedetä miten sitä käsitellään. Siksi on valmiiksi tehty aliohjelma Tulosta
, joka osaa tulostaa Object
-listan. Eli tästä ongelmasta ei tarvitse välittää.
Ohjelmassa on tulostettu lista kunkin operaation jälkeen. Tehtävänä on piirtää kuva jokaisesta kohdasta, jossa on kutsu Tulosta()
. Kolme ensimmäistä vaihetta on piirretty sinulle valmiiksi omiin vastauslaatikoihinsa.
Voit niistä olevista kuvista kopioida asioita uusia vastauskuvia varten.
Pikkuinen 0 tai 1 alkukuvissa listan vasemmassa yläkulmassa kuvastaa listan alkioiden määrää (Count
). Muista päivittää myös sitä.
Tehtävä on pitkä, mutta kopioimalla edellisen vaiheen ei seuraava vaihe tarvitse paljoa muutoksia.
Vinkki: Vaiheen 4 oliot[1]
nuolen tulee osoittaa samaan paikkaan kuin luvut
-viitemuuttuja (nuoli samaan paikkaan). Liian monella se nuoli osoittaa luvut
-viitemuuttujaan, johon sen ei kuulu osoittaa.
Tässä tehtävässä ei ole tarkoitus tehdä "roskien keruuta" (Garpage Collection), eli nyt ei "uusiokäytetä" kekomuistiin (Heap) tulleita alueita.
Tämä harjoitustehtävä antaa vielä palautetta vääristä, mutta oikeassa tentissä alkupään vaiheet antavat palautetta, mutta palaute vähenee loppua kohti ja lopussa pitää itse tietää onko vastaus oikein vai ei. Välttämättä joka vaiheessa ei tentissä näytetä edes pisteitä ettei voi kokeilemalla saada oikeata vastausta.
Ohjeita piirtämiseen:
Ref nimi
= luo uuden viitemuuttujan kuvanNew $nro Sisältö
= luo uuden kekomuistissa olevan olion kuvan, jolla on nimenä$nro
ja sisältönä mainittu sisältö. Sisältö voi olla lainausmerkeissä tai ilman lainausmerkkejä.nimi -> $nro
= laitetaan viitemuuttujastanimi
viitenuoli kekoon luotuun olioon nimeltä$nro
new List $nro R4
= luo listan kuvan, jossa on viitteitä (Reference) 4 kpl.$1.count = 2
= asettaa listan$1
lukumäärälaskurin arvoksi 2new Array *$3 V3 2 3 4
= tekee taulukon jossa arvoja (Value) 3 kpl ja arvot perässä.Ref oliot -> new List *$1 R4
= lyhenne lauseille:Ref oliot new List *$1 R4 oliot -> $1
Lisää infoa piirtämisestä löytyy vars.js käyttöohjeesta.
Lisätehtävät
Seuraavat lisätehtävät (Ville, B ja PP) eivät kuulu "tenttiin".
Ville
Tee Ville-tehtävät: 10.1, 10.2., 11.1-11.2, 11.3-11.4
Voit ottaa pohjaksi Visual Studioon tiedoston: Robots.cs ja kirjoittaa koodin siinä ja sitten kopioida sen Villeen. Samasta tiedostosta voit lukea myös robotin "käyttöohjeita".
Koodi voi olla esim:
rc.withdraw();
for (int i=0; i<3; i++) rc.down();
rc.grab();
B1-2. Salakirjoitus kuvaan
Tee ohjelma, joka kysyy käyttäjän nimen ja sitten ”salakirjoittaa” tämän valokuvaan niin, että jostakin kohti alkaen kuvaan sijoitetaan jotenkin RGB-arvojen tilalle nimestä tulevia ASCII-koodeja.
PP
PP1
- Tee for-silmukka joka tulostaa seuraavaa:
0
3
6
9
12
15
- Täydennä aliohjelma TaytaTaulukko siten, että ohjelma tulostaa seuraavaa:
Taulukon paikassa 0 on luku 1
Taulukon paikassa 1 on luku 3
Taulukon paikassa 2 on luku 5
...
Taulukon paikassa 9 on luku 19
- Tee aliohjelma
PalautaKirjain
joka vastaanottaa kaksi parametria: merkkijonon ja kokonaisluvun. Aliohjelma palauttaa merkkijonosta merkin, jonka paikka merkkijonossa on annettu kokonaisluku. Aliohjelma kutsu voisi näyttää tältä:
PalautaKirjain("kissa istuu puussa", 8); // Palauttaa 't'
PP2
- Täydennä aliohjelma LahinLuku niin, että sille kirjoitetut testit voidaan ajaa virheettä. Testausta.cs
- Täydennä pääohjelma niin, että käytät apunasi kommenteissa mainittuja aliohjelmakutsuja. Tehtävässä ei tarvitse itse luoda yhtään aliohjelmaa. Aliohjelmia.cs
- Tee aliohjelma joka vastaanottaa merkkijonon ja lisää siihen merkkijonon " on hauskaa". (Käytä StringBuilder-luokkaa)
- Täydennä muuttujatyypit oikeiksi. Muuttujia.cs
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 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ä).
Please
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.