Please to interact with this component.

{}

# ohj1g

Palautus viimeistään: klo 11:00 ma 14.9.2020
Katso luennot-sivulta luennot 01 ja 02.

Ilmoittaudu missä ryhmässä (zoom) katsot demojen vastaukset (huom joka viikolla oma ilmoittautuminen):

  • Please to interact with this component.

    Ma 14-16
  • Please to interact with this component.

    Ma 16-18
  • Please to interact with this component.

    Katson demonpalautuksen videolta

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

Tehdyt demot: Tiedot päivittyvät harvoin. Viimeksi:

Please to interact with this component.

{}


Please to interact with this component.

1

{}

Please to interact with this component.

2

{}

Please to interact with this component.

3

{}

Please to interact with this component.

4

{}

Please to interact with this component.

5

{}

Please to interact with this component.

6

{}

Please to interact with this component.

7

{}

Please to interact with this component.

8

{}

Please to interact with this component.

9

{}

Please to interact with this component.

10

{}

Please to interact with this component.

11

{}

Please to interact with this component.

summa

{}

Please to interact with this component.

pros

{}

Please to interact with this component.

dh

{}


Korjatut demot (tässä pitää olla vähintään 7 joka kerta ennen seuraavia demoja):

Please to interact with this component.

1

{}

Please to interact with this component.

2

{}

Please to interact with this component.

3

{}

Please to interact with this component.

4

{}

Please to interact with this component.

5

{}

Please to interact with this component.

6

{}

Please to interact with this component.

7

{}

Please to interact with this component.

8

{}

Please to interact with this component.

9

{}

Please to interact with this component.

10

{}

Please to interact with this component.

11

{}

Please to interact with this component.

dok

{}

Please to interact with this component.

demook

{}

# fields

Ohjelmointi 1, s 2020 / Demo 1


HUOM! Joka kerta on saatava vähintään 2p tähtitehtävistä! Alle 5 p tehneillä on huono ennuste loppukursissa.

Demot palautetaan viimeistään maanantaina 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
# vdr1
# vdr2

Oppimistavoitteet

Klikkaile ruksit niihin kohtiin jotka olet oppinut. Työkirja-sivulla näet yhteenvedon kaikista demoista.

# Oppimistavoitteet

Palautus

Demot palautetaan viimeistään maanantaina klo 11:00 mennessä. Voit palauttaa osan tai kaikki tehtäväsi etukäteenkin ja täydentää vastauksia määräaikaan mennessä.

Ajankäyttösi tällä viikolla (0.25p)

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 (=zoom) 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ä. Huom! Siis tähän ei laiteta kurssin alusta kaikkia tunteja yhteensä, vaan vain tämän viikon tunnit.

# tunnit
# vaikeaa

Edellisten demojen vastausten korjaaminen E1 (pakollinen)

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

Siis esim. ennen demo 2 tehtävien aloittamista pitää demoista 1 tulla mainittu pistemäärä.

Video 1

Voit saada demopisteitä indeksoimalla luento/demovideoita, ks: Videoiden hakemisto aihepiireittäin 2020 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.

# video1

TDD-pohja

Tässä voit testata ohjelmiasi jos ComTest ei toimi koneellasi

# ComTestPohjaCSx

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.

Demoista yleistä

Demoista yleisesti sekä niiden pisteistä ja miten niitä lasketaan, kerrotaan tarkemmin kurssin Demot-sivulla

Demot palautetaan viimeistään maanantaina klo 11: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.

Jokaisessa demossa on vähintään kaksi tähtitehtävää (*). Tähtitehtävistä vähintään kaksi pitää tehdä joka kerta ja saada niistä yhteensä 2 pistettä. Eli tekemiseen ei riitä että niihin jättää "väärän" vastauksen.

Kurssin pystyy suorittamaan arvolauseella 1/5 ilman tenttiä, mikäli joka kerta on vähintään 5 pistettä demoista (joista 2 pitää olla tähtitehtävistä).

Tehtävien pisteistä

Saako tehtävää siis yrittää ns. uudelleen? Eli testata ilman, että pisteet vähenevät

