Sinun UserID: 0

```

Palautus viimeistään: klo 11:00 ma 7.11.
Katso luennot-sivulta luennot 19 ja 20.

Ilmoittaudu missä ryhmässä (zoom) katsot demojen vastaukset (huom joka viikolla oma ilmoittautuminen)

  • Please to interact with this component.

    Ma 14-16
  • Please to interact with this component.

    Ma 16-18
  • Please to interact with this component.

    Ma 14-16 Zoomista
  • Please to interact with this component.

    Ma 16-18 Zoomista
  • Please to interact with this component.

    Katson demonpalautuksen videolta

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ä.
# aikajana
Tiedot päivittyvät tunnin välein. Viimeksi:

Please to interact with this component.

{}


Viikko 35
26.8.
36
2.9.
37
9.9.
38
16.9.
39
23.9.
40
30.9.
41
7.10.
42
14.10.
43
21.10.
44
28.10.
45
4.11.
46
11.11.
47
18.11.
48
25.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 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.

{}

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.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Please to interact with this component.

{}

Korjattu

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.

{}

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.

{}

Please to interact with this component.

{}

Tunnit

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.

{}

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.

{}

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.

{}

Ohjelmointi 1, s 2022 / Demo 10


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.

Oppimistavoitteet

Klikkaile ruksit niihin kohtiin jotka olet oppinut. Työkirja-sivulla näet yhteenvedon kaikista demoista.

# Oppimistavoitteet

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.

# vaikeaa

Edellisten demojen vastausten korjaaminen E1 (pakollinen)

# korjattu

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

Itsearvio A1 (vapaaehtoinen)

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.

# video1

TDD-pohja

Tässä voit testata ohjelmiasi jos ComTest ei toimi koneellasi

# ComTestPohjaCSx

Muista ilmoittautua TENTTIIN!

# kyselyTIM

Kysely TIMin käytettävyydestä

HUOMAA LUKEA HUOLELLA MIHIN PALAUTE LAITETAAN!!! TIMin PARANNUSEHDOTUSIVULLE EI SAA LAITTAA KURSSIN SISÄLTÖÖN KUULUVAA ASIAA! Ette kai te Microsoftille kirjoita jos joku on Wordillä kirjoittanut huonon teoksen?

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. Tähän voi vastata nyt tai Demo 11 yhteydessä.

Sitten kun olet antanut palautteen, niin muista seurata miten siihen on vastattu! Täyden pisteen tehtävästä saa merkitä vasta, kun on osallistunut oman kehitysehdotuksen keskusteluun. Pelkästä ehdotuksesta saa laittaa 0.5 p.

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.

Katsokaa mielenkiinnosta TIMin tekemättömien asioiden lista:

# kysely

Ville 1

Tee Ville-tehtävät: 8.1-8.5. Tästä Villeen Muista: Villen käyttöohje.

# villev1
# tauno2p

Tauno* (max 2p)

Tämä oli syksyn 2015 tenttitehtävä. Vaikka tästä saakin tähtitehtäviin vaadittavat 2 pistettä, on kaveriksi tehtävä minimeihin joku toinenkin ohjelmatehtävä.

Katso Demo 2:n ATK-tehtävä. Tee aliohjelma ja testit, jotka toteuttavat tuon määrityksen. Testejä kirjoitettava vähintään saman verran kuin Demossa 2 oli "testitapauksia". Muista katsoa ko. tehtävän käsittely demosta 2.

# v2

video ei toimi

VL: entä ny? toimii!

31 Oct 22 (edited 01 Nov 22)

Ajovirheiden tulkinta

Oljenkorsi 1

# tauno
# t12

Tehtävä 1-2. Rekursiivinen pallokuva

M: 21. Rekursio.

Katso mallia rekursiivisesta kolmion piirtämisestä. Tee mallia muokaten ohjelma, joka piirtää alla olevan kuvan kaltaisen puun rekursiolla.

HUOM : Jos tehtävä ei aukea, älä aloita tällä tehtävällä, vaikka tämä periaatteessa onkin helppo tehtävä. Tehtävän ymmärtämiseksi on lähes pakko että on katsonut luennon 19.

Oljenkorsi

Tee tehtävä ensin Visual Studiossa, jottei synny ikuisia rekursioita TIMiä kuormittamaan. Muita kohtia ei tarvitse muuttaa kuin mitä kommenteissa on sanottu, eli piirtää yksi pallo, tarkistaa että rekursio loppuu ja laittaa sopivat lausekkeet kysymysmerkkien (???) kohdalle. Muista että Jypelin oliot ilmoitetaan leveytenä ja korkeutena.

# v1
# RekursioPallo

Hyvä alkukulma piirtämiseen on vaikkapa pi/2 (saat piin arvon kirjoittamalla Math.PI). Pallon säteeksi voit antaa vaikka 100. Kokeile vaihdella suuntaa ja sädettä muuttavia vakioita ja katso miten ne vaikuttavat kuvaan.

# tlotto

Tehtävä 3. Lotto

M: 22.Dynaamiset tietorakenteet.

Tee lotto-ohjelma, joka arpoo 7 numeroa ja 3 varanumeroa 40:stä.

Tulee lotto.cs(56,13) error: CS0103: The name "TIMconsole does not exist in the current context. Ohjelma toimii muutoin Visual Studiossa, debuggerilla käyty läpi.

VL: Älä käytä ReadLine

03 Nov 22 (edited 03 Nov 22)
# t3
# lotto

Tulee compile error: lotto.cs(5,7): error CS0246: The type or namespace name 'Jypeli' could not be found (are you missing a using directive or an assembly reference?) Ei ilmeisesti voi ite korjata.

VL: entä nyt?

Toimii!

31 Oct 22 (edited 01 Nov 22)

Meikäläisellä herjaa vieläkin tuota CS0246 koodia jypelin suhteen.

VL: Nyt en ymmärrä? Tuo sun 12:33 ajettuhan on mennyt läpi ja tuottanut 1p.

03 Nov 22 (edited 03 Nov 22)

Sotkemisen Visual Studiossa voit tehdä myös lisäämällä projektin viitteeksi Jypelin (Dependencies hiiren oikealla > Manage Nuget Packages > Etsi Jypeli.NET) ja sitten

Jypeli.RandomGen.Shuffle(pallot);

Tai voit ottaa Demo 9 vastauksista Sotke.cs ja käyttää hieman muutettuna sen Shuffle-aliohjelmaa.

Sotke.cs linkki ei taida toimia.

VL_ Kiitti, korjattu.

02 Nov 22 (edited 02 Nov 22)

Tehtävä 4-5. n yli k

M: 16. Toistorakenteet.

Erilaisten 7 numeroa sisältävien lottorivien määrä saadaan binomikertoimen kaavasta:

Katso: http://fi.wikipedia.org/wiki/Kombinaatio.

\[\binom {40}{7} = \frac {40!}{7! * (40-7)!} = \frac{34*35*36*37*38*39*40}{ 1*2*3*4*5*6*7} = 18643560 \]

Tulos voidaan laskea käyttämällä long -tyyppisiä lukuja. Tee funktio long NYliK(int n, int k) jonka kutsulla NYliK(40, 7) saat mainitun tuloksen. Tulosta ei voi laskea keskimmäisestä kaavasta, koska 40! ylittäisi reilusti pitkienkin (long) kokonaislukujen lukualueen.

Vinkki: Tässä tehtävässä ei tarvita listoja tms., pelkästään kerto- ja jakolaskuja sekä silmukoita. Vastaus on nätimpi, jos avuksi kirjoittaa yhden pienen aliohjelman. Eikä tehtävässä saa käyttää mitään valmiita, esim Math-kirjaston, funktioita.

# t45
# kombinaatiot

Tehtävä 6: Poikkeukset

M: 23. Poikkeukset.

Tässä tehtävässä on tarkoitus harjoitella poikkeusten käyttöä. Käytännön elmässä yksi useimiten vastaan tuleva tilanne on, että käyttäjältä kysytään merkkijono (jonka on tarkoitus olla oikeasti luku). No käyttäjähän ei anna aina lukua muodossa jota toivottiin.

Kirjoita funktio MuutaJono(String s, double oletus) siten, että seuraava ohjelma toimii:

# poikkeukset

Vinkki Jos kotikoneesi asetukset ovat suomalaisittain, olettaa Visual Studio Double.Parseen tulevan merkkijonon erotinmerkkinä olevan pilkun. Jos haluat samat asetukset kuin Timissä, eli piste on erotinmerkki, laita Parsen toiseksi parametriksi us joka on alustettu funktion alussa:

var us = new System.Globalization.CultureInfo("en-US")

Eli funktio yrittää poimia annetusta merkkijonosta liukuluvun (eli double tyyppi) ja palauttaa sen. Mikäli tämä ei onnistu, palauttaa se oletuksen. Funktiolle on oikeassa elämässä käyttöä koska käyttäjältä saatu syöte on aina merkkijono ja se pitää pystyä muuttamaan reaaliluvuksi laskemista varten. Tuo desimaalierotin on vaikeampi. Parse käyttää sitä erotinta, mikä on järjestelmään asetettu. Oikeasti pitäisi siis vielä osata tulkita oikealla tavalla riippumatta siitä, antaako käyttäjä pilkun vai pisteen. Tässä tehtävässä tuosta ongelmasta ei tarvitse välittää, vaan riittää yllä olevaan esimerkkiin käsin vaihtaa merkkijonoissa "12.3" piste pilkun tilalle, jos järjestelmässäsi on pilkku desimaalierottimena (C#-koodin vakioissahan se on aina piste). Tai sitten laitat itse funktioon Replace-metodilla niin, että pilkut vaihdetaan pisteiksi ennen Parse-kutsumista.

Kun toteutat funktiota MuutaJono, käytä hyväksi double-luokan funktiota double.Parse ja sitä, että jos muuttaminen ei onnistu, Parse heittää poikkeuksen.

Tehtävä 7*8: Neliöluku

Katso luennon 19 Neliöluku ja tee kolmiolukua vastaavat versiot neliöluvulle käyttäen rekursiota ja silmukkaa ilman kertolaskua. Aloita kirjoittamalla alle neliöluvun kaava. Tarkista laskemalla, että kaavasi pitää paikkansa ennen ohjelmoinnin aloittamista.

Huom! Pisteet tulevat testeistä.

En luennolla kirjoittanut noita kolmioluvun toteutuksia, mutta nyt ne on avattu tuonne luento 19 sivulle.

# neliolukutex
# nelioluku

En ymmärrä miten tässä voisi olla käyttämättä kertolaskua kun kaavassa minusta se on. Voisiko tähän antaa hieman vinkkiä? Omasta mielestäni koodini on oikein.

VL: kolmioluvussakaan ei tarvittu kertolaskua.

Eli kuuluuko tässä laskea neliöluku kolmiolukujen avulla, kun neliöluvun kaavassa tuo kertolasku löytyy?

VL: Sun kaavassa esiintyy, kaikilla ei esiinny kertolaskua. Miten voi muuten kirjoitta 2n? Ei ole tarkoitettu että tehdään kolmioluvun avulla vaikka niinkin toki voi tehdä.

01 Nov 22 (edited 02 Nov 22)
# listaviitteet

Tehtävä 9*: Viitteet

Alla on ohjelmakoodi ja sen muuttujista piirretty kuva tiettynä ajanhetkenä. Muuta alla oleva kuva vastaamaan toista ajanhetkeä kun listasta on otettu pois paikassa 0 oleva alkio ja lisätty uusi eläin. Älä muuta C#-ohjelmakoodia!

Piirto-ohjelman dokumentaatio löytyy: muuttujasuhteet-dokumentista. Tosin näiden tehtävien kannalta riittää se tieto mitä näissä demoissa on annettu.

# listaelaimista

Halutessasi voit kokeilla piirto-ohjelmaa DrawIO

# viitekuva10
# viitteet2

Tehtävä 10*: Viitteet 2

Kaikki muuten toimii ensimmäisessä kohdassa, mutta tulee "Muuttujalla $3 eri arvo != Ankka" mitä teen väärin?

VL: ajas debuggerilla ja katso mitä tuossa kohti on eri muuttujissa.

05 Nov 22 (edited 05 Nov 22)

Tämä oli syksyn 2020 tenttitehtävä.

# t63c

Taas piirtomoodissa. Tästä 4 kuvaa, kustakin 0.25 p. Täydennä ensin 1. kuva ja kun siitä saat 0.25p, kopioi täydennys seuraavaan kuvaan ja muokkaa vastaamaan sen tilannetta.

Vinkki: Älä ajattele piirtokieltä ohjelmana, vaan mieti mitä pitää kuvassa missäkin "laatikossa" olla, kun C# ohjelma on halutussa kohdassa ja mistä pitää mennä nuoli mihin. Ja sen sanot piirtokielellä. Esim Count ei tarvitse muuttaa monta kertaa, sen lopullinen arvo riittää.

# d9t10k1
# d9t10k2
# d9t10k3
# d9t10k4

Avaa sivu https://www.suomenpankki.fi/fi/Tilastot/valuuttakurssit/ ja kopioi leikepöydälle kaikki valuuttakurssit. Siis vain ne rivit, joilla on tietoja valuutoista. Lisää Visual Studion projektiisi uusi tekstitiedosto, liitä valuuttakurssit tekemääsi tekstitiedostoon ja tallenna se nimellä valuutat.txt. Muokkaa tiedosto seuraavan näköiseksi

Australian dollari  AUD 1,5117
Bulgarian uusi lev  BGN 1,9558
Brasilian real      BRL	3,8047
Kanadan dollari     CAD 1,496
...

Laita tiedosto myös kopioitumaan bin-hakemistoon klikkaamalla tiedoston päällä hiiren oikealla -> Properties -> Copy to output directory -> Always copy. Tiedosto voidaan nyt lukea seuraavasti: Lisää ensin using-lauseisiin lause

using System.IO;

Sitten Mainiin (tai johonkin muuhun aliohjelmaan)

 string[] valuuttalista;
 try
 {
     valuuttalista = File.ReadAllLines("valuutat.txt");
 }
 catch (IOException ex)
 {
     Console.WriteLine("Virhe: " + ex.Message);
     return;
 }

Tee aliohjelma KyseleValuuttoja, joka kysyy silmukassa käyttäjältä valuuttatunnuksen, ja sitten tulostaa annetun valuutan tiedot ruudulle. Ohjelma päättyy, kun käyttäjä antaa tyhjän syötteen. Eli tyyliin:

Anna valuutta >USD[ret]
Yhdysvaltain dollari     USD  1,1645
Anna valuutta >JPY[ret]
Japanin jeni             JPY  132,90
Anna valuutta >[ret]
Kiitoksia käytöstä!

Huomaa että TIMissä pitää varautua myös siihen, että lukemisesta voi tulla null:

            string komento = Console.ReadLine();
            if ( komento == null || komento.Equals("") ) break;
# tB12
# valuutat

Toteutin aliohjelman käyttäen REGEXiä, mutta en saa TIMissä ajettua ohjelmaa, koska using-lause puuttuu. Olisiko REGEX ollut mahdollista lisätä TIMin lauseisiin?

VL: nyt on

05 Nov 22 (edited 05 Nov 22)

Kirjoita tänne tekemäsi tekstitiedosto.

# valuutattxt

B3-4. Rekursiivinen puu

M: 22. Rekursio.

Katso mallia rekursiivisesta kolmion piirtämisestä suoraan canvakselle. Tee mallia muokaten ohjelma, joka piirtää alla olevan kuvan kaltaisen puun puu käyttäen rekursiota:

 * Puun yksi oksa ja kolme muuta rekursiivisesti
 *  x oksan alkupiste
 *  y oksan alkupiste
 *  d oksan suunta radiaaneina
 *  l oksan pituus
 *
 oksa( x, y, d, l) 
     viiva pisteestä (x,y) pisteeseen (x+l*cos(d),y+l*sin(d)) 
     jos l < 2 lopeta
     oksa(x+l*cos(d),y+l*sin(d),d+0.6,l*0.6);
     oksa(x+l*cos(d),y+l*sin(d),d-0.6,l*0.6);
     oksa(x+l*cos(d),y+l*sin(d),d,l*0.3);
# B34
# rekursiivinenPuu

Hyvä alkukulma piirtämiseen on vaikkapa pi/2 ja pituus vajaa puolet ikkunan korkeudesta. Tee ohjelmaan näppäinohjaus, jolla voit vaikuttaa kulman muutoskertoimeen 0.6, pituuden muutoskertoimeen 0.6 (eri luku kuin kulmalle) sekä keskioksan pituuden kertoimeen 0.3.

B5. BigInteger

Tutki, miten C#:issa toimii BigInteger -luokka ja tee NYliK(int n, int k) sen avulla. Tee siis tehtävää 4 vastaava toteutus erityyppisellä kokonaisluvulla.

Tarvitset tätä varten System.Numerics-paketin, jonka lisäys onnistuu klikkaamalla hiiren oikealla Dependencies > Manage Nuget Packages > Lisää System.Runtime.Numerics

# bigInteger

G1-2. Valuuttakurssit netistä

Tutki, miten C#:ssa voidaan lukea syötettä WWW-osoitteesta ja tee tehtävä B1-2 niin, että tiedot luetaan suoraan netistä. Muuten ohjelma toimisi samalla tavalla käyttäjän kannalta.

Voit käyttää lähteenä https://kurssit.it.jyu.fi/ITKP102/materiaalia/valuutat.txt Vielä parempi jos saat käytettyä suoraan: https://www.suomenpankki.fi/fi/Tilastot/valuuttakurssit/.

# valuutatNetista

Tämä toimii Visual Studiossa mutta ei TIM:issä. Antaa suommosia virhekoodeja: valuutatNetista.cs(39,20): error CS0246: The type or namespace name 'HttpRequestException' could not be found (are you missing a using directive or an assembly reference?) valuutatNetista.cs(44,13): error CS0246: The type or namespace name 'HttpClient' could not be found (are you missing a using directive or an assembly reference?) valuutatNetista.cs(44,37): error CS0246: The type or namespace name 'HttpClient' could not be found (are you missing a using directive or an assembly reference?) Onko neuvoa?

VL: Lisäsin puuttuvan using tuonne.

02 Nov 22 (edited 02 Nov 22)

G3-4. PNS

PNS: Pienimmän neliösumman sovitus on eräs tapa laskea eräänlainen "keskiluku" tai trendi aineistolle. Esimerkiksi meillä on havaintopisteitä, joiden periaatteessa pitäisi muodostaa "suora". Laskemalla PNS-suoran (\(y = a + bx\)) kertoimet \(a\) ja \(b\) voimme piirtää aineistoa parhaiten kuvaavan suoran. Katso http://mathworld.wolfram.com/LeastSquaresFitting.html kertoimien laskukaavat (12) ja (14) ja tee ohjelma, joka piirtää aineiston ja sitä kuvaavan PNS-suoran. Aineisto piirretään kuten demo 8 Kuvaaja.cs, eli voit käyttää siellä olevaa koodia pohjana itse aineiston piirtämiseen. Suora piirretään Paint -metodissa kutsumalla canvas.DrawLine-metodia. Esimerkki: pns.png (tuossa Javalla tehdyssä kuvassa pallot eivät ole täytettyjä, sitä ei tarvitse yrittää).

# PNS

Pahasti pihalla

PP-tehtävät (Pahasti Pihalla) on tarkoitettu niille, joilla on vaikeuksia aivan perusasioissa. Tarkoitus on, että nämä ovat helpompia tehtäviä (mutta yhdessä on monta tehtävää), joiden tekemisen jälkeen pakollisen kahden tähtitehtävän tekeminen voi olla on helpompaa. PP-tehtävät eivät ole tarkoitettu niille, jotka ovat tehneet säännöllisesti 4 tai enemmän tehtäviä/kerta.

PP1

PP1 a

Kirjoita for-silmukka, joka tulostaa

 0
 2
 4
 6
 ...
 98

Paina ensin "Näytä koko koodi".

# pp1a

PP1 b

Lataa itsellesi Laskuharjoituksia.cs tiedosto ja täydennä aliohjelmat siten, että pääohjelma tulostaa konsoliin annettujen lukujen tulojen summan 2 * 3 + 4 * 7.

# pp1b

PP1 c

Tee (funktio)aliohjelma, joka laskee (ja palauttaa) tuotteen alennetun hinnan kun viedään parametrina alkuperäinen hinta ja alennusprosentti. Tee pääohjelma, josta kutsut tekemääsi aliohjelmaa ja tulostat sen antaman arvon.

# pp1c

PP2

PP2 a

Tee for-silmukka, joka tulostaa seuraavaa:

1
3
5
7
...
99
# pp2a

PP2 b

Tee aliohjelma LaskeMatkanKesto, joka laskee kuinka kauan jokin matka kestää annetulla matkan pituudella ja keskinopeudella.

# pp2b

PP2 c

Tee (funktio)aliohjelma joka laskee (ja palauttaa) tuotteen alkuperäisen hinnan kun viedään parametrina alennettu hinta ja alennusprosentti. Tee pääohjelma, josta kutsut tekemääsi aliohjelmaa ja tulostat sen antaman arvon. Ks. Näytä koko koodi.

# pp2c
# eipeli

Korvaavia tehtäviä jotka ovat ei-pelejä - TÄYDENTYMÄSSÄ

Tehtävät 1-2 vaativat Jypelin käyttöä. Tähän kerätään vaihtoehtoisia tehtäviä, joissa on sama oppimistavoite, mutta voidaan tehdä tekstuaalisena konsolisovelluksena. Tehtävät ovat ensisijaisesti tarkoitettu niille, jotka eivät halua tai eivät voi käyttää Jypeliä.

Tällä kertaa EI SAA tehdä molempia, eli pitää tehdä joko perustehtäviä tai näitä korvaavia tehtäviä.

Tehtävä E1-2

Tämä tehtävä vastaa perustehtävää 1-2, mutta sen sijaan, että piirretään palloja, tulostetaan konsoliin puurakenne. Binääripuu on rakenne, jossa on solmuja ja jokaisella solmulla on vasen alipuu ja oikea alipuu. Alipuu voi olla tyhjä (eli viite alipuuhun on null).

Tehtävässä tarkoituksena on tulostaa puu 90 astetta vastapäivään kierrettynä niin, että juuri on vasemmassa reunassa näyttöä ja kukin sen alapuolella oleva solmu 5 välilyöntiä sisennettynä oikealle. Eli solmun sisennys riippuu siitä kuinka syvällä solmu on puussa (syvyys). Puun oikeassa alanurkassa oleva solmu tulostuu siis ylimmäksi.

Tässä käytetään esimerkkinä hakupuuta (tällä ei ole merkitystä tehtävän kannalta), missä on solmusta vasemmalle kaikki solum arvoa pienemmät alkiot ja solmusta oikealle kaikki solmun arvoa suuremmat alkiot.

Esimerkkituloste puulle, jossa solmujen arvot ovat 1-15 näyttää siis seuraavalta:

               15
          14
               13
     12
               11
          10
               9
8
               7
          6
               5
     4
               3
          2
               1

Eli 4 on solmun 8 vasemman alipuun juuri (juuri.vasenLapsi) ja 9 on solmun 8 oikean alipuun juuri (juuri.oikeaLapsi).

Tehtävässä puu on muodostettu valmiiksi tietorakenteeksi ja tarvitsee vain täydentää sen tulostamisessa tarvittava koodi.

Huom! Välin lisäyksen tulee olla 5 saadaksesi pisteet tehtävästä.

# rekursioKonsolilla

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

# oma1
# oma2

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