B (programovací jazyk)
Author
Albert FloresB je programovací jazyk odvozený od jazyka BCPL. Autory jsou Ken Thompson a Dennis Ritchie. Jazyk B je předchůdcem velmi populárního jazyka C.
Popis jazyka
Jazyk B byl vytvořen hlavně pro systémové programování. Programovalo se v něm jednodušeji než v Jazyce symbolických adres, ale kód byl skoro stejně efektivní. +more Ken Thompson odstranil některé prvky z BCPL, které mu připadaly zbytečné.
B má pouze jeden datový typ: slovo. Většina operátorů jako s ním pracují jako s celým číslem, ale některé ho interpretují jako adresu v paměti počítače. +more Jazyk B nepodporuje desetinná čísla. Komentáře začínají /* a končí */.
R-hodnoty a l-hodnoty
R-hodnota je konstantní hodnota, která nemůže stát na levé straně přiřazení. Je to například volání funkce nebo číselná konstanta. +more L-hodnota je hodnota, která se smí měnit, může tedy stát na levé i pravé straně přiřazení (může r-hodnotu kdykoli nahradit). Je to proměnná, nebo výsledek operátoru *. Operátoru * předáváme r-hodnotu, kterou interpretuje jako adresu v paměti a vrátí l-hodnotu: proměnnou na té adrese. Operátoru & naopak předáme l-hodnotu a on vrátí r-hodnotu: adresu té l-hodnoty.
Příkazy
Blok: { příkazy oddělené středníky }.
Podmínka: if(r-hodnota(podmínka)) příkaz/blok else příkaz/blok. Větev else je nepovinná.
Příkaz goto: goto r-hodnota(očekává se návěstí).
Příkaz switch: switch(r-hodnota) { case konstanta1: /*............*/ case konstanta2: /*............*/ default: /*............*/ }
Cyklus while: while(r-hodnota(podmínka)) příkaz/blok.
Příkaz break: break. Slouží k vyskočení z cyklu while.
Příkaz return: return r-hodnota(nepovinné). Ukončí funkci. Pokud se mu předá r-hodnota, bude to návratová hodnota té funkce.
R-hodnota ukončená středníkem je příkaz.
Pokud před středník nic nenapíšeme, je to prázdný příkaz. Nemá žádný efekt.
Deklarace proměnných
Definice funkce
Syntaxe: název(parametry) blok.
Příklad: min(a, b) /*Funkce vrátí menší číslo*/ { if(a
Znaky
Jsou uzavřeny v jednoduchých uvozovkách. V jedné proměnné lze uchovávat až 4 znaky.
Příklad: auto a; a='Ahoj';
Textové řetězce
Jsou uzavřeny v uvozovkách. Textový řetězec je základ vektoru znaků (v jednom prvku vektoru jsou 4). +more Jsou ukončeny znakem s escape sekvencí *e.
Znak | Význam |
---|---|
0 | null |
e | konec souboru nebo řetězce |
( | { |
) |
Vstup a výstup
Funkce getchar načte vrátí jeden načtený znak. Funkce putchar vypíše znak, který je jí předán a vrátí ho. +more Funkce getstr načte do řetězce, který je jí předán celý řádek a vrátí ho. Funkce putstr vypíše řetězec, který jí předán.
Funkce printf přebírá 1 až 11 parametrů. První parametr je formátovací řetězec. +more Formátovací řetězec se vypíše, ale některé dvojice znaků se nahradí dalšími parametry funkce.
. Dvojznak Nahrazení %c znak %d číslo %o číslo v osmičkové soustavě %s řetězec %% %
Ukázka kódu
Hello world: main { extrn a, b, c; /* Externí proměnné */ putchar(a); /* "hell" */ putchar(b); /* "o, w" */ putchar(c); /* "orld" */ putchar('. *n'); /* ". +more" a konec řádku */ } a 'hell'; /* Definice externích proměnných */ b 'o, w'; c 'orld'; Jednoduché počítání: main /*Tento program vypíše součet a+b*/ { auto a, b, soucet; /* Vytvoření proměnných */ a = 1; b = 2; soucet = a+b; /* Součet */ putnumb(sum); /* Výpis */ }.
Externí odkazy
https://www.bell-labs.com/usr/dmr/www/btut.html * https://www.bell-labs.com/usr/dmr/www/bref.html