[Obsah] | [Přednáška 2] |
Definujeme klauzule:Poznámka: Určitou skupinou jazyků imperativních jsou také objektově orientované jazyky (např. C++, Java), objektové rysy byly přidány i do jiných jazyků (php od verze 5, Python). Náplní tohoto předmětu je výuka „klasického“ jazyka C se zaměřením na speciality a detaily jazyka.rodic(Jana,Petr) % Jana je rodič Petra rodic(Petr,Eva) % Petr je rodič Evy muz(Petr) % definuji, že Petr je muž zena(Jana) % definuji, že Jana je ženaDefinujeme odvozovací pravidla:syn(Y,X) :- rodic(X,Y), muz(Y). % čárka znamená logickou spojku „a“ dcera(Y,X) :- rodic(X,Y), zena(Y). prarodic(X,Z) :- rodic(X,Y), rodic(Y,Z). potomek(Y,X) :- syn(Y,X);dcera(Y,X). % čárka znamená logickou spojku „nebo“Pak můžeme klást dotazy:?-rodic(A,Petr) ?-prarodic(Jana,Eva)Systém odpoví na první dotazA=Jana
a na druhýyes
. Prolog není omezen jenom na odvozovací formule, v Prologu lze psát i výpočty, např. výpočet faktoriálu rekurzí. Uvedený příklad ke stažení ve formě souboru: priklad.pl
Příklad: Syntaxe jazyka C říká, že cyklus s podmínkou na začátku se zapisuje:Zkusíme si zapsat algoritmus pro výpočet kořenu lineární rovnice a ukážeme si některé „záludnosti“ vztahu mezi syntaxí a sémantikou (Algoritmus řešení lineární rovnice).
while (podmínka) příkaz;Sémantika (význam) takto zapsaného cyklu je: příkaz se provádí opakovaně, zatímco je podmínka splněna.
Poznámka k překladu:
Každý programový balík překladače obsahuje soubory s programovými moduly nazývané knihovny (libraries). Jedná se nejčastěji o soubory s příponami .lib nebo .obj, resp. .o. Názorným příkladem knihovny je matematická knihovna. Procesory běžně nemají instrukci pro výpočet např. hodnoty funkce sin, logaritmu, odmocniny aj. Hodnoty se musí spočítat programově (např. součtem řady, přibližnými vzorci). Aby běžný programátor nemusel tyto výpočty zbytečně programovat sám, dodává výrobce překladače tyto funkce ve formě hotového strojového kódu právě v modulech zvaných knihovny.
A nyní konečně detailně k překladu. Překlad zpravidla probíhá dvoufázově. V první fázi, která se skutečně nazývá překlad a provádí ji překladač, se provede syntaktická kontrola. Výsledkem překladu není ještě samostatně spustitelný program, ale zatím jeho „polotovar“. Polotovar se nazývá object code a bývá uložen v souboru s příponou .obj, v operačních systémech Unixového typu typicky mají soubory příponu .o. Soubor s kódem obj obsahuje již části kódu s běžnými instrukcemi (např. sčítání). Pokud obsahuje zdrojový kód volání knihovních funkcí (např. sin), je v kódu pouze odkaz na volání funkce sin. Další fáze překladu je sestavení (neboli linkování) a provádí jej sestavovací program (linker). Vstupem sestavovacího program je object kód a potřebné knihovny. Sestavovací program vybere z knihoven kódy funkcí použitých v programu, připojí je k object kódu a teprve výsledkem sestavení je hotový spustitelný program.
[Obsah] | [Přednáška 2] |