Ohjelmointi 2 2016 / Demo 1
Hei! Olisiko mahdollista saada kevään ohj1 tuttu demo summa laskuri myös tälle kurssille?
—AJANKOHTAISTA
- Vastaa kurssin alkukyselyyn käsitykseesi ohjelmoinnista
- (syksyn 2015 Ohj1 kurssilaisilla homma voi olla jo hoidettu)
Demoista yleisesti sekä niiden pisteistä ja miten niitä lasketaan, kerrotaan tarkemmin kurssin Demot-sivulla
Demot palautetaan viimeistään maanantaina klo 13:00 mennessä. Voit palauttaa osan tai kaikki tehtäväsi etukäteenkin ja täydentää vastauksia määräaikaan mennessä.
Demotehtävän alussa tai muualla iso M ja linkki tarkoittaa viittausta luentomonisteeseen. Linkki menee TIM-monisteeseen, mutta käynnistää joka kerta siitä uuden "esiintymän". Jos haluat säästää aikaa, katso M-kirjaimen jälkeen oleva otsikko ja etsi aina 1. kerran avatusta TIM-monisteesta vastaava otsikko (Ctrl-F) ja siirry siellä siihen kohtaan. Tai siirry M-linkin kohdalle, hiiren oikealla paina "Kopioi linkin osoite" ja mene kerran avattuun TIM-monisteen sivulle ja liimaa kopioitu linkki osoiteriville. Tämän pitäisi siirtyä oikeaan kohtaan lataamatta monistetta uudelleen.
Tehtävien pisteistä
Jokaisella tehtäväkerralla voi olla tavallisia tehtäviä (Tehtävä 1 - Tehtävä 8). Lisäksi on vapaaehtoisia Ville-tehtäviä Tauno-tehtäviä (T=Tauno), (V=Ville), lisätehtäviä (B=Bonus) ja harrastajien tehtäviä (G=Guru).
Tehtävät ovat yhden pisteen tehtäviä, ellei ole erikseen mainittu, että tehtävästä saa useamman pisteen (esim. Tehtävä 1
ja B2
eli Bonus 2
ovat maksimimissaan yhden pisteen tehtäviä, mutta G1-2
on maksimissaan kahden pisteen tehtävä) samoin kuin Tehtävä 1-4
on 4 pisteen arvoinen.
Prosentteja laskettaessa enimmäispisteet demokertaa kohti on tavallisten tehtävien lukumäärä (eli lähes poikkeuksetta 8 kpl). Siten Tauno/Ville/bonus/GURU-tehtävillä voi "kerätä pisteitä varastoon". GURU-tehtävien tarkoitus on myös tarjota asiaa jo osaaville hieman haastavampia tehtäviä. Kuitenkin kultakin demokerralta lasketaan max. 10 p. Eli vaikka tekisi enemmän kuin 10 pistettä, siirtyy automaattisesti korkeintaan 10 pistettä Korppiin. Toisella jaksolla (demot 8-12) maksimi on 8.
Jokaiselta kerralta on minimissään kerättävä 2 pistettä perustehtävistä tai B tai G tehtävistä (tämä ei vielä riitä minkään oppimiseen ja ennuste 2 tehtävää/kerta tekeville on erittäin huono), ja kunkin jakson minimiyhteispistemäärä on oltava vähintään 40 %. Tauno ja Ville eivät siis riitä laskettavaksi 2 pisteeseen minimiiin.
Mikäli tehtävissä on Aja
ja Test
-painikkeet, niin yleensä täydet pisteet saa vain mikäli molempia on käyty kokeilemassa ja molemmat menevät läpi.
Joissakin tehtävissä on sallittu käyttäjän itse muuttaa pisteitä (ruksi kohta Set custom points
). Tämä pitää tehdä jos automaatti antaa liian suuret pisteet vastauksen laatuun nähden. Tai mikäli automaatti ei kykene järkevästi pisteitä laskemaan.
Esimerkki arvolauseesta
Kurssin arvolause tulee kaavalla
pisteet = 3/5*vk + dp1 + 2*dp2
max=32, josta 12p = 1/5, 27p = 5/5, dpn = demopisteet, ei prosentit, jaksosta n
Esim: 50% pistettä ensimmäisestä jaksosta, 70% pistettä toisesta jaksosta ja välikokeesta 16 pistettä
dp1: 50% => 2p
dp2: 70% => 4p
pisteet = 3/5*16 + 2 + 2*4 = 19.6 => 3/5
Jos olisi toisesta jaksosta tehnyt vain minimin, eli 40% niin tulos olisi:
dp1: 50% => 2p
dp2: 40% => 1p
pisteet = 3/5*16 + 2 + 2*1 = 13.6 => 1/5
Vanhat vastaukset tai kavereiden vastaukset
Tehtävistä saattaa liikkua edellisten vuosien vastauksia ja jos niiden tai kavereiden vastauksien käyttämisestä jää kiinni, ovat rangaistukset lunttaamiseen verrattavia! Tärkeintä kurssilla on OPPIMINEN, ei demopisteiden kalastelu tai kopiointi. Kopiot saa jo demoissa valmiiksi painetussa muodossa.
Ryhmätyö on sallittua, mutta tämä ilmaistaan laittamalla aina tiedoksi - esimerkiksi ohjelman kommentteihin - kaikkien ryhmään osallistuneiden nimet.
Taunon käyttöohjeita:
Kunkin Tauno-tehtävän aluksi klikkaa Click here to show Tauno
-linkkiä.
Taunossa raahaa taulukon alkioita niin, että sinulla on lopuksi tehtävässä pyydetty lopputulos. Katso samalla minkälaista koodia Tauno sinulle generoi. Tämä on C#-kielinen algoritmi tehtävän suorittamiseksi. Jos haluat aloittaa Tauno-tehtävän alusta, piilota ja näytä Tauno uudelleen.
Raahaamisen sijaan (ja joissakin mobiileissa ei muuten voi tehdäkkään) voit myös tökätä ensin lähdealkiota ja sitten kohdealkiota.
Jos tarvitset apumuuttujia, joihin voit viedä alkioita tilapäiseen "säilöön", paina uusi muuttuja
-painiketta. Keksi muuttujalle kuvaava nimi. Muuttujalle voit antaa alkuarvon, mutta tämä ei ole pakollista jos olet heti aikeissa raahata siihen jonkin toisen muuttujan arvon talteen.
Laskutoimituksia voit tehdä raahaamalla arvoja vasemmassa alakulmassa olevaan laskualueeseen ja valitsemalla arvojen välistä minkä laskutoimituksen haluat tehdä. Laskun tuloksen voit sitten raahata takaisin johonkin muuttujaan (siis myös taulukon alkioksi).
Muuttujan arvoa voit lisätä/vähentää yhdellä vetämällä ++
tai --
-operaattorin muuttujan arvon päälle.
Kun olet saanut Taunolla ohjelman mielestäsi valmiiksi, voit painaa Aja
tai Test
-painikkeita nähdäksesi miten ohjelma toimii. Molemmissa tapauksissa Taunon tekemä ohjelmakoodi kopioidaan ohjelma-alueeseen ja ajetaan. Ajossa voidaan käyttää eri taulukkoakin kuin mitä Taunossa käytettiin, mutta hyvä "algortimi" selviää tästäkin. Jos testissä saat punaista, lue huolella virheilmoitus ja mieti mikä meni pieleen.
Halutessasi voit aloittaa Taunolla alusta tai sitten jos osaat, voit korjata suoraan ohjelma-alueeseen kopioitua koodia. Demotehtävän vastauksena palauta aina ohjelma-alueessa oleva koodi.
Näytä koko koodi
-linkistä voit katsoa minkälaisilla arvoilla ohjelma ajetaan tai minkälaisilla arvoilla testataan. Tästä kokonaisuudesta ei kurssin aluksi tarvitse vielä ymmärtää kaikkea. Voit tietysti yrittää "arvailla" mistä on kyse.
Tauno (0.25 + 0.25 p)
Video 1 (1 p)
Joka demokerta voi hankkia yhden lisäpisteen jos tekee luentojen indeksointia lisäämällä vähintään 3 linkkiä indeksi-sivulle.
TIM dokumenttien päivitys (1 p)
Joka demokerta voi saada yhden lisäpisteen tekemälle selkeästi muita hyödyttäviä lisäyksiä, parannuksia ja selkeytyksiä TIM-dokumentteihin.
Ville V1 (0.5 p)
Tehtävät löytyy kyllä, pitää huomata valita Java linkki Villen ohjeesta että saa rekistöröityä itsensä kurssille.
—Tee JAVA Villestä tehtävät 2.1-2.6. Muuttujat ja lausekkeet. Huomaa että nämä ovat Ohjelmointi 1 Java-tehtäviä!
Ei ollut java tehtäviä saatavilla Turust (23.5. 19:57)
—Palauta tehtävä kirjoittamalla alla olevaan tekstilaatikkoon mitä opit ja mitä mieltä olit kerran Ville-tehtävistä ja auttoivatko Ville-tehtävät sinua yhtään. Muutama rivi riittää.
Tehtävä 1-4, harjoitustyön vaihe 1 (4 p)
Harjoitustyön vaihe 1 (lue ohjeet ja vaatimukset). Jokainen näyttää ohjaajalle (ajanvaraus Korpista) harjoitustyön vaihetta 1 viikkojen 3 ja 4 aikana. Suunnitelma kirjoitetaan kurssin Wikiin.
Tehtävä palautetaan kirjoittamalla suunnitelman osoite alla olevaan tekstilaatikkoon tyyliin:
https://trac.cc.jyu.fi/projects/ohj2ht/wiki/k2016/suunnitelmat/vesal
Tehtävä 5-6, erikoismerkit numeroksi (2 p)
Haluat tehdä opettajalle ohjelman, jolla hän voi syöttää oppilaiden koenumeroja. Haluat että mm. seuraavat syötöt olisivat mahdollisia:
Koenumero >6.5[RET]
Koenumero >6½[RET]
Koenumero >6.25[RET]
Koenumero >6+[RET]
Koenumero >5.75[RET]
Koenumero >6-[RET]
Kuitenkin laskemisen kannalta koenumero kannattaa aina säilyttää reaalilukuna (eli merkkijono 6+ reaalilukuna 6.25). Kirjoita selkeät säännöt (ei Java-ohjelmaa) siitä, miten mikäkin syötetty merkkijono muutetaan reaaliluvuksi. Kirjoita vastaavat säännöt tulostamista varten, eli 5.75 tulostetaan aina muodossa 6-.
Tehtävä 7, nimen osien järjestyksen vaihtaminen (1 p)
Jos nimi olisi muodossa "Ankka Aku" ja se haluttaisiin tulostaa muodossa "Aku Ankka" (tai "Palo Jukka Pekka" muodossa "Jukka Pekka Palo"), niin mitä kohdan M: 2.6.2 Alemman tason aliohjelmat aliohjelmista ehdottaisit käytettäväksi ja miten? Mieti mitä muita oleellisesti erilaisia vaihtotilanteita voisi tulla vastaan. Kirjoita esimerkkejä ja mitä pitäisi tulla.
Tehtävä jatkuu seuraavilla demokerroilla.
Tehtävä 8, kävelyalgoritmi (1 p)
Ohjelmointi 2 -monisteen Tehtävä 3.1, molemmat kohdat.
Yritä kirjoittaa ohjeet siitä miten kävellään.
Kirjoita kaverillesi kävelyohjeet (missä käännytään, ei miten kävellään) rautatieasemalta asunnollesi.
Tehtävä B1, karkkien heittely (1 p)
Lue Ohj1 syksyn 2015 tentti ja tee sen tehtävä 2 Javalla. Kannattaa ensin kirjoittaa lisää testejä. Huomaa että testeissä ei tule luokan nimeä kuten C#:issa. Tässä tehtävässä Aja
ajaa aliohjelman 25 eri kutsulla. Test
ajaa 11 testiä sekä tuohon näkyviin kirjoitetut testit.
Tehtävä B2, neliöjuuret (1 p)
Olin jo saannut tehtävästä täydet pisteet. En muuttanut koodia, mutta kun tarkastin tehtäviä niin nollille oli mennyt. Mitäs?
—Tee Java -ohjelma, joka tulostaa alekkain kaikki ne kokonaisluvut <= 1000, joiden neliöjuuri on kokonaisluku. TDD: Kirjoita ennen koodaamista käsin lukuja ja niiden neliöjuuria.
Tästä tulee kaksi pistettä vaikka tulostus olisi mitä sattuu.
- vl: joo, koska tulostusmuostoa ei ole kiinnitetty, tuota on hieman hankala testata. Niin ja tosi, 1 p piti olla max.
Nollaa pistettä heittää. Onko kyse ohjelman virheestä vai tulostanko jotenkin väärässä muodossa?
- VL: tää pitäisi olla korjattu
Sain tehtyä toimivan koodinm ,mutta en saanut pisteitä.
—Alkaako teillä for-loop 0:sta vai 1:stä?
—Tehtävään tosiaan mahdollista saada vastaus, jolla nettiapplet/whatever kyllä ajaa sen, mutta ei edes tulosta mitään. Tämä aiheutti allekirjoittaneelle hieman hämminkiä, mutta lopulta sain aiheen korjattua. PS: Nollasta aloitin for-loopin. -Adi Saikkonen
—Nolla pistettä tuli :(
—Tehtävä G1-5, vaihtoehtojen määrä (5 p)
Etsitään mikä on todennäköisyys voittaa seuraavassa pelissä: On 3:n värisiä palloja. Niistä poimitaan 4 kappaletta. Sitten poimitaan vielä 2 kappaletta. Pelissä voittaa mikäli nämä 2 palloa löytyvät 4 pallon joukosta. Eli jos molemmat pallot ovat punaisia, pitää neljän pallon joukossa olla myös olla 2 punaista (yksi ei riitä).
Ratkaisu voidaan tehdä etsimällä ensin kaikki kuuden pallon erilaiset jonot (jonossa on järjestys, eli kuuden pallon jonot PSVPPS ja PVPSSP ovat eri jonoja). Näistä sitten lasketaan monellako kaksi ensimmäistä kuuluu loppuun joukkoon.
Tällä ensimmäisellä demokerralla tehtävänä on tehdä ohjelma joka tulostaa kaikki kuuden pallon erilaiset jonot, missä kukin pallo voi olla mikä tahansa kolmesta väristä. Värejä kuvataan numeroilla 0-2. Luonnollisesti tuo luku 6 (eli 4+2) on voitava korvata millä luvulla tahansa (mutta jos se menee paljon yli 10, rupeaa kyllä kestämään :-) samoin kuin värien määrä 3. Kielenä Java.
Kaksi lisäpistettä sille, joka antaa pelin voittotodennäköisyydelle analyyttisen lausekkeen (parametrina nuo 4,2 ja 3).
Tehtävä jatkuu seuraavilla demokerroilla.
HUOM! Pisteytys vaatii tulostetta, jossa esiintyy järjestyksellisesti erilaisia, mutta yhdistelminä silti aivan samanlaisia sarjoja! (esim. 1 punaista, 1 vihreä, 4 sinistä).
—Saan ajamalla 5 pistettä, mutta testillä 0. Mistäköhän tämä johtuu? Tyylikkäästi printtaa kyllä sarjan ajettaessa. Testillä seuraavaa erroria: 1) initializationError(KombinaatiotTest) java.lang.Exception: No runnable methods. -Adi Saikkonen
-vl et ole kirjoittanut testejä. Guru tehtävissä ne tulee osata itse tehdä.
En osaa, en ehkä olekkaan guru. Yritin jopa googlettaa miten testit toimivat ja huijata testaamalla 1=1 oikean asian sijaan, mutten saa sitäkään toimimaan. Oliko testaaminen Ohjelmointi 1-asiaa, vai käydäänkö se vasta tällä kurssilla läpi? -AS
—These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.