Harjoitustehtävät
Näytä ratkaisu opettajalle, niin saat pisteet "kotiin".
1. Tee ohjelma, joka kyselee kolme lukua, laskee niistä kaksi ensimmäistä yhteen ja vähentää viimeisen. Tee kaikki toimainnat pääohjelmaan. 2p
2. Tee edellinen ohjelma siten, että lukujen kyselyt toteutetaan pääohjelmassa ja laskenta aliohjelmassa. Palauta tulos pääohjelmaan return lauseella ja tulosta tulos pääohjelmassa.2p
3. Tee edellinen ohjelma siten, että lukujen kyselyt toteutetaan pääohjelmassa ja laskenta aliohjelmassa. Palauta tulos pääohjelmaan aliohjelman neljännessä parametrissa, jonka esittelet osoittimena.2p
4. Tee ohjelma, joka kyselee nimesi pääohjelmassa ja tulostaa sen aliohjelmassa. Käytä globaalia muuttujaa nimen talletukseen.2p
5. Tee edellinen ohjelma käyttämällä pääohjelman paikallista muuttujaa. Välitä merkkijonon osoite aliohjelmalle.(merkkijonon nimi on myös sen soite eli EI & merkkejä)2p
6. Tee edellinen ohjelma siten, että kyselet nimen aliohjelmassa ja tulostat sen pääohjelmassa.2p
7. Lisää edelliseen ohjelmaan funktio, joka tulostaa nimesi halutun määrän kertoja. Kysy määrä ohjelman alussa. 2p käytä for-lausetta 2p
8. Tee edellinen ohjelma do while lauseella. 2p
9. Tee edellinen ohjelma while lauseella. 2p
10. Tee ohjelma , joka tulostaa millä välillä antamasi luku on. Lukuvälit ovat <10, 10-100 ja
>100. Tee ohjelma if else lauseilla. 2p
11. Lisää sotu esimerkkiin nimen ja osoitteen kysely. Tulosta lopussa nimi, osoite ja sotu ja onko tulos oikea. 2p
12. Tee ohjlema, joka kyselee lukuja väliltä 1...10 , 50...100, 500... 1000. Jos käyttäjä vastaa väärin, anna herja. kysele niin kauan kuin käyttäjä antaa luvun 101. 2p
13. Tee ohjelma, joka tulostaa antamasi liukuluvun kokonaislukuna, heksalukuna sekä oktaalilukuna.2 p
14. Tee ohjelma, joka näyttää ruudulla käyttäjän antamaa lukua pienemmät parittomat luvut.2p
15. Tee muutos edelliseen tehtävään siten, että tulostat yhdelle riville 10 lukua. 2p
16. Tee edellinen tehtävä käyttäen tabulointia (5 lukua riville).2p
17. Siirrä edellisen tehtävän parittomien lukujen testi omaan aliohjelmaansa, vie luku argumenttina aliohjelmalle. 2p
18. Tee tehtävä 12 siten, että käytät satunnaisfunktiota rand alueen arpomiseen. Lopeta ohjelma, kun käyttäjä antaa luvun 999. 2p
19. Yhdistä tehtävien 12, 13 ja 14 toiminnoista funktiot yhteen ohjelmaan. Lisäksi tee pääohjelmaan case-rakenne, joka kutsuu tekemiäsi funktoita. Luentomateriaalissa on neuvottu case rakenteen käyttö. 2p
20. Tee edellisen harjoituksen perusteella ohjelma, joka kutsuu neljää vapaasti valitsemaasi aiempaa harjoitustehtävää. Käytä system-funktiota toisten ohjelmien käynnistämiseen.2p
21. Tee do-while silmukkaa käyttäen ohjelma, joka kyselee merkkijonoon enintään 20 merkkiä. (Ohje kysele getche-funktiolla. Lopeta silmukka, kun merkki on 13= ENTER tai silmukan sisällä oleva laskuri on kasvanut riittävästi). 2p
22. Muuta edellistä tehtävää siten, että ohjelma kyselee kokonaisluvun merkki kerrallaan ja tarkastaa jokaisen annetun merkin. Tämän jälkeen merkkijono muutetaan kokonaisluvuksi. (Ohje: tarkasta isdigit-funktiolla ja muuta kokonaisluvuksi atoi-funktiolla ) 2p
23. Tee ohjelma, joka nollaa bitit 4 ja 5 antamastasi 8 bittisestä luvusta (unsigned char) ja tulostaa arvon. 2p
24. Tee ohjelma, joka asettaa bitit 4 ja 5 arvoon yksi 8 bittisestä luvusta. 2p
25. Tee ohjelma, joka vaihtaa bittien 4 ja 5 arvot vastakkaisiksi antamastasi 8 bittisestä luvusta. Kutsu funktiota kaksi kerrtaa ja tarkasta saitko takaisin alkuperäisen luvun. 2p
26. Kahdssa 8 bittisessä luvussa on merkitsevänä osana molemmissa neljä vähinten merkitsevää bittiä. Yhdistä luvut yhteen kahdeksan bittiseen lukuun siten että ensimmäinen luku on neljässä vähiten merkitsevässä bitissä ja toinen neljässä eniten merkitsevässä bitissä. 2p
27. Vaihda 16 bittisen luvun vähiten merkitsevä ja eniten merkitsevä tavu keskenään. 2p
28. Testaa sizeof funktion toimintaa ja tulosta näytölle char, short, int, long ja long long tyyppien koko. 2p
29. Tee ohjelma, joka täyttää 3*3 taulukon ensin nollilla ja sen jalkeen sarake- ja rivi-indeksin summalla. Tulosta taulukon sisältö sekä alustuksen, että summauksen jälkeen. 2p
30. Tehtävä y=sin(x) on sarjakehitelmänä y=x-1/3!*x^3+1/5!*x^5... Laske kaavan avulla sin, huom. muuta kaava toimimaan asteilla.
y=e^x on sarjakehitelmänä y=1+x+x^2/2!.... potenssi =pow. Kuinka monella sarjan jäsenellä saat neljännen desimaalin oikeaksi?
31. Fischer robotin ohjaus. Tehtävän on ottaa kiinni palikasta ja siirtää se pöydällä paikasta toiseen sekä päästää irti. Työ tehdään kahden hengen ryhmissä. 3p
32. Tehtävä on ottaa käyttöön Fischer robotti. 6 pistettä. Tehdään kahden hengen ryuhmässä. Ainoastaan yksi työ.
33. Hae robotin kaikkien akselien rajat. Jos arvoja rajojen ulkopuoleta, ohjelma huolehtii niitten pyöristämisestä maksimi tai miniarvoihin. 3 p
34. Korjaa robotin ohjelmaa siten, että ohjelma toiimii molemmilla roboteilla oikein. Nyt ohjelma toimii siten, että nivelvarsirobotissa täytyy antaa negatiivisia arvoja tai moottorin suunta pitää muuttaa kotiinajossa. 6p
35. Testaa main-funktion komentoriviargumetteja. Tee testiohjelma, joka tulostaa antamiesi kolmen kokonaislukuargumentin arvon. 4p
36. Tee tietue ,joka sisältää Fischer robotin ohjelman moottorin ajotiedot. Eli moottorin numero, matka ja viive. 2p
37. Tee edellisestä tietuetaulukko. Kysy alussa käskyjen määrä= rivien määrä tietuetaulukossa ja sitten arvot. 4p