Harjoitustehtävät 1

Osaamistavoitteet

Tämän harjoituksen päätteeksi

  • osaat luoda, kääntää C#-lähdekoodia ja ajaa C#-ohjelman, joka tulostaa tekstiä näytölle
  • osaat luoda graafisen C#-ohjelman, jossa on erilaisia muotoja
  • ymmärrät, millä tavalla (tekstimuotoinen) tieto tallennetaan tietokoneeseen

Harjoituksen päätteeksi sinulla pitäisi olla myös asennettuna kurssin työkalut, sillä kotoa käsin toimiminen edellyttää niiden asentamista. Apua työkalujen asentamiseen saat myös ohjauksissa.

Tehtävistä ja pisteistä

Jokainen tehtäväkerta sisältää kokoelman tiettyyn aiheeseen liittyviä tehtäviä. Tarjolla on seuraavantyyppisiä tehtäviä

  • T- eli ydintehtävät sisältävät osan osaamistavoitteiden kannalta keskeiset asiat,
  • V- eli visuaaliset tehtävät sisältävät opintojakson asioiden kertausta ja harjoittelua visualisoinneilla ja simulaattoreilla,
  • B- eli bonustehtävät ovat lisätehtäviä, jotka ylittävät osan osaamistavoitteita,
  • G- eli gurutehtävät ovat edistyneempiä lisätehtäviä, jotka saattavat vaatia itsenäistä tiedonhakua tai opiskelua.

Jokaisesta täydellisesti tehdystä tehtävästä saa yhden pisteen ellei erikseen toisin mainita. Näet maksimipistemäärän aina tehtävän yhteydessä.

Muista tarkistaa, että viimeisin saamasi pistemäärä on oikein. Tehtävien vastausten lukumäärää ei ole rajoitettu. Pisteet lasketaan aina viimeisimmän tallennuksen tai ajon mukaan.

Tehtävät ovat automaattisesti arvosteltuja ellei toisin mainita. Lue tehtäväkohtaiset ohjeet huolellisesti.

Pakolliset tehtävät ovat merkittynä tähtimerkillä (*). Opintojakson hyväksytty suoritus edellyttää että kaikki pakolliset tehtävät tehdään. Tehtävä lasketaan tehdyksi, jos siitä on saatu enemmän kuin nolla pistettä.

Tehtävistä saaduilla pisteillä kerrytät lisäpisteitä tenttiin. Näet lisäpisteiden laskentäsäännöt Harjoitustehtävien ohjesivulla ja omat kerryttämäsi pisteesi Eteneminen-sivulla.

Huomasin, että harjoitustehtävien ohjesivu ei vie minnekään.

Kiitos, korjattu!! -DZ

22 Sep 25 (edited 22 Sep 25)

Huom: Tehtävien tekeminen Agoran mukroluokissa

Akateeminen rehellisyys

Ennen kuin aloitat tehtävien tekemistä, lue luku akateeminen rehellisyys ja hyväksy että noudatat tällä kurssilla näitä periaatteita.

# rehellisyys

T0. Palaute tästä osasta (0,5 p.)

Auta meitä parantamaan tätä kurssia antamalla palautetta tästä kurssin osiosta.

Huom: Vastaa tähän vasta, kun olet valmis tämän harjoitustehtäväkerran tehtävien kanssa

Avaa palautelomake klikkaamalla tästä

# tehtava_tulostaminen_header

T1*. Tulostaminen (1 p.)

Muokkaa alla olevaa ohjelmaa niin, että se tulostaa

Jyväskylän yliopisto
Informaatioteknologian tiedekunta

Älä kuitenkaan poista äläkä lisää uusia koodirivejä. Muokkaa olemassa olevien rivien järjestystä ja niiden sisältöä.

# tehtava_tulostaminen
# tehtava_oma_ohjelma_header

T2*. Ensimmäinen oma ohjelma (1 p.)

Lue ensin monisteesta: 2. Ensimmäinen C#-ohjelma

Tee ohjelma, joka tulostaa sinun nimesi, kännykkäsi merkin ja mallin, ja operaattorisi nimen, kunkin eri riveille.

# tehtava_oma_ohjelma

T3*. Lumiukko (1 p.)

Muuta alla oleva ohjelma sellaiseksi, että se piirtää lumiukolle silmät, nenän ja suun. Huomaa, että alla näkyy vain osa ohjelmakoodista. Jos haluat nähdä koko ohjelmakoodin klikkaa Näytä koko koodi.

