Seminární práce z Teorie ICT

Rozměr: px
Začít zobrazení ze stránky:

Download "Seminární práce z Teorie ICT"

Transkript

1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE Provozně ekonomická fakulta Seminární práce z Teorie ICT Implementace logické hádanky v Prologu Autor : Petr Pechek

2 1 Popis zvoleného problému Mým úkolem bylo vyřešit logickou hádanku pomocí programu prolog. Logická hádanka měla následující zadání: Skvělý fotbal Pět hráčů hraje v různých mužstvech na různých pozicích a má různě barevné dresy. 1. Hráč Carolina Panthers má fialový dres. 2. Samuel není zadní útočník, křídelní útočník hraje v mužstvu Dallas Cowboys. 3. Obránce má žlutý dres, Claude hraje za Dallas Cowboys. 4. Útočník nehraje za Green Bay Packers. 5. David nehraje za Oakland Raiders, Samuel je v černém. 6. Střední obránce je z Oakland Raiders, David hraje ve žlutém. 7. Victor je z Cleveland Browns a nenosí modrý dres. 8. Bill je útočník a hráči Cleveland Browns nosí červené dresy. Určete dres, družstvo a postavení každého hráče. 2 Stručný přehled teorie potřebné k vyřešení problému 2.1 Jazyk prolog Prolog je logický programovací jazyk. Patří mezi tzv. deklarativní programovací jazyky, ve kterých programátor popisuje pouze cíl výpočtu, přičemž přesný postup, jakým se k výsledku program dostane, je ponechán na libovůli systému. Prolog se snaží o pokud možno abstraktní vyjádření faktů a logických vztahů mezi nimi s potlačením imperativní složky. Prolog je využíván především v oboru umělé inteligence a v počítačové lingvistice (obzvláště zpracování přirozeného jazyka, pro nějž byl původně navržen). Syntaxe jazyka je velice jednoduchá a snadno použitelná pravě proto, že byl původně určen pro počítačově nepříliš gramotné lingvisty. Prolog je založen na predikátové logice prvního řádu; konkrétně se omezuje na Hornovy klauzule. Běh programu je pak představován aplikací dokazovacích technik na zadané klauzule. Základními využívanými přístupy jsou unifikace, rekurze a backtracking. [1] 2.2 Datové typy v jazyku Jednotnou datovou strukturou, se kterou Prolog pracuje, je tzv. term - pojem převzatý z formální logiky. Základní členění termů: 2

3 term struktura jednoduchý term proměnná konstanta číslo atom Atomy Atomy lze dle konstrukce rozdělit do třech kategorií: řetězce znaků začínající malým písmenem obsahující pouze písmena, číslice a podtržítko posloupnost znaků uzavřená v apostrofech (některé implementace používají uvozovky) atomy skládající se pouze ze speciálních znaků [1] Čísla Původní Prolog podporoval pouze celá čísla. Řada implementací pracuje s reálnými i racionálními čísly a s neohraničenými celými čísly Proměnné Proměnné začínají velkým písmenem nebo podtržítkem a nesmí obsahovat speciální znaky. Vyskytují se v pravidlech, kde popisují účastníky vztahu, nebo v dotazech, kde reprezentují hledané objekty. Rozsah platnosti proměnné je pouze jedna klauzule, stejnojmenná proměnná v sousední klauzuli nemá s touto nic společného, i když je třeba součásti stejného predikátu. Hodnotu získává pomocí srovnávání (unifikace) a po jejím přiřazení se již dále nemění, pokud se použité pravidlo, které ji přiřadilo, neodvolá (backtracking). [1] Z pohledu interpretu lze proměnné rozdělit na dva typy: volné - jejich hodnota zatím není známá a interpret se ji snaží nalézt vázané - z dřívějších kroků řešení již plyne její hodnota, tedy je s ní svázána Příklad použití proměnných: klauzule dotazy 3

4 Speciálním typem je tzv. anonymní proměnná. Značí se jako podtržítko a používá se v pravidlech. Její hodnota není podstatná a Prolog ji ve výsledcích nezobrazuje Struktury Struktury jsou tvořeny z funktoru a argumentů. Počet argumentů udává aritu struktury. Některé operátory mohou být používány také v infixovém tvaru. Strukturou tedy mohou být i klauzule, kde se jako funktor používá infixový operátor :-. [1] V jednom programu se mohou vyskytovat dva stejně pojmenované funktory, pokud mají různé arity. Speciálním případem struktur jsou seznamy a řetězce. [1] Seznamy Seznamy jsou definovány induktivně: Prázdný seznam je označen atomem [ ], k reprezentaci neprázdného seznamu slouží binární funktor tečka '.'. Neprázdný seznam je tedy tzv. tečka-dvojice (terminologie pochází z jazyka LISP).(Hlava,Tělo), kde Hlava je první prvek seznamu a Tělo je seznam tvořený zbývajícími prvky seznamu. Pro zjednodušení zápisu lze použít výčet prvků v hranatých závorkách (oba zápisy jsou ekvivalentní). [1] Pro práci se seznamy se často využívá operátor ' ', který umožňuje přístup k jednotlivým částem seznamu. Seznam lze pak zapsat jako [Začátek Tělo], kde Začátek je výčet (nikoliv seznam) prvků tvořící začátek definovaného seznamu a Tělo je seznam (nikoliv výčet) tvořící zbytek definovaného seznamu (je-li prázdný, nemusí se uvádět). [1] 2.3 Programování v Prologu Programování v Prologu se výrazně liší od programování v běžných procedurálních jazycích jako například C. Program popisuje vztahy definované pomocí klauzulí. Čistý Prolog se omezuje na Hornovy klauzule tedy predikátovou logiku prvního řádu. Základem Prologu je databáze klauzulí, které lze dále rozdělit na fakta a pravidla, nad kterými je možno klást dotazy formou tvrzení, u kterých Prolog zhodnocuje jejich pravdivost (dokazatelnost z údajů obsažených v databázi). Nejjednoduššími klauzulemi jsou fakta, které pouze vypovídají o vlastnostech objektu nebo vztazích mezi objekty. Složitějšími klauzulemi jsou pravidla, které umožňují pomocí implikace odvozovat nová fakta. Zapisují se ve tvaru hlavička :- tělo, kde hlavička definuje odvozovaný fakt, tělo podmínky, za nichž je pravdivý, obsahuje jeden či více cílů. Pokud se interpretu podaří odvodit, že tělo je pravdivé, ověřil tím pravdivost hlavičky. Pravidla (závislosti) se zapisují pomocí implikací. 4

