You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 17 Next »

Harjoitustehtävät

Näytä ratkaisu opettajalle, niin saat pisteet "kotiin".

1. a) Kirjoita ohjelma, jolla tulostat kuvaruudulle oman nimesi.
b) Muuta tulostuvaa tekstiä siten, että nimen lisäksi tulostat myös ikäsi.
c) Muuta ohjelmaasi niin, että ikää varten otat käyttöön muuttujan, jolle annat alkuarvoksi oman ikäsi.
d) Tulosta osoitteesi nimirivin alapuolelle.
e) Käännä ohjelmastasi suorituskelpoinen versio.
2p.

2. a) 'debuggaa' tehtävässä 1 tekemäsi ohjelma, eli suorita se rivi kerrallaan.
b) Poistu käyttöjärjestelmään, etsi tekemäsi ohjelma ja käynnistä sen EXE-versio.
2p.

3. a) Kirjoita ohjelma, jossa on kaksi kokonaislukumuuttujaa (int), joista toiselle annat alkuarvon. Tulosta muuttujien arvot (%d). Mitä huomaat?
b) Lisää ohjelmaasi kahden merkkimuuttujan määrittely (char). Anna toiselle merkille alkuarvo. Tulosta merkit kuvaruudulle (%c). Mitä huomaat?
c) Anna myös toiselle kokonaislukumuuttujalle alkuarvo. Tulosta kokonaislukumuuttujien summa ja erotus. Voit kirjoittaa laskutoimitukset printf()-funktion kutsussa sulkeiden sisälle.
2p.

4. Tee ohjelma, joka kyselee käyttäjältä (scanf()-funktiolla) kolme lukua, laskee niistä kaksi ensimmäistä yhteen ja vähentää viimeisen. Tee kaikki toiminnat pääohjelmaan. 2p.

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

6.
.
.
.
.
.
.
.
.
.
.
.
.

ALLA OLEVIA TEHTÄVIÄ EI TEHDÄ VIELÄ !

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
malliratkaisu tehtävään 23 binääriluvuilla

24. Tee ohjelma, joka asettaa bitit 4 ja 5 arvoon yksi 8 bittisestä luvusta. 2p
malliratkaisu tehtävään 24 binääriluvuilla

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
malliratkaisu tehtävään 25 binääriluvuilla

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
malliratkaisu tehtävään 26 binääriluvuilla

27. Vaihda 16 bittisen luvun vähiten merkitsevä ja eniten merkitsevä tavu keskenään. 2p
malliratkaisu tehtävään 27 binääriluvuilla

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?
malliratkaisu sinin, kosinin ja eksponenttifunktion laskemiseksi sarjakehitelmillä

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

  • No labels
You must log in to comment.