Palautus: Tehtävän voi tehdä suoraan alla olevaan laatikkoon ja painaa Aja.

Voit halutessasi tehdä tehtävän Riderissa käyttäen FysiikkaPeli-projektimallia (Ks. Miten luodaan projekti Riderilla). Jos teet Riderissa, niin kopioi alla olevaan laatikkoon ohjelmasta se osa, joka on Begin-aliohjelman sulkujen { } välissä (koska muu osa on alla olevassa koodissa jo valmiina, ks. Näytä koko koodi.

Huomautus: Käytä tässä tehtävässä GameObjectia eikä PhysicsObjectia olioiden tekemiseen. GameObject toimii muuten samoin, mutta se vaan pysyy paikallaan eikä tottele fysiikan lakeja. Jos silmät ja suu tekee PhysicsObjectina, Jypeli "työntää" ne ulos yläpallosta.

Arviointi: Käytä Set custom points -toimintoa TIMissa. Tee itsearvio pistemäärästäsi ja syötä omat pisteesi väliltä 0-1. Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.

# tehtava_lumiukko

T4*. Muotoja (1 p.)

Muokkaa alla olevaa koodia siten, että lopputulos näyttää alla olevan kuvan mukaiselta. Muodon värin muuttaminen tapahtuu seuraavasti (esimerkki):

GameObject muoto = new ...(täydennä)...
muoto.Color = Color.Red;

Arviointi: Käytä Set custom points -toimintoa TIMissa. Tee itsearvio pistemäärästäsi ja syötä omat pisteesi väliltä 0-1. Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.

# tehtava_muotoja

Lisätehtävä (+1 bonuspiste): Tee ohjelmasta sellainen, että alimman neliön koon muuttaminen muuttaa myös ylempien muotojen kokoa samassa suhteessa. Siten lopputuloksen pitäisi näyttää aina suurin piirtein samalta riippumatta siitä minkä kokoinen alin neliö on.

# d1_t3_lisa

T5. ASCII-koodi (1 p.)

Lue ensin monisteesta: 27. 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 
==================== 
01010100 = 84
01010101 = 85 => U    
01010100 = 84
01001011 = 75 

... täydennä vastaavuudet loppuun saakka ...

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?

Täydennä taulukko 2 ja vastaa kysymyksiin alla olevassa palautuskentässä.

Simo tietää, että hänen käyttämässään tiedostomuodossa merkeille on sovittu seuraavat koodit (pala ASCII-koodia monisteen luvusta 27. ASCII-koodi):

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
# tehtava_ascii

V1. Tauno (1 p.)

Tehtävä koostuu kahdesta osatehtävästä, jotka ovat kummatkin 0.5 pisteen arvoisia.

Tee Taunolla ohjelma, joka kääntää taulukon päinvastaiseen järjestykseen. Aloittaaksesi klikkaa Näytä Tauno.

Saadaksesi tehtävästä 0.5 pistettä, paina vastauslaatikon alareunasta Aja sekä Test.

# visu_tauno_kaanna

Tee Taunolla ohjelma, joka vaihtaa joka toisen alkion pareittain keskenään. Eli esimerkiksi taulukosta 21, 11, 45, 56 tulee taulukko 11, 21, 56, 45.

# visu_tauno_vaihda_joka_toinen

V2. ViLLE (1 p.)

Tee ViLLE-järjestelmässä kohta 1 ja tehtävä 2.1.

# V1

Katso myös ViLLE-ohjeet sisäänkirjautumisohjeita ja kurssiohjeita varten.

# ville_kohta1_t21

B1. Tutkimus-/esitietokysely (1 p.)

# bonus_alkukysely

B2. Kysymys QA-palstalle (1 p.)

Kirjoita kurssin QA-sivulle halumasi otsikon alle jokin kysymys, jonka haluaisit esittää kurssin opettajille. Pyrimme vastaamaan kaikkiin esitettyihin kysymyksiin.

# bonus_qa

B3. Tekstieditorin käyttäminen (1 p.)

Tässä tehtävässä harjoitellaan tekstieditorin käyttöä pelkällä näppäimistöllä. Ota sekuntikellolla aika, kauanko juuri sinulla menee alla olevien ohjeiden mukaisen tekstitiedoston kirjoittamiseen pelkkää näppäimistöä käyttämällä. Hiirtä ei saa käyttää lainkaan.

Lue ensin tehtävä huolellisesti. Kun olet ensin sisäistänyt kaikki ohjeet, aloita tyhjästä tiedostosta ja käytä ainoastaan valitsemaasi tekstieditoria. Word tai muu toimisto-ohjelma ei ole tekstieditori, eivätkä ne kuulu tämän kurssin sisältöön.

Saat käyttää kaikkia editorin ominaisuuksia, eli leikkaa-liimaa, etsi-ja-korvaa ja vastaavat. Aloita ajanotto siitä, kun kirjoitat ensimmäisen merkin, ja lopeta siihen kun viimeinen merkki on kirjoitettu. Sisällön tulee olla:

1) Alussa eli ihan ensiksi tasan sata riviä, joilla jokaisella lukee:
    Harjoittelen tekstitiedoston tekemistä!
