Harjoitustyön teko-ohje


Harjoitustyökansio

Parasta olisi heti alkuun tehdä itselleen harjoitustyökansio, jossa on tämä työkirja ja selvät välilehdet kutakin harjoitustyön vaihetta varten. Lisäksi kansioon voi tehdä taskun harjoitustyön levykkeille. Levykkeitä kannattaa olla vähintään 1 varsinainen ja 1 varakopio.

Ohjaukset

Harjoitustyön ohjausta annetaan mielihyvin kaikille niille, jotka tulevat apua ja/tai ohjausta pyytämään.

Koska ohjattavia on paljon, pitää ohjaukseen varata aika merkitsemällä oma nimensä oven vieressä olevaan lukujärjestykseen. VL:n luokse voi tulla myös muulloin, mikäli hän sattuu olemaan vapaana.

Ohjaukseen tultaessa pitää olla varustautunut seuraavasti:

Ohjauksessa:
    ei ole mitään pelättävää

    esitettävä kritiikki ja korjausehdotukset on tarkoitettu positiivikseksi opetukseksi

    kirjoitetaan päiväkirjaan oma-aloitteisesti ohjaajan esittämät muutokset
    ohjaaja tarkistaa muutosehdotukset samoiksi joita hän tarkoitti ja kuittaa ne omikseen

    kun muutokset on tehty, kuittaa ohjaaja myös tämän

Harjoitustyö ryhmätyönä

Kurssilla on mahdollisuus tehdä harjoitustyö myös ryhmätyönä. Ryhmäläisillä voi olla kaikilla joko sama aihe jota he tekevät yhdessä tai sitten kullakin oma aihe, jota yhdessä voidaan työstää. Esimerkiksi yhden tekemät aliohjelmat kelpaavat muillekin, yksi ymmärtää ja selostaa muille. Kaikki voivat testata toistensa suunnitelmia ristiin.

Erillisissä töissä on se etu, että jonkin ryhmäläisen lopettaessa voidaan työ saattaa yksin loppuun.

Mikä on harjoitustyö

Harjoitustyö EI ole työnäyte!

Oppimistilaisuus

Harjoitustyö on oppimistilaisuus, jossa opiskelija yrittää omaamansa tiedon pohjalta tehdä jotakin. Tätä yritystä näytetään työn ohjaajalle, joka sitten tutkii mikä työssä on oikein ja mikä väärin, huonosti tai kömpelösti toteutettu. Näin jo opiskelun alkuvaiheessa päästään korjaamaan vääriä tottumuksia, joita jälkeenpäin piintyneinä tapoina voi olla mahdoton muuttaa.

Tämän takia harjoitustyötä PITÄÄ käydä esittämässä ohjaajille riittävän usein. Punakynämerkintä EI OLE HÄPEÄ, vaan osoitus siitä, mitä pitäisi pohtia uudelleen (ja osoitus siitä, että ohjaaja on kiinnostunut opiskelijan työstä!).

Kirjoita heti oikealla tyylillä

Kun kirjoitat harjoitustyötä, käytä heti oikeaoppista sisennystä, muuttujien nimien valintaa yms. On liian aikaa vievää ensin kirjoittaa jonkinlainen sotku ja työn loppuvaiheessa käyttää 10 tuntia tyylin muuttamiseen.

Kun oikean tyylin oppii, on sillä aivan yhtä nopea kirjoittaa kuin suttutyylilläkin!

Mitä pitää pohtia

Ohjelman helppokäyttöisyys ja loogisuus

Ohjelman tulisi olla sellainen, että sitä osaa käyttää kuka tahansa. Ammattimaisempaan käyttöön tehty ohjelma voi sisältää vähemmän ohjeita kuin yleiseen käyttöön tehty ohjelma.

Kuka käyttää ohjelmaa

Harjoitustyön tehtävän määritys on varsin epämääräinen. Jotta aiheesta saa järkevän, kannattaa ennen muuta jäsentämistä pohtia sitä, missä vastaavalla ohjelmalla olisi käyttöä.

Esimerkiksi olkoon tehtävänä tehdä ohjelma, jolla voidaan tutkia elokuvateatterin kävijöiden ikä ja sukupuolijakaumaa.

Missä tällaisella ohjelmalla olisi käyttöä? Tietysti elokuvateatterin johto voisi tämän perusteella valita mitä teatterissa kannattaa esittää ja milloin näytöksiä pidetään.

