The referenced paragraph does not exist.

Demo 1

*Palauta viimeistään ma 23.1. klo 11:59.

Voit täydentää vastauksiasi määräaikaan mennessä.

Iso M-kirjain tehtävän yhteydessä tarkoittaa viittausta monisteen kohtaan, jossa asiaa alustetaan.

📺 Katsele demon palautustilaisuus.

Tehtävien pisteistä

Jokaisella tehtäväkerralla ydintehtävät (tehtävät 1-6) sisältävät kurssin osaamistavoitteiden kannalta keskeiset asiat. Huomaathan että tähtitehtävät (joiden perässä on *-merkki) ovat pakollisia.

Lisäksi on myös Ville-tehtäviä (V=Ville), Tauno-tehtäviä (T=Tauno), bonus-tehtäviä (B=bonus) ja tehtäviä niille, joilla on jo ennestään ohjelmointikokemusta (G=Guru).

Tehtävät ovat yhden pisteen tehtäviä, ellei ole erikseen mainittu, että tehtävästä saa useamman pisteen. Esimerkiksi Ville 1, Tehtävä 1 ja Bonus 2 ovat maksimissaan yhden pisteen tehtäviä, mutta Guru 1-2 on maksimissaan kahden pisteen tehtävä.

Kun olet tehnyt tehtävän, muista tarkistaa, että pistemäärä on oikein. Viimeisimmän ajon/testin pisteet jäävät voimaan. Test-napin sisältävät tehtävät tuottavat usein eri määrän pisteitä ajamisesta ja testaamisesta.

Esimerkki:

Ajaminen onnistuu   ->  0.5p
Testit menevät läpi ->  1p

Jos edeltävässä esimerkissä menisi vielä testin jälkeen painamaan aja-nappia, niin pisteet alenisivat 0.5p ja täysiin pisteisiin täytyisi siis painaa Test-nappia uudelleen.

Pisteet näkyvät suorituskertojen alapuolella.
Pisteet näkyvät suorituskertojen alapuolella.

Tämän viikon osaamistavoitteet

Tämän demokerran päätteeksi

  • osaat avata komentorivin, navigoida kansiosta toiseen ja luoda uusia kansioita hakemistorakenteeseen
  • osaat käyttää tekstieditoria tekstin muokkaamiseen tehokkaammin
  • 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

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

Ryhmässä tekeminen

Mikäli teette tehtäviä ryhmässä, niin kirjautukaa kaikki TIMiin, niin saatte palautettua tehtävät kerralla kaikille ryhmäläisille. Ryhmän muiden jäsenten kirjautumisen voi tehdä yläreunassa olevaa omaa nimeä klikkaamalla; sieltä aukeaa valikko, jossa voi lisätä muita käyttäjiä. Lopuksi muistakaa kaikki kirjautua ulos.

Akateeminen rehellisyys

Lue luku akateeminen rehellisyys ja hyväksy että noudatat tällä kurssilla näitä periaatteita.

# Plugin1

Ajankäyttösi tällä viikolla (0.5 p.)

Työtuntien kirjaamisesta saa 0.5 demopistettä. Aseta pisteesi Set Custom Points -toiminnolla.

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

# d1tunnit

Tietoturvakäytäntö Agoran mikroluokassa

# tehtava1

Tehtävä 1. Ensimmäinen C#-ohjelma

Valmistelut: Lataa ja asenna haluamasi tekstieditori sekä kehitystyökalut. Asenna lisäksi versiohallintatyökalut. Yliopiston mikroluokista löytyy ainakin Notepad++ -tekstieditori. Versiohallintatyökalut ovat valmiina.

Tämän tehtävän tarkoitus: Tehdään ensimmäinen C#-ohjelma: kirjoitetaan koodi, käännetään ja ajetaan se komentoriviä käyttäen.

Lue ensin: Jos komentorivi ei ole ennestään tuttu, niin tutustu ensin komentoriviin. Varmista, että osaat ainakin

  • käynnistää git bash -sovelluksen (Windows) tai käyttää Pääte/Terminal-komentoriviä (macOS/Linux),
  • luoda uuden kansion mkdir-komennolla, esimerkiksi mkdir ohjelmointi1
  • siirtyä kansiosta toiseen cd-komennolla, esimerkiksi cd ohjelmointi1 tai kansiorakenteessa "ylöspäin" komennolla cd .. (huomaa välilyönti)

Tehtävä:

  1. Avaa tekstieditori.
  2. Tee ensimmäinen HelloWorld ohjelmasi komentoriviä käyttäen.

Laita ohjelma tulostamaan "Hei Jyväskylä!".

Muokkaa luokan ja Main-pääohjelman dokumentaatiokommentteja luentomonisteen esimerkin mukaisesti.