VL: Joo, ilman muuta! Minäkin saata jotakin ohjelmaa kääntää kymmeniä kertoja ennen kuin tulee toimiva. Olisi väärin rangaista muita sellaisesta mitä ei itsekkään pysty tekemään :-) MUTTA! Pitää olla tarkkana ettei sorru haulikolla räiskintään, eli ajattelematta vaan kokeile vaihtoehtoja ilman että tietää mitä on tekemässä. Monivalinnat ovat sellaisia että niissä on yleensä vain yksi vastausyritys.

08 Sep 20 (edited 12 Sep 20)

Jokaisella tehtäväkerralla voi olla tavallisia tehtäviä, Ville-tehtäviä (V=Ville) Tauno-tehtäviä (T=Tauno), lisätehtäviä jotka yllensä vaativat luentojen ulkopuolista materiaalin käyttöä (B=Bonus) ja harrastajien tehtäviä, joita ei periaattessa voi tehdä kurssin tiedoilla vielä (G=Guru). Jos ei osaa B tai G tehtäviä, ei vielä kannata masentua. Kurssin loppussa kyllä pitäisi pystyä tekemään alkupäään B tehtävät ja osa G-tehtävistäkin.

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

Viikkotuntimäärän antamisesta saa 0.25 pistettä.

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.

Likikään kaikissa tehtävissä ei ole (eikä voi olla) automaattista arvostelua ja osan niistä pitää itse antaa omantunnon mukaan pisteet.

Mistä tietää, milloin pisteet annetaan itse? Miten se tehdään?

vl: Tehtävän päälle tulee palautuksen jälkeen pieni laatikko, johon pisteet saa antaa (CP, Set Custom Points). Ne annetaan silloin its ekun on mahdotonta olla oikeata vastausta, jonka perustella pisteet voitaisiin automaattisesti laskea. Tässä demossa sellainen on seuraavissa:

  • T2, koska siinä pikkuvirhekin tuottaa 0p, joten on annettu mahdollisuus laittaa pisteitä jos on melkein oikein
  • T6, koska on tosi haastavaa katsoa onko silmät paikallaan yms.
  • B2, koska sama vastaus voitaisiin kirjoittaa erilaisin sanoin.

Mutta sen tosiaan näkee ilmestyykö sinne sellainen :-)

13 Sep 20 (edited 13 Sep 20)

Prosentteja laskettaessa enimmäispisteet demokertaa kohti on tavallisten tehtävien lukumäärä (6 vaikka niitä olisikin enemmän). 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.

Taunon käyttöohjeita:

# a1

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ä "algoritmi" selviää tästäkin. Jos testissä saat punaista, lue huolella virheilmoitus ja mieti mikä meni pieleen. Täysiä pisteitä varten sekä Aja että Test pitää toimia.

Halutessasi voit aloittaa Taunolla alusta tai sitten jos osaat, voit korjata suoraan ohjelma-alueeseen kopioitua koodia. Demotehtävän vastaukseksi riittää että Aja-napin yläpuolella on sama koodi kuin Taunon koodialueessa.

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.

Tehtävä Tauno T1 a

Tee Taunolla ohjelma, joka kääntää taulukon päinvastaiseen järjestykseen.

# kaannataulukko

Jotta saat täydet pisteet, niin paina aina ensin Aja ja sitten Test.

Tehtävä Tauno T1 b

eikös tähän demonpalautuksessa annettu mallivastaus vastannut väärään kysymykseen? siinä tehtiin ohjelma, joka vaihtaa esim. 1<->6, 2<->5, 3<->4 eikä 1<->2, 3<->4, 5<->6

VL: saatoin toisella videolla olla välillä tämän kohdalla vaikka piti vielä olla a-kohdassa.

14 Sep 20 (edited 14 Sep 20)

Tee Taunolla ohjelma, joka vaihtaa joka toisen alkion pareittain keskenään. Eli jos taulukossa olisi vain 4 alkiota, niin taulukosta 1, 2, 3, 4 tulisi taulukko 2, 1, 4, 3

# vaihdajokatoinen

En saa onnistumaan tätä tehtävää vaikka tein sen oikein.

