previous next Up Title Contents Index

21.10 Avustus

Avustusta tarvitaan kahdenlaista:

1. Yleistä avustusta, jossa mielellään voidaan selata ohjelman eri kohtien toimintaa. Tämä on suhteellisen helppo toteuttaa yleisesti.

2. Erityistä avustusta kutakin toimenpidettä kohti. Tällaisen sisältöriippuvan avustuksen (context sensitive help) tekeminen vaatii ohjelmaan lisäyksiä mm. kunkin eri kentän lukurutiinin toimintoihin.

Kirjoitamme yleiskäyttöisen aliohjelmakirjaston help.c, jolla molemmat edellä mainitut ominaisuudet voidaan toteuttaa. Koska käytännössä avustustietoutta on aina liian vähän ja siinä on kirjoitusvirheitä, pyrimme sijoittamaan avustuksen omaksi tiedostokseen, josta help.c- kirjaston on sitä helppo lukea. Olkoon avustustiedoston muoto vaikkapa seuraava:

tarkistu.4\kerho.hlp - avustustiedosto

	[?] 
	  ? = Avustuksen avustus
	  ======================
	  ?- merkillä saa yleensä joka paikassa avustusta!
	  Jos avustuksessa kysytään aihetta, josta avustusta halutaan,
	  voidaan vastata esimerkiksi:
	....
	[Lisäys]
	  Lisäys
	  ======
	
	  Lisäystoiminolla lisätään uusia henkilöitä.  Lisättävä henkilö
	...
	  Katso myös: Tietojen syöttö, Asetukset
	
	[Tietojen syöttö]
	  Tietojen syöttö
	  ===============
	
	  Tietoja syötettäessä näytössä näkyy suluissa arvo, joka tulee kentän
	...
	[t_sotu]#
	  Sotuksi kelpaa...
	...
	[SISÄLLYS]
	  Sisällysluettelo:
	  =================
	  ? 
	  Lisäys
	  Etsiminen
	... 
Nyt esimerkiksi kutsulla
	help(NULL); 
päästäisiin avustuksen sisällysluetteloon, josta sitten käyttäjä voi tarvittaessa siirtyä haluamaansa kohtaan vaikka kirjoittamalla Tie*.

Sisältöriippuvassa avustuksessa kutsuttaisiin sitten suoraan haluttua kohtaa, esimerkiksi:

	help("[Lisäys]"); 
Helpoimmin tämä kävisi esimerkiksi lisäämällä kysy_kentta - aliohjelmaan kutsu funktioon: char *avustus(int nro), jonka mukaan avustusta pyydettäisiin halutusta kentästä jos käyttäjä painaisi?.

Toisaalta avustusta tarvitaan ehkä mieluumminkin kentän tyypin mukaan, ei niinkään itse kentän mukaan (koska "Jäsenen nimi>" tai "Sotu>" sinänsä ovat jo itse selittäviä). Tällöin teemme tarkistusfunktion perusteella löytyvän avustuksen tarkistus_nimi(t_funk), joka palauttaa vastaavan nimen (esim. t_sotu =>"t_sotu"). Näin kysy_kentta voi funktion perusteella saada selville tarkistusfunktiota vastaavan nimen ja nimen perusteella voi kutsua avustusta. Avustukseen on kirjoitettu valmis funktio help_aihe(nimi), joka lisää sulut []nimen ympärille ("t_sotu" =>"[t_sotu]").

Toteutamme tämän vasta ohjelman viimeisessä versiossa.


previous next Up Title Contents Index