Palautus: Kopioi tiedoston HelloWorld.cs sisältö alla olevaan tekstikenttään.

# helloeka

Tehtävä 2*. Tietojen tulostaminen

M: 2. Ensimmäinen C#-ohjelma

Valmistelut:

  1. Siirry komentorivillä kansioon jossa tämän demon tehtäväsi sijaitsevat (sovella Tehtävän 1 ohjetta).
  2. Tee komentorivillä Mina-niminen projekti (sovella Tehtävän 1 ohjetta).

Tehtävä: Avaa Mina.cs tekstieditoriin. Muuta ohjelma sellaiseksi, että se tulostaa sinun nimesi, kännykkäsi merkin ja mallin, ja operaattorisi nimen, kunkin eri riveille. Käännä ja aja ohjelma komentoriviä käyttäen (sovella Tehtävän 1 ohjetta).

Palautus: Kopioi tiedoston Mina.cs sisältö alla olevaan vastauskenttään. Muista dokumentointi.

# tehtava5

Tehtävä 3*. Lumiukko

Mikroluokissa ei vielä tätä kirjoitettaessa ole Rider-ympäristöä asennettuna. Käytä Visual Studiota. Käyttäjien tulee tällä hetkellä asentaa Jypeli itse, käyttäjä- ja konekohtaisesti. Lataa ja asenna tällöin Jypeli itse.

M: 4. Yksinkertainen graafinen C#-ohjelma

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.

Anna itsellesi tehtävästä 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.

# lumiukko2

Kommentit eivät mahtuneet, mutta kyllä se toimiva setti on!

18 Jan 23

Heippa, Riderissä tehtäessä vaikuttaa että Jypelin fysiikkamoottori estää objektien päällekkäisyyden. Mun täytyi kysyä apua kokeneemmalta koodarilta että ymmärsin, miksi mun koodi ei toimi, ja sain jo oppitunnin miten lisätä asioita toisten aliolioiksi.. Voisko tätä kohtaa jotenkin helpottaa jatkossa demoihin?

Kiitos huomiosta. Pohjakoodiin on nyt vaihdettu GameObjectit, joilla ongelmaa ei ole. -AJL

22 Jan 23 (edited 22 Jan 23)

Valinnainen: Lisätehtävä lumiukkoon (ei demopisteitä)

Tehtävä 4. Komentorivi

Lue ensin lukukappale komentorivistä. (Tätä ei ole monisteessa.)

Tässä tehtävässä luodaan komentorivin avulla uusi kansiorakenne omalle tietokoneelle. Kansiorakenne toimii esimerkkinä siitä millä tavalla tiedostoja voi järjestellä tällä kurssilla. Saatoit mahdollisesti tehdä osan tästä rakenteesta jo Tehtävän 1 yhteydessä.

Tehtävässä on rinnakkaiset ohjeet kullekin käyttöjärjestelmälle. MacOS- ja Linux-järjestelmissä käytetään Pääte (engl. Terminal) -ohjelmaa. Windowsissa voi valita, käyttääkö komentorivinä Git Bash (suositus; asentuu automaattisesti Git-versiohallinnan mukana), WSL, Komentokehotetta (cmd) vai PowerShell-ohjelmaa.

MacOS:ssa ja Linuxissa alla esitetty kurssit hakemisto kannattaa tehdä oman kotihakemiston alaisuuteen. Näissä järjestelmissä käyttäjän oman kotihakemiston tunnus on ~/, joka lyhenne kotihakemistolle, esim /users/vesal.

Siirtyminen työskentelyhakemistoon. Aloita seuraavalla komennolla sen mukaan mitä komentoriviä käytät. Mikäli käytät Windowsissa jotain muuta kuin C-levyasemaa, sovella ohjetta:

Linux/macOS     : cd ~
Git Bash Windows: cd /c

Kansiorakenteen luominen. Tee komentorivillä alla olevan mallin mukainen hakemistorakenne. Sisennykset kuvaavat hierarkiaa, eli sitä mikä hakemisto kuuluu minkä sisään. Tässä kurssit-hakemisto sisältää ohj1-hakemiston, joka puolestaan sisältää demot- ja ht-kansiot, ja niin edelleen.

kurssit
  ohj1
    demot 
      demo1
      demo2
    ht

Kun olet luonut yllä olevan hakemistorakenteen, palaa siihen työskentelyhakemistoon, josta aloitit ensimmäisessä kohdassa.

Rakenteen tulostaminen näytölle. Kirjoita komento

Linux/Mac/Git Bash/WSL:   ls -laR kurssit
PowerShell:               dir -s kurssit
cmd:                      dir kurssit /s

