Demo 11
Huom deadline vasta tiistaina 3.4. klo 11:59.
Demotilaisuus pidetään keskiviikkona. Paikka saattaa vielä muuttua---seuraa Korppia.
PP7, Perjantai 24.3.
PP-tehtävät (näistä saa pisteitä vain käymällä perjantain PP-ryhmässä. Tulevan perjantain PP-tehtävät jaetaan perjantaina.) Mitä ovat PP-tehtävät?
Harjoitustentti
Tehtävien perässä olevat pisteet (6 p. jne.) tarkoittavat pisteitä "harjoitustentissä". Tätä demokertaa silmällä pitäen laskentatapa kuten ennenkin, eli 1 pistettä / tehtävä (tai 2 pistettä tehtävässä 1-2).
Kurssilla opitut dokumentointi- ja ohjelmointikäytänteet koskevat tätä harjoitustenttiä kuin myös oikeatakin 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
Tunnit resetoitu 12.3. klo 14. Laitathan tuntisi uudestaan.
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.
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. Funktio EI saa järjestää taulukkoa. Mitä huomionarvoisia erikoistapauksia
voi olla? Määrittele miten ne käsitellään.
Luokka ja pääohjelma on kirjoitettu valmiiksi, mutta ne ovat piilossa.
Esimerkki:
- Parametrina taulukko:
3, 1, -7, 9, 15, 8
- Funktio palauttaa arvon
9
Jos haluat kirjoittaa Comtest-testejä, niin huomaa että luokan nimi on D11_T1
. Alla esimerkki / muistutus Comtest-testien syntaksista.
/// <example>
/// <pre name="test">
/// D11_T1.ToiseksiSuurin(new int[] {}) === 0;
/// </pre>
/// </example>
Onkohan tuossa testauksessa virhe, jos suurimpia lukuja on kaksi yhtä suurta, antaa ilmoituksen: ---- Taulukko: 14, 10, 11, -1, 14, -4, 8 Toiseksi suurin piti olla 14 Sinun ratkaisusi antaa 11 ************* Kuitenkin muilla luvuilla antaa oikein: ---- Taulukko: 12, 0, 12, 3, 9, -3, 13 Toiseksi suurin piti olla 12 Sinun ratkaisusi antaa 12
—Huomasin saman: Taulukko: 11, 2, 3, 1, 12, 12, -4 Toiseksi suurin piti olla 12 Sinun ratkaisusi antaa 11
—Miksiköhän ComTest ei toimi tyhjällä taulukolla? Ei toimi vaikka kopioisi tuon malli ComTestin ohjelmaan
—Ei saa käyttää mitään apuja taulokon käsittelyssä näköjään. Ei edes luvut. luvut.Max ja luvut.ElementAt-käskyjä. Noista ainakin valittaa.
—Ihan selvästi aja-kohdan comtestit rikki. Omat testit menee hyvin läpi ja jos on 2 samaa lukua jotka täyttää toiseksi suurimman ehdon niistä palauttaa ensimmäisen. Vaikka sitä ei tässä määritelty pitääkö eka osuma palauttaa.
—"Toiseksi suurin piti olla 4 Sinun ratkaisusi antaa 4" Asia selvä...
—Hi, can't understand what is wrong in my solution, returns in any cases the same as required
—Kokoajan tulee Compile error viestejä.Mistä johtuu??
—Tehtävä 3
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.
Laita pisteesi Set Custom points -toiminnolla.
Tehtävä 4
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ä 5
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.)
Tähän pitää siis palauttaa koko ohjelma. Pelkkä pääohjelma ja aliohjelma ei riitä.
—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
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. Missä mielessä huonompi? (2 p.)
f) Mikä ero on String
ja StringBuilder
-luokilla? (1 p.)
g) Paljonko on lauseke 34/7
C#:ssa?
Paljonko on 34%7
C#:ssa. (1 p.)
h) Mitä tarkoittaa että olio "muuttuu roskaksi"? (1 p.)
V1
Tee Ville-tehtävät: 10.1, 10.2. (Ville-tehtäviä ei oteta lukuun tenttipisteissä, ne ovat vain tässä lisäharjoituksen vuoksi.)
Muista: Villen käyttöohje
B1-3
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. 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.