Ohjelman on tarkoitus toimia, vaikka taulukon sisältö olisi mitä vain. Nyt olet laittanut muuttujaan jonkin tietyn luvun, mikä ei riipu taulukon sisällöstä. Kun teet tässä muuttujan, niin kannattaa esitellessä jättää se tyhjäksi, ja sen jälkeen asettaa muuttujan arvo taulukosta, eikä itse kirjoittamalla. -Juho K

30 Sep 20 (edited 30 Sep 20)

Tehtävä Ville V1

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

Kun kirjoitat TEKSTIvastauksia, niin rivitä vastaus itse niin että se näkyy kunnolla vastausruudussa. Toisaalta tekstikäsittelyssä (esim. Word) ei saa itse rivittää.

# VilleV1

Tehtävä 1. Komentorivi / PowerShell

Tehtävän saa tehdä myös Macillä tai linuxilla. Windowsissa saa käyttää myös CMD:tä PowerShellin tilalla.

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

Mikäli teet cmd-komentokehotteessa, Linuxilla tai Macillä, niin lue vastaavien komentojen versiot komentoriviohjeesta.

Huom. Tulevissa Windows PowerShell-komennoissa oletetaan, että kurssit-hakemisto on luotu aseman juureen, esim. U:\kurssit. Jos luot sen muualle, esim. paikkaan C:\jutut\kurssit, niin korvaa komennoissa polku U:\kurssit polulla C:\jutut\kurssit. Ja muista olla tarkkana isojen ja pienten kirjainten kanssa!