Mistä tiedot saadaan? Tiedot voitaisiin saada suoraan ovelta kävijöiden mennessä teatteriin. Mikro olisi ovella ja jokainen kävijä näppäilisi kysytyt tiedot koneeseen. Tällöin tämän osan ohjelmasta tulisi olla todella idioottivarman. Kun kaikki ovat menneet sisälle, kävisi teatterin johto jollakin salasanalla lopettamassa syötön ja ottaisi tarvitsemansa analyysin sekä tallettaisi tulokset tiedostoon myöhempää käyttöä varten!

Yleisyys ja muutettavuus

Esimerkiksi tehtävänä naisten telinevoimistelun pistelasku. Telineet, niiden nimet ja niiden määrä täytyy olla jälkeenpäin helposti muutettavissa, koska tuskinpa muuten ohjelmassa on isoa ero siinä lasketaanko miesten vai naisten kilpailua.

Oma aihe

Niille, joilla ei ole esittää omaa ehdotusta harjoitustyön aiheeksi, jaetaan äärimmäisessä hätätilassa valmiita aiheita.

Aihe keksitään itse

Opiskelijan kannalta on tietysti motivoivampaa valita itse aiheensa, josta haluaa tehdä ohjelman. Aihe voi olla esimerkiksi opettajilla jokin opetusohjelma, urheilijoilla jokin pistelasku tai päiväkirja, koti-isillä reseptivarasto jne.

Ehdotettua aihetta voidaan sitten ohjaajien kanssa muokata vastaamaan tasoltaan kurssin vaatimuksia.

Tavoitteena on ensin saada itseä miellyttävä aihe, jonka käyttötarpeen, toiminnan ja hyödyllisyyden ymmärtää. Tämän jälkeen aihe kiinnitetään ja ruvetaan harjoittelemaan ohjelman suunnittelua ja ohjelmointia tähän aiheeseen.

Vaatimukset

Harjoitustyössä pitäisi saada harjoiteltua seuraavat asiat:

Siis aihe tulisi valita siten, että siinä käsiteltävä aineisto pitäisi ohjelman käyttökertojen välillä tallettaa tiedostoon. Aineiston tarpeen pitäisi olla niin suuri, ettei sille välttämättä osata sanoa ennakolta tarkkaa ylärajaa. Tyypillisiä tällaisia ohjelmia ovat erilaiset rekisteriohjelmat, esim. mallina oleva kerhon jäsenrekisteri.

Harjoitustyön vaiheet

Huomattakoon, ettei harjoitustyön vaiheilla ja malliharjoitustyön numeroilla tai Listaus-monisteen luvun numeroilla ole yhteyttä keskenään (paitsi isompi numero on myöhempi vaihe). Seuraavassa on harjoitustyön vaiheiden, monisteen ja malliohjelman versioiden välinen yhteys:

1. Esisuunnitelma (Ohjelmointi, luku 2)

Harjoitustyön 1. vaihe on esisuunnitelma, eli tutkia tehtävän määritys tarkemmin ja yrittää määritellä siitä minkälainen ohjelman tulisi olla. Tässä tehdään monisteen Kerho-ohjelman mallin mukainen (tai parempi) suunnitelma siitä mitä ohjelma tekee.

Erityisesti kirjoitetaan kaikki ne kohdat, joita näyttöön tulostuu, mitä käyttäjä vastaa ja miten ohjelman tulisi eri vastauksiin reagoida! Siis
Anna hetu >111375-111A[RET]
Henkilötunnuksessa päivämäärä väärin!
Anna hetu >
ei missään tapauksessa pelkkiä koneen tekemisiä:
Anna hetu >                                VÄÄRIN TEHTY!
Henkilötunnuksessa päivämäärä väärin!
Anna hetu >

Jo tämä vaihe kannattaa kirjoittaa esimerkiksi Borland-C editorilla, jolloin sitä on helppo korjailla ohjaajien toivomusten mukaisesti. Myös se mitä tiedostoon talletetaan ja minkä näköisenä, tulisi esittää!

Koska Kerho-ohjelma jaetaan kurssilla mallina, saattaa ohjaaja tehdä suunnitelmaan muutoksia tai lisäyksiä, jottei työ synny pelkästään vaihtamalla malliohjelmassa sanoja Kerho sanoiksi Kauppa ja sanoja Jäsen sanoiksi Tuote.

