A B programozási nyelv

Szabványos könyvtárak


Az általam vizsgált MH-TSS rendszer alá fejlesztett B nyelv gazdag beépített függvényekben. Az elõre megírt függvények az I/O mûveletek, a karakterkezelés és a beépített típusok kezelését könnyítik meg. Használatukhoz nem kell modult importálni.

Input/Output rutinok


Az I/O kezelés karakter orientált a B nyelvben, két rutinnal: getchar() és putchar(). Alapértelmezésben a elõbbivel tudunk beolvasni,
utóbbival kiírni karaktereket. Az IO egységek hasonlóan használhatóak, mint például a Fortran nyelvben.
Mindig egy input és egy output egység van. Ezeknek a száma –1 és 10 között van, és az aktuális értékek az ’rd.unit’ és a ’wr.unit’

külsõ változókban vannak. Alapértelmezésben elõbbi értéke 0, utóbbié pedig –1,
amik a képernyõröl való olvasást, illetve a képernyõre való írást teszik lehetõvé.
A putchar(c) mûvelet az aktuális kimenetre (wr.unit) írja a c karaktert. Egyszerre csak 4 karakternyit lehet kiírni a képernyõre.
A következõ B kód a ’hi!’ szöveget írja a képernyõre egy soremeléssel:
	 main() {
	 auto a; 
	 a = ’hi!’;
	 putchar(a);
	 putchar(’*n’);
  }
     
A következõ kód az input egy sorát az outputra másolja:
	while(putchar(getchar()) != ’*n’);
	
File-ból olvasáshoz és file-ba íráshoz az openr(u, s) (fájl megnyitása olvasási joggal ascii állományként)
illetve az openw(u, s) (fájl megnyitása írási/olvasási joggal ascii állományként) eljárásokat használhatjuk.
Az 's' string helyére a file neve (elérési útja) kerül, ez csak ”cat/file”, ”/file” vagy ”file” lehet,
u pedig az IO egységet határozza meg, hogy honnan történjen az olvasás. Üres s string esetén a képernyõröl olvasunk.
Ha u –nak nem 2 és 10 közötti értéket adunk meg, akkor az openr() és openw() hatástalanok.
Az 1 érték például a képernyõröl való olvasást jelenti. Ha már egy megnyitott IO egységet próbálunk újra megnyitni,
akkor a korábban megnyitott bezárásra kerül.
A következõ két IO funkció inkább string orientált, megvalósításuk lényege,
hogy a getchar() és putchar() eljárások egymásután hívódnak meg:
A leghasznosabb output eszköz a printf(fmt, a1, .. ,a10) funkció. Ez lényegében megegyezik a C-beli printf() –el.
Az ’fmt’ string paraméterrel tudjuk meghatározni a kiírás formáját.
Pl:
  • %c karakter

  • %d decimális szám

  • %o oktális szám

  • %s string kiírására szolgál.

  • Egy példa a használatra:
    	Printf(”%d + %o is %s or %c*n”, 1, -1, ”zero”, ’0’);
    	
    erdménye: 1 + 777777777777 is zero or 0.

    A printf() segítségével rendszer szintû programokat is írhatunk.
    Ilyenkor a –1 IO egységet használjuk ( wr.unit = -1; )
    system(a): a rendszer kimenetére írja az 'a' karakterláncot. Újsor karakter nem szükséges.
    close(u) az ’u’ output egységet zárja le
    flush() aktuális kimeneti állomány bezárása (ugyanaz, mint close (wr.unit))

    Néhány string és vektorkezelő függvény

    Egyéb függvények