Mäcissa/Linuxissa kurssit hakemisto kannattaisi tehdä ehkä ~/ alle (mato on lyhenne omalle kotikaemistolle, esim /users/vesal.

kurssit
  ohj1
    demot 
      demo1
      demo2
    ht

Kun olet luonut yllä olevan hakemistorakenteen, kirjoita komento

PowerShell:  dir -s U:\kurssit
cmd:         dir u:\kurssit /s
Linux/Mac:   ls -R HAKEMISTO

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

    Directory: U:\kurssit

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         1.9.2017     16.16                ohj1

    Directory: U:\kurssit\ohj1

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         1.9.2017     16.16                demot
d-----         1.9.2017     16.22                ht

    Directory: U:\kurssit\ohj1\demot

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----         1.9.2017     16.16                demo1
d-----         1.9.2017     16.16                demo2

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

cd \kurssit\ohj1\demot\demo1

ja

PowerShell:  dir -s U:\kurssit > teht1.txt
cmd:         dir u:\kurssit /s > teht1.txt
Linux/Mac:   ls -R ~/kurssit > teht1.txt

Katso, mitä tuli tiedostoon teht1.txt:

type teht1.txt (Linux/Mac: cat teht1.txt)

tai voit katsoa teht1.txt tiedoston sisältöä myös jollakin tekstieditorilla (esim. Notepad++, Sublime Text).

Kopioi tiedoston teht1.txt sisältö alla olevaan tekstikenttään

# tehtava1

Miten tähän tehtävään tulee pisteet? Olen tehnyt tämän täysin ohjeen mukaan, ja vastaus on samantyylinen, kuin esimerkki, mutta silti pisteeni on 0?

VL: siihen tehtävän päälle kuten muulloinkin. Mutta et ole käyttänyt samoja hakemistojen nimiä kuin oli ohjeessa.

13 Sep 20 (edited 13 Sep 20)

Oma kysymykseni on sama, yllä lukee, että hakemiston nimi voi olla omalla koneella jotain muuta, eli ohjeen mukaan on tehty.

VL: Alkuosa saa olla vapaa, mutta loppuosan pitää täsmätä tarkalleen. - VL

13 Sep 20 (edited 13 Sep 20)

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, NotePad++, SublimeText, VIM, Emacs tms. 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. Tyhjiä merkkejä ei saa olla rivien aluissa tai lopuissa.

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 uudelta riviltä aloittaen 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ä.

Kopioi kirjoittamasi tiedoston sisältö alla olevaan vastausalueeseen ja ole todella huolellinen että kaikki on kuten ohjeissa. Muuten ei anna 1p. Virheitä voi olla mm:

  • rivien lopuissa ylimääräisiä välilyöntejä
  • viivariveillä ei ole täsmälleen 80 miinumerkkiä
  • aika on muotoa 3:45 eikä 03:45
  • aika-rivillä on jotakin muutakin kuin pelkkä aika
  • aika rivin jälkeen ei ole rivinvaihtoa
  • puuttuu aika-rivin jälkeen selitys siitä, miten toimittiin.

Mikäli et saa tehtävästä millään pisteitä mutta se on mielestäsi oikein (on siinä joku vika silti :-), niin voit ruksia kohdan Set custom points ja sitten laittaa itsellesi max 0.5 p. Jos kuitenkin haluat vielä yrittää automaattiarvostelua ja 1 p, niin ota ruksi pois. Muista aina painaa Tallenna kun olet muuttanut jotakin.

# tehtava2

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 TIMistä. Agoran mikroluokissa nämä löytyvät valmiina

Jos ohjelmien asennuksessa ilmenee ongelmia, voit kysyä neuvoa kaverilta, katsoa kurssin wiki-sivuilta löytyviä asennusohjeita, kysyä postilistalla ohj1s20k@korppi.jyu.fi tai kurssin keskustelusivulta. 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.

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.
    • Aikanaan kun tehtävä(t) tulevat valmiiksi, kopioi .cs -tiedostot takaisin U-levylle.
  • PowerShelliä tai komentotulkkia (cmd) käyttäen käännä ohjelma ja aja se. Pikaohjeet löytyvät kurssin TIMistä. Tässä lyhyesti (muista että csc hakemisto voi olla eri):

  • Komentotulkki:

    path=c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn;%path% 
    
    csc HelloWorld.cs
    HelloWorld.exe
  • PowerShell

      $env:Path += ";c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn"
    
      csc HelloWorld.cs
      .\HelloWorld.exe
  • Mac/Linux: ks Kääntäminen komentoriviltä

Tehtävän vastauksena lisää tiedostoon HelloWorld.cs oma nimesi (tai kaikkien ryhmän jäsenten nimet) kommentteihin. Kopioi tiedoston HelloWorld.cs sisältö alla olevaan tekstikenttään. Dokumentoinnin osalta ota mallia esimerkistä: 2.4.1 Dokumentointi.

# tehtava3

Tehtävä 4. ASCII-koodi

Tämä tehtävä on tarkoitus tehdä ilman minkään apuohjelman käyttöä. Tehtävän tekemiseksi tehtävän taulukko 3 ja luentomonisteen Taulukko 10 riittää lähteeksi.

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  hex
==========================
01010100 = 84
01010101 = 85 => U     55  
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?

Tehtävän vastauksena kirjoita 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 muunna binääriluvut heksaluvuiksi jollakin seuraavista tavoista (tai kokeile useampia):

  1. avaa Windowsin tms. laskin ja laita se Programmer tilaan ja katso kutakin 10-järjestelmän lukua vastaava heksaluku (esim 85 kymmenjärjestelmässä on 55 heksalukuna)
  2. ota kurssin kotisivun ohjeiden mukaan itsellesi jokin heksa-editori. Kirjoita esim. NotePad++:lla tai vastaavalla 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.
  3. avaa luentomonisteesta muunnostaulukko ja muunna binäärilukuja heksaluvuiksi seuraavalla tavalla:
    1. jaa binääriluku 4 bitin palasiin
    2. katso kumpaakin palasta vastaava 16-järjestelmän (heksajärjestelmän) luku taulukosta
    3. heksaluku on kun nämä luvut laitetaan peräkkäin
    Esimerkiksi binääriluku 01011010 = 0101 1010 ja muunnostaulukosta vastaavat heksaluvut ovat 5 ja A eli binääriluku on heksalukuna 5A.
  4. katso kutakin kirjainta vastaava heksaluku monisteen ASCII-taulukosta.

Kirjoita heksaluvut vastaustaulukkoon kunkin kirjaimen vierelle (kuten mallipohjassa on tehty U:n kohdalle) ja jatka kaikki Taulukossa 1 olevat tavut vastaukseen. Yleensä tietotekniikassa käytetään heksalukuja silloin, kun halutaan puhua binäärisistä arvoista koostuvista kokonaisuuksista (kuten tässä esimerkissä kirjainten koodeista).

# tehtava4

Tehtävä 5*. Tietojen tulostaminen

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

Windows:

copy HelloWorld.cs Mina.cs

Mac/Linux:

cp HelloWorld.cs Mina.cs

Avaa Mina.cs editoriin (komentoriviltä esim. komennolla npp Mina.cs). Jos komento ei toimi, varmista mikroluokassa että olet liittänyt N-levyn täältä. ja kotikoneessa tehnyt tuon npp.bat ja laittanut sen polkuun. Jos ei toimi sittenkään, niin käynistä "tyhmällä" Windows-tavalla. 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. Kopioi tiedoston Mina.cs sisältö alla olevaan tekstikenttään. Muista dokumentointi.

(Huom: Yliopiston koneilla U-asemalta ei saa ajaa ohjelmia. Käytä C:\MyTemp-kansiota.)

# tehtava5
# lumiukkosilmat

Tehtävä 6*. Lumiukko

“Lajia tai nimitilan nimeä Jypeli ei löytynyt” vaikka koneelta löytyy hakiessa “Jypeli.Templates.1.2.1.vsix” joka käynnistäessä sanoo, että kyseinen lisäosa on jo asennettu

Jos Jypeliä haluaa kääntää komentoriviltä, katso siihen ohjeet. -MR

05 Jun 20 (edited 12 Sep 20)

M: 4. Yksinkertainen graafinen C#-ohjelma: Muuta ohjelma sellaiseksi, että se piirtää lumiukolle silmät, mielellään myös nenän ja suun.

Tehtävän voi tehdä (ja kannattaa tehdä) myös työasemassa pääteohjaus 1:n Lumiukko ohjeilla. Jos teet työasemassa, niin kopioi demonpalautukseen silti ohjelmasta se osa, joka on Begin-aliohjelman sulkujen { } välissä (koska muu osa on alla olevassa koodissa jo valmiina, ks. Näytä koko koodi.

# lumiukko

Mikä ero on GameObject/PhysicsObject ja onko väliä kumpaa tässä käyttää?

09 Sep 20

PhysicsObjectille lasketaan fysiikkaa, eli siihen vaikuttaa painovoima ja se voi törmätä toisiin PhysicsObjecteihin. Tässä tehtävässä ei ole merkitystä kumpaa käyttää. -MR

09 Sep 20 (edited 13 Sep 20)

Meni kyllä usko koko tähän alustaan heti kerta heitolla, tietysti tein tehtävän 6 tähän tim alustalle ja tehtävässä 7 käskettiin mennä napsutteleen highlight ja näytä koko koodi painiketta jolloin koko tehtävä katosi taivaan tuuliin. Mitä opin, tallenna tehtävä jonnekin muualle kun TIMIIN !!!!

VL: Taisit painaa myös Alusta :-) Nimittäin nuo kaksi muuta eivät hävitä mitään. Sitten kaikki vanhat vastauksesi ovat aina tallessa tuolla tehtävän päällä olevilla sivunuolilla. Eli mitään ei häviä jos olet tallentanut välillä. Alusta jälkeen olet painanut Aja, jolloin se alustettu vastaus on jäänyt viimeiseksi vastaukseksi. Sivunuolilla saat sieltä jonkun toisen ja kun sitten painat Aja, niin se on viimeisen vastaus. Missä muussa alustassa voit tehdä saman? - VL

14 Sep 20 (edited 14 Sep 20)

Laitoin ensimmäisellä kerralla “Set Custom points”, koska en saanut silmiä laitettua ja pelkäsin, että aika loppuu kesken. Nyt sain silmät laitettua, mutta nyt en saa custom pointsia muutettua enää yhteen pisteeseen. Miksi?

VL: Onhan sulla 1p tuossa?

Homma kunnossa, piti ilmeisesti vain odottaa ja alustaa(?).

VL: Tuossa on näköjääm sellainen, että cp voi olla tuossa max 0.5. Eli se cp ruksi pitää ottaa pois, tehdä ohjelmaan muutos ja sitten ajaa, jolloin antaa täydet. Mutta otan tuosta pois tuon turhan max 0.5 p rajoituksen….

14 Sep 20 (edited 14 Sep 20)

Tehtävä 7. TIMiin tutustuminen

7 a)