Vaikka hieno näytönkäsittely yms. kuuluvatkin oikeaan ohjelmaan, kannattaa työmäärän vähentämiseksi (ja ohjelman pitämiseksi standardi ANSI-C++:n mukaisena) tyytyä Kerho-ohjelman tyyliseen keskustelevaan kyselyyn. Kuitenkin aina kun mahdollista, kannattaa käyttäjälle ehdottaa jotakin oletusvastausta, jonka hän voi hyväksyä pelkällä RET-näppäimen painamisella.

Jos joku haluaa oikeata näytön käsittelyä, on kurssin aliohjelmakirjastossa pieni apukirjasto console.c, jota saa käyttää (koska se voidaan kääntää useimmille laiteympäristöille). Tämän kirjaston avulla voidaan kirjoittaa yksi-ikkunaisia sovelluksia. Joka tapauksessa käyttöliittymä kannattaa ohjelmointivaiheessa eristää muusta koodista, jotta käyttöliittymän vaihtaminen olisi helpompaa (vrt. kerhopp -malliohjelmat).

Katso myös http://www.jyu.fi/~vesal/ohj/

2. Käyttöohje tai suunnitelma (Ohjelmointi, luku 2)

Ohjaajan ehdottamat muutokset on tehty suunnitelmaan ja suunnitelma on puhtaaksikirjoitettu. Jatkossa ohjelmaa kehitetään tämän suunnitelman pohjalta.

Tietysti mikäli myöhemmin keksii selviä parannuksia, niin näitä voidaan suunnitelmaan tehdä. Parannukset on kuitenkin hyväksytettävä ohjaajalla.

3. Apualiohjelmia tai ohjelman menut (MENUT.05)

Koska käytännön ohjelmointia tehdään sekä TOP-DOWN että BOTTOM-UP periaatteella, on aluksi (kun ei vielä osata paljoa C-kieltä) mukava tehdä BOTTOM-UP strategialla joitakin selvästi ohjelmassa tarvittavia aliohjelmia sekä valmiin ohjelman runkona toimiva valikkosysteemi.

Toisaalta voidaan edetä myös TOP-DOWN periaatteella ja kirjoittaa ohjelmasta toimiva runko, jossa mikään alakohta ei varsinaisesti toimi. Myöhemmin tähän on mukava yksi kerrallaan lisätä toimintoja.

Huomattakoon, että ohjelma pitää olla AINA kommentoituna. Erityisesti kukin tarvittava .cpp ja .h tiedosto pitää varustaa tekijöiden nimillä ja teko- sekä muutospäivämäärillä!

4. Luokat ja tietorakenteet (Ohjelmointi, luvut 11-12)

Ohjelman jatkokehittelyn kannalta on välttämätöntä kiinnittää ainakin jonkinlainen osa ohjelman tarvitsemista tietorakenteista. Tietorakenteista piirretään aluksi kuvat ja ne hyväksytetään ohjaajalla ja sitten kirjoitetaan tietorakenteita vastaavat C-määrittelyt.

Tietorakenteiden ei välttämättä tarvitse olla samanlaiset kuin Kerho-ohjelmassa, mutta useisiin harjoitustöihin tämä rakenne käy lähes sellaisenaan, tai pienillä lisäyksillä.

Samalla suunnitellaan ohjelman luokkajako. Luokkajako kirjoitetaan CRC-korteille, jotka näytetään ohjaajalle.
Katso myös http://www.jyu.fi/~vesal/ohj/

5. Tietorakenteiden runko (malli RUNKO.1, JAKO.15)

Seuraavaksi kirjoitetaan monisteen mallia vastaava runko ohjelmasta, jossa ei ole vielä likikään kaikki toiminnot oikeasti toimivina, mutta tietorakenteen ja luokkajaon toimivuus voidaan testata.

Tässä seuraava vaihe ennen vaiheeseen 6 siirtymistä on kommentoida aliohjelmat ja jakaa yhdessä tiedostossa oleva koodi loogisiin kokonaisuuksiin (moduleihin). Tämän saa (ja kannattaa) tietysti tehdä valmiiksikin vaihetta 5 varten.

