Sinun UserID: 0
Ilmoittaudu missä ryhmässä (live/zoom/video) katsot demojen vastaukset (huom joka viikolla oma ilmoittautuminen)
Please
to interact with this component. Please
to interact with this component. Please
to interact with this component. Please
to interact with this component. Please
to interact with this component.
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ä.
Ohjelmointi 1, s 2023 / Demo 1
Jos haluat harjoitella vastaavilla tehtävillä, joihin saat myös mallivastaukset, niin katso:
HUOM! Joka kerta on saatava vähintään 2p tähtitehtävistä! Alle 5p tehneillä on huono ennuste loppukurssissa.
Demot palautetaan viimeistään ma 11.9 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
- muiden vastaukset
Oppimistavoitteet
Klikkaile ruksit niihin kohtiin jotka olet oppinut. Työkirja-sivulla näet yhteenvedon kaikista demoista.
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 (tai zoom) osallistuminen, oppimateriaalin lukeminen, demotehtävien tekeminen, luentovideon katsominen, demojen palautustilaisuuteen osallistuminen 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. Tästä annettava 0.25 näkyy Pisteet-sivun demokerran summassa. Kirjoita pelkkä luku esim tyyliin 13.5
Ajankäyttösi tällä viikolla:
Please
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ää vähintään 7 p.
Siis esim. ennen demo 2 tehtävien aloittamista pitää demoista 1 tulla vähintään mainittu pistemäärä.
Voit saada demopisteitä indeksoimalla luento/demovideoita, ks: Videoiden hakemisto aihepiireittäin 23 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.
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
Tämän kerran demot palautetaan viimeistään ma 11.9 klo 11:00 mennessä. Tarkista aina kunkin kerran takaraja sivun alusta. Voit palauttaa osan tai kaikki tehtäväsi etukäteenkin ja täydentää vastauksia määräaikaan mennessä.
Linkissä ilmoitus Sorry, you don't have permission to access this resource.
VL: Kiitti, korjattu
—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ä
Jokaisella tehtäväkerralla voi olla tavallisia tehtäviä, Ville-tehtäviä (V=Ville), Tauno-tehtäviä (T=Tauno), lisätehtäviä jotka yleensä vaativat luentojen ulkopuolista materiaalin käyttöä (B=Bonus) ja harrastajien tehtäviä, joita ei periaattessa voi vielä tehdä kurssin tiedoilla (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 osan 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.
Likikään kaikissa tehtävissä ei ole (eikä voi olla) automaattista arvostelua ja osaan niistä pitää itse antaa omantunnon mukaan pisteet.
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 keräisi enemmän kuin 8 pistettä, siirtyy automaattisesti korkeintaan 8 pistettä hyvityspisteissä huomioitavaksi.
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 OPPIMINEN, ei demopisteiden kalastelu tai kopiointi. Kopiot saa jo demoissa valmiiksi painetussa muodossa.
Ryhmätyö on sallittua, mutta tämä ilmaistaan laittamalla aina tiedoksi - esimerkiksi ohjelman kommentteihin - kaikkien ryhmään osallistuneiden nimet.
Taunon käyttöohjeita:
Tauno-tehtävän saa auki klikkaamalla tehtävälaatikon oikeasta yläkulmasta löytyvää Näytä 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.
Jotta saat täydet pisteet, niin paina aina ensin Aja
ja sitten Test
.
Tehtävä Tauno T1 b
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
Tehtävä Ville V1
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ää.
HUOM! Lue Ville-tehtävät huolella ja uudelleen jos sinusta tuntuu että Ville ei ole tyytyväinen oikealta vaikuttavaan vastaukseen!
Kun kirjoitat TEKSTIvastauksia, niin rivitä vastaus itse niin että se näkyy kunnolla vastausruudussa. Toisaalta tekstikäsittelyssä (esim. Word) ei saa itse rivittää.
Tehtävä 1. Komentorivi
Tehtävän saa tehdä myös Macillä tai Linuxilla. Windowsissa saa käyttää Git Bash (suositus), WSL, CMD tai PowerShell.
Olethan tehnyt ensin (pääte)ohjaustehtävät viikolta 1?
Tehdäänkö pääteohjaus jo tässä vaiheessa? Vai vasta tuolla myöhemmin? :)
VL: No jos saat tämän tehtyä ilman pääteohjausta, niin toki saat tehdä. Saat toki tehdä pääteohjaustehtävätkin "omin nokkineen" jos onnistuu. Ideahan pääteohjauksissa on, että jos tulee ongelmia, niin voi pyytää ohjaajalta apua. Niitä voi toki aina yrittää itse ja jos kaikki sujuu kuin vettä vaan, niin silloin ei tarvitse käydäkään.
—Mäcissa/Linuxissa alla esitetty kurssit
hakemisto kannattaisi tehdä ehkä ~/
alle (mato on lyhenne omalle kotihakemistolle, esim /users/vesal
.
Aloita sen mukaan mitä shelliä käytät esimerkiksi seuraavasti (c-levyn tilalla voit käyttää muutakin levyä Windowsissa):
Linux/Mac: cd ~
Git Bash: cd /c
WSL: cd /mnt/c
CMD: cd /d C:\
PowerShell: cd c:\
Tee valitsemallasi komentorivikäyttöliittymällä alla olevan mallin mukainen hakemistorakenne kurssin demovastauksia varten. Alla sisennykset kuvaavat sitä, mikä on minkäkin alihakemisto.
kurssit
ohj1
demot
demo1
demo2
ht
Kun olet luonut yllä olevan hakemistorakenteen palaa samaan hakemistoon, josta edellä aloitit ja sitten kirjoita komento
Linux/Mac/Git Bash/WSL: ls -laR kurssit
PowerShell: dir -s kurssit
cmd: dir kurssit /s
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):
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
Tehtävän vastaukseksi luodaan palautettava tiedosto teht1.txt
seuraavasti:
Linux/Mac/Git Bash/WSL: ls -laR kurssit >kurssit/ohj1/demot/demo1/teht1.txt
cmd: dir kurssit /s >kurssit\ohj1\demot\demo1\teht1.txt
PowerShell: dir -s kurssit >kurssit\ohj1\demot\demo1\teht1.txt
Katso, mitä tuli tiedostoon teht1.txt
. Mene ensin demo1 hakemistoon ja sitten:
Linux/Mac/Git Bash/WSL: cat teht1.txt
CMD/PowerShell: type teht1.txt
tai voit katsoa teht1.txt
tiedoston sisältöä myös jollakin tekstieditorilla (esim. Visual Studio Code, Notepad++, Sublime Text, tms.).
Kopioi tiedoston teht1.txt
sisältö alla olevaan tekstikenttään. Sitten voit tuhota tiedoston teht1.txt
.
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 Visual Studio Code, 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:
Aluksi tasan sata riviä, joilla jokaisella lukee:
Harjoittelen tekstitiedoston tekemistä!
Sen jälkeen tasan yksi rivi, jossa on tasan 80 kpl miinusmerkkejä '
-
' eikä mitään muuta, ei myöskään välilyöntejä.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
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.
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
- Tekstieditori
- JetBrains Rider
- Jypeli-kirjasto (tulee em. ohjeilla)
- Jypeli-projektimallit Rideriin (tulee em. ohjeilla)
- Komentotulkki (aina valmiina MacOs, Linux, Windows tarvitsee GitBashin asentamisen)
- Git harjoitustyötä varten (Työkalujen pääsivu, kohta 4)
Jos ohjelmien asennuksessa ilmenee ongelmia, voit kysyä neuvoa kaverilta, kurssin keskustelusivulta tai katsoa kurssin TIM-sivuilta löytyviä asennusohjeita. 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):
Tässä kohtaa kehoitetaan tekemään ensimmäinen pääteohjaus...kuten myös Tehtävä 1. Komentorivi kappaleessa.
—- Tee ensimmäinen HelloWorld ohjelmasi pääteohjaus 1:n ohjeilla
Tehtävän vastauksena lisää tiedostoon HelloWorld.cs
joku keksitty vaikka Ankkalinnan nimi kommentteihin (eli @author
-tekstin perään). Kopioi sitten tiedoston HelloWorld.cs
sisältö alla olevaan tekstikenttään. Dokumentoinnin osalta ota mallia esimerkistä: 2.4.1 Dokumentointi.
Tehtävä 4. ASCII-koodi
Tämä tehtävä on tarkoitus tehdä ilman minkään apuohjelman käyttöä (lukuun ottamatta lopussa heksaluvun muunnosta). 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
Onko tässä virhe: Viimeinen taulukon numeroyhdiste 01010011 ohjaa kirjaimeen S ja vastauksesta saa 0 pistettä. Vaihdoin kuitenkin tämän numeroyhdisteen 01000001 mukaan, joka on kirjain A ja sain pisteen tehtävästä
VL: Ei ole virhettä koska sitähän siinä kysytään :-)
—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):
- 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) - 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. - avaa luentomonisteesta muunnostaulukko ja muunna binäärilukuja heksaluvuiksi seuraavalla tavalla:
- jaa binääriluku 4 bitin palasiin
- katso kumpaakin palasta vastaava 16-järjestelmän (heksajärjestelmän) luku taulukosta
- heksaluku on kun nämä luvut laitetaan peräkkäin
01011010
=0101 1010
ja muunnostaulukosta vastaavat heksaluvut ovat5
jaA
eli binääriluku on heksalukuna5A
. - 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).
Tehtävä 5*. Tietojen tulostaminen
- Tee ohjeen: Kääntäminen ja ajaminen dotnetillä mukaisesti projekti
Mina
, eli vaihda ainaHelloWorld
tekstien tilalleMina
.
Avaa Mina.cs
editoriin. Jos et saa avattua komentoriviltä, niin käynnistä editori "tyhmällä" Windows-tavalla. Tarkista että luokan nimi (class
-sanan perässä oleva nimi) on HelloWorld
sijaan Mina
. Sitten muuta ohjelma sellaiseksi, että se tulostaa jonkun kuvitteellisen henkilön nimen, kännykän valmistajan ja operaattorin 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.)
Tehtävä 6*. Lumiukko
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 omalla koneella, 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
).
Jos yrität lisätä fysiikkakappaleita toisten fysiikkakappaleiden sisälle, huomaat että ne automaattisesti liikkuvat erilleen. Eli siksi alla ei voi käyttää muiden pallojen lisäämisen tapaan (voit toki kokeilla)
Add(silma1);
koska silloin silma1
lisääntyisi peliin ja se olisi p3
-olion kanssa päällekkäin, koska alla niiden koordinaatit on laskettu niin, että osuvat toistensa sisälle.
Tarkkaan ottaen tuo edellä kirjoitettu olisi
this.Add(silma1)
eli lisäys tehdään nimenomaan this
-olion, eli itse pelin sisälle.
Viite this
viittaa peliin, jota ollaan tekemässä ja jos sitä ei kirjoiteta erikseen, se tulkitaan kuin se olisi kirjoitettu.
Pelin alueella fysiikkamoottori ei salli olioiden olevan sisäkkäin.
Saat kuitenkin liitettyä kappaleita (olioita) yhteen niin, että ne käyttäytyvät kuin yksi ja sama kappale asettamalla olion toisen olion lapsiolioksi (eli lisäämällä olion toisen olion, tässä tapauksessa p3
, sisään) seuraavalla tavalla:
PhysicsObject silma1 = new PhysicsObject(2 * 10.0, 2 * 10.0, Shape.Circle);
silma1.Y = p3.Y + 0;
silma1.Color = Color.Black;
p3.Add(silma1);
Huomaa edellä p3.Add(silma1)
, eli silma1
lisätään p3
-olion lapseksi (eli nimenomaan p3
:n sisälle, ei pelin sisälle).
Nyt siis silma1
on liitetty kiinteästi kappaleeseen p3
sen keskipisteeseen (koska Y:hyn lisätään 0, on silma1
:n y-koordinaattia sama kuin p3
:n y-koordinaatti). Mieti itse miten muutetaan X-koordinaattia. Koska x-koordinaattia ei ole annettu, se on oletuksena 0.
Jos silmä on tasan keskellä p3
:sta, ei näytä olevan eroa onko add(silma1)
vaiko p3.add(silma1)
. Eron huomaat kuitenkin heti, jos silmä ei ole keskellä. Syynä on se, että keskellä "päätä" ollessaan fysiikan voimat vetävät silmää yhtä paljon kaikkiin suuntiin jos se on lisätty peliin eikä pallon p3
sisälle.
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ää.
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.
7 c)
Kun tehtävässä 6 klikkailet linkkiä Tavallinen/Highlight
mitä tapahtuu? Kun klikkailet linkkiä Näytä koko koodi
, mitä tapahtuu?
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)
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.
B3. Kurssin alkukysely
Tehtävä G1-2. Luvut joiden neliöjuuri on kokonaisluku
Huomaa että Guru-tehtävät (G) on tarkoitettu niille, joille on jo paljon aikaisempaa kokemusta. Ei ole tarkoituskaan että näitä pystyisi viikon opiskelulla tekemään :-)
Tee C#-ohjelma, joka tulostaa ensimmäisestä alkaen järjestyksessä kaikki ne kokonaisluvut <= 1000, joiden neliöjuuri on kokonaisluku. Kukin luku tulostetaan omalle rivilleen. Mitään muuta ei saa tulostaa.
Kirjoita ennen koodaamista käsin lukuja ja niiden neliöjuuria. Tämä on pohja TDD-ajattelulle (Test Driven Development).
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.