wiki:s2014/demot/demo1
Last modified 3 years ago Last modified on 2014-09-12 13:23:59

Demot » Demo 1, 15.9.2014

Demot palautetaan viimeistään maanantaina klo 11:00 mennessä kurssin NettiDemoWWW:llä https://www.mit.jyu.fi/demowww/ohj1/. 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ä, Ville-tehtäviä (V=Ville), Tauno-tehtäviä (T=Tauno), 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. Ville 1, Tehtävä 1 ja B2 eli Bonus 2 ovat maksimissaan yhden pisteen tehtäviä, mutta G1-2 on maksimissaan kahden pisteen tehtävä). NettiDemoWWW:hen merkitään siis esim. tehtävän 1 kohdalle maksimissaan 1 silloin, kun vastaus on tekijän mielestä täysin oikein. Jos vastauksessa on puutteita, voi merkitä esim 0.7 (eli tekijän mielestä 70% on oikein) ja kirjoittaa NettiDemoWWW:hen kommentin siitä, mitä vastauksessa on puutteellista.

"Mallipalautus":

TIEDOSTO       TEHTÄVÄ    PISTEET  KOMMENTTI
=====================================================================
tauno.txt      T1         1        No Taunohan se vasta opettaa
ville.txt      V1         1        ville oli kiva
teht1.txt      1          0.9      HT hakemisto meni väärään paikkaan
teht2.txt      2          1        meni aika nopeasti 
HelloWorld.cs  3          1        tämähän on helppoo
TehtB1.txt     B1         1        Alicehan on jännä
Juuret.cs      G1-2       2        tulostui hyvin
=====================================================================

Prosentteja laskettaessa enimmäispisteet demokertaa kohti on tavallisten tehtävien lukumäärä. Siten 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. 8 p. Eli vaikka merkitsisi enemmän kuin 8 pistettä, siirtyy automaattisesti korkeintaan 8 pistettä Korppiin.

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 OPPI­MINEN, ei demopisteiden kalastelu tai kopiointi. Kopiot saa jo demoissa valmiiksi painetussa muo­dossa.

Ryhmätyö on sallittua, mutta tämä ilmaistaan laittamalla aina tiedoksi - esimerkiksi ohjelman kommentteihin - kaikkien ryhmään osallistuneiden nimet.

Tauno T1

Taunotehtävät ovat pakollisia!

Tauno (TAUlukot NOhevasti) (ks. video, heilauta aikajanaa jos ei kuva rupea näkymään) on tietotekniikan laitoksella kehitetty prototyyppi opettamaan sitä, miten ohjelmat syntyvät.

Tauno ei välttämättä toimi kaikilla selaimilla.

Tee Taunolla seuraavat "ohjelmat":

  1. käännä taulukko päinvastaiseen järjestykseen.
  2. vaihda joka toinen alkio keskenään.

Uutta ohjelmaa varten Tauno pitää toistaiseksi "käynnistää uudelleen", eli painaa selaimen "Refresh"-nappulaa.

Taunojen palautus: Kopioi Taunon tekemä "koodi" tiedostoon tauno.txt. Kirjoita vielä tiedoston perään lyhyesti, että mitä opit Taunolta. Muista, että Tauno on vielä prototyypin prototyyppi.

Ville V1

Tee Villestä kohta 1. Johdanto Villen käyttöön (ks. video, heilauta aikajanaa jos ei kuva rupea näkymään). Tee myös Villestä tehtävä 2.1. Lue huolella kohta 1.5 Ville-tehtävien palautus NettiDemoWWW:llä.

Tehtävä 1. Komentorivi

Tee komentoriviä käyttäen tietokoneellesi (tai Agoran mikroluokassa U:-asemallesi) alla olevan mallin mukainen hakemistorakenne Ohjelmointi 1:n demovastauksia varten. Alla sisennykset kuvaavat sitä, mikä on minkäkin alihakemisto.

Huom. Tulevissa Windows-komentorivikomennoissa oletetaan, että kurssit-hakemisto on luotu aseman juureen, esim. U:\kurssit. Jos luot sen muualle, esim. paikkaan U:\jutut\kurssit, niin korvaa komennoissa polku \kurssit polulla \jutut\kurssit.

kurssit
  ohj1
    demot 
      demo1
      demo2
    ht

Kun olet luonut yllä olevan hakemistorakenteen, kirjoita komento

dir \kurssit /s  (tai Linuxissa: ls -R HAKEMISTO)

Pitäisi näkyä mm. seuraavia rivejä, jos tehtävä on tehty oikein (Linuxissa näyttää vähän erilaiselle, mutta idea on sama):