Viimeistään tässä vaiheessa (ja myöhemmissäkin) ohjaajat tenttaavat suullisesti tekijän ymmärtävän jokaisen ohjelmaansa kirjoittaman lauseen merkityksen (oma listaus saa olla mukana ja siinä saa olla kommentteja).

6. Tiedoston käsittely ja moduleihin jako (malli TALLETUS.2)

Ohjelmat suunnitellaan periaatteella:
ALKU
lue tiedostosta entiset tiedot
käsittele tietoa
talleta muuttuneet tiedot
LOPPU

Koska ohjelman runko on valmiina, ja ohjelman muita kohtia testattaessa täytyy aina syöttää riittävästi aineistoa toimintojen toteamiseksi, saattaa olla helpointa ottaa vanha aineisto tiedostosta ja tallettaa se lopuksi tiedostoon.

Siis seuraavaksi runkoon täydennetään tiedoston luku ja talletus. Ohjelmahan on jo jaettu modulehin, jotta jatkokirjoittaminen helpottuu. Tiedoston käsittelykin kannattaa lisätä kahdessa vaiheessa. Esimerkiksi ensin tiedoston kirjoittaminen ja kun tämä on testattu valmiiksi, niin lisätään tiedoston lukeminen.

7. Toimiva ohjelma (malli LUKEMINEN.3-ETSILAJ.5)

Nyt ohjelmaan täydennetään alkuperäisen suunnitelman mukaisia toimintoja pala kerrallaan koko ajan testaten. Näin saadaan lopuksi aikaan valmis ja toimiva ohjelma.

Harjoitustyössä ei välttämättä kaikkien alavalintojen tarvitse toimia, kunhan opiskelija on käynyt kaikki oleelliset ohjelmointiin ja C/C++ -kieleen liittyvät asiat läpi. Ohjaajan kanssa sovitaan mitkä kohdat ohjelmasta voidaan jättää toteuttamatta.

Toivottavaa olisi, että vähintään jokin yksinkertainen etsiminen (haku) toimisi.

Pääosin harjoitustyön tulee tasoltaan vastata liitteenä jaettua kerhon jäsenrekisteriä ja sen tulee toimia alkuperäisen suunnitelman mukaisesti!

Kurssin suoritus loppukokeella

Harjoitustyön tulee olla valmis ja hyväksytty ennen tenttiin osallistumista!


Kirjoitustyyli ja kommentointi

Harjoitustyö kirjoitetaan ja kommentoidaan samaan tyyliin kuin monisteen loppuosassa esitetyt esimerkkiohjelmat. Erityisesti harjoitustyöstä tarkastetaan

Työn palauttaminen

Ei selostusta

Työstä ei tarvitse kirjoittaa työselostusta, vaan hyvin kommentoitu ohjelmalistaus riittää.

Ohjelman jako osiin

Ohjelma tulee olla jaettu osiin (projektiksi) vastaavasti kuin mallina olleessa kerho-ohjelmassa.

Ohjelmalistaus

Ohjelmalistaus tulostetaan vaadittaessa niiltä osin, missä on tekijän omia muutoksia. Esim. kirjastoa mjonot.c (ja mjonot.h) EI SAA tulostaa. Tulostaminen tehdään esim. mikroluokasta komennolla
tulosta kerhomai.cpp kerho.h kerho.cpp  
Tulostuskomento voi vaihdellakin, ks. luokan seinällä olevia ohjeita.

Alkuperäinen ohjelman suunnitelma

Ohjelman alkuperäinen suunnitelma tulee olla liitettynä ohjelman kommentteihin tai ohjelmalistauksen liitteeksi. Ohjelman toiminnan tulee vastata alkuperäistä suunnitelmaa. Tietysti tiettyjä parannuksia saa tehdä, mutta muuten kysymysten ja ulkoasun tulee vastata ohjelman toimintaa!

Toimiva ohjelma www:ssä (ja files.txt)


Palautustilaisuuteen tulee tulla toimivan ja täysin virheettömästi kääntyvän ohjelman kanssa. Itse ohjelma ja sen tarvitsemat osat tulee olla WWW:ssä seuraavan ohjeen mukaisesti:
http://www.mit.jyu.fi/~vesal/kurssit/ohjelmointi2000/htnaytto.html

Tekijä kertoo ohjaajalle miten tehdään projekti, jolla ohjelma saadaan käännettyä (yleensä otetaan kaikki .C ja C++ tiedostot mukaan, EI KOSKAAN .H tiedostoja).

