Ohjelmointi (Pascal) Harjoitus 4, 7.-11.10. (monisteen sivut 1 - 21) 4.1 a) Tavallisesti arvo muuttujalle sijoitetaan sijoituslauseen avulla. Tee kuitenkin harjoituksen vuoksi proseduuri Sijoita, joka saa parametrina reaalimuuttujan ja reaalilausekkeen. Proseduuri vain sijoittaa lausekkeen arvon muuttujan arvoksi. b) Muuttujan arvo asetetaan nollaksi tavallisesti sijoituslausetta käyttäen. Tee kuitenkin harjoituksen vuoksi proseduuri Nollaa, joka nollaa parametrina annetun reaalimuuttujan arvon. Toteuta proseduuri siten, että se kutsuu a)-kohdan proseduuria. c) Tee ohjelma, joka nollaa muuttujiensa x, y ja z arvon kutsumalla b)- kohdan proseduuria. Tee ohjelmasta kaksi erilaista versiota: Sellainen jossa Sijoita ja Nollaa on määritelty molemmat pääohjelmatasolla sekä sellainen, jossa Sijoita on määritelty Nollaa-proseduurin paikallisena proseduurina. Esitä ohjelmarakenne täsmällisesti ja selitä miten ohjelman suoritus etenee. 4.2 a) Tee funktio NelioSumma, joka palauttaa kahden reaalilukupara- metrinsa neliöiden summan. b) Tee parametriton funktio Vastaus, joka pyytää käyttäjältä yhden merkin ja palauttaa sen arvonaan. c) Tee funktio Satoja, joka palauttaa arvonaan kokonaislukupara- metrinsa itseisarvon satojen määrän, so. jos parametri on esim. -3459, funktio palauttaa arvon 34. 4.3 a) Tee proseduuri KirjoitaMerkkia, joka tulostaa parametrina saamansa merkin niin monta kertaa, kuin on toisen parametrin arvo. b) Tee ohjelma, joka pyytää käyttäjältä merkin ja määrän ja tulostaa saamaansa merkkiä pyydetyn määrän. Käytä hyväksesi aliohjelmia 4.2. b) ja 4.3. a). Testaa ohjelmaasi koneella. 4.4 Laadi aliohjelma (lkm, lev ja kork ovat parametreja) joka: a) kirjoittaa lkm kappaletta rivejä, joilla on pelkkä '>'-merkki. b) palauttaa arvonaan syöttöluvun, joka seuraa kun ensin ohitetaan lkm kappaletta syöttölukuja (voit olettaa, että syöttölukuja on ainakin lkm+1 kappaletta) c) ohittaa lkm syöttöriviä d) tulostaa '*'-merkeistä muodostuvan suorakaiteen, jonka leveys on lev ja korkeus on kork; jos jompikumpi on ei-positiivinen, mitään ei tulostu. 4.5 a) Tee funktio MerkkiLukuna, joka saa parametrina numeromerkin ja palauttaa arvonaan tuota merkkiä vastaavan kokonaisluvun. Voit olettaa, että etukäteen on varmistettu, että parametrina annetaan todella numeromerkki. b) Tee funktio MerkkijonoLukuna(Pituus:integer):integer, joka saa parametrina merkkijonon pituuden, lukee Pituus kappaletta merkkejä ja laskee niiden esittämän kokonaisluvun käyttäen apuna a)-kohdan funktiota. Saat nyt olettaa, että luettavat merkit todella ovat numeromerkkejä ja että parametrina annetaan positiivinen luku. 4.6 Kirjoita ohjelma, jolle syötetään vanha suuntanumero, ja joka tulostaa vastaavan uuden suuntanumeron. Voit olettaa, että numero annetaan oikein. Käytä case-lausetta. Tehtävän merkitsemiseen riittää osittainenkin ratkaisu, ts. jos et halua tehdä ohjelmastasi käyttökelpoista, riittää että luonnostelet ratkaisua niin paljon, että idea selviää. Suuntanumeromuunnokset ovat ohessa. (Kiitos tehtävän ideasta yhdelle kurssin opiskelijalle!) ----------------------------------------------------------------------- Suuntanumeromuutokset 12.10.1996 alkaen ======================================= --------- Ahvenanmaa 928 => 018 --------- Häme 916 933 917 934 918 935 919 936 931 937 => 03 --------- Kuopio 971 978 972 979 977 => 017 --------- Keski-Suomi 941 945 942 946 943 947 944 => 014 --------- Kymi 951 953 952 954 => 05 --------- Lappi 960 9695 9692 9696 9693 9697 9694 9698 => 016 ---------- Mikkeli 955 958 956 959 957 => 015 -------- Oulu 981 985 982 986 983 988 984 989 => 08 -------- Pohjois-Karjala 973 975 974 976 => 013 --------- Turku ja Pori 921 926 922 930 924 925 938 939 => 02 ---------- Uusimaa 1 90 => 09 ---------- Uusmaa 2 911 914 912 915 =>019 ---------- Vaasa 961 965 962 966 963 967 964 968 => 06 ---------- Erikoistapaukset 932 => 03 (Vammala, Mouhijärvi, Suodenniemi ja Äetsä) => 02 (Huittinen) ---------- Matkapuhelimet 949 => 049 940 => 040 950 => 050 9400 => 0400 9500 => 0500. ----------