Demo 11

Palauta viimeistään tiistaina 6.4. klo 10.00. (Huomaa poikkeuksellinen aika.)

Läpikäynti tiistaina 6.4. klo 10.15.

PP6, perjantai 26.3.

PP6-tehtävät. Näistä saa pisteitä vain käymällä PP-ryhmässä Teamsin PP-kanavalla perjantaisin klo 14:15-16:00.

Mitä ovat PP-tehtävät?

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.

# d11tunnit

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. 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
# taulukot

Onko timissä joku ongelma. Antaa pelkästään Compile error?

VL: kokeileppa aluksi Visual Studiossa, jostakin syytä tässä tehtävässä ei näy virheilmoituksia jos kääntäminen ei onnistu. Mutta toimiva ohjelma kyllä toimii.

Koodin pääohjelma on piilotettu?

23 Mar 21 (edited 23 Mar 21)

Tehtävä 3

Vastaa alla oleviin kysymyksiin. Huomaa, että näissä kysymyksissä on vain yksi vastausyritys. Kuhunkin kysymykseen on tasan yksi oikea vastaus.

# d11t3kx
# d11t3kx2
# d11t3kx3
# d11t3kx4
# d11t3kx5

Funktio, jonka toiminta perustuu ongelman ratkaisemiseen palauttamalla se yhden tai useamman samanlaisen ongelman ratkaisemiseen. Mitä tämä tarkoittaa suomeksi?

24 Mar 21

Ymmärrettävämmin voisi sanoa, että funktio, joka tarvitsee itseään ongelman ratkaisemiseen tai ohjelman suorittamiseksi

25 Mar 21
# d11t3kx6

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.

Laita pisteesi Set Custom points -toiminnolla.

# bussipysakit

Täytyykö ohjelma saada pysähtymään (kaatumaan), jos matkustajien määrä menee alle nollan, vai riittääkö aliohjelman keskeyttäminen tekemälläni tavalla?

Ohjelman kaatumista on aina syytä välttää. Sinun toteutuksesi on siltä osin hyvä, vaikka ilman tulostamistakin pärjäisi. -JuhoK

04 Apr 21 (edited 06 Apr 21)

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)

# Aliohjelmakutsu

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";
# poista

Luokan nimi on ilmeisesti poista, jolloin Poista-niminen aliohjelma ei ole mahdollinen

Tässä luokka tulee kirjoittaa itse, mutta on totta että luokan ja funktion nimet eivät voi olla samat. -AJL

24 Mar 21 (edited 24 Mar 21)

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.)

# teoria1

b) Laske (laskutoimitukset mukaan) seuraavien binäärilukujen arvo 10-järjestelmän lukuna. Mitä oletuksia teit? (2 p.)

0100 0101      0011 1111     1000 0001
# teoria2

c) Oletetaan 8-bittisille negatiivisille kokonaisluvuille 2-komplementtiesitys. Mikä olisi luvun miinus viisi (-5) bittiesitys tällaisessa järjestelmässä? (1 p.)

# teoria3

Mites näissä nää pisteet oikein menee? Suluissa sanotaan 1 p., mutta mulla näyttää 0.167 / 0.167 tai 0.333/0.333

[Tentissä kukin tehtävä on (tavallisesti) kuuden pisteen arvoinen, tehtävä voi jakautua pienempiin kysymyksiin (kuten tässä tehtävässä a, b, c jne.).

Tässä demossa tehtävät pisteytetään kuitenkin “normaalisti” muiden demotehtävien tavoin. Eli suluissa oleva pistemäärä on sellainen joka tyypillisesti tällaisesta kysymyksestä annettaisiin. -AJL]{.answer}

23 Mar 21 (edited 24 Mar 21)

d) Binäärinen desimaaliluku 1001.1110 10-järjestelmän lukuna. (1 p.)

# teoria4

e) Pohdi, missä mielessä List on parempi kuin tavallinen taulukko? Entä missä mielessä huonompi? (2 p.)

# teoria5

f) Mikä ero on String ja StringBuilder -luokilla? (1 p.)

# teoria6

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ä.

# teoria7

h) Mitä tarkoittaa olion "muuttuminen roskaksi" ? (1 p.)

# teoria8

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

# villev1

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.

# salakirjoitus

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 :-)

# euler206

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.