5 2.3.1 Predikát Predikát lze charakterizovat jako sadu klauzulí se stejným jménem a stejnou aritou. Může obsahovat fakta i pravidla, které fungují jako alternativy platnost predikátu lze dokázat libovolnou z nich. Pravdivost predikátu vyjadřují dvě logické konstanty true, fail. Při vyhodnocování pravidel lze využít základní logické operátory: konjunkce čárka ',' pokud některá část selže, další se nevyhodnocují disjunkce středník ';' disjunkci lze také zapsat, tak že pravidlo rozepíšeme na více řádků [1] Rekurze Rekurze v Prologu nahrazuje cykly, tudíž je velmi často používána. Například predikát pro nalezení předka. [1] Při používání rekurze je třeba dávat pozor na pořadí klauzulí, které Prolog prochází zleva doprava. Jejich prohození může vést ke snížení efektivity algoritmu nebo až k nekonečnému cyklu. Například prohození klauzulí ve výše uvedeném příkladu by mělo za následek nekonečný cyklus. [1] 3 Analýza problému Úkolem je zjistit jaký hráč hraje v jakém týmu, na jaké pozici v něm nastupuje a jaký nosí dres. Je dáno 8 podmínek, které musí být splněny, tedy musí platit zároveň. Jedné se konjunkci jednotlivých výroků. Řešení úlohy musí splňovat všechny tyto podmínky. 4 Rozbor možných řešení či přístupů k řešení Úloha může mít více, jedno nebo žádné řešení. Maximální počet řešení úlohy je 5! 4 podmínky.. Tolik by bylo řešení pokud by úloha neměla omezující Správného řešení lze dosáhnout pomocí postupného dosazování hodnot, tak aby splňovaly dané podmínky. Pokud již nelze dosadit další hodnotu vrátíme se zpět a zkusíme dosadit jinou hodnotu. Tento postup řešení se označuje jako prohledávání do hloubky. 5 Zdrojový kód programu jmeno(claude). jmeno(david). jmeno(viktor). jmeno(samuel). 5

6 jmeno(bill). druzstvo(green_bay_packers). druzstvo(dallas_cowboys). druzstvo(cleveland_browns). druzstvo(oakland_raiders). druzstvo(carolina_panthers). pozice(obrance). pozice(krajni_utocnik). pozice(zadni_utocnik). pozice(stredni_obrance). pozice(utocnik). dres(zluty). dres(modry). dres(cerveny). dres(cerny). dres(fialovy). %member(y,[y _]). %member(y,[_ Remainder]) :- member(y,remainder). %zjisteni zda je Y prvkem struktury, neni nutne predikat je integrovany primo v prologu reseni(x):- % do proměné X uloží řešení (poradi prvku jmeno,druzstvo,pozice,dres) X=[ [_,_,_,zluty], %nutno zadat aby se ve vypisu neopakovali kombinace s prehozenymi prvky seznamu [_,_,_,modry], [_,_,_,cerveny], [_,_,_,cerny], [_,_,_,fialovy]], member([_,green_bay_packers,_,_],x), %je zmineno, ze pouze hrac neni clenem klubu, proto_nutno dodefinovat klub member([_,_,zadni_utocnik,_],x), %stejne jako v predchozim pripade member([_,_,_,modry],x), %stejne jako v predchozim pripade member([_,carolina_panthers,_,fialovy],x), % podmínka 1 - Hrac carolina panthers ma fialovy dres member([samuel,_,po,_],x),po\==zadni_utocnik, % podminka 2 - Samuel neni utocnik member([_,dallas_cowboys,krajni_utocnik,_],x), % podminka 2 - za Dallas kowboys hraje křídelní útočník member([_,_,obrance,zluty],x), % podminka 3 - obrance ma zluty dres member([claude,dallas_cowboys,_,_],x), %podminka 3 - Claud hraje za Dallas Cowboys member([_,klub,utocnik,_],x),klub\==green_bay, %podminka 4 - Útočník nehraje za Green Bay Packers 6