Tulostuksessa pitäisi näkyä mm. seuraavia rivejä, jos tehtävä on tehty oikein. Joillain komentoriviohjelmilla sekä Linuxilla tulostus saattaa näyttää erilaiselle, mutta idea on sama:

kurssit:
total 0
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 .
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 ..
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 ohj1

kurssit/ohj1:
total 0
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 .
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 ..
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 demot
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 ht

kurssit/ohj1/demot:
total 0
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 .
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 ..
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 demo1
drwxr-xr-x 1 vesal 197609 0 Sep  4 23:09 demo2

Palautettavan tiedoston luominen: Tehtävän vastaukseksi luodaan palautettava tiedosto teht4.txt seuraavasti:

Linux/Mac/Git Bash/WSL:   ls -laR kurssit >kurssit/ohj1/demot/demo1/teht4.txt
cmd:                      dir kurssit /s >kurssit\ohj1\demot\demo1\teht4.txt
PowerShell:               dir -s kurssit >kurssit\ohj1\demot\demo1\teht4.txt

Katso, millainen tiedostosta syntyi. Mene ensin demo1 hakemistoon ja sitten:

Linux/Mac/Git Bash/WSL:   cat teht4.txt  
CMD/PowerShell:           type teht4.txt

tai voit vaihtoehtoisesti tutkia tiedoston sisältöä myös tekstieditorilla.

Tehtävän palauttaminen: Kopioi tiedoston teht4.txt sisältö alla olevaan tekstikenttään. Sitten voit tuhota tiedoston.

# tehtava4_2

Tehtävä 5. Tekstieditorin käyttäminen

Tässä tehtävässä harjoitellaan tekstieditorin käyttöä. 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. Tekstieditori on esimerkiksi Visual Studio Code, Sublime Text tai Notepad++. 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). Jos teit tehtävän mielestäsi täysin oikein, 1 piste, puoliksi oikein 0.5 pistettä jne.

# tehtava2

Tehtävä 6. ASCII-koodi

M: 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?

Luo tiedosto teht6.txt, jonka alussa on nimesi, sitten täydennetty taulukko 2 kirjainten vastaavuuksista ja vastaukset kysymyksiin.

Kopioi tuon tiedoston sisältö alla olevaan palautuskenttään.

Simo tietää, että hänen käyttämässään tiedostomuodossa merkeille on sovittu seuraavat koodit (pala ASCII-koodia monisteen luvusta M: 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

Kun olet tulkinnut kaikki merkit, kirjoita selkokielinen teksti (kirjoitusmerkein) tekstieditorissa ja tallenna se tiedostonimellä t6-vainteksti.txt.

# tehtava4

Tehtävä Tauno T1 a (0.5p)

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.

# kaannataulukko

Tehtävä Tauno T1 b (0.5p)

Tee Taunolla ohjelma, joka vaihtaa joka toisen alkion pareittain keskenään. Eli esimerkiksi taulukosta 1, 2, 3, 4 tulee taulukko 2, 1, 4, 3.

# vaihdajokatoinen

Saan tästä 0.05 pistettä, vaikka tein ohjeiden mukaisesti Taulukko 0,1,2,3,4,5 -> 1,0,3,2,5,4 ymmärsinkö oikein?

VL: Luotat siihen että taulukossa olisi aina samat luvut. Jos olisi, ei ohjelmaa tarvittaisi. Järjestäminen pitää toimia vaikka luvut olisivat mitä tahansa.

04 Jun 23 (edited 04 Jun 23)

V1. Ville

Tee Villestä kohta 1.

# V1

Tee myös Villestä tehtävä 2.1. 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ää.

Tässä lyhyt ohje Villeen kirjautumiseen:

  1. Siirry osoitteeseen https://ville.utu.fi?c=wjjvAXbZHKZX
  2. Anna kurssiavain ohj1cs
  3. Kirjaudu HAKA-kirjautumisen avulla
# VilleV1

B1. Kurssin alkukysely ja kysymys opettajille

  1. Vastaa kurssin esitietokyselyyn. (0.5 p.)
# d1_b1_a
  1. Kirjoita kurssin QA-sivulle halumasi otsikon alle jokin kysymys, jonka haluaisit esittää kurssin opettajille. (0.5 p.)

Katso kuitenkin ensin aikaisempia kysymyksiä ja vastauksia, josta saattaa jo löytyä vastaus kysymykseesi. Pyrimme vastaamaan kaikkiin esitettyihin kysymyksiin.

# d1_b1_b

TODO: \(\downarrow\) Tämä vastauslaatikko poistetaan. \(\downarrow\)

# b3alkukysely

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

# b2scratch

Palautus kuvaruutukaappauksena

# b2scratch-kuva

B3. Numeron siirtäminen

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

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.

# b2numero

G1-2. Luvut joiden neliöjuuri on kokonaisluku

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

# neliojuuret

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