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) Etsi tekemäsi ohjelma ja käynnistä sen EXE-versio virtuaalikoneessa. Huom. ikkuna ei jää näkyviin.
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 toimainnat toiminnat pääohjelmaan. 2p.
25. 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. Kirjoita erillinen funktio, joka tulostaa kuvaruudulle tähtirivin, jossa on 10 tähtimerkkiä:
**********
2p.
7. Kirjoita funktio, joka tulostaa kuvaruudulle funktiolle parametrina annetun määrän tähtiä. Tehtävän järkevä toteutus vaatii toistorakenteen. 2p.
8. Kirjoita ohjelma, joka kysyy käyttäjältä ympyrän säteen ja laskee sen perusteella ympyrän kehän pituuden. Jos annettu syöte ei ole kelvollinen, ohjelma antaa virheilmoituksen ja lopettaa.
9. Kirjoita ohjelma, joka kysyy käyttäjältä kuinka monta tähteä tulostetaan ja välittää tiedon funktiolle, joka tulostaa annetun määrän tähtiä ruudulle. Jos annettu syöte ei ole kelvollinen, ohjelma antaa virheilmoituksen ja lopettaa.
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. (Jos teet Qt:llä, niin katso ohje).
11. Tee ohjelma, joka tulostaa appelsiini, omena tai päärynä, kun käyttäjä antaa arvot 1, 2 tai kolme. Jos käyttäjä antaa jonkin muun arvon, ohjelma tulostaa arvon peruna.
12. Kysy käyttäjältä lukuarvo ja tulosta vastaava määrä eri hedelmän nimiä. Jos käyttäjä antaa arvon, joka on suurempi kuin tietämiesi eri hedelmien nimet, niin pyydä pienempää lukua. Käytä while-lausetta.
13.Tee edellinen tehtävä käyttämällä for-lausetta
14. Tee edellinen tehtävä käyttämällä do-while-lausetta
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
...
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
...
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
...
23. Tee ohjelma, joka nollaa bitit 4 ja 5 antamastasi ja 5 antamastasi 8 bittisestä luvusta (unsigned char) ja tulostaa arvon. 2p
malliratkaisu tehtävään 23 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 sizeof funktion toimintaa ja tulosta näytölle char, short, int, long ja 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
...
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
malliratkaisu sinin, kosinin ja eksponenttifunktion laskemiseksi sarjakehitelmillä
31.35. Testaa main-funktion komentoriviargumetteja. Tee testiohjelma, joka tulostaa antamiesi kolmen kokonaislukuargumentin arvon. 4p
...