Jokaisen kurssin sivun yläpalkissa on lista, joka alkaa Koti ja loppuu Muut. Listalla on suoria linkkejä (Koti, Moniste, Keskustelu) ja luetteloita (Luennot, Demot, jne. ).

Käy jokaisella sivulla, johon löytyy suora linkki. Käy lisäksi ainakin yhdellä sivulla jokaisesta luettelosta. Kirjoita alle n. 1-2 rivin mittainen kuvaus siitä, mitä kyseinen sivu tai luettelo sisältää.

# t7tim

7 b)

Seuraavissa tehtävissä kopioi osoitepalkissa oleva sivun/sivujen osoite/osoitteet kunkin tehtävän vastaukseksi. Sivuilla tarkoitetaan Ohj1-kurssin TIM-sivuja, ei Googlella löydettyjä satunnaisia sivuja. Vastauksiin ei myöskään laiteta sivuja, joiden osoitteessa esiintyy jokin tietyn kurssin aika tyyliin 16k3op tai 2017s. Paitsi jos erikseen kysytään jonkin tietyn vuoden sivua.

# t7tim2D

Lisätäänkö tähän kaikki linkit, joissa mainitaan kyseinen asia (annetuin ehdoin) vai kaikki, joissa asiaa käsitellään hieman enemmän?