7 member([david,klub2,_,_],x),klub2\==oakland_riders, %podminka 5 - David nehraje za Oakland Raiders member([samuel,_,_,cerny],x), %podminka 5 - Samuel je v černém member([_,oakland_riders,stredni_obrance,_],x), %podminka 6 - Střední obránce je z Oakland Raiders member([david,_,_,zluty],x), %podminka 6 - David hraje ve žlutém member([viktor,cleveland_browns,_,dr],x),dr\==modry, %podminka 7 - Victor je z Cleveland Browns a nenosí modrý dres member([bill,_,utocnik,_],x), %podminka 8 - Bill je útočník member([_,cleveland_browns,_,cerveny],x). %podminka 8 - hráči Cleveland Browns nosí červené dresy 6 Vysvětlení programu Program je realizován pomocí implementace prologu binprolog. Před spuštěním je nutné načíst program pomocí příkazu consult(fotbal). případně reconsult(fotbal). Předtím je potřeba zdrojový kód uložit do souboru fotbal.pl do adresáře s programem binprolog. 6.1 Jak program řeší jednotlivé úlohy Řešení programu se zobrazuje pomocí příkazu reseni(x). Jména hráčů, lze zobrazit pomocí příkazu jmena(x). Všechna družstva pomocí druzstvo(x). Všechny možné pozice pomocí pozice(x). A všechny barvy dresů pomocí dres(x). Pokud je vypnut interaktivní režim, tak dané příkazy zobrazí všechny možnosti. 6.2 Výpis trasování programu Výpis pomocí příkazu trace by měl rozsah na několik stovek stran. Zde je ukázka výpisu, která ukazuje jak program pracuje. Podtržítkem na začátku jsou označované anonymní proměnné. Jejich hodna nás nezajímá. Call: reseni(_2304)!!! dynamic(reseni/1) Call: _2304 = [[_2896,_2898,_2900,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]!!! compiled((=)/2) %vychozí řešení, dosazení výchozích hodnot do proměné Exit: [[_2896,_2898,_2900,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]] = [[_2896,_2898,_2900,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]] %volání zkončilo úspěšně Call: member([_2941,green_bay_packers,_2945,_2947],[[_2896,_2898,_2900,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny], [_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) %zjišťování zda může být [_2941,green_bay_packers,_2945,_2947] prvkem struktury, probíhá rekurzivně Exit: member([_2896,green_bay_packers,_2900,zluty],[[_2896,green_bay_packers,_2900,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny], [_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) %ukonceni zjišťování, přičlenění green_bay_packers do prního prvku struktury [_2896,green_bay_packers,_2900,zluty] 7

8 Call: member([_2950,_2952,zadni_utocnik,_2956],[[_2896,green_bay_packers,_2900,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny], [_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) Exit: member([_2896,green_bay_packers,zadni_utocnik,zluty],[[_2896,green_bay_packers,zadni_utocnik,zluty],[_2905,_2907,_2909,modry], [_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) Call: member([_2959,_2961,_2963,modry],[[_2896,green_bay_packers,zadni_utocnik,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny], [_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) Call: member([_2959,_2961,_2963,modry],[[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) Exit: member([_2905,_2907,_2909,modry],[[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) Exit: member([_2905,_2907,_2909,modry],[[_2896,green_bay_packers,zadni_utocnik,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny], [_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) Call: member([_2968,carolina_panthers,_2972,fialovy],[[_2896,green_bay_packers,zadni_utocnik,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny], [_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) Call: member([_2968,carolina_panthers,_2972,fialovy],[[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny], [_2932,_2934,_2936,fialovy]]) Call: member([_2968,carolina_panthers,_2972,fialovy],[[_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) Call: member([_2968,carolina_panthers,_2972,fialovy],[[_2923,_2925,_2927,cerny],[_2932,_2934,_2936,fialovy]]) Call: member([_2968,carolina_panthers,_2972,fialovy],[[_2932,_2934,_2936,fialovy]]) Exit: member([_2932,carolina_panthers,_2936,fialovy],[[_2932,carolina_panthers,_2936,fialovy]]) %splněna podmínka, že [_2932,carolina_panthers,_2936,fialovy] je prvkem struktury, ukončení testování Exit: member([_2932,carolina_panthers,_2936,fialovy],[[_2923,_2925,_2927,cerny],[_2932,carolina_panthers,_2936,fialovy]]) Exit: member([_2932,carolina_panthers,_2936,fialovy],[[_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny],[_2932,carolina_panthers,_2936,fialovy]]) Exit: member([_2932,carolina_panthers,_2936,fialovy],[[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny],[_2923,_2925,_2927,cerny], [_2932,carolina_panthers,_2936,fialovy]]) Exit: member([_2932,carolina_panthers,_2936,fialovy],[[_2896,green_bay_packers,zadni_utocnik,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny], [_2923,_2925,_2927,cerny],[_2932,carolina_panthers,_2936,fialovy]]) Call: member([samuel,_2979,_2845,_2983],[[_2896,green_bay_packers,zadni_utocnik,zluty],[_2905,_2907,_2909,modry],[_2914,_2916,_2918,cerveny], [_2923,_2925,_2927,cerny],[_2932,carolina_panthers,_2936,fialovy]]) Prolog nejprve dosadí do prvků struktury libovolné hodnoty. Poté postupně dosazuje do prvků struktury jednotlivé hodnoty a vyhodnocuje části podmínky, které musí být splněny. 8

9 Další část výpisu trasování. Call: member([_2995,_2997,obrance,zluty],[[_2896,green_bay_packers,zadni_utocnik,zluty],[_2905,_2907,_2909,modry], [_2914,dallas_cowboys,krajni_utocnik,cerveny],[samuel,_2925,_2845,cerny],[_2932,carolina_panthers,_2936,fialovy]]) %zjišťování, zda [_2995,_2997,obrance,zluty] může být prvkem struktury, zjišťování probíhá pomocí predikátu member, který využívá rekurze Call: member([_2995,_2997,obrance,zluty],[[_2905,_2907,_2909,modry],[_2914,dallas_cowboys,krajni_utocnik,cerveny],[samuel,_2925,_2845,cerny], [_2932,carolina_panthers,_2936,fialovy]]) Call: member([_2995,_2997,obrance,zluty],[[_2914,dallas_cowboys,krajni_utocnik,cerveny],[samuel,_2925,_2845,cerny],[_2932,carolina_panthers,_2936,fialovy]]) Call: member([_2995,_2997,obrance,zluty],[[samuel,_2925,_2845,cerny],[_2932,carolina_panthers,_2936,fialovy]]) Call: member([_2995,_2997,obrance,zluty],[[_2932,carolina_panthers,_2936,fialovy]]) Call: member([_2995,_2997,obrance,zluty],[]) %poslední volání predikátu member v rámci rekurze Fail: member([_2995,_2997,obrance,zluty],[]) %predikát selhal, prvek [_2995,_2997,obrance,zluty] není prvkem struktury, která bude na konci řešením úlohy Fail: member([_2995,_2997,obrance,zluty],[[_2932,carolina_panthers,_2936,fialovy]]) Fail: member([_2995,_2997,obrance,zluty],[[samuel,_2925,_2845,cerny],[_2932,carolina_panthers,_2936,fialovy]]) Fail: member([_2995,_2997,obrance,zluty],[[_2914,dallas_cowboys,krajni_utocnik,cerveny],[samuel,_2925,_2845,cerny],[_2932,carolina_panthers,_2936,fialovy]]) Fail: member([_2995,_2997,obrance,zluty],[[_2905,_2907,_2909,modry],[_2914,dallas_cowboys,krajni_utocnik,cerveny],[samuel,_2925,_2845,cerny], [_2932,carolina_panthers,_2936,fialovy]]) %konec testování zda [_2995,_2997,obrance,zluty] je prvkem sktury, testování zkončilo neúspěšně 7 Zdroje informací [1] Prolog (programovací jazyk) - Wikipedie, otevřená encyklopedie [online] [cit ] < %C3%AD_jazyk%29> 9

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Úvod do Prologu Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David Warren (Warren Abstract Machine) implementace

Více

Logika a logické programování

Logika a logické programování Logika a logické programování témata ke zkoušce Poslední aktualizace: 16. prosince 2009 Zkouška je písemná, skládá se obvykle ze sedmi otázek (může být více nebo méně, podle náročnosti otázek), z toho

Více

Logické programování I

Logické programování I Logické programování I PROLOG Program popisuje "svět" Prologu = databáze faktů a pravidel (tzv. klauzulí). fakta: predikát(arg1, arg2,...argn). cíle:?- predikát(arg1, arg2,...argn). pravidla: hlava :-

Více

Programovací jazyk Prolog

Programovací jazyk Prolog Programovací jazyk Prolog Logické programování Šárka Vavrečková Ústav informatiky, Filozoficko-přírodovědecká fakulta Slezské univerzity v Opavě sarka.vavreckova@fpf.slu.cz 1. prosince 2008 Prolog Co je

Více

Matematická logika. Miroslav Kolařík

Matematická logika. Miroslav Kolařík Matematická logika přednáška desátá Miroslav Kolařík Zpracováno dle textu R. Bělohlávka: Matematická logika poznámky k přednáškám, 2004. Obsah 1 Úvod do modální logiky 2 Logické programování a Prolog 3

Více

Prolog 1-1. Rodinné vztahy pomocí Prologu:

Prolog 1-1. Rodinné vztahy pomocí Prologu: Prolog 1-1 - Prolog znamená programování v logice - namísto otázky jak se má získat určitá hodta se ptáme co platí mezi objekty - vhodný jazyk pro úlohy kde nás zajímají vztahy mezi objekty - namísto definic

Více

Domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

Domény. Petr Štěpánek. S využitím materialu Krysztofa R. Apta Domény Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 10 1 Typy programů v čistém Prologu je možné uspořádat podle různých pohledů. Zajímavá je charakteristika podle domén,

Více

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony.

Booleovská algebra. Booleovské binární a unární funkce. Základní zákony. Booleovská algebra. Booleovské binární a unární funkce. Základní zákony. Tomáš Bayer bayertom@natur.cuni.cz Katedra aplikované geoinformatiky a kartografie, Přírodovědecká fakulta UK. Tomáš Bayer bayertom@natur.cuni.cz

Více

Výroková a predikátová logika - V

Výroková a predikátová logika - V Výroková a predikátová logika - V Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - V ZS 2015/2016 1 / 21 Dokazovací systémy VL Hilbertovský kalkul Hilbertovský

Více

Funkcionální programování. Kristýna Kaslová

Funkcionální programování. Kristýna Kaslová Funkcionální programování Kristýna Kaslová Historie Alonzo Church (30. léta) Netypovaný lambda kalkul Základ prvních funkcionálních jazyků Jeho konstrukce i v mnoha současných programovacích jazycích (Python)

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

Programování v čistém Prologu

Programování v čistém Prologu Programování v čistém Prologu Petr Štěpánek S využitím materiálu Krysztofa R. Apta 2006 Logické programování 9 1 Ukázali jsme, že logické programy mohou sloužit k výpočtům. Volně řečeno, logiské programz

Více

IB015 Neimperativní programování. Neimperativní programování v Prologu. Jiří Barnat

IB015 Neimperativní programování. Neimperativní programování v Prologu. Jiří Barnat IB015 Neimperativní programování Neimperativní programování v Prologu Jiří Barnat Logické programování a Prolog IB015 Neimperativní programování 09 str. 2/35 Logické programování Deklarativní programovací

Více

Základní pojmy matematické logiky

Základní pojmy matematické logiky KAPITOLA 1 Základní pojmy matematické logiky Matematická logika se zabývá studiem výroků, jejich vytváření a jejich pravdivostí. Základním kamenem výrokové logiky jsou výroky. 1. Výroková logika Co je

Více

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1 Negativní informace Petr Štěpánek S použitím materiálu M.Gelfonda a V. Lifschitze 2009 Logické programování 15 1 Negace jako neúspěch Motivace: Tvrzení p (atomická formule) neplatí, jestliže nelze odvodit

Více

4.2 Syntaxe predikátové logiky

4.2 Syntaxe predikátové logiky 36 [070507-1501 ] 4.2 Syntaxe predikátové logiky V tomto oddíle zavedeme syntaxi predikátové logiky, tj. uvedeme pravidla, podle nichž se tvoří syntakticky správné formule predikátové logiky. Význam a

Více

popel, glum & nepil 16/28

popel, glum & nepil 16/28 Lineární rezoluce další způsob zjemnění rezoluce; místo stromu směřujeme k lineární struktuře důkazu Lineární rezoluční odvození (důkaz) z Ë je posloupnost dvojic ¼ ¼ Ò Ò taková, že Ò ½ a 1. ¼ a všechna

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu VÝROKOVÁ LOGIKA Matematická logika se zabývá studiem výroků, jejich vytváření a jejich pravdivostí. Základním kamenem výrokové logiky jsou výroky. Co je výrok nedefinujejme, pouze si řekneme, co si pod

Více

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2014/2015 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2014/2015 1 / 21 Výroková logika Horn-SAT Horn-SAT Jednotková

Více

Formální systém výrokové logiky

Formální systém výrokové logiky Formální systém výrokové logiky 1.Jazyk výrokové logiky Nechť P = {p,q,r, } je neprázdná množina symbolů, které nazýváme prvotní formule. Symboly jazyka L P výrokové logiky jsou : a) prvky množiny P, b)

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2015/2016 1 / 18 Základní syntax Jazyk Výroková logika je logikou

Více

Klauzulární logika. úvod. Šárka Vavrečková. 20. října Ústav informatiky Filozoficko-Přírodovědecká fakulta Slezské univerzity, Opava

Klauzulární logika. úvod. Šárka Vavrečková. 20. října Ústav informatiky Filozoficko-Přírodovědecká fakulta Slezské univerzity, Opava Klauzulární logika úvod Šárka Vavrečková Ústav informatiky Filozoficko-Přírodovědecká fakulta Slezské univerzity, Opava 20. října 2008 Klauzulární logika Hlavní vlastnosti pracujeme s klauzulemi, které

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

Výroková logika - opakování

Výroková logika - opakování - opakování ormální zavedení Výroková formule: Máme neprázdnou nejvýše spočetnou množinu A výrokových proměnných. 1. Každá proměnná je výroková formule 2. Když α, β jsou formule, potom ( α), (α β), (α

Více

Výroková a predikátová logika - III

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a

Více

1. Matematická logika

1. Matematická logika Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/07.0018 1. Matematická logika Základem každé vědy (tedy i matematiky i fyziky) je soubor jistých znalostí. To, co z těchto izolovaných poznatků

Více

Programovací jazyk Pascal

Programovací jazyk Pascal Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2017/2018 1 / 17 Předběžnosti Základní pojmy n-ární relace a funkce

Více

Matematická logika. Rostislav Horčík. horcik

Matematická logika. Rostislav Horčík.    horcik Matematická logika Rostislav Horčík horcik@math.feld.cvut.cz horcik@cs.cas.cz www.cs.cas.cz/ horcik Rostislav Horčík (ČVUT FEL) Y01MLO Letní semestr 2007/2008 1 / 20 Predikátová logika Motivace Výroková

Více

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky Vyučovací hodina 1vyučovací hodina: Opakování z minulé hodiny Nová látka Procvičení nové látky Shrnutí 5 min 20 min 15 min 5 min 2vyučovací hodiny: Opakování z minulé hodiny Nová látka Procvičení nové

Více

NPRG030 Programování I, 2016/17 1 / :58:13

NPRG030 Programování I, 2016/17 1 / :58:13 NPRG030 Programování I, 2016/17 1 / 31 10. 10. 2016 10:58:13 Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE NPRG030 Programování

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2013/2014 1 / 20 Základní syntax Jazyk Výroková logika je logikou

Více

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model Databázové systémy Tomáš Skopal - relační model * relační kalkuly Osnova přednášky relační kalkuly doménový n-ticový Relační kalkuly využití aparátu predikátové logiky 1. řádu pro dotazování rozšíření

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Umělá inteligence I. Roman Barták, KTIML.

Umělá inteligence I. Roman Barták, KTIML. Umělá inteligence I Roman Barták, KTIML roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Už umíme používat výrokovou logiku pro reprezentaci znalostí a odvozování důsledků. Dnes Dnes zopakujeme

Více

NPRG030 Programování I, 2010/11

NPRG030 Programování I, 2010/11 Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE když X, Y jsou (číselné) výrazy, potom X = Y X Y X < Y X > Y X = Y jsou

Více

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek Otázka 06 - Y01MLO Zadání Predikátová logika, formule predikátové logiky, sentence, interpretace jazyka predikátové logiky, splnitelné sentence, tautologie, kontradikce, tautologicky ekvivalentní formule.

Více

Logické programování

Logické programování 30. října 2012 Osnova Principy logického programování 1 Principy logického programování 2 3 1 Principy logického programování 2 3 Paradigmata programování Strukturované programování Procedurální programování

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

platné nejsou Sokrates je smrtelný. (r) 1/??

platné nejsou Sokrates je smrtelný. (r) 1/?? Predikátová logika plně přejímá výsledky výrokové logiky zabývá se navíc strukturou jednotlivých jednoduchých výroků na základě této analýzy lze odvodit platnost některých výroků, které ve výrokové logice

Více

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů. Základní symboly - písmena A B C Y Z a b c y z - číslice 0 1 2 9 - speciální symboly + - * / =., < > = a další - klíčová slova and array begin case const a další Klíčová slova jsou chráněnými útvary,

Více

Modely Herbrandovské interpretace

Modely Herbrandovské interpretace Modely Herbrandovské interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 8 1 Uvedli jsme termové interpretace a termové modely pro logické programy a také nejmenší

Více

Od Aristotela k Prologu

Od Aristotela k Prologu JIHOČESKÁ UNIVERZITA v ČESKÝCH BUDĚJOVICÍCH PEDAGOGICKÁ FAKULTA KATEDRA INFORMATIKY Od Aristotela k Prologu František Sedláček 2010 František Sedláček, Pedagogická fakulta Jihočeská Univerzita v Č.Budějovicích

Více

Okruh č.3: Sémantický výklad predikátové logiky

Okruh č.3: Sémantický výklad predikátové logiky Okruh č.3: Sémantický výklad predikátové logiky Predikátová logika 1.řádu formalizuje úsudky o vlastnostech předmětů a vztazích mezi předměty pevně dané předmětné oblasti (univerza). Nebudeme se zabývat

Více

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr) Operátory Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační poznámky Formátujte kód přehledně! Pomůžete sobě i mně. Spusťte si vaše programy a zkuste různé vstupy! Pokud program nedává správné

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

Predikátová logika. prvního řádu

Predikátová logika. prvního řádu Predikátová logika prvního řádu 2 Predikát Predikát je n-ární relace - vyjadřuje vlastnosti objektů a vztahy mezi objekty - z jednoduchého výroku vznikne vypuštěním alespoň jednoho jména objektu (individua)

Více

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem. Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou

Více

Sémantika výrokové logiky. Alena Gollová Výroková logika 1/23

Sémantika výrokové logiky. Alena Gollová Výroková logika 1/23 Výroková logika Alena Gollová Výroková logika 1/23 Obsah 1 Formule výrokové logiky 2 Alena Gollová Výroková logika 2/23 Formule výrokové logiky Výrok je oznamovací věta, o jejíž pravdivosti lze rozhodnout.

Více

Zadání soutěžních úloh

Zadání soutěžních úloh Zadání soutěžních úloh Kategorie žáci Soutěž v programování 24. ročník Krajské kolo 2009/2010 15. až 17. dubna 2010 Úlohy můžete řešit v libovolném pořadí a samozřejmě je nemusíte vyřešit všechny. Za každou

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

klauzulí deklarativní (specifikace programu je přímo programem) popel, glum & nepil 1/18

klauzulí deklarativní (specifikace programu je přímo programem) popel, glum & nepil 1/18 IB101, log programování, Prolog Logické programování logický program: libovolná konečná množina programových Hornových klauzulí odvozování (dokazování) cílů založeno na SLD-rezoluci deklarativní (specifikace

Více

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí) Programovací jazyky Programovací jazyky nižší assembler (jazyk symbolických instrukcí) vyšší imperativní (procedurální) Pascal, C/C++, Java, Basic, Python, php neimperativní (neprocedurální) Lisp, Prolog

Více

Logické programování

Logické programování Logické programování Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 1 1 Prolog a Logické programování Prolog vznikl jako programovací jazyk v Marseille 1970, jeho autorem

Více

1. Matematická logika

1. Matematická logika MATEMATICKÝ JAZYK Jazyk slouží člověku k vyjádření soudů a myšlenek. Jeho psaná forma má tvar vět. Každá vědní disciplína si vytváří svůj specifický jazyk v úzké návaznosti na jazyk živý. I matematika

Více

Úvod. Programovací paradigmata

Úvod. Programovací paradigmata .. Úvod. Programovací paradigmata Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Cíl: programování efektivně a bezpečně Programovací techniky

Více

1 Prolog. 1.1 Histroie. 1.2 Základní rysy Prologu. 1.3 Databáze Prologu

1 Prolog. 1.1 Histroie. 1.2 Základní rysy Prologu. 1.3 Databáze Prologu 1 Prolog Název jazyka je odvozen ze dvou slov: PROgramování v LOGice. Tím současně říkáme, z jakých principů jazyk vychází. Jeho úspěšné používání v praxi dalo základ nové disciplíně matematické informatiky-

Více

teorie logických spojek chápaných jako pravdivostní funkce

teorie logických spojek chápaných jako pravdivostní funkce Výroková logika teorie logických spojek chápaných jako pravdivostní funkce zabývá se způsoby tvoření výroků pomocí spojek a vztahy mezi pravdivostí různých výroků používá specifický jazyk složený z výrokových

Více

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Logika pro každodenní přežití Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Více

Využití principů, ale vlastní naprogramování řešících

Využití principů, ale vlastní naprogramování řešících Programování Cvičení 1 s omezujícími podmínkami Roman Barták Katedra teoretické informatiky a matematické logiky roman.bartak@mff.cuni.cz http://ktiml.mff.cuni.cz/~bartak Využití CSP Využití principů,

Více

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve

Více

Operátory. Základy programování 1 Tomáš Kühr

Operátory. Základy programování 1 Tomáš Kühr Operátory Základy programování 1 Tomáš Kühr Operátory a jejich vlastnosti Základní konstrukce (skoro) každého jazyka Z daných operandů vytvoří výsledek, který je možné dále využívat Arita udává počet operandů

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Algoritmus Daniela Szturcová Tento

Více

Sekvenční a podmíněné provádění

Sekvenční a podmíněné provádění Programování v Bourne shellu Sekvenční a podmíněné provádění Sekvenční provádění znamená vykonávání jednoho příkazu za druhým bez ohledu na okolnosti. Pro oddělení příkazů při sekvenčním provádění se používá

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Datové struktury Daniela Szturcová

Více

7 Jemný úvod do Logiky

7 Jemný úvod do Logiky 7 Jemný úvod do Logiky Základem přesného matematického vyjadřování je správné používání (matematické) logiky a logických úsudků. Logika jako filozofická discipĺına se intenzivně vyvíjí už od dob antiky,

Více

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Podmíněný příkaz

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Podmíněný příkaz Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Podmíněný příkaz

Více

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. PHP - úvod Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. Klíčové pojmy: PHP, webový prohlížeč, HTTP, FTP Základní pojmy služba WWW = 1990 první prototyp serveru, od roku 1994

Více

PROGRAMOVÁNÍ V SHELLU

PROGRAMOVÁNÍ V SHELLU PROGRAMOVÁNÍ V SHELLU Prostředí, jazyk, zdrojový kód chceme-li posloupnost jistých příkazů používat opakovaně, případně z různých míst adresářové struktury, můžeme tuto posloupnost uložit souboru, který

Více

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Anotace sady: Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Autor: Blanka Sadovská Klíčová slova: Algoritmus, proměnná, diagram Stupeň a typ vzdělávání: gymnaziální vzdělávání, 3. ročník

Více

Sémantika predikátové logiky

Sémantika predikátové logiky Sémantika predikátové logiky pro analýzu sémantiky potřebujeme nejprve specifikaci jazyka (doména, konstanty, funkční a predikátové symboly) příklad: formální jazyk s jediným binárním predikátovým symbolem

Více

Sada 1 - PHP. 03. Proměnné, konstanty

Sada 1 - PHP. 03. Proměnné, konstanty S třední škola stavební Jihlava Sada 1 - PHP 03. Proměnné, konstanty Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a

Více

PSK3-9. Základy skriptování. Hlavička

PSK3-9. Základy skriptování. Hlavička PSK3-9 Název školy: Autor: Anotace: Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 Ing. Marek Nožka Základy skriptování v unixovém shellu Vzdělávací oblast: Informační a komunikační technologie

Více

Kódy pro formát čísla

Kódy pro formát čísla Kódy pro formát čísla y pro formát čísel se mohou skládat až z tří částí oddělených středníkem (;). Pokud formátovací kód obsahuje dvě části, první část se použije pro kladné hodnoty a nulu, druhá část

Více

Tableaux metody. Jiří Vyskočil 2011

Tableaux metody. Jiří Vyskočil 2011 Tableaux metody Jiří Vyskočil 2011 Tableau [tabló] metoda Tableau metoda je další oblíbená metoda užívaná pro automatické dokazování vět v predikátové logice, ale i v dalších (modálních, temporálních,

Více

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík Úvod do informatiky přednáška první Miroslav Kolařík Zpracováno dle učebního textu prof. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Co a k čemu je logika? 2 Výroky a logické spojky

Více

Logika. 6. Axiomatický systém výrokové logiky

Logika. 6. Axiomatický systém výrokové logiky Logika 6. Axiomatický systém výrokové logiky RNDr. Luděk Cienciala, Ph. D. Tato inovace předmětu Úvod do logiky je spolufinancována Evropským sociálním fondem a Státním rozpočtem ČR, projekt č. CZ. 1.07/2.2.00/28.0216,

Více

Tabulkový procesor. Základní rysy

Tabulkový procesor. Základní rysy Tabulkový procesor Tabulkový procesor je počítačový program zpracovávající data uložená v buňkách tabulky. Program umožňuje použití vzorců pro práci s daty a zobrazuje výsledné hodnoty podle vstupních

Více

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace Číslo projektu Číslo materiálu Autor Průřezové téma Předmět CZ.1.07/1.5.00/34.0565 VY_32_INOVACE_284_Programovací_jazyky

Více

Predikátová logika. Teoretická informatika Tomáš Foltýnek

Predikátová logika. Teoretická informatika Tomáš Foltýnek Predikátová logika Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz strana 2 Opakování z minulé přednášky Z čeho se skládá jazyk výrokové logiky? Jaká jsou schémata pro axiomy VL? Formulujte

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

PODPROGRAMY PROCEDURY A FUNKCE

PODPROGRAMY PROCEDURY A FUNKCE PODPROGRAMY PROCEDURY A FUNKCE Programy bez podprogramů Příklady: a) Napište program, který na obrazovku nakreslí čáru složenou ze znaků pomlčka. program Cara; b) Napište program, který na obrazovku nakreslí

Více

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming

u odpovědí typu A, B, C, D, E: Obsah: jako 0) CLP Constraint Logic Programming Průběžná písemná práce Průběžná písemná práce Obsah: Průběžná písemná práce Aleš Horák E-mail: hales@fi.muni.cz http://nlp.fi.muni.cz/uui/ délka pro vypracování: 25 minut nejsou povoleny žádné materiály

Více

VISUAL BASIC. Práce se soubory

VISUAL BASIC. Práce se soubory VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit

Více

2 Datové typy v jazyce C

2 Datové typy v jazyce C 1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,

Více

Objektově orientované programování v jazyce Python

Objektově orientované programování v jazyce Python Objektově orientované programování v jazyce Python Základní pojmy objektově orientovaného programování Objekt vychází z reálného světa. Má dva charakteristické rysy. Všechny objekty mají stav Všechny objekty

Více

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA PROVOZNĚ EKONOMICKÁ FAKULTA KATEDRA INFORMAČNÍHO INŽENÝRSTVÍ

ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA PROVOZNĚ EKONOMICKÁ FAKULTA KATEDRA INFORMAČNÍHO INŽENÝRSTVÍ ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA PROVOZNĚ EKONOMICKÁ FAKULTA KATEDRA INFORMAČNÍHO INŽENÝRSTVÍ Teorie ICT Zápočtová práce Jídelní lístek Zdeněk Styblík 1. ročník INFONK Obsah Obsah...2 Popis zvoleného problému...3

Více

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018 Informační technologie 1 - Doporučená doba zpracování: 40 minut 1) Termín DCL v relačně databázové technologii

Více

LOGIKA VÝROKOVÁ LOGIKA

LOGIKA VÝROKOVÁ LOGIKA LOGIKA Popisuje pravidla odvozování jedněch tvrzení z druhých. Je to myšlenková cesta ke správným závěrům. Vznikla jako součást filosofie. Zakladatelem byl Aristoteles. VÝROKOVÁ LOGIKA Obsahuje syntaktická,

Více

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost Programování Algoritmus návod na vykonání činnosti, který nás od (měnitelných) vstupních dat přivede v konečném čase k výsledku přesně definovaná konečná posloupnost činností vedoucích k výsledku (postup,

Více

IB015 Neimperativní programování. Seznamy, Typy a Rekurze. Jiří Barnat Libor Škarvada

IB015 Neimperativní programování. Seznamy, Typy a Rekurze. Jiří Barnat Libor Škarvada IB015 Neimperativní programování Seznamy, Typy a Rekurze Jiří Barnat Libor Škarvada Sekce IB015 Neimperativní programování 02 str. 2/36 Uspořádané n-tice a seznamy Programování a data IB015 Neimperativní

Více

Základy logiky a teorie množin

Základy logiky a teorie množin Pracovní text k přednášce Logika a teorie množin (I/2007) 1 1 Struktura přednášky Matematická logika 2 Výroková logika Základy logiky a teorie množin Petr Pajas pajas@matfyz.cz Predikátová logika 1. řádu

Více

Stručný návod k programu Octave

Stručný návod k programu Octave Stručný návod k programu Octave Octave je interaktivní program vhodný pro technické výpočty. Je nápadně podobný programu MATLAB, na rozdíl od něho je zcela zadarmo. Jeho domovská vebová stránka je http://www.octave.org/,

Více

Matematická indukce, sumy a produkty, matematická logika

Matematická indukce, sumy a produkty, matematická logika Matematická indukce, sumy a produkty, matematická logika 8.9. -.0.009 Matematická indukce Jde o následující vlastnost přirozených čísel: Předpokládejme:. Nějaké tvrzení platí pro.. Platí-li tvrzení pro

Více

Algoritmizace prostorových úloh

Algoritmizace prostorových úloh INOVACE BAKALÁŘSKÝCH A MAGISTERSKÝCH STUDIJNÍCH OBORŮ NA HORNICKO-GEOLOGICKÉ FAKULTĚ VYSOKÉ ŠKOLY BÁŇSKÉ - TECHNICKÉ UNIVERZITY OSTRAVA Algoritmizace prostorových úloh Algoritmus Daniela Szturcová Tento

Více

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární

Více