Sinun UserID: 0
Ilmoittaudu missä ryhmässä (live/zoom/video) 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ä.
Ohjelmointi 1, s 2023 / 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 ma 13.11 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.
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 (tai zoom) osallistuminen, oppimateriaalin lukeminen, demotehtävien tekeminen, luentovideon katsominen, demojen palautustilaisuuteen osallistuminen 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:
Please
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ä.
Voit saada demopisteitä indeksoimalla luento/demovideoita, ks: Videoiden hakemisto aihepiireittäin 23 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.
Muista ilmoittautua TENTTIIN!
- tentti, ilmoittaudu heti TIMissä
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:
Ville 1
Tee Ville-tehtävät: 8.1-8.5. Tästä Villeen Muista: Villen käyttöohje.
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 koodaustehtävä (T1-T8, B1-5, G1-4)).
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.
Alkaa ainakin minulla kohdasta 45:50
VL: Aikaväli korjattu vastaamaan vuoden 23 sykyn videota
— 1 piti: 22.667 -> 1.000 {12,0,42,14,99,12,55} 0 99
... Lopetus tulkittu väärin: true
1 = testi 1
piti = mitä piti tulla
-> = mitä tuli
{..} = mitä taulukkoa käytettiin
0 = käytetty vialliset
99 = käytetty lopetus
Mikäli lopussa on tuo väärin: true niin silloin lopetusehto on
tulkittu väärin, eli sitä ei ole käytetty lopetusehtona vaan
"viallisena" ehtona.
Katso ihmeessä Demo 9 vastaava tehtävä, sen mallivastaus ja videoista vastauksen käsittely!
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.
Ota kynä ja paperia, piirrä siihen kolme palloa: ensimmäinen iso pallo ja seuraavat kaksi pienempää palloa. Sitten piirrä kunkin pallon säteet, keskipisteet ja miten ne saadaan säteiden, kulman ja x
ja y
avulla. Tällä perusteella täytä tehtävästä puuttuvat tiedot (kulman muutos ja säteen muutos).
Alla olevassa kuvassa vihreällä nykyiseen palloon liittyvät asiat ja punaisella tuleviin palloihin liittyvät asiat.
Katso kuvasta miten vSuunta (vasen suunta) ja oSuunta (oikea suunta) saadaan lausuttua käyttäen apuna arvoja suunta ja muutos. Tuon muutos arvon saat keksiä itse.
Lukiomatematiikkaa (vain avuksi että mitä lopun sin ja cos tekevät):
\[ \alpha = suunta - muutos \\ c = sade + r \\ x = c \cos \alpha \\ y = c \sin \alpha \]
Tee tehtävä ensin Riderissa, 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.
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.
Tehtävä 3. Lotto
M: 22.Dynaamiset tietorakenteet.
Tee lotto-ohjelma, joka arpoo 7 numeroa ja 3 varanumeroa 40:stä.
Sotkemisen Riderissa voit tehdä myös lisäämällä projektin viitteeksi Jypelin (Tools > NuGet > Manage Nuget Packages for ... > Etsi Jypeli.NET
) (Pikanäppäin alt + 7 avaa myös NuGetin) Valitse Jypeli.NET hiiren vasemmalla. Hakuikkunan oikealle puolelle tulee näkyviin solutionin projektit, tai valittu projekti. Paina vihreää + symbolia sen projektin kohdalta, mihin haluat Jypelin lisätä. Sitten voit käyttää
Jypeli.RandomGen.Shuffle(pallot);
Tai voit ottaa Demo 9 vastauksista Sotke.cs ja käyttää hieman muutettuna sen Shuffle-aliohjelmaa.
sotke.cs ei toimi.
VL: Linkki korjattu, vuodella 2023
—Tehtävä 4-5. n yli k
Erilaisten 7 numeroa sisältävien lottorivien määrä saadaan binomikertoimen kaavasta:
\[\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.
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:
Vinkki Jos kotikoneesi asetukset ovat suomalaisittain, olettaa Rider 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.
Viekö Neliöluku-linkki oikeaan paikkaan?
VL: Eikös se vie, mulla menee ainakin Neliöluku-otsikon kohdalle? https://tim.jyu.fi/view/kurssit/tie/ohj1/2023s/luennot/luento19#nelioluku
JK: Voi olla, että sun pitää täpätä sivun yläreunasta koska olet katsonut sivua ja klikata sen jälkeen "Avaa sisältö" -nappia.
—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.
Voit kokeilla halutessasi (ei pisteitä) piirtämistä alla olevalla DrawIO-työkalulla. Vastaus piirretään kuitenkin alempana olevalla vars.js:llä jota käytetään tentissäkin koska se osaa automaattisesti arvostella.
Tehtävä 10*: Viitteet 2
Tämä oli syksyn 2020 tenttitehtävä.
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ää.
B1-2. Valuuttakurssit
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ää Rider 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;
Kirjoita tänne tekemäsi tekstitiedosto.
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 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);
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 Tools
> NuGet
> Manage Nuget Packages ...
> Lisää System.Runtime.Numerics
Lisääminen tapahtuu valitsemalla paketti, ja painamalla oikealla olevassa ikkunassa vihreää + symbolia haluamasi projektin kohdalta.
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/.
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: (tuossa Javalla tehdyssä kuvassa pallot eivät ole täytettyjä, sitä ei tarvitse yrittää).
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".
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.
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.
PP2
PP2 a
Tee for-silmukka, joka tulostaa seuraavaa:
1
3
5
7
...
99
PP2 b
Tee aliohjelma LaskeMatkanKesto, joka laskee kuinka kauan jokin matka kestää annetulla matkan pituudella ja keskinopeudella.
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.
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ä.
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ä).
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.