2) Sen jälkeen tasan yksi rivi, jossa on tasan 80 kpl miinusmerkkiä '-'
   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 alkaisi se pätkä:
    01
    02
    03
     ... ja näin se päättyisi:
    39
    40
4) Loppuun pitää tulla taas sellainen rivi, jossa on tasan 80 kpl
   miinusmerkkiä, kuten kohdassa 2.
Mitään muita rivejä tai tyhjiä rivejä ei saa olla.

Pysäytä ajanotto ja tallenna tiedosto nimellä teht5.txt. Jälkeenpäin kirjoita vielä tiedoston loppuun (uudeksi viimeiseksi riviksi heti miinusmerkkirivin perään), kauanko sinulta meni. Ajan tulee olla muotoa mm:ss (minuutit ja sekunnit), esimerkiksi 03:45.

Tämän perään kirjoita vielä lyhyt kuvaus siitä, mitä ja miten teit tehtävän aikana, ja mitä tekstieditorin ominaisuuksia käytit (teksti pitää rivittää itse enterillä, jos vastaus menee yli laatikon oikean reunan). Tässä on vastaustiedostosi tähän tehtävään. Copy-pasteta vastaustiedoston sisältö alla olevaan TIMin vastauskenttään.

Tulos antaa itsellesi suuntaa nykyisestä tehokkuudestasi tekstin tuottajana. Kurssin lopussa voi tehdä testin uudelleen, ja kokeilla onko tapahtunut kehitystä.

Anna itsellesi pistemäärä väliltä 0-1 (rasti kohtaan Set custom points/Aseta mukautetut pisteet). Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.

# bonus_editorin_kayttaminen

B4. Scratch (1 p.)

Scratch on varsin suosittu ohjelmointiympäristö erityisesti nuorten ja koululaisten kohdalla. Vaikka Scratchissa ei juuri kirjoiteta itse koodia, ovat käytettävät käsitteet melko samoja kuin C#:ssa.

Mene scratch.mit.edu ja tee klassinen kaksinpelattava juoksupeli (a.k.a. näppäimistön rämpytys). Idea: kaksi pelaajaa on ikkunan vasemmassa reunassa. Toinen pelaaja liikkuu esimerkiksi välilyönnistä, ja toinen vaikkapa jostakin nuolinäppäimestä. Se kumpi saavuttaa maaliviivan ensin on voittaja.

Anna itsellesi pistemäärä väliltä 0-1 (rasti kohtaan Set custom points). Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.

Scratchiin kirjautuminen mahdollistaa projektin jakamisen (Share) linkkinä. Mikäli et halua kirjautua Scratchiin, niin ota projektistasi (skripteistäsi) kuvaruutukaappaus, tallenna se jollekin verkkosivulle, ja palauta linkki kyseiseen kuvaan. Voit siis valita kumpaa palautusmetodia käytät.

Palautus linkkinä, kun Scratch-projekti on jaettu

# bonus_scratch

Palautus kuvaruutukaappauksena

# bonus_scratch_kuva

B5. Numeron siirtäminen (1 p.)

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

Vinkki: Kirjoita yhtälö ensin paperille.

Anna itsellesi pistemäärä väliltä 0-1 (rasti kohtaan Set custom points). Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.

# bonus_numero

G1-2. Luvut joiden neliöjuuri on kokonaisluku (2 p.)

Tee C#-ohjelma, joka tulostaa kaikki ne kokonaisluvut alkaen luvusta 0 jotka ovat pienempiä (tai yhtäsuuria) kuin 1000 ja joiden neliöjuuri on kokonaisluku. Vinkki: Kirjoita ennen koodaamista käsin lista kokonaislukuja järjestyksessä ja lisäksi näiden lukujen neliöjuuria. Tätä sanotaan testilähtöiseksi kehitykseksi (Test Driven Development, TDD).

# guru_neliojuuret

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