Itsetehdyt aliohjelmat

Vaikka moni pystyykin tekemään harjoitustyönsä pienillä muutoksilla valmiista mallista, pitää jokaisen pystyä osoittamaan vähintään muutama TÄYSIN ITSE tehty ja suunniteltu aliohjelma TAI sitten hänen täytyy ymmärtää valmis malliohjelmakokonaisuus niin hyvin, että hän pystyy vastaamaan ohjaajan esittämiin malliohjelmaan liittyviin kysymyksiin!

Ohjelma on itse tehty (tai muuteltu)

Tekijän täytyy osoittaa ohjelmaa kohtaan niin suurta ymmärrystä, että ohjaaja varmistuu siitä, että tekijä on todella ohjelman tekijä! Ymmärrys tarkistetaan suullisilla kysymyksillä.

Vilpistä kiinni jääneille annetaan uusi harjoitustyön aihe!

EI SAA KÄYTTÄÄ strcpy yms. ilman HYVIÄ PERUSTELUITA

strcpy, strcat, gets yms. vaarallisten funktioiden käyttö on kielletty ilman hyviä perusteita siitä, miksi niitä voidaan käyttää!

Ohjelma kääntyy ilman varoituksia ja virheilmoituksia

Palautettavan ohjelman tulee kääntyä ilman mitään varoituksia ja virheilmoituksia. Tämä voidaan varmistaa esim. Borland C:ssä siten, että kohdassa Options Compiler Messages käydään laittamassa kaikki mahdolliset varoitukset ja virheilmoitukset päälle. Sitten kohdassa Options Make laitetaan Break Make On Warnings päälle.

Ohjelman toimivuus ei ole tae sen oikeellisuudesta!

Vaikka ohjelma toimisikin, ei tämä ole tae siitä, että ohjelma on virheetön. Erityisesti on muistettava testata kaikki erikoistapaukset kuten esimerkiksi:

Jopa -91 ja -92 malliohjelmissa (VAPAATYY.8) oli koneen kaatava vika kun poistettiin jäsen!

Tarkista osoittimet vielä kerran

On mahdollista, että ohjelma toimii tuurilla, vaikka siinä on jopa täysin vääriäkin lauseita. Eräs yleisimpiä virheitä on seuraava:
void ali(void)
{
  char *apu; /* Lokaali osoitin, jota ei muisteta alustaa */   
  strcpy(apu,"Kissa");  /* VÄÄRIN! */
  /* ei edes kopioi_jono(N_S(apu),"Kissa") auta tilannetta */
  printf(apu);
} 

Siis yleensä aloittelijalla kaikki lokaalit osoittimet ovat VAARALLISIA!

Työskentely mikroilla


Työskentely aina kovalevyllä

Mikroilla työskennellään siten, että käsiteltävät tiedostot ovat aina kovalevyllä! Miksi?

    Siksi, että käännöksessä tarvitaan paljon levyä ja kovalevyn käyttö on huomattavasti nopeampaa kuin levykkeen käyttö.

    Lisäksi levykkeen lukemisessa kosketetaan fyysisesti levykkeen pintaa ja levykkeen eliniästä tulee näin varsin rajallinen! Esimerkiksi edellisilläkin kurssilla joiltakin tuhoutui koko harjoitustyö, kun koko ajan käytettiin pelkkää levykettä (eikä ollut varmuuskopiota)!

    Jos levy tuhoutuu, voidaan se tosin yrittää pelastaa, mutta pelastusyritys (joka voi olla turhakin) saattaa kestää 0.5-2 tuntia (VL), joten kannattaa miettiä saako samassa ajassa kirjoitettua kaiken uudelleen.

    Lopuksi todettakoon, että virusten tartuntariski kasvaa sen mukaan mitä kauemmin levyke on koneessa.

Tee oma hakemisto

Kun tulet mikrolle, tee itsellesi aluksi oma alihakemisto sopivaan paikkaan (esimerkiksi \OMAT\OHJELMOI\VESAL), ja siirry sinne.

Tämä tapahtuu mikroluokissa MaE201 ja MaD 248 helposti, kun kirjoitat (teitysti oma käyttäjätunnuksesi vesal tilalle :-)
C:\OMAT>avaa vesal ohj[RET]

Kopioi harjoitustyö levykkeeltä

Levekkeltä kopointi voi helpottaa seuraavasti:

