From: Marko Mäkelä Subject: Selvennystä 4. kotitehtävään Newsgroups: opinnot.tik.rhj Date: 22 Mar 2002 10:01:16 +0200 Organization: TKK/TKY Path: news.tky.hut.fi!not-for-mail Lines: 43 Message-ID: <7lg02tc9pv.fsf@siphon.tcs.hut.fi> NNTP-Posting-Host: siphon.tcs.hut.fi X-Trace: otax.tky.hut.fi 1016784074 25679 130.233.215.34 (22 Mar 2002 08:01:14 GMT) X-Complaints-To: usenet@news.tky.hut.fi NNTP-Posting-Date: 22 Mar 2002 08:01:14 GMT X-Newsreader: Gnus v5.7/Emacs 20.7 Xref: news.tky.hut.fi opinnot.tik.rhj:347 Sain juuri tietää, että neljännen kotitehtävän tulkitseminen on aiheuttanut ongelmia. Kieltämättä ensimmäinen kysymys on muotoiltu hieman epätäsmällisesti. Annetun ohjelmiston asiakkaan osuus (client.c) toimii täysin eri tavalla kuin kuvan kohta (a), ja ensimmäiseksi kysytäänkin koodin formaalia mallia. Malli voidaan totta kai tehdä monella tavalla, mutta ajatuksenani oli, että kuvaustarkkuus olisi sama kuin annetuissa tilakoneissa. Erityisesti tämä tarkoittaa seuraavien asioiden pois jättämistä: - alustukset (ennen for-silmukkaa; rivit 1-99) - lopetus (rivit 105-106): oletetaan ohjelman pyörivän ikuisesti - käyttöliittymän tulosteet (fputs, fputc, perror) - virheenkäsittely: oletetaan, että kaikki järjestelmäkutsut (send, select, recv) onnistuvat Käyttöliittymän syötteet (rivit 101-120) kuvataan epädeterminismillä. Riveillä 101-120 oleva getchar-kutsu ja sen jälkeinen switch-lohko antavat käyttäjän "arpoa" lähetettävän viestin, joka sijoitetaan ennen lähettämistä muuttujaan c. Miettikää, onko asiakkaan tilakoneen toteuttavassa silmukassa mitään sellaista muuttujaa, jonka arvo säilyisi kierrokselta toiselle. Ellei ole, tilakoneeseen ei sen johdosta tarvitse lisätä tiloja. Miettikää myös, voiko asiakas lähettää ja ottaa vastaan viestejä toisistaan "samanaikaisesti". Ellei voi, tilakoneessa on oltava enemmän kuin yksi tila. Vihjeeksi ensimmäiseen kysymykseen voin antaa, että annetun ohjelman client.c tilakoneessa on vähemmän tiloja kuin kuvan (a) tilakoneessa. Annan vihjeen toiseenkin kysymykseen: miettikää, millaisia malleja tiedonsiirtokanaville on esitetty ja lukekaa tehtävänannon ensimmäisen sivun ensimmäisen kappaleen viimeinen lause. Jos jokin on vielä epäselvää, kirjoittakaa joko tänne ryhmään tai suoraan minulle, niin selvennän mielelläni. Toivottavasti ohjelmakoodin ymmärtäminen ei ole aiheuttanut kenellekään kohtuutonta vaivaa; C-kieltähän ei taidettu mainita esitietovaatimuksissa. Marko