C-ohjelmointi syksy 2006


Harjoitus 4

Tehtävät käsitellään harjoitustilaisuuksissa 28.9 TO 12-14 salissa B119 ja 29.9 PE 12-14 salissa B119.

Tehtävät 1-4. Tee menupohjainen ohjelma (kirjan tehtävä 8-6), joka tunnistaa seuraavat syötteenä annetut komennot:
 
	  i n       n on kokonaislukuarvoa
	  r name    name on tiedostonimi 
	  w
	  s r       r on kaksoistarkkuuden luku (double)
	  d 
	  h 
	  q  
Ohjelma toimii saadun  syötteen perusteella  seuraavasti:	 
    i     Varaa  muistilohkon n:ää kaksoistarkkuuden lukua varten. Jos on jo valmiiksi 
	  varattu muistilohko, niin se vapautetaan.
    r     Lukee kaksoistarkkuuden lukuja annetusta tiedostosta muistilohkoon. Lukeminen
          epäonnistuu, jos muistia ei ole varattuna. Lukeminen lopetetaan, kun joko 
	  varattu muistilohko on  täynnä tai lukuja ei voida enää lukea tiedostosta, 
	  koska luvut loppuvat tiedostosta (EOF) tai lukemisessa tapahtuu virhe. 
    w	 Tulostaa  muistilohkoon talletetut luvut.
    s     Etsii muistilohkosta annettua lukua ja ilmoittaa, löytyykö se vai ei. Etsiminen 
          epäonnistuu, jos muistilohkoa ei ole varattu.
    d    Tällä säädellään virheenjäljityssanomien tulostusta. Ensimmäisellä kerralla asetetaan 
	  virheenjäljitys päälle ja tulostetaan virheenjäljitysinformaatiota, toisella kerralla
	  poistetaan virheenjäljitys ja siihen liittyvä lisäinformaatio. Sen jälkeen aina joka 
	  toinen komento asettaa virheenjäljityksen päälle ja joka toinen poistaa sen päältä.
	  On käytössä vain, jos ohjelma on käännetty virheenjäljitysmoodissa (debugging mode).
    h    Näyttää kaikki käytettävissä olevat komennot.
    q    Sulkee kaikki avatut tiedostot, vapauttaa varatun muistitilan ja lopettaa ohjelman
         suorituksen.
  1. Laadi funktio, joka toteuttaa komennon i vaatimat toimenpiteet eli varaa muistilohkon komennossa ilmoitetulle määrälle kaksoistarkkuuden lukuja. Käytä parametreja järkevästi.

  2. Laadi kaksi funktiota, joista toinen toteuttaa komennon r toimenpiteet eli lukee lukuja annetusta tiedostosta muistilohkoon ja toinen toteuttaa komennon w toimenpiteet eli tulostaa muistilohkoon talletetut luvut näytölle.

  3. Laadi funktio, joka toteuttaa komennon s toimenpiteet eli tutkii löytyykö annettu luku muistilohkosta.

  4. Laadi pääohjelma, joka lukee ja tarkistaa syötteen ja saatuaan kelvollisen komennon suorittaa sen edellyttämät toimenpiteet. Komennon voi antaa sekä pienenä että isona kirjaimena. Pääohjelmassa itsessään on toteutettu toiminnot h ja q eli komentojen näyttö ja ohjelman lopetus. Komennon d saadessaan ohjelma voi tarvittaessa ilmoittaa, että sitä ei ole vielä toteutettu. Virheellisen syötteen saadessaan ohjelma tulostaa ohjeen komentojen käytöstä.

  5. Tee ohjelma, joka lukee tiedostoa, jossa tieto on seuraavassa muodossa:
    kokonaisluku, jota seuraa liukuluvut (double).
    Ohjelma lukee ensin kokonaisluvun (n) ja varaa sen jälkeen muistia n:lle liukuluvulle ja lukee sen jälkeen nämä luvut tiedostosta ja tallettaa muistiin varaamalleen alueelle. Sen jälkeen ohjelma järjestää luvut ja kirjoittaa ne takaisin tiedostoon. Muista myös virhetarkistukset.

  6. Tee pinon toteutus. Voit olettaa että pinoon talletetaan esim. double tyyppisiä alkioita.

.