VL: Pari “tärkeintä” riittää

12 Sep 20 (edited 12 Sep 20)
# t7timkutsupino
# t7kasitekartta
# t7videot

7 c)

Kun tehtävässä 6 klikkailet linkkiä Tavallinen/Highlight mitä tapahtuu? Kun klikkailet linkkiä Näytä koko koodi, mitä tapahtuu?

# t7klik

B1. Alice

Jätä tämä tehtävä väliin jos sinun mielestäsi kurssilla on jo tarpeeksi työkaluja :-)

Ota ja asenna 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. Vastauksena kirjoita parilla rivillä mitä opit ja miltä Alice tuntui, kannattaako siitä ottaa jatkossa lisäesimerkkejä. (ks video)

# b1alice

B2. Numeron siirtäminen

Yhtä numeroa (ei lukua, 62 on luku) siirtämällä tee yhtälöstä 62 - 63 = 1 tosi. Siirtäminen tarkoittaa sitä, että kuvitellaan annetussa kaavassa olevan 7 merkkiä (5 numeroa ja - ja =). Jos nuo merkit olisivat vierekkäisiä paperilappuja, niin tasan yhtä numeroa saa siirtää ja muihin ei saa koskea.

# b2numero

B3. Kurssin alkukysely

Vastaa kurssin alkukyselyyn.

Sitten kirjoita kurssin QA-sivulle halumasi otsikon alle jokin kysymys, jonka haluaisit esittää luennoitsijalle. Parhaisiin vastataan luennoilla. Tehtävän vastaukseksi kopioi kysymystekstisi tähän alle. Jos teit tämän jo demossa 0, niin kopioi sieltä kysymyksesi tähän.

# b3alkukysely

Tehtävä G1-2. Luvut joiden neliöjuuri on kokonaisluku

Tee C#-ohjelma, joka tulostaa kaikki ne kokonaisluvut <= 1000, joiden neliöjuuri on kokonaisluku. Kukin luku tulostetaan omalle rivilleen. TDD: Kirjoita ennen koodaamista käsin lukuja ja niiden neliöjuuria.

# neliojuuret

Saan tulostettua vaaditut luvut, mutta tehtävä ei anna minulle pisteitä.

VL: Onnkesi, sillä tuo ei ole ohjelma :-) Entä jos sääntöä muutettaisiin tai sitten pyydettäisiin että pienemmät kuin miljoona?

12 Sep 20 (edited 12 Sep 20)

Ei anna minullekaan pisteitä, vaikka ohjelma on mielestäni ihan kunnollinen.

VL: Ohjelmointi ei ole mielipidekysymys :-) Jos ei anna oikeaa tulosta, niin ei pisteitä! Tämä on Guru-tehtävä ja siinä vaaditaan ihan oikeaa tarkkuutta. Muut älkää spoilatko mikä on vikana jos ei anna pisteitä.

13 Sep 20 (edited 13 Sep 20)

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