Kirjoita levykkeen päähakemistoon seuraavasta matkittu tiedosto OHJ.SIS:
vaihe5\KERHO*.CPP
vaihe5\KERHO*.H
vaihe5\JASEN.CPP
vaihe5\JASEN.H
vaihe5\NAYTTO.CPP
vaihe5\NAYTTO.H
vaihe5\KELMIT.DAT

Eli yksinkertaisesti tiedosto, jossa sanotaan mitä tiedostoja (ja mistä hakemistosta) pitää kopioida korpulta kovalevylle harjoitustyön kääntämiseksi.

Erityisesti pitää huomata, ettei projektitiedostoa saa kopioida, samoin kuin ei .EXE tiedostoa.

Käytä HT.BAT nimistä ajojonoa työn kopioimiseksi. Jos haluat kopioida ajojonon omaan kotikoneeseesi, on sinun kopioitava tiedostot N:\BAT\HT.BAT ja N:\BIN\KOPIOI.EXE. Ajojono OHJHT.BAT ks. alla tarvitsee lisäksi tiedoston N:\BIN\CDD.COM. Kaikki em. tiedostot on tehnyt VL, joten ne saa vapaasti kopioida.

Jatkossa aina omaan hakemistoon siirtymisen jälkeen voit kopioida levykkeeltä harjoitustyön esim. komennolla
C:\OMAT\OHJELMOI\VESAL>ht ohj[RET]
Tämän jälkeen ota levyke pois koneesta!


Käynnistä Borland-C

Borland-C:n saat käyntiin komennolla
C:\OMAT\OHJELMOI\VESAL>bc[RET]

Ohjelmoi

Kirjoittele, kääntele, debuggaa ja kokeile.

Talleta pois lähtiessäsi muutokset levykkeelle

Kun lopetat työskentelysi, niin laita levyke takaisin koneeseen ja kirjoita komennot
C:\OMAT\OHJELMOI\VESAL>ht ohj[RET]
C:\OMAT\OHJELMOI\VESAL>avaa f[RET]

Näin kaikki työskentelyn aikana tapahtuneet muutokset tallettuvat takaisin levykkeelle, eikä levykettä ole käytetty liikaa, joten sille voi povata elinikää jopa koko kurssin ajaksi.

Ota varmuuskopio

Aina tietyin väliajoin kopioi koko levykkeesi tai ainakin sen tärkeät tiedostot toiselle levykkeelle. Näin sinulla on onnettomuuden sattuessa varakopio työstäsi.

Jos ensin yhden kerran kopioidaan tiedosto A:\OHJ.SIS varmuuskopiolevykkeelle, niin tämän jälkeen varmuuskopiotkin voidaan aina ottaa kovalevyltä kutsulla
C:\OMAT\OHJELMOI\VESAL>ht ohj[RET]

Jos sinulle riittää, että korpulle tulee tasan vastaava hakemisto kuin kovalevylläkin on (siis esim. A:\OMAT\OHJELMOI\VESAL), niin voit kirjoittaa pelkästään
C:\OMAT\OHJELMOI\VESAL>ht[RET]

Kertaus mikrolla työskentelystä

Siis vielä lyhyesti korpulla työskenneltäessä (tarvitaan ohj.sis ja files.txt)
    Kirjoita
    C:\OMAT\>avaa vesal ohj[RET]
    C:\OMAT\OHJELMOI\VESAL>ht ohj[RET]
    

    Korppu pois koneesta

    Käynnistä Borland-C

    Ohjelmoi

    Poistu Borland-C:stä ([Alt-X])

    Korppu koneeseen

    Kirjoita
    C:\OMAT\OHJELMOI\VESAL>ht ohj[RET]
    

    Korppu pois koneesta

    Kirjoita
    C:\OMAT\OHJELMOI\VESAL>avaa f[RET]
    

Pelkästään WWW:llä työskenneltäessä (ei tarvita ohj.sis, mutta tarvitaan files.txt)
    Kirjoita
    C:\OMAT\>avaa vesal ohj[RET]
    C:\OMAT\OHJELMOI\VESAL>avaa g[RET]
    

    Käynnistä Borland-C

    Ohjelmoi

    Poistu Borland-C:stä ([Alt-X])

    Kirjoita
    C:\OMAT\OHJELMOI\VESAL>avaa f[RET]