Tietojenkäsittelytiede Proseduraalinen ohjelmointi, syksy 2007 Harjoituskerta 1 Tehtävissä voit halutessasi käyttää kurssin alkuvaiheeseen tarkoitettuja syöttö- ja tulostusmakroja (esitetty luennolla ja ohessa, käyttöesimerkki luentorungon sivulla 14). Makrot saat käyttöön ottamalla kurssin www-sivulta tiedoston ckieli.h ja lisäämällä kooditiedoston alkuun rivin #include "ckieli.h" Tee ohjelmat. Syötä ne tietokoneelle, käännä ne ja tarkasta niiden toi- minta. Demotilaisuudessa ohjelmat esitetään dataprojektorilla, joten tallenna tehtäväsi keskuskoneelle (cs tai cc). Demoissa otetaan pääteyhteys keskuskoneeseen. 1. Selvitä, miten vaikuttavat gcc -kääntäjän optiot -std=xxx -Ixxx -lxxx -S -Dxxx 2. Kirjoita ohjelma, joka kysyy käyttäjältä kolme kokonaislukua, ja tu- lostaa ne suuruusjärjestyksessä suurimmasta pienimpään. 3. Muuta edellistä ohjelmaa siten, että se kysyy käyttäjältä kolmen luvun ryhmiä (ja tulostaa ryhmän sisällön suuruusjärjestyksessä) toistuvasti kunnes käyttäjä antaa kolme samaa lukua yhdeksi ryhmäksi. 4. Kirjoita ohjelma, joka kysyy käyttäjältä kokonaisluvun n, ja etsii sekä tulostaa kaikki kyseistä lukua pienemmät alkuluvut (luvut jotka ovat jaollisia vain ykkösellä ja itsellään). Ei tarvitse tehdä algoritmisesti tehokasta ratkaisua, tehotonkin ratkaisu (esim. kokeile kullekin luvulle kaikkia mahdollisia ratkaisuja). 5. Kirjoita ohjelma, joka lukee käyttäjältä kokonaisluvut n ja m, ja tulostaa näytölle n*m kokoisen suorakaiteen tähtiä. --------------------------------------------------------------------- /* ckieli.h */ /* C-makroja C-kieli -kurssin alkua varten */ /* Simo Juvaste 25.3.1998 */ /* peruskirjastot */ #include #include #include /* lukee kokonaisluvun */ #define lue(luku) scanf("%d", &luku) /* tulostaa kokonaisluvun */ #define tulosta(luku) printf("%d\n", luku) #define tulosta_ei_rivinvaihtoa(luku) printf("%d", luku) /* lukee reaaliluvun */ #define lue_reaali(luku) scanf("%f", &luku) /* tulostaa reaaliluvun */ #define tulosta_reaali(luku) printf("%f\n", luku) #define tulosta_reaali_ei_rivinvaihtoa(luku) printf("%f", luku) /* tulostaa merkkijonon */ #define tulosta_merkki(mjono) printf("%s\n", mjono) #define tulosta_merkki_ei_rivinvaihtoa(mjono) printf("%s", mjono)