Demo 11
Palautus 8.4. klo 11:59 (huom poikkeuksellinen ajankohta)
Harjoitustentti
Tentissä jokainen tehtävä on (tavallisesti) kuuden pisteen arvoisia. Tässä demossa tehtävät pisteytetään kuitenkin "normaalisti" muiden demotehtävien tavoin.
Kurssilla opitut dokumentointi- ja ohjelmointikäytänteet koskevat tätä harjoitustenttiä kuin myös varsinaista tenttiä. Dokumentaation puuttumisesta tai ohjelmointikäytänteiden noudattamatta jättämisestä sakotetaan.
Tämän harjoitustentin tarkoitus on simuloida tenttitilannetta, joten aluksi on hyödyllistä kirjoittaa vastaukset kynällä ja paperilla. Tallenna sitten paperille kirjoitettu vastaus TIMiin juuri niin kuin sen paperille kirjoitit. Tämän jälkeen voit sitten tehdä tehtävän loppuun Visual Studiossa korjata mahdolliset virheet, ja palauttaa korjatun vastauksen TIMiin.
Oikeassa tentissä ei ole Ville-, PP- tai Gurutehtäviä.
Ajankäyttösi tällä viikolla
Työtuntien kirjaamisesta saa 0.5 demopistettä. Aseta pisteesi Set Custom Points -toiminnolla.
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 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.
Veikko Mannisen ja Heidi Lötjösen tutkimuskysely
Vastaa Veikko Mannisen ja Heidi Lötjösen tutkimuskyselyyn ja sen jälkeen kirjoita alle teksti "Olen tehnyt kyselyn".
Kysely koskee ohjauksia ja niistä saamiasi kokemuksia sekä hyötyjä. Voit toki vastata kyselyyn vaikka et olisi ohjauksiin osallistunutkaan.
Laita itsellesi yksi piste Set Custom Points-toiminnolla.
Tehtävä 1-2*
Aseta pisteesi Set Custom Points -toiminnolla väliltä 0 -- 2.
Tee funktio ToiseksiSuurin
, joka ottaa parametrina kokonaislukutaulukon. Funktio etsii ja palauttaa tuon taulukon toiseksi suurimman alkion. Tässä toiseksi suurimmalla alkiolla tarkoitetaan järjestyksessä toista alkiota, mikäli taulukon alkiot järjestettäisiin laskevaan suuruusjärjestykseen, esimerkiksi taulukon [3, 7, 1, 7] toiseksi suurin olisi 7. Funktio EI kuitenkaan saa järjestää taulukkoa. Funktio ei myöskään saa muuttaa alkuperäistä taulukkoa. Mitä huomionarvoisia erikoistapauksia voi olla? Määrittele miten ne käsitellään.
Pääohjelma on kirjoitettu valmiiksi, mutta se on piilossa.
Esimerkki:
- Parametrina taulukko:
3, 1, -7, 9, 15, 8
- Funktio palauttaa arvon
9
Tehtävä 3
Vastaa alla oleviin kysymyksiin. Huomaa, että näissä kysymyksissä on vain yksi vastausyritys. Kuhunkin kysymykseen on tasan yksi oikea vastaus.
Tehtävä 4
Tee myös using
-lauseet, luokka ja pääohjelma omatoimisesti tähän tehtävään. Pääohjelman voit jättää tyhjäksi tai sitten laittaa sinne yhden ao. funktion kutsun.
Bussi liikkuu kaupungissa ja pysäkin kohdalla ottaa kyytiin ja pudottaa matkustajia pois.
Tee funktio Matkustajia
, jolla on parametrit
int matkustajiaAluksi
, joka kertoo kuinka monta matkustajaa bussissa on ennen kuin yhdelläkään pysäkillä on käyty,
List<int[]> pysakit
, joka on lista bussipysäkeistä. Kukin pysäkki on kokonaislukutaulukko (int[]
), jonka ensimmäinen alkio kertoo kuinka monta matkustajaa tulee kyytiin, ja toinen alkio kertoo kuinka monta matkustajaa poistuu bussista.
Funktio palauttaa kuinka monta matkustajaa bussissa on, kun kaikki pysäkit on käyty läpi. Huomaa, että bussissa olevien matkustajien määrä ei saa missään vaiheessa mennä alle nollan. Myöskään paluuarvo ei saa olla nollaa pienempi.
Esimerkki kuinka voit luoda listan pysäkeistä:
List<int[]> pysakit = new List<int[]>();
pysakit.Add(new int[] {5,4});
pysakit.Add(new int[] {3,2});
Laita pisteesi Set Custom points -toiminnolla.
Tehtävä 5
Kerro omin sanoin ja esimerkein, mitä tapahtuu funktiokutsun yhteydessä? Käsittele funktiota, jossa on kaksi parametria. Milloin mikäkin muuttuja syntyy ja milloin häviää? Mikä ero on funktiokutsun kannalta perusmuuttujilla (bool, char, int, double
) ja oliomuuttujilla. (6 p)
Tehtävä 6
Kirjoita aliohjelma Poista(jono, kirjain)
, jolle seuraavat aliohjelman testitapaukset toimisivat. Tyypit joudut miettimään itse. Samoin miten <-
käytännössä toteutetaan. Kirjoita aliohjelmalle myös 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ä 7
Vastaa seuraaviin muutamien rivien selostuksella ja/tai esimerkillä (kerää enintään 6 pisteen edestä osatehtäviä):
a) Miten C#-ohjelma käännetään ja ajetaan komentoriviltä? Entä, jos ohjelma tarvitsee jonkin kirjaston avukseen? (2 p.)
b) Laske (laskutoimitukset mukaan) seuraavien binäärilukujen arvo 10-järjestelmän lukuna. Mitä oletuksia teit? (2 p.)
0100 0101 0011 1111 1000 0001
c) Oletetaan 8-bittisille negatiivisille kokonaisluvuille 2-komplementtiesitys. Mikä olisi luvun miinus viisi (-5) bittiesitys tällaisessa järjestelmässä? (1 p.)
d) Binäärinen desimaaliluku 1001.1110
10-järjestelmän lukuna. (1 p.)
e) Pohdi, missä mielessä List
on parempi kuin tavallinen taulukko? Entä missä mielessä huonompi? (2 p.)
f) Mikä ero on String
ja StringBuilder
-luokilla? (1 p.)
g) Paljonko on lauseke 34/7
C#:ssa? Entä paljonko on 34%7
C#:ssa. (1 p.)
Tämä kohta sisältää kaksi kysymystä. Vastauksesi tulee koostua kahdesta rivistä, joista ensimmäisen kysymyksen vastaus on yksi luku ensimmäisellä rivillä, ja toisen kysymyksen vastaus on yksi luku toisella rivillä.
h) Mitä tarkoittaa olion "muuttuminen roskaksi" ? (1 p.)
B1-3
Tee ohjelma, joka kysyy käyttäjän nimen, minkä jälkeen ohjelma "salakirjoittaa" nimen valokuvaan niin, että (jostakin kohti alkaen) kuvaan sijoitetaan (jotenkin) RGB-arvojen tilalle nimestä tulevia ASCII-koodeja.
Vinkki: Jypelin metodit Image.GetDataUInt()
, Image.SetData()
ja Color.PackRGB()
ovat avuksi.
G1-2
Euler problem 206. Laskun pitää mennä alle minuuttiin. Yksi lisäpiste jos lasku menee "erittäin nopeasti" (luokkaa millisekunteja.) En takaa, että saan itse menemään tuota super-nopeasti :-)
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.