Directory of U:\kurssit
Directory of U:\kurssit\ohj1
Directory of U:\kurssit\ohj1\demot
Directory of U:\kurssit\ohj1\demot\demo1
Directory of U:\kurssit\ohj1\demot\demo2
Directory of U:\kurssit\ohj1\ht

Tehtävän vastaukseksi luodaan palautettava tiedosto teht1.txt seuraavasti:

cd \kurssit\ohj1\demot\demo1
dir \kurssit /s >teht1.txt (Linuxissa ls -R ~/kurssit/ > teht1.txt)

Katso, mitä tuli tiedostoon teht1.txt:

type teht1.txt (Linuxissa cat teht1.txt)

tai voit katsoa teht1.txt tiedoston sisältöä myös jollakin tekstieditorilla (esim ConText).

Tehtävä 2. Tiedoston kirjoittaminen

Editorin käyttötaito: Ota sekuntikellolla aika, kauanko juuri sinulla menee alla olevien ohjeiden mukaisen tekstitiedoston kirjoittamiseen. Ei saa huijata! Tämä on leikkimielinen mutta sitäkin vakavampi kilpailu.

Lue ensin tehtävä huolellisesti. Kun olet ensin sisäistänyt kaikki ohjeet, aloita tyhjästä tiedostosta ja käytä ainoastaan valitsemaasi tekstieditoria ja omia käsiäsi. (Tekstieditori on esimerkiksi ConTEXT. Mikään Word tai muu "Office"-tyyppinen ohjelma ei ole tekstieditori). Kaikki editorin ominaisuudet ovat tietysti käytössä (eli leikkaa-liimaa, etsi-ja-muokkaa ja vastaavat kumppanit). Hiirtä EI SAA käyttää lainkaan tehtävän aikana. Aloita ajanotto siitä, kun kirjoitat ensimmäisen merkin, ja lopeta siihen kun viimeinen merkki on kirjoitettu. Tiedoston sisällön tulee olla seuraavanlainen:

  1. Aluksi tasan sata riviä, joilla jokaisella lukee:
    Harjoittelen tekstitiedoston tekemistä!
    
  2. Sen jälkeen tasan yksi rivi, jossa on tasan 80 kpl miinusmerkkejä '-' eikä mitään muuta, ei myöskään välilyöntejä.
  3. Sitten neljäkymmentä riviä, joissa on luvut ykkösestä neljäänkymmeneen kahdella numerolla siten, että jokaisella rivillä on yksi luku. Näin siis alkaisi tämä pätkä:
    01
    02
    03
    
    ...ja näin päättyisi:
    39
    40
    
  4. Loppuun taas sellainen rivi, jossa on tasan 80 kpl miinusmerkkejä.

Mitään muita rivejä tai tyhjiä rivejä ei saa olla.

Pysäytä ajanotto. Tallenna nimelle teht2.txt. Jälkeenpäin kirjoita vielä tiedoston loppuun (uudeksi viimeiseksi riviksi heti miinusmerkkirivin perään), kauanko sinulta meni. Ajan tulee olla muotoa mm:ss, missä mm on minuuttien määrä ja ss on sekuntien määrä. Tämän perään kirjoita vielä lyhyt kuvaus siitä, mitä ja miten teit tehtävän aikana. Tässä on vastaustiedostosi tähän tehtävään. Tulos antaa itsellesi suuntaa nykyisestä tehokkuudestasi tekstin tuottajana suhteessa kurssikavereihin. Esim. Ohjelmointi 1 -kurssin lopussa voi tehdä testin uudelleen, ja kokeilla onko tapahtunut kehitystä.

Tehtävä 3. Työkalut

Varmista, että sinulla on jossakin käytössäsi minimityökalut tämän kurssin suorittamiseen. Omaa konetta varten työkalujen latauslinkit ja asennusohjeet löydät kurssin wiki-sivulta. Agoran mikroluokissa Mountains 212.2 ja Lakes 213.1 nämä löytyvät valmiina (paitsi VS on ehkä vanhempaa versiota).

  • Järkevä tekstieditori
  • .NET Framework 4 (tulee VS:n mukana jos ei ole)
  • Microsoft Visual Studio 2013 C# Professional (tai Ultimate jos haluat)
  • Microsoft XNA Game Studio 4 (tulee em ohjeilla)
  • Jypeli-kirjasto (tulee em. ohjeilla)
  • Jypeli-projektimallit Visual Studioon (tulee em. ohjeilla)
  • Komentotulkki (aina valmiina koneessa)
  • Internet-yhteys ja SSH-pääteyhteysohjelma (esim. PuTTY tai vastaava)
  • TortoiseSVN harjoitustyötä varten

