Programovací jazyk Prolog
|
|
- Žaneta Říhová
- před 8 lety
- Počet zobrazení:
Transkript
1 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
2 Prolog Co je to Prolog Prolog je jazyk pro logické programování, vznikl ve Francii v roce 1973 (prof. A. Colmerauer). Je to zkratka z francouzského PROgramation à LOGic ( programování v logice ). Je to interpretační deklarativní jazyk.
3 Prolog Varianty Prologu SWI Prolog šířený pod GNU licencí a používaný v Unixech, Linuxu a Windows, LPA Win Prolog je komerční program pro Windows považovaný za jeden z nejlepších pro tuto platformu, GNU Prolog pro Unixy a Linux, OpenProlog pro MacOS, Amzi! Prolog, Visual Prolog, Strawbery Prolog, atd., rozšíření: Fuzzy Prolog, Templog, Chronolog, Temporal Prolog, Mercury, atd. Viz ~ vav10ui/vyukaprol.html.
4 Prolog Rozdíly mezi variantami licence (některé jsou komerční, jiné volně šiřitelné, také pod GPL (SWI Prolog, GNU Prolog), grafické rozhraní vždy je přítomna konzola na zadávání příkazů, ale může vypadat jinak, dále v rozhraní může/nemusí být editor samotných programů(znalostních bází), rozdíl v ovládání, klávesových zkratkách, atd., predikáty pro vstupy a výstupy, včetně práce se soubory někdy bývají jinak nazvány, případně jinak fungují, to je často způsobeno tím, že bývají psány pro různé SW platformy, další přidané predikáty, které nejsou v základní normě pro Prolog, přípony zdrojového souboru programu, atd.
5 Používání Prologu Postup 1. Vytvoříme znalostní bázi = program popisující svět, ve kterém se budeme pohybovat. 2. Zadáváme dotazy (cílové klauzule), Prolog odpovídá nebo no podle toho, zda je formule dotazu splnitelná v zadaném programu (světě), nebo vypíše hodnoty parametrů, pro které je splnitelná (ohodnocení). 3. Prolog rozhoduje podle našeho programu, vnitřních pravidel obdoby logických axiomů v klauzulární logice.
6 Používání Prologu Postup 1. Vytvoříme znalostní bázi = program popisující svět, ve kterém se budeme pohybovat. 2. Zadáváme dotazy (cílové klauzule), Prolog odpovídá nebo no podle toho, zda je formule dotazu splnitelná v zadaném programu (světě), nebo vypíše hodnoty parametrů, pro které je splnitelná (ohodnocení). 3. Prolog rozhoduje podle našeho programu, vnitřních pravidel obdoby logických axiomů v klauzulární logice.
7 Používání Prologu Postup 1. Vytvoříme znalostní bázi = program popisující svět, ve kterém se budeme pohybovat. 2. Zadáváme dotazy (cílové klauzule), Prolog odpovídá nebo no podle toho, zda je formule dotazu splnitelná v zadaném programu (světě), nebo vypíše hodnoty parametrů, pro které je splnitelná (ohodnocení). 3. Prolog rozhoduje podle našeho programu, vnitřních pravidel obdoby logických axiomů v klauzulární logice.
8 Používání Prologu Postup 1. Vytvoříme znalostní bázi = program popisující svět, ve kterém se budeme pohybovat. 2. Zadáváme dotazy (cílové klauzule), Prolog odpovídá nebo no podle toho, zda je formule dotazu splnitelná v zadaném programu (světě), nebo vypíše hodnoty parametrů, pro které je splnitelná (ohodnocení). 3. Prolog rozhoduje podle našeho programu, vnitřních pravidel obdoby logických axiomů v klauzulární logice.
9 Používání Prologu Postup 1. Vytvoříme znalostní bázi = program popisující svět, ve kterém se budeme pohybovat. 2. Zadáváme dotazy (cílové klauzule), Prolog odpovídá nebo no podle toho, zda je formule dotazu splnitelná v zadaném programu (světě), nebo vypíše hodnoty parametrů, pro které je splnitelná (ohodnocení). 3. Prolog rozhoduje podle našeho programu, vnitřních pravidel obdoby logických axiomů v klauzulární logice.
10 Program v Prologu Definice Program v Prologu je konečná neprázdná množina Hornových klauzulí. Je to ekvivalent znalostní báze klauzulární logiky a množiny speciálních axiomů Klauzulárního axiomatického systému. V programu lze použít dva druhy klauzulí: pravidla obecná tvrzení ve tvaru Závěr platí, pokud platí všechny jeho předpoklady zároveň. fakty konstantní tvrzení Používání programu spočívá v zadávání dotazů (cílových klauzulí) Hornových klauzulí bez pozitivních literálů.
11 Zápis klauzulí v Prologu Převod z klauzulární logiky Klauzulární logika Množinový zápis Zápis v Prologu Pravidlo B, C, D A A, B, C, D A :- B, C, D. Fakt A A A. Dotaz B, C, D B, C, D?- B, C, D. Tvar pravidla:
12 Zápis klauzulí v Prologu Převod z klauzulární logiky Klauzulární logika Množinový zápis Zápis v Prologu Pravidlo B, C, D A A, B, C, D A :- B, C, D. Fakt A A A. Dotaz B, C, D B, C, D?- B, C, D. Tvar pravidla: Predikat1(param) :- Predikat2(param), Predikat3(param),...
13 Zápis klauzulí v Prologu Převod z klauzulární logiky Klauzulární logika Množinový zápis Zápis v Prologu Pravidlo B, C, D A A, B, C, D A :- B, C, D. Fakt A A A. Dotaz B, C, D B, C, D?- B, C, D. Tvar pravidla: Predikat1(param) :- Predikat2(param), Predikat3(param),... hlava tělo
14 Zápis klauzulí v Prologu Převod z klauzulární logiky Klauzulární logika Množinový zápis Zápis v Prologu Pravidlo B, C, D A A, B, C, D A :- B, C, D. Fakt A A A. Dotaz B, C, D B, C, D?- B, C, D. Tvar pravidla: Predikat1(param) :- Predikat2(param), Predikat3(param),... hlava tělo klauzule
15 Programujeme v Prologu Postup 1. Vytvoříme textový soubor s příponou.pl, do kterého uložíme program (fakty a pravidla). Každý příkaz musí být na samostatném řádku (nebo na více řádcích), končí tečkou, komentáře jsou řádky začínající znakem %. 2. Načteme tento soubor (po uložení) do editoru Prologu (příkazem consult, případně položkou v menu (consult nebo compile) s tím, že před volbou v menu je vhodné soubor s programem v editoru Prologu otevřít). 3. Na výzvu Prologu (prompt, je to dvojznak?-, znamená zadej dotaz ) zadáváme dotazy, Prolog vypisuje odpovědi.
16 Programujeme v Prologu Postup 1. Vytvoříme textový soubor s příponou.pl, do kterého uložíme program (fakty a pravidla). Každý příkaz musí být na samostatném řádku (nebo na více řádcích), končí tečkou, komentáře jsou řádky začínající znakem %. 2. Načteme tento soubor (po uložení) do editoru Prologu (příkazem consult, případně položkou v menu (consult nebo compile) s tím, že před volbou v menu je vhodné soubor s programem v editoru Prologu otevřít). 3. Na výzvu Prologu (prompt, je to dvojznak?-, znamená zadej dotaz ) zadáváme dotazy, Prolog vypisuje odpovědi.
17 Programujeme v Prologu Postup 1. Vytvoříme textový soubor s příponou.pl, do kterého uložíme program (fakty a pravidla). Každý příkaz musí být na samostatném řádku (nebo na více řádcích), končí tečkou, komentáře jsou řádky začínající znakem %. 2. Načteme tento soubor (po uložení) do editoru Prologu (příkazem consult, případně položkou v menu (consult nebo compile) s tím, že před volbou v menu je vhodné soubor s programem v editoru Prologu otevřít). 3. Na výzvu Prologu (prompt, je to dvojznak?-, znamená zadej dotaz ) zadáváme dotazy, Prolog vypisuje odpovědi.
18 Programujeme v Prologu Konzultování programu Načtení (přeložení, konzultování) programu je nutné, protože Prolog si program udržuje v interním kódu, se kterým se mu pracuje jednodušeji a především rychleji. Při každé změně v souboru programu musíme (samozřejmě po uložení těchto změn) program znovu načíst, aby si Prolog mohl tento interní kód obnovit.
19 Programujeme v Prologu Konzultování programu Načtení (přeložení, konzultování) programu je nutné, protože Prolog si program udržuje v interním kódu, se kterým se mu pracuje jednodušeji a především rychleji. Při každé změně v souboru programu musíme (samozřejmě po uložení těchto změn) program znovu načíst, aby si Prolog mohl tento interní kód obnovit.
20 Příklad Zadání V programu budou tyto klauzule: Petr má rád květiny, Ivanu a televizi. Jan má rád jitrnice a televizi. Věra má ráda všechno, co má rád Jan. V klauzulární logice ma rad(petr, kvetiny) ma rad(petr, ivana) ma rad(petr, televize) ma rad(jan, jitrnice) ma rad(jan, televize) ma rad(jan, X) ma rad(vera, X)
21 Příklad Zadání V programu budou tyto klauzule: Petr má rád květiny, Ivanu a televizi. Jan má rád jitrnice a televizi. Věra má ráda všechno, co má rád Jan. V klauzulární logice ma rad(petr, kvetiny) ma rad(petr, ivana) ma rad(petr, televize) ma rad(jan, jitrnice) ma rad(jan, televize) ma rad(jan, X) ma rad(vera, X)
22 Příklad V klauzulární logice ma rad(petr, kvetiny) ma rad(petr, ivana) ma rad(petr, televize) ma rad(jan, jitrnice) ma rad(jan, televize) ma rad(jan, X) ma rad(vera, X) V Prologu ma_rad(petr,kvetiny). ma_rad(petr,ivana). ma_rad(petr,televize). ma_rad(jan,jitrnice). ma_rad(jan,televize). ma_rad(vera,x):-ma_rad(jan,x).
23 Příklad V klauzulární logice ma rad(petr, kvetiny) ma rad(petr, ivana) ma rad(petr, televize) ma rad(jan, jitrnice) ma rad(jan, televize) ma rad(jan, X) ma rad(vera, X) V Prologu ma_rad(petr,kvetiny). ma_rad(petr,ivana). ma_rad(petr,televize). ma_rad(jan,jitrnice). ma_rad(jan,televize). ma_rad(vera,x):-ma_rad(jan,x).
24
25
26
27
28
29
30
31
32
33
34
35
36 Anonymní proměnná Anonymní proměnná Použití Anonymní proměnná nahrazuje existenční termy: zapisuje se znakem podtržítka nebo tímto podtržítkem začíná: _, _Prom pro argument, ve kterém je použita, existuje hodnota, kterou tam lze dosadit, ale tato hodnota nás nezajímá, také použijeme místo běžné proměnné, pokud se tato proměnná vyskytuje v těle pravidla pouze jednou.
37 Anonymní proměnná Program lovi(liska,zajic). lovi(orel,mys). lovi(orel,vrabec). lovi(honza,ryba). dravec(x) :- lovi(x,_). Dotazy?- dravec(_).?- lovi(liska,_). Liška loví zajíce. Orel loví myš. Orel loví vrabce. Honza loví rybu. Kdo někoho loví, je dravec.?- lovi(x,_). X = liska ; X = orel ; X = honza ; no
38 Anonymní proměnná Program lovi(liska,zajic). lovi(orel,mys). lovi(orel,vrabec). lovi(honza,ryba). dravec(x) :- lovi(x,_). Dotazy?- dravec(_).?- lovi(liska,_). Liška loví zajíce. Orel loví myš. Orel loví vrabce. Honza loví rybu. Kdo někoho loví, je dravec.?- lovi(x,_). X = liska ; X = orel ; X = honza ; no
39 Anonymní proměnná Program lovi(liska,zajic). lovi(orel,mys). lovi(orel,vrabec). lovi(honza,ryba). dravec(x) :- lovi(x,_). Dotazy?- dravec(_).?- lovi(liska,_). Liška loví zajíce. Orel loví myš. Orel loví vrabce. Honza loví rybu. Kdo někoho loví, je dravec.?- lovi(x,_). X = liska ; X = orel ; X = honza ; no
40 Anonymní proměnná Program lovi(liska,zajic). lovi(orel,mys). lovi(orel,vrabec). lovi(honza,ryba). dravec(x) :- lovi(x,_). Dotazy?- dravec(_).?- lovi(liska,_). Liška loví zajíce. Orel loví myš. Orel loví vrabce. Honza loví rybu. Kdo někoho loví, je dravec.?- lovi(x,_). X = liska ; X = orel ; X = honza ; no
41 Anonymní proměnná Program lovi(liska,zajic). lovi(orel,mys). lovi(orel,vrabec). lovi(honza,ryba). dravec(x) :- lovi(x,_). Dotazy?- dravec(_).?- lovi(liska,_). Liška loví zajíce. Orel loví myš. Orel loví vrabce. Honza loví rybu. Kdo někoho loví, je dravec.?- lovi(x,_). X = liska ; X = orel ; X = honza ; no
42 Anonymní proměnná Program lovi(liska,zajic). lovi(orel,mys). lovi(orel,vrabec). lovi(honza,ryba). dravec(x) :- lovi(x,_). Dotazy?- dravec(_).?- lovi(liska,_). Liška loví zajíce. Orel loví myš. Orel loví vrabce. Honza loví rybu. Kdo někoho loví, je dravec.?- lovi(x,_). X = liska ; X = orel ; X = honza ; no
43 Anonymní proměnná Program lovi(liska,zajic). lovi(orel,mys). lovi(orel,vrabec). lovi(honza,ryba). dravec(x) :- lovi(x,_). Dotazy?- dravec(_).?- lovi(liska,_). Liška loví zajíce. Orel loví myš. Orel loví vrabce. Honza loví rybu. Kdo někoho loví, je dravec.?- lovi(x,_). X = liska ; X = orel ; X = honza ; no
44 Aritmetické a relační operátory, predikát rovnosti Predikát rovnosti Použití aritmetické operátory jsou vlastně termy (vrací hodnotu obvykle odlišnou od pravdivostní), mohou být použity jen jako argument predikátu, relační operátory jsou predikáty, predikát rovnosti existuje, ale pro jeho použití existují přísná pravidla, jeho argumenty po interpretaci musí být identické, v logických programovacích jazycích je obvykle možné operátory používat v infixovém zápisu: Prefixový zápis: +(p,q) =(X,a) =(X,+(a,Y)) Infixový zápis: p + q X = a X = a + Y
45 Aritmetické a relační operátory, predikát rovnosti Program predikát rovnosti matka(pepa)=jana. otec(pepa)=honza. matka(honza)=emilka. otec(honza)=karel. matka(jana)=jitka. otec(jana)=albert. matka(albert)=katerina. babicka(vnouce,babicka) :- X=matka(Vnouce),Babicka=matka(X). babicka(vnouce,babicka) :- X=otec(Vnouce),Babicka=matka(X). dedecek(vnouce,dedecek) :- X=matka(Vnouce),Dedecek=otec(X). dedecek(vnouce,dedecek) :- X=otec(Vnouce),Dedecek=otec(X). prababicka(vnouce,prababicka) :- X=matka(Vnouce),babicka(X,Prababicka). prababicka(vnouce,prababicka) :- X=otec(Vnouce),babicka(X,Prababicka).
46 Aritmetické a relační operátory, predikát rovnosti Část programu interpretace funkcí matka(pepa)=jana. otec(pepa)=honza. matka(honza)=emilka. otec(honza)=karel. Dotazy?- dedecek(pepa,x). X = albert ; X = karel ; no?- prababicka(pepa,x). X = katerina ; no matka(jana)=jitka. otec(jana)=albert. matka(albert)=katerina.
47 Aritmetické a relační operátory, predikát rovnosti Část programu interpretace funkcí matka(pepa)=jana. otec(pepa)=honza. matka(honza)=emilka. otec(honza)=karel. Dotazy?- dedecek(pepa,x). X = albert ; X = karel ; no?- prababicka(pepa,x). X = katerina ; no matka(jana)=jitka. otec(jana)=albert. matka(albert)=katerina.
48 Aritmetické a relační operátory, predikát rovnosti Jak moc je predikát = použitelný? Zápisy typu matka(pepa)=jana. ve většině Prologů nefungují, protože to je považováno za pokus o předefinování vestavěného predikátu. Možnost použití: v těle klauzule pro unifikaci proměnné: hlava_klauzule :-..., X=jana,... funktory raději nepoužíváme.
49 Aritmetické a relační operátory, predikát rovnosti Jak moc je predikát = použitelný? Zápisy typu matka(pepa)=jana. ve většině Prologů nefungují, protože to je považováno za pokus o předefinování vestavěného predikátu. Možnost použití: v těle klauzule pro unifikaci proměnné: hlava_klauzule :-..., X=jana,... funktory raději nepoužíváme.
50 Aritmetické a relační operátory, predikát rovnosti Jak moc je predikát = použitelný? Zápisy typu matka(pepa)=jana. ve většině Prologů nefungují, protože to je považováno za pokus o předefinování vestavěného predikátu. Možnost použití: v těle klauzule pro unifikaci proměnné: hlava_klauzule :-..., X=jana,... funktory raději nepoužíváme.
51 Aritmetické a relační operátory, predikát rovnosti Operátory souhrn Relační operátory, konjunkce ; disjunkce = porovnání s unifikací, identita \= opak předchozího, nerovná se is vyčíslení (provede se vyhodnocení argumentů) <, >, =<, >= porovnání ==, \== porovnání bez přiřazení =:=, =\= porovnání bez přiřazení s vyhodnocením not negace Aritmetické operátory +, -, *, /, mod, div
52 Aritmetické a relační operátory, predikát rovnosti Přiřazování, porovnávání?- X = 1+1. X = 1+1?- X is 1+1. X = 2?- X == 1. no?- 1 == 1.?- 2 == 1+1. no?- 2 =:= 1+1.
53 Testování atomů Vestavěné predikáty na testování typu údajů atom(argument) vrátí true, jestliže je argument řetězcová konstanta atomic(argument) vrátí true, jestliže je argument konstanta (řetězcová, číselná) integer(argument) vrátí true, jestliže je argument celé číslo float(argument) vrátí true, jestliže je argument reálné číslo number(argument) vrátí true, jestliže je argument číslo
54 Testování atomů Vestavěné predikáty na testování typu údajů?- atom(neco).?- atom(2). no?- atomic(2).?- atomic(neco).?- atom(x). no?- integer(2).?- float(2.1).?- float(2). no
55 Testování atomů Vestavěné predikáty na testování typu údajů?- atom(neco).?- atom(2). no?- atomic(2).?- atomic(neco).?- atom(x). no?- integer(2).?- float(2.1).?- float(2). no
56 Testování atomů Vestavěné predikáty na testování typu údajů?- atom(neco).?- atom(2). no?- atomic(2).?- atomic(neco).?- atom(x). no?- integer(2).?- float(2.1).?- float(2). no
57 Testování atomů Vestavěné predikáty na testování typu údajů?- atom(neco).?- atom(2). no?- atomic(2).?- atomic(neco).?- atom(x). no?- integer(2).?- float(2.1).?- float(2). no
58 Testování atomů Vestavěné predikáty na testování typu údajů?- atom(neco).?- atom(2). no?- atomic(2).?- atomic(neco).?- atom(x). no?- integer(2).?- float(2.1).?- float(2). no
59 Testování atomů Vestavěné predikáty na testování typu údajů?- atom(neco).?- atom(2). no?- atomic(2).?- atomic(neco).?- atom(x). no?- integer(2).?- float(2.1).?- float(2). no
60 Testování atomů Vestavěné predikáty na testování typu údajů?- atom(neco).?- atom(2). no?- atomic(2).?- atomic(neco).?- atom(x). no?- integer(2).?- float(2.1).?- float(2). no
61 Testování atomů Vestavěné predikáty na testování typu údajů?- atom(neco).?- atom(2). no?- atomic(2).?- atomic(neco).?- atom(x). no?- integer(2).?- float(2.1).?- float(2). no
62 Negace Negace atomu Jak znegovat atom Nejdřív můžeme vyzkoušet postup známý z klauzulární logiky transfer atomu na druhou stranu implikace (včetně řešení kvantifikátorů): pokud vyjde Hornova klauzule (za implikací jen jediný atom), je to dostačující, v opačném případě transfer nelze použít, využijeme speciální predikát not. Predikát not je jeden z mála predikátů, které mají jako argument jiný predikát: not(p(arg 1,arg 2,...,arg n ))
63 Negace Negace atomu Jak znegovat atom Nejdřív můžeme vyzkoušet postup známý z klauzulární logiky transfer atomu na druhou stranu implikace (včetně řešení kvantifikátorů): pokud vyjde Hornova klauzule (za implikací jen jediný atom), je to dostačující, v opačném případě transfer nelze použít, využijeme speciální predikát not. Predikát not je jeden z mála predikátů, které mají jako argument jiný predikát: not(p(arg 1,arg 2,...,arg n ))
64 Negace Negace atomu Jak znegovat atom Nejdřív můžeme vyzkoušet postup známý z klauzulární logiky transfer atomu na druhou stranu implikace (včetně řešení kvantifikátorů): pokud vyjde Hornova klauzule (za implikací jen jediný atom), je to dostačující, v opačném případě transfer nelze použít, využijeme speciální predikát not. Predikát not je jeden z mála predikátů, které mají jako argument jiný predikát: not(p(arg 1,arg 2,...,arg n ))
65 Negace Negace atomu Jak funguje not(p(arg 1,arg 2,...,arg n )) nejdřív je vyhodnocen atom p(arg 1,arg 2,...,arg n ), pak je jeho pravdivostní hodnota převrácena, vrací informaci typu Jestliže p(...) je odvoditelný z báze (programu), pak not(p(...)) není odvoditelný z báze..
66 Negace Negace atomu Jak funguje not(p(arg 1,arg 2,...,arg n )) nejdřív je vyhodnocen atom p(arg 1,arg 2,...,arg n ), pak je jeho pravdivostní hodnota převrácena, vrací informaci typu Jestliže p(...) je odvoditelný z báze (programu), pak not(p(...)) není odvoditelný z báze..
67 Negace Negace atomu Jak funguje not(p(arg 1,arg 2,...,arg n )) Problém: proměnné vázané univerzálně ( ) se stávají volnými, neumí řešit existenční vazbu (nahrazení _), při vyhodnocení p(...) ještě funguje vazba na tytéž proměnné v předchozích atomech klauzule, ale za ním se ztrácí. Řešení: atom s predikátem not dáváme v klauzuli až za všechny atomy, které obsahují tytéž proměnné (třeba až na konec klauzule, např. r(a,b) :- p(x),not(q(x)),p(y).), klauzule obsahující negaci dáváme spíše za všechny klauzule obsahující proměnnou, která je zde negována a se kterými je zároveň unifikována během výpočtu.
68 Negace Negace atomu Jak funguje not(p(arg 1,arg 2,...,arg n )) Problém: proměnné vázané univerzálně ( ) se stávají volnými, neumí řešit existenční vazbu (nahrazení _), při vyhodnocení p(...) ještě funguje vazba na tytéž proměnné v předchozích atomech klauzule, ale za ním se ztrácí. Řešení: atom s predikátem not dáváme v klauzuli až za všechny atomy, které obsahují tytéž proměnné (třeba až na konec klauzule, např. r(a,b) :- p(x),not(q(x)),p(y).), klauzule obsahující negaci dáváme spíše za všechny klauzule obsahující proměnnou, která je zde negována a se kterými je zároveň unifikována během výpočtu.
69 Negace Negace atomu Jak funguje not(p(arg 1,arg 2,...,arg n )) Problém: proměnné vázané univerzálně ( ) se stávají volnými, neumí řešit existenční vazbu (nahrazení _), při vyhodnocení p(...) ještě funguje vazba na tytéž proměnné v předchozích atomech klauzule, ale za ním se ztrácí. Řešení: atom s predikátem not dáváme v klauzuli až za všechny atomy, které obsahují tytéž proměnné (třeba až na konec klauzule, např. r(a,b) :- p(x),not(q(x)),p(y).), klauzule obsahující negaci dáváme spíše za všechny klauzule obsahující proměnnou, která je zde negována a se kterými je zároveň unifikována během výpočtu.
70 Negace Program osobni(autopepy). osobni(autojany). nakladni(autostandy). ma_vozik(autojany). auto(x) :- osobni(x). auto(x) :- nakladni(x). velky_naklad(x) :- nakladni(x). velky_naklad(x) :- osobni(x),ma_vozik(x). maly_naklad(x) :- auto(x),not(velky_naklad(x)). Dotazy
71 Negace Program osobni(autopepy). osobni(autojany). nakladni(autostandy). ma_vozik(autojany). auto(x) :- osobni(x). auto(x) :- nakladni(x). velky_naklad(x) :- nakladni(x). velky_naklad(x) :- osobni(x),ma_vozik(x). maly_naklad(x) :- auto(x),not(velky_naklad(x)). Dotazy?- nakladni(x).
72 Negace Program osobni(autopepy). osobni(autojany). nakladni(autostandy). ma_vozik(autojany). auto(x) :- osobni(x). auto(x) :- nakladni(x). velky_naklad(x) :- nakladni(x). velky_naklad(x) :- osobni(x),ma_vozik(x). maly_naklad(x) :- auto(x),not(velky_naklad(x)). Dotazy?- nakladni(x). X = autostandy ; no
73 Negace Program osobni(autopepy). osobni(autojany). nakladni(autostandy). ma_vozik(autojany). auto(x) :- osobni(x). auto(x) :- nakladni(x). velky_naklad(x) :- nakladni(x). velky_naklad(x) :- osobni(x),ma_vozik(x). maly_naklad(x) :- auto(x),not(velky_naklad(x)). Dotazy?- osobni(x),not(x=autojany).
74 Negace Program osobni(autopepy). osobni(autojany). nakladni(autostandy). ma_vozik(autojany). auto(x) :- osobni(x). auto(x) :- nakladni(x). velky_naklad(x) :- nakladni(x). velky_naklad(x) :- osobni(x),ma_vozik(x). maly_naklad(x) :- auto(x),not(velky_naklad(x)). Dotazy?- osobni(x),not(x=autojany). X = autopepy ; no
75 Interní databáze Konzultování programu Na začátku práce s programem tento program načteme do interní databáze Prologu, konzultujeme. Kdykoliv provedeme změny, musíme znovu načíst program do databáze rekonzultovat. Konzultování se provádí buď položkou v menu programového prostředí Prologu (volba Consult, Reconsult, příp. Compile), a nebo příkazy (včetně tečky): consult( Název souboru s programem ). reconsult( Název souboru s programem ).
76 Interní databáze Konzultování programu Na začátku práce s programem tento program načteme do interní databáze Prologu, konzultujeme. Kdykoliv provedeme změny, musíme znovu načíst program do databáze rekonzultovat. Konzultování se provádí buď položkou v menu programového prostředí Prologu (volba Consult, Reconsult, příp. Compile), a nebo příkazy (včetně tečky): consult( Název souboru s programem ). reconsult( Název souboru s programem ).
77 Interní databáze Obsah databáze Když chceme vypsat momentální obsah databáze, použijeme příkaz listing. Když chceme vypsat pouze ty klauzule, které obsahují určitý predikát (třeba p), použijeme příkaz listing(p).
78 Interní databáze Obsah databáze Když chceme vypsat momentální obsah databáze, použijeme příkaz listing. Když chceme vypsat pouze ty klauzule, které obsahují určitý predikát (třeba p), použijeme příkaz listing(p).
79 Predikáty se stejným jménem V různých klauzulích Více klauzulí může mít stejný cíl, představují různá řešení téhož problému, z nichž některá končí popřením, jiná splněním cíle. V téže klauzuli Rekurze je základní výpočetní prvek Prologu, nastává tehdy, když v těle klauzule je stejný predikát jako v těle klauzule, v těle klauzule tento predikát umísťujeme spíše na konec, pokud není důvod pro jiné umístění.
80 Predikáty se stejným jménem V různých klauzulích Více klauzulí může mít stejný cíl, představují různá řešení téhož problému, z nichž některá končí popřením, jiná splněním cíle. V téže klauzuli Rekurze je základní výpočetní prvek Prologu, nastává tehdy, když v těle klauzule je stejný predikát jako v těle klauzule, v těle klauzule tento predikát umísťujeme spíše na konec, pokud není důvod pro jiné umístění.
81 Predikáty se stejným jménem V různých klauzulích Více klauzulí může mít stejný cíl, představují různá řešení téhož problému, z nichž některá končí popřením, jiná splněním cíle. V téže klauzuli Rekurze je základní výpočetní prvek Prologu, nastává tehdy, když v těle klauzule je stejný predikát jako v těle klauzule, v těle klauzule tento predikát umísťujeme spíše na konec, pokud není důvod pro jiné umístění.
82 Příklad výpočet faktoriálu Predikáty faktorial(cislo,vysl) tento predikát bude volán uživatelem v dotazu, faktorialpom(citac,vysl,vysl) bude použit pro samotný rekurzivní výpočet.
83 Příklad výpočet faktoriálu Predikáty faktorial(cislo,vysl) tento predikát bude volán uživatelem v dotazu, faktorialpom(citac,vysl,vysl) bude použit pro samotný rekurzivní výpočet. faktorialpom( Citac, Vysl, Vysl )
84 Příklad výpočet faktoriálu Predikáty faktorial(cislo,vysl) tento predikát bude volán uživatelem v dotazu, faktorialpom(citac,vysl,vysl) bude použit pro samotný rekurzivní výpočet. faktorialpom( Citac, Vysl, Vysl ) Čítač, snižuje seo1
85 Příklad výpočet faktoriálu Predikáty faktorial(cislo,vysl) tento predikát bude volán uživatelem v dotazu, faktorialpom(citac,vysl,vysl) bude použit pro samotný rekurzivní výpočet. faktorialpom( Citac, Vysl, Vysl ) Čítač, snižuje seo1 Počítá výsledek, nazačátku1
86 Příklad výpočet faktoriálu Predikáty faktorial(cislo,vysl) tento predikát bude volán uživatelem v dotazu, faktorialpom(citac,vysl,vysl) bude použit pro samotný rekurzivní výpočet. faktorialpom( Citac, Vysl, Vysl ) Čítač, snižuje seo1 Počítá výsledek, nazačátku1 Zde bude výsledek přístupný, na začátku proměnná
87 Příklad výpočet faktoriálu Program v Pascalu procedure faktorial(citac,vysl: integer); var C: integer; begin if (Citac=0) then Vysl := 1 else begin C := Citac-1; Vysl := Citac * faktorial(c,vysl); end; end;
88 Příklad výpočet faktoriálu Program v Prologu faktorialpom(0, Vysl, Vysl). faktorialpom(citac,pomocna,vysl) :- C is Citac - 1, V is Pomocna * Citac, faktorialpom(c,v,vysl). faktorial(citac,vysl) :- faktorialpom(citac,1,vysl). Dotaz?- faktorial(4,f). F = 24.
89 Příklad výpočet faktoriálu Program v Prologu faktorialpom(0, Vysl, Vysl). faktorialpom(citac,pomocna,vysl) :- C is Citac - 1, V is Pomocna * Citac, faktorialpom(c,v,vysl). faktorial(citac,vysl) :- faktorialpom(citac,1,vysl). Dotaz faktorial(3,f). faktorialpom(3,1,vysl). C = 3-1 = 2, V = 1*3 = 3 faktorialpom(2,3,vysl). C = 2-1 = 1, V = 2*3 = 6 faktorialpom(1,6,vysl). C = 1-1 = 0, V = 6*1 = 6 faktorialpom(0,6,vysl). F = Vysl.
90 Zajímavé odkazy Test Zone on-line editor Prologu Expertní systémy v Prologu
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íceKlauzulární logika. Znalostní báze. Šárka Vavrečková
Klauzulární logika Znalostní báze Šárka Vavrečková Ústav informatiky, Filozoficko-přírodovědecká fakulta Slezské univerzity v Opavě sarka.vavreckova@fpf.slu.cz 26. listopadu 2007 (Znalostní báze) Klauzulární
VíceKlauzulá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íceProlog 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íceSeminární práce z Teorie ICT
Č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 1 Popis zvoleného problému Mým úkolem bylo vyřešit
VíceLogické 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íceAlgoritmizace 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íceDatabá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íceHilbertovský axiomatický systém
Hilbertovský axiomatický systém Predikátová logika H 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava Poslední aktualizace: 24. října 2008 Specifikace H 1 Jazyk L H1 přejímáme jazyk predikátové logiky
VíceČ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íceImplementace LL(1) překladů
Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
Více1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5
Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5
VíceProgramovací 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Ú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íce1. 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íceObsah. Začínáme programovat v Ruby on Rails 9. Úvod 11. 1. Vítejte v Ruby 15. O autorovi 9 Poděkování 9
Začínáme programovat v Ruby on Rails 9 O autorovi 9 Poděkování 9 Úvod 11 Komu je kniha určena 11 Jak je kniha uspořádána 11 Co ke knize potřebujete 12 Konvence 12 Zdrojový kód 13 Poznámka redakce českého
VícePoslední aktualizace: 14. října 2011
Lexikální analýza Překladače, přednáška č. 2 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 14. října 2011 Symboly Co je to
VícePrediká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ícePřednáška 3. Rekurze 1
Paradigmata programování 1 Přednáška 3. Rekurze 1 Michal Krupka KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI Obsah 1 Příklady 2 Rekurzivní procedury a rekurzivní výpočetní proces 3 Další příklady
VíceSyntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava
Implementace LL(1) překladů Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 6. ledna 2012 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
Více1. 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- 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Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání
Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou
Více2.5 Rezoluční metoda v predikátové logice
2.5. Rezoluční metoda v predikátové logice [101104-1520] 19 2.5 Rezoluční metoda v predikátové logice Rezoluční metoda v predikátové logice je obdobná stejnojmenné metodě ve výrokové logice. Ovšem vzhledem
VíceWSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007
WSH Windows Script Hosting OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007 Co je skript? Skriptování nástroj pro správu systému a automatizaci úloh Umožňuje psát skripty jednoduché interpretované programové
VíceUná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íce5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina
5a. Makra Visual Basic pro Microsoft Escel Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty Zde bude stránka o cyklických odkazech a iteracích.
VíceIB015 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íceOperátory, výrazy. Tomáš Pitner, upravil Marek Šabo
Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v
Víceklauzulí 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íce1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1
1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1. Prvocisla: Kratky ukazkovy priklad na demonstraci baliku WEB. Nasledujici program slouzi pouze jako ukazka nekterych moznosti a sluzeb,
VíceLogické 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íceZáklady PERLu snadno a rychle
Základy PERLu snadno a rychle Začínáme Začneme tak, že si vytvoříme třeba soubor hellopl, do souboru napíšeme: print "Hello world\n"; Pak soubor nastavíme jako spustitelný: $ chmod +x hellopl A teď si
VíceLogika. 2. Výroková logika. RNDr. Luděk Cienciala, Ph. D.
Logika 2. Výroková logika 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, Logika:
VícePřekladač a jeho struktura
Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice
VíceSé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íceVý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íceNegativní 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íceUmě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íceVý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íceMatematická 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Úvod do programování. Lekce 1
Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -
VíceNPRG030 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íceNegace bázového atomu Negace atomu s existenčním termem Negace klauzule Negace množiny klauzulí Predikát rovnosti. Klauzulární logika
Vlastnosti klauzulí, negace Šárka Vavrečková Ústav informatiky, Filozoficko-přírodovědecká fakulta Slezské univerzity v Opavě sarka.vavreckova@fpf.slu.cz 27. října 2008 Věta o transferu bázového atomu
VíceVý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íce4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody
4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina Cyklické odkazy a iterativní výpočty
VíceMS Excel makra a VBA
Autor: RNDr. Obsah: MS Excel makra a VBA 1 Využití, ukázky, výhody a nevýhody... 2 2 Makra a zabezpečení... 2 2.1 Nastavení zabezpečení Excelu... 2 2.2 Uložení maker do sešitu a osobního sešitu maker...
VíceMatematická 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íceOperátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2
* násobení maticové Pro čísla platí: Pro matice - násobení inverzní maticí inv inverzní matice A -1 k dané matici A je taková matice, která po vynásobení s původní maticí dá jednotkovou matici. Inverzní
VíceVý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íceSII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:
SII - Informatika Způsob vyhodnocení: Při vyhodnocení budou za nesprávné odpovědi strhnuty body. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá: a) sekundární klíč b)
VíceVISUAL 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íceLogika Libor Barto. Výroková logika
Logika Libor Barto Výroková logika Definice.(Jazyk výrokové logiky) Ve výrokové logice používáme tyto symboly: (1) Výrokové proměnné: velká písmena, případně opatřená indexy. (2) Výrokovéspojky:,,&,,,....
VíceNPRG030 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íce5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
VíceAlgoritmizace 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íceVÝ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íceKaždé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α
1. JAZYK ATEATIKY 1.1 nožiny nožina je souhrn objektů určitých vlastností, které chápeme jako celek. ZNAČENÍ. x A x A θ A = { { a, b a A = B A B 0, 1 2 a, a,..., a n x patří do množiny A x nepatří do množiny
VíceOkruh č.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íceProlog 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íceVýroková a predikátová logika - VI
Výroková a predikátová logika - VI Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - VI ZS 2017/2018 1 / 24 Predikátová logika Úvod Predikátová logika Zabývá
VíceStefan 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íceplatné 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íceFormá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íceProgramovací jazyk Prolog
Programovací jazyk Prolog doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Logický program Fakt, dotaz, pravidlo
Více0. ÚVOD - matematické symboly, značení,
0. ÚVOD - matematické symboly, značení, číselné množiny Výroky Výrok je každé sdělení, u kterého lze jednoznačně rozhodnout, zda je či není pravdivé. Každému výroku lze proto přiřadit jedinou pravdivostní
VíceVýroková logika. Sémantika výrokové logiky
Výroková logika Výroková logika se zabývá vztahy mezi dále neanalyzovanými elementárními výroky. Nezabývá se smyslem těchto elementárních výroků, zkoumá pouze vztahy mezi nimi. Elementární výrok je takový
Více2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5
Obsah Obsah 1 Řídicí struktury 1 2 Podmínka 1 2.1 Podmínka typu case......................... 2 3 Příkaz skoku 3 4 Cykly 4 4.1 Cyklus s podmínkou na začátku................... 4 4.2 Cyklus s podmínkou
Více- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku
Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová
VíceROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094
10 ROZHODOVACÍ PROCEDURY A VERIFIKACE PAVEL SURYNEK, KTIML HTTP://KTIML.MFF.CUNI.CZ/~SURYNEK/NAIL094 Matematicko-fyzikální fakulta Univerzita Karlova v Praze 1 ROZHODOVÁNÍ TEORIÍ POMOCÍ SAT ŘEŠIČE (SMT)
VíceProgramovací 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íceDomé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íceIB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat
IB015 Neimperativní programování Organizace a motivace kurzu, programovací jazyk Haskell Jiří Barnat Sekce IB015 Neimperativní programování 01 str. 2/36 Organizace kurzu Cíle kurzu IB015 Neimperativní
VíceProgramovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)
Programovací jazyk - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi) Odlišnosti implementace od normy - odchylky např.: nepovinná hlavička programu odlišná
VícePřednáška 2: Formalizace v jazyce logiky.
Přednáška 2: Formalizace v jazyce logiky. Marie Duží marie.duzi@vsb.cz Úvod do teoretické informatiky (logika) Dva základní logické systémy: Výroková logika a predikátová logika. řádu. Výroková logika
VíceVýrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
VíceCZ.1.07/1.5.00/
Celá čísla Celočíselný typ má označení INTEGER. Kromě tohoto základního jsou k dispozici ještě další celočíselné typy, které uvádí následující tabulka. Každý typ umožňuje definovat určitý rozsah celých
VíceŘÍDÍCÍ STRUKTURY - PODMÍNKY
ŘÍDÍCÍ STRUKTURY - PODMÍNKY Pokusíme se rozvětvit sktipt v Bashi ŘÍDÍCÍ STRUKTURY - PODMÍNKY V této lekci budeme probírat podmínkové, tj., které nám pomohou rozvětvit skript a provádět určité pouze při
VíceDSL 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íceLEKCE 6. Operátory. V této lekci najdete:
LEKCE 6 Operátory V této lekci najdete: Aritmetické operátory...94 Porovnávací operátory...96 Operátor řetězení...97 Bitové logické operátory...97 Další operátory...101 92 ČÁST I: Programování v jazyce
VíceALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
VíceZáklady programování (IZP)
Základy programování (IZP) Čtvrté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 4.
VíceSystém přirozené dedukce výrokové logiky
Systém přirozené dedukce výrokové logiky Korektnost, úplnost a bezespornost Šárka Vavrečková Ústav informatiky, FPF SU Opava Poslední aktualizace: 6. října 2008 Věta o korektnosti Věta (O korektnosti Systému
VíceEVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI
EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!
VíceLogické 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ícePredikátová logika [Predicate logic]
Predikátová logika [Predicate logic] Přesněji predikátová logika prvého řádu. Formalizuje výroky o vlastnostech předmětů (entit) a vztazích mezi předměty, které patří do dané předmětné oblasti univerza.
VíceMAXScript výukový kurz
MAXScript výukový kurz Díl čtvrtý jazyk MAXScript, část I. Jan Melichar, březen 2008 Jan Melichar (aka JME) strana 1 OBSAH ÚVOD... 4 ZÁKLADNÍ PŘÍKAZY... 5 OPERÁTORY... 6 PROMĚNNÉ... 6 POLE... 7 ZÁVĚREM...
VíceÚvod do databázových systémů
Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz
VícePřednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8
Přednáška 8 Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. 1 Proměnné Jména nových proměnných by neměly kolidovat se jmény předdefinovaných proměnných.
VíceProgramová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íceVý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íce8 Makra Příklad 4 Excel 2007
TÉMA: Úprava maker rozhodování, příkaz If..Then..Else Sekretářka společnosti Naše zahrada potřebuje upravit makra vytvořená pomocí záznamu tak, aby vyhovovala jejím požadavkům. Pro úpravy využije Editor
VíceVÝ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íceNPRG030 Programování I, 2018/19 1 / :25:37
NPRG030 Programování I, 2018/19 1 / 26 24. 9. 2018 10:25:37 Čísla v algoritmech a programech 10 26 Poloměr vesmíru 2651 studujících studentů MFF UK 3.142857... Ludolfovo číslo 10 16 stáří vesmíru v sekundách!!!
VíceMí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Úvod do výrokové a predikátové logiky
Úvod do výrokové a predikátové logiky Eva Ondráčková Na této přednášce se seznámíte se základy výrokové a predikátové logiky. Zjistíte, že podstatou logiky není vyplňování pravdivostních tabulek ani negování
VíceZá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íceObecná informatika. Matematicko-fyzikální fakulta Univerzity Karlovy v Praze. Podzim 2012
Obecná informatika Přednášející Putovních přednášek Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Podzim 2012 Přednášející Putovních přednášek (MFF UK) Obecná informatika Podzim 2012 1 / 18
VíceLogika. 5. Rezoluční princip. RNDr. Luděk Cienciala, Ph. D.
Logika 5. Rezoluční princip 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íceVýroková a predikátová logika - X
Výroková a predikátová logika - X Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - X ZS 2018/2019 1 / 16 Rozšiřování teorií Extenze o definice Rozšiřování
Více