Demo 1
Palauta viimeistään ma 16.1. klo 11:59, läpikäynti ma 16.1. klo 12-14.
Demotehtävien deadline on maanantaina klo 11:59 mennessä. Voit täydentää vastauksia määräaikaan mennessä.
Iso M-kirjain tehtävän yhteydessä tarkoittaa viittausta monisteen kohtaan, jossa asiaa alustetaan.
Mooc-opiskelijat: Muistathan lukea mooc-yleisohjeet.
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.
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 ja kurssin postituslistalla (at) korppi.jyu.fi
tai Google Groups -ryhmässä.
Ajankäyttösi tällä viikolla
Demokerran päätteeksi kirjoita arvio tällä viikolla käyttämästäsi työmäärästä. Laske työmäärään mukaan kaikki kurssiin työskentely: lähiopetukseen osallistuminen, oppimateriaalin lukeminen, demotehtävien tekeminen, luentovideon katsominen, ja niin edelleen. Voit päivittää lukua viikon edetessä, se voi helpottaa arvion tekemistä.
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.
Tehtävä 1. Ensimmäinen C#-ohjelma
Tehdään ensimmäinen C#-ohjelma: kirjoitetaan koodi, käännetään ja ajetaan se.
(MacOS- ja Linux-järjestelmille on oma ohje.)
Valmistelut: Windows-käyttäjille: Ennen aloittamista käynnistä komentorivi ja kopioi seuraava komento komentoriville ja paina Enter.
SETX PATH "%WINDIR%\Microsoft.NET\Framework\v4.0.30319;%PATH%"
Sulje komentorivi ja käynnistä se uudestaan.
Tämä asettaa PATH-ympäristömuuttujan pysyvästi oikeaksi kääntämistä varten.
Tehtävä:
- Avaa haluamasi tekstieditori, esimerkiksi Notepad++ löytyy mikroluokista valmiina.
- Kirjoita (älä copy-pasteta) editoriin Hello World -ohjelman koodi, joka löytyy monisteen luvusta 2.
- Tallenna tiedosto nimellä
HelloWorld.cs
hakemistoonC:\MyTemp\OMATUNNUS\ohj1\demo1
, laitaOMATUNNUS
-sanan paikalle oma käyttäjätunnuksesi, esimerkiksianlakane
. Huom! Yliopistolla eiU
-levyltä saa ajaa ohjelmia, siksi pitää tallentaa tuonne. - Siirry komentorivillä
C:\mytemp\OMATUNNUS\ohj1\demo1
hakemistoon. - Käännä ohjelma komentoriviltä ja aja se. Ohjeet komentoriviltä kääntämiseen:
Komentorivillä kääntämisen ohjelinkki ei johda mihinkään.
—Kiitos, ohje nyt korjattu.
—csc HelloWorld.cs
HelloWorld.exe
Lisää tekemäsi HelloWorld.cs
tiedoston alkuun oman nimesi (tai kaikkien ryhmän jäsenten nimet) kommentteihin. Dokumentoinnin osalta ota mallia esimerkistä: 2.4.1 Dokumentointi
Kun saat tehtävät valmiiksi, kopioi .cs
-tiedosto U
-levylle.
Palautus: Kopioi HelloWorld.cs
tiedoston sisältö alla olevaan vastauskenttään ja paina aja
nappia.
Tehtävä 2*. Tietojen tulostaminen
Valmistelut: Kopioi aluksi Hello World -tehtävän tiedosto HelloWorld.cs
tiedostoksi Mina.cs
kirjoittamalla komentorivillä:
copy HelloWorld.cs Mina.cs
Tehtävä: Avaa Mina.cs
editoriin ja muuta luokan nimi HelloWorld
nimeksi Mina
. 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.
Palautus: Kopioi tiedoston Mina.cs
sisältö alla olevaan vastauskenttään. Muista dokumentointi.
Systeemi ei toimi. Mitä tahansa koodia kirjoittaa, niin antaa virheilmoituksen "cannot execute binary file". Sama homma koko TiMissä, painaessa "Aja" tulee kaikissa malleissa yms. sama virhe.
—Tehtävä 3*. Lumiukko
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 Visual Studiossa, tai sitten tekstieditorilla ja komentorivillä kääntämällä. Jos teet tekstieditorilla / Visual Studiossa, niin kopioi allaolevaan 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
.
Neljännellä yrityskerralla oli vasta Visual Studio käytössä ja sen kyllä sitten huomasikin. Ekat kolme siis sähläystä...
—Ukon värin ja ulkonäön muuttaminen
Kokeile palloille erilaisia värejä. Esimerkiksi
p2.Color = Color.HotPink;
Rivin voit lisätä mihin tahansa sen jälkeen kun muuttuja p2
on esitelty. Kuitenkin ennen aliohjelman lopettavaa aaltosulkua }. Paras paikka on siellä, missä muutenkin käsitellään p2
muuttujaa (siis ennen kuin p3
on esitelty).
Käytössä olevat valmiit värien nimet näet esimerkiksi Jypelin dokumentaatiosta tai ohjeista.
Minkä tahansa värin voit itse tehdä kutsulla tyyliin:
p3.Color = new Color(173, 255, 47, 10);
missä parametrit ovat järjestyksessä Red
, Green
, Blue
, Alpha
. Kukin arvo voi vaihdella välillä 0-255. Alpha tarkoittaa läpinäkyvyysarvoa, 0 täysin läpinäkyvä, 255 täysin läpinäkymätön.
Voit vaihtaa myös taustan värin sellaiseksi kuin haluat.
Kokeile kirjaston ohjeiden mukaan vaihtaa alin pallo kaksi kertaa leveämmäksi. Älä muuta "pallon" korkeutta.
Piirrä ukolle silmät.
Voimia peliin
Lisää Begin
-aliohjelman loppuun rivi (muistathan, että Begin
alkaa Begin
-rivin jälkeisestä aaltosulusta, ja päättyy vastaavasti aliohjelman sulkevaan aaltosulkuun):
Gravity = new Vector(0, -400);
- käännä ja aja
- kokeile muita lukuja -400:n paikalle
Tehtävä 4. Komentorivi
Avaa komentorivi (miten?), ja tee komentoriviä käyttäen tietokoneellesi (tai Agoran mikroluokassa U:
-asemallesi) alla olevan mallin mukainen hakemistorakenne kurssin demovastauksia varten ja "tulosta" kurssit
-kansion sisältö teht1.txt
-tiedostoon demo1
-kansioon. Alla sisennykset kuvaavat sitä, mikä on minkäkin alihakemisto. Lopuksi siirrä tehtävässä 1 tekemäsi HelloWorld.cs
sille kuuluvaan paikkaan tekemässäsi hakemistorakenteessa. Lisää vinkkejä: kansioiden luominen ja kansion sisällön tulostaminen.
kurssit
ohj1
demot
demo1
demo2
ht
Ei suostu tallentamaan ilmeisesti, "ikuinen silmukka".
—Jos koodissa lukee Console.ReadLine, se täytyy ottaa pois Timissä.
—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ä.
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 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. Hiirtä ei saa käyttää lainkaan. 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ä 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
(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. 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 tehtävästä 1 piste (rasti kohtaan Set custom points) jos teit tehtävän mielestäsi täysin oikein.
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 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?
Luo tiedosto teht4.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):
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 asenna ja aja heksaeditori xvi32. Tuo löytyy mikroluokista valmiina (kirjoita komentorivillä xvi32
). Kirjoita tekstieditorilla 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 tiedostoon 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).
MacOS: Heksaluku-näkymän saat esiin myös Sublime Textissä: Asenna Sublime Text -editori, ja käynnistä se. Sitten paina Ctrl + Shift + P, ja kirjoita "Install package", paina Enter, sitten kirjoita "Hex viewer" ja paina Enter. Käynnistä Sublime Sublime uudestaan. Avaa sillä tekemäsi t4.txt
, sitten paina Ctrl + Shift + P ja kirjoita "Toggle hex view", ja paina enter. Nyt näet alkuperäisen tekstin oikealla ja heksanäkymän vasemmalla (alkaa 5455
jne.)
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.
Lue ensin Taunon käyttöohjeet.
Tehtävä Tauno T1 b (0.5p)
Tee Taunolla ohjelma, joka vaihtaa joka toisen alkion pareittain keskenään. Eli taulukosta 1, 2, 3, 4 tulee taulukko 2, 1, 4, 3
V1. Ville
Tee Villestä kohta 1.
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ää.
B1. Kurssin alkukysely
Vastaa kurssin alkukyselyyn (linkki on nyt korjattu). Tehtävän vastaukseksi katso ensin aikaisempia kysymyksiä ja vastauksia. Kirjoita sitten jokin kysymys jonka haluaisit esittää luennoitsijalle / kurssin henkilökunnalle jota ei oltu vielä kysytty. Pyrimme vastaamaan kaikkiin esitettyihin kysymyksiin.
B2. Alice
Ota ja asenna Alice 3.1 -ohjelmointiympäristö. (Huom. Vie noin 1 gigatavun.) Tee seuraavanlainen "ohjelma".
- Klikkaa setup scene neliötä pelinäkymän oikeassa alareunassa, jossa pelikentälle voi heitellä eri näköisiä olioita.
- Lisää pelikentälle henkilö, laita sille vaatteet ym. kuten haluat, anna nimeksi (name)
ihminen
. - Lisää myös alien, nimeksi
alien
- Ihmisen paikaksi (0.5, 0, 0), alienin paikaksi (-1, 0, 0).
- Palaa Edit code -tilaan (pelinäkymän oikea alareuna).
- Klikkaa hiiren vasemmalla
alien
-olion päällä ja laita se kääntymään 180 astetta raahaamalla Procedues-lootasta (vasen alareuna)turn
-komento oikeaan lootaan (myFirstMethod
). - Laita alien kävelemään vähäsen ja sitten hän sanoo jotain.
- Ihminen kävelee alienin luokse ja sanoo jotain takaisin.
- Alien nousee avaruuteen.
- Ihminen kaatuu selälleen maahan.
- Esimerkki: http://www.youtube.com/watch?v=dEN-Gi1s25A
Tee vielä joku omakin "juttu" peliin, nauhoita pelisi Youtubeen (File -> Upload to Youtube) ja palauta sitten alle videosi URL:n, ja parilla rivillä mitä opit ja miltä Alice tuntui, mitä hyvää mitä huonoa, käyttäisitkö uudestaan. (ainakin 3.2:lla toimii???)
Huom! Alicen uusimmassa versiossa ei ole enää Upload to Youtube toiminnallisuutta. Voit korvata Youtube-videon ottamalla kuvaruutukaappauksen Alicen Edit code
näkymästä (esim. PrintScreen, Windowsin Snipping Tool) ja tallentamalla sen W-levyllesi. Tämän jälkeen kuva löytyy selaimella osoitteesta
http://users.jyu.fi/~OMATUNNUS/KUVANNIMI
Palauta tällöin URL kuvaruutukaappaukseen.
B3. Numeron siirtäminen
Yhtä numeroa siirtämällä tee yhtälöstä 62 - 63 = 1
tosi.
G1-2. Luvut joiden neliöjuuri on kokonaisluku
Tee C#-ohjelma, joka tulostaa kaikki ne kokonaisluvut <= 1000, joiden neliöjuuri on kokonaisluku. TDD: Kirjoita ennen koodaamista käsin lukuja ja niiden neliöjuuria.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.