Jos ohjelmien asennuksessa ilmenee ongelmia, voit kysyä neuvoa kaverilta, katsoa kurssin wiki-sivuilta löytyviä asennusohjeita tai kysyä postilistalla ohj1s14k@korppi.jyu.fi. Kotoa käsin toimiminen edellyttää pidemmän päälle edellä mainittujen työkalujen asentamista! Ihan alkuun voi hätätilassa tulla toimeen pelkästään tekstieditorilla, .NET Framework 4:llä ja XNA Game Studio 4:llä.

Kokeile käytännössä (M: 2. Ensimmäinen C#-ohjelma):

  • Tallenna esimerkkiohjelma HelloWorld.cs netistä demohakemistoosi.
  • Kopioi kyseinen tiedosto hakemistoon C:\mytemp\OMATUNNUS\ohj1\demo1.
    • Siirry C:\mytemp\OMATUNNUS\ohj1\demo1 hakemistoon.
    • Toistaiseksi mikroluokissa voi ohjelmia ajaa vain hakemistossa C:\mytemp. Siksi tämä kopiointi.
    • Myös Jypeli.dll pitää tarvittaessa kopioida samaan C:\mytemp\OMATUNNUS\ohj1\demo1 -hakemistoon.
    • Aikanaan kun tehtävä(t) tulevat valmiiksi, kopioi .cs -tiedostot takaisin U-levylle.
  • Komentotulkkia käyttäen käännä ohjelma ja aja se. Pikaohjeet löytyvät kurssin wikistä. Tässä lyhyesti:
    path=%WINDIR%\Microsoft.NET\Framework\v4.0.30319;%path% 
    
    csc HelloWorld.cs
    HelloWorld.exe
    

Tehtävän vastauksena palauta tiedosto HelloWorld.cs, jonka alkuun olet lisännyt oman nimesi (tai kaikkien ryhmän jäsenten nimet) kommentteihin. Dokumentoinnin osalta ota mallia esimerkistä: 2.4.1 Dokumentointi

Tehtävä 4. ASCII-koodi

M: 25. ASCII-koodi: Voi voi. Simolta on mennyt USB-tikku rikki. Tikulla on vain pieniä tiedonsirpaleita eikä mitään tietoa, mikä sirpale kuuluu mihinkin. Siellä oli paljon MP3-tiedostoja ja kaikkea turhaa... Simo tietää, että yhdessä elintärkeässä tiedostossa hänellä luki selväkielinen teksti isoilla kirjaimilla. Alla oleva bittijono näyttää lupaavalta, mutta mikä teksti siihen on tallennettu:

Taulukko 1:
01010100  01010101  01010100  01001011
01001001  01000101  01001100  01001101
01010011

Helpotetaan: seuraavassa on samat (taulukon 1) tavun mittaiset jonot 10-järjestelmän lukuina (saatu luettua taulukosta 3 eli 01010100 = 84 jne...), ja malliksi on yksi luku muutettu ymmärrettäväksi kirjaimeksi alla olevaan taulukko 2:een.

Taulukko 2:

binääri   dec   char  hex
==========================
01010100 = 84
01010101 = 85 => U    
01010100 = 84
01001011 = 75 

... täydennä vastaavuudet loppuun saakka ...
    heksadesimaali (hex) arvo täydennetään tehtävän lopussa, 
    kun olet ensin tehnyt tämän alkuosan

Tulkitse kaikki muutkin merkit, ja vastaa sitten seuraaviin kysymyksiin:

  • Mikä teksti tuohon kohtaan USB-tikun muistia on tallentunut?
  • Montako millimetriä Simo on painanut ohi yhdestä näppäimestä? Hänellä on samanlainen näppäimistö kuin sinulla.
  • Mikä binääriluku pitäisi olla viallisen kirjaimen kohdalla?

Palauta tiedosto teht4.txt, jonka alussa on nimesi, sitten täydennetty taulukko 2 kirjainten vastaavuuksista ja vastaukset kysymyksiin. Simo tietää, että hänen käyttämässään tiedostomuodossa merkeille on sovittu seuraavat koodit (pala ASCII-koodia):

Taulukko 3:

Desimaaliluku Binäärilukuna Vastaa merkkiä
-------------------------------------------
  32          00100000      [välilyönti]
  33          00100001        !
  46          00101110        .
  65          01000001        A
  66          01000010        B
  67          01000011        C
  68          01000100        D
  69          01000101        E
  70          01000110        F
  71          01000111        G
  72          01001000        H
  73          01001001        I
  74          01001010        J
  75          01001011        K
  76          01001100        L
  77          01001101        M
  78          01001110        N
  79          01001111        O
  80          01010000        P
  81          01010001        Q
  82          01010010        R
  83          01010011        S
  84          01010100        T
  85          01010101        U
  86          01010110        V
  87          01010111        W
  88          01011000        X
  89          01011001        Y
  90          01011010        Z

Kun olet tulkinnut kaikki merkit, ota kurssin kotisivun ohjeiden mukaan itsellesi jokin heksa-editori. Kirjoita esim. ConTextillä tiedosto (vaikka nimelle t4.txt), jossa on äsken katsomasi teksti tekstinä (siis ne tulkitsemasi merkit). Sitten avaa tämä tiedosto heksaeditorilla ja katso vastaavien merkkien arvot heksalukuina. Kirjoita ne vastaustiedostoon teht4.txt kunkin kirjaimen vierelle. Yleensä tietotekniikassa käytetään heksalukuja silloin, kun halutaan puhua binäärisistä arvoista koostuvista kokonaisuuksista (kuten tässä esimerkissä kirjainten koodeista).

Tehtävä 5. Tietojen tulostaminen

M: 2. Ensimmäinen C#-ohjelma: Kopioi aluksi tehtävän 3 tiedosto HelloWorld.cs tiedostoksi Mina.cs:

copy HelloWorld.cs Mina.cs

Avaa Mina.cs editoriin (komentoriviltä esim. komennolla ct Mina.cs), ja muuta luokan nimi HelloWorld nimeksi Mina. Sitten muuta ohjelma sellaiseksi, että se tulostaa sinun nimesi, kännykkäsi valmistajan ja operaattorisi nimen, kunkin eri riveille. Käännä ja aja ohjelma. Palauta tiedosto Mina.cs. Muista dokumentointi.

Tehtävä 6. Lumiukko

M: 4. Yksinkertainen graafinen C#-ohjelma: Tämä tehtävä on tehtävä työasemassa, johon on asennettu .NET Framework 4 ja XNA Game Studio 4. Tee ja aja ohjeiden mukaan ohjelma, joka piirtää lumiukon. Muuta sitten ohjelma sellaiseksi, että se piirtää lumiukolle silmät, mielellään myös nenän ja suun. Palauta tiedosto Lumiukko.cs. Jos sinulla ei toimi työkalut, voit tehdä tehtävän myös TIMissä.

B1. Alice

Ota ja asenna Alice Wiki-sivujen https://trac.cc.jyu.fi/projects/ohj1/wiki/Alice ohjeiden mukaan. Alice 2:n tapauksessa käy ensimmäinen (luistelu) tutoriaali läpi. Jos käytät Alice 3:sta, tee "ohjelma", jossa on muutamia otuksia, jotka tekevät jotakin. Palauta tiedosto TehtB1.txt johon kirjoitat parilla rivillä mitä opit ja miltä Alice tuntui, kannattaako siitä ottaa jatkossa lisäesimerkkejä. (ks video)

B2. Numeron siirtäminen

Yhtä numeroa siirtämällä tee yhtälöstä 62 - 63 = 1 tosi.

B3. Kurssin alkukysely

Vastaa kurssin alkukyselyyn. Tehtävän vastaukseksi palautetaan tiedosto ohjelmointi.txt jossa on jokin kysymys, jonka haluaisit esittää luennoitsijalle. Parhaisiin vastataan luennoilla.

B4. Tutustu aiempien vuosien harjoitustöihin

Voit aloittaa tutustumalla esimerkiksi viime vuoden harjoitustöiden suunnitelmiin, osoitteessa 2013-vuoden harjoitustöiden suunnitelmat. Kirjoita näistä kolmesta pelistä lyhyt yhteenveto, esimerkiksi mistä pidit niissä ja voisitko itse tehdä samanlaisen pelin. Lataa sitten yksi peleistä koneellesi SVN:stä osoitteesta pelien SVN-2013 ja pelaa sitä. Palauta NettiDemoWWW:hen tekstitiedosto, johon kirjoitit yhteenvedot.

G1-2. Luvut joiden neliöjuuri on kokonaisluku

Tee C#-ohjelma, joka tulostaa kaikki ne kokonaisluvut <= 1000, joiden neliöjuuri on ko­konaisluku. TDD: Kirjoita ennen koodaamista käsin lukuja ja niiden neliöjuuria.