PB006 Principy programovacı ch jazyku pozna mky

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

Download "PB006 Principy programovacı ch jazyku pozna mky"

Transkript

1 PB006 Principy programovacı ch jazyku pozna mky - Výpisky ze slidů pana Škarvady. V podstatě nic není navíc, spíš se jedná o zkrácení a přeformátování. Za bezchybnost neručím! 1 Úvod 1.1 Aspekty programovacího jazyka - Pragmatika o vztah k výpočtu o implementace kompilátoru, interpretu, o oblast nasazení - Syntax o struktura a forma programů v jazyce o popsána formální gramatikou ve třech úrovních (lexikální, bezkontextová, kontext omezení) - Sémantika o význam o vztah mezi programem a výpočetním modelem 2 Syntax - Popsána formální gramatikou G = (N, Σ, P, S), - V případě programovacích jazyků bývá bezkontextová, tj. o P (N (N Σ) + ) {(S, ε)}. Page 1 of 20

2 2.1 Konkrétní syntax - definuje vlastní jazyk - dostatečně mnoho terminálů Lexikální syntax (mikrosyntax) o k vymezení množiny lexikálních atomů (tvoří slovník ) o popsána regulární nebo jednoduchou bezkontextovou gramatikou o terminály znaky Frázová syntax (makrosyntax) o popisuje úplnou strukturu programu (tvoří množinu správně vytvořených vět) o popsána bezkontextovou gramatikou o terminály lexikální atomy Kontextová omezení (statická sémantika) o podmínky vymezující podmnožinu jazyka (pravidla vylučující syntakticky správné, ale nesmyslné věty) 2.2 Abstraktní syntax - popisuje strukturu - nezávislá na konkrétní reprezentaci - obsahuje hlavně neterminály 3 Typy 3.1 Pojetí typů - množiny hodnot - heterogenní algebry => množiny hodnot spolu s operacemi na nich - variety heterogenních algeber => množiny s operacemi a axiomy 3.2 Typy a typové konstruktory Kartézský součin (A B) - Množina všech uspořádaných dvojic (a, b) takových, že a A, b B. - Projekční funkce (selektory): o fst A B A o fst (x, y) = x o snd A B B o snd (x, y) = y Disjunktní sjednocení (A + B) - Sjednocení množiny všech dvojic (L, a) s množinou všech dvojic (R, b), kde a A, b B. L, R jsou příznaky původu prvku a, b. - Inserční funkce (konstruktory): o inl A A + B o inl x = (L, x) o inr B A + B o inr y = (R, y) Page 2 of 20

3 3.2.3 Pole - Zobrazení (konečného) ordinálního typu I do typu T. o Konečný typ je ordinální existuje bijekce ord I {1,, n}, kde n = I. - Zápis: Array I T Funkce - Zápis: A B - f(x, y) g x y Potenční množiny - Set A typ všech podmnožin A - A Bool typ všech predikátů nad A - Každé hodnotě a Set A odpovídá charakteristická funkce χ a A Bool taková, že pro každé x A platí x a χ a (x) = true Prázdný typ - disjunktní sjednocení nulového počtu typů - Void, - Neobsahuje žádnou hodnotu Jednotkový typ - kartézský součin nulového počtu prvků - Unit, - Má jedinou hodnotu uspořádanou nultici () Výčtové typy - Případ disjunktního sjednocení všechny inserce jsou typu Unit T Rekursivní (induktivní) typy - Je-li F(t) zápis typů obsahující typovou proměnnou t, pak μ t. F(t) je (množinově nejmenší typ vyhovující rovnici t = F(t). - T = μ t. F(t) ~ T = F(T) - např. konečné seznamy Korekursivní (koinduktivní) typy - Je-li F(t) zápis typů obsahující typovou proměnnou t, pak ν t. F(t) je (množinově největší typ vyhovující rovnici t = F(t). - T = ν t. F(t) ~ T = F(T) - např. nekonečné seznamy 3.3 Monomorfismus a polymorfismus Monomorfní typu - a) základní typy - nebo - b) Pomocí typových konstruktorů složené z monomorfních typů Polymorfní typy - Zastupují celou množinu monomorfních typů. Page 3 of 20

4 Parametrický polymorfismus - V typových výrazech se vyskytují typové proměnné, za něž lze dosadit libovolný typ. - př. b. Array (0..9)b Podtypový (inklusivní) polymorfismus - Na množině typů je zavedeno uspořádání : a každá hodnota má kromě svého nejmenšího typu i všechny jeho nadtypy. - A : B A je podtypem B - Pravidlo subsumpce o Nechť A : B, a je typu A, potom také a je typu B. o Zápis: a A A : B a B - Kovariace o Typový konstruktor S je kovariantní, když A : A S A : S A o Příklad typový konstruktor Set. σ : σ Set σ : Set σ Přirozené číslo je celým číslem, tedy i množina přirozených čísel je množinou celých čísel. - Kontravariace o Typový konstruktor T je kontravariantní, když A : A T A : T A o Příklad typový konstruktor Predicate. Predicate α = α Bool. σ : σ Predicate σ : Predicate σ Přirozené číslo je celým číslem, tedy predikát nad celými čísly je predikátem nad přirozenými čísly. - Kovariace a kontravariace u typových konstruktorů větší arity o se zavádí zvlášť pro každý parametr. o n-ární typový konstruktor S je ve svém i-tém typovém parametru (1 i n) kovariantní, když A i : A o o S A 1 A n : S A 1 A i 1 A A i+1 A n n-ární typový konstruktor T je ve svém i-tém A 1 A i 1 typovém parametru (1 i n) kontravariantní, když A : A T A 1 A i 1 A A i+1 A n : T A 1 A n Příklad Typový konstruktor je v prvním parametru kontravariantní a ve druhém parametru kovariantní. 3.4 Přetížení - Symbol je přetížený, označuje-li více hodnot různých typů. Page 4 of 20

5 - Kontextově nezávislé o Funkce lze vyřešit jen z typu argumentů. - Kontextově závislé o Typy argumentů nestačí, bere se širší kontext. - Symbol g je přetížen dvěma různými typy σ 1 τ 1, σ 2 τ 2. o Kontextově nezávislé musí být σ 1 σ 2. o Kontextově závislé musí být τ 1 τ Koerce - implicitní zobrazení hodnot jednoho typu do hodnot jiného typu 3.6 Druhy - Druhy slouží ke klasifikaci typů, typových konstruktorů, typových funkcí apod. - Symbol značí druh všech typů. 3.7 Hodnotově závislé typy - Typové konstruktory parametrizovány typy + hodnotami. - Příklad vektor o Typ Vec n všech n-složkových vektorů reálných čísel. o Vec Nat - Používáno hlavně akademickými jazyky: o Agda, Cauenne, 4 Sémantika - Přiřazuje významy programům nebo jejím částem. 4.1 Formální sémantika Operační sémantika - Množinou pravidel popisujících výpočet abstraktního počítače výsledek výpočtu je významem programu. - Rozlišujeme: o strukturní (sos) o přirozená (bos) Axiomatická sémantika - Množina tvrzení (tzv. teorie) o nějakém systému, v nemž probíhá výpočet. - Zejména u imperativních jazyků tvrzení se vyjadřují o stavech Denotační sémantika - Definována na programech a komponentách explicitně množina funkcí přiřazujících částem programů význam. - Přiřazení prvků sémantických domén programovým konstrukcím. Page 5 of 20

6 - Příklad: o P množina konstrukcí o MVar množina (přepisovatelných) proměnných o V množina hodnot o S = MVar V množina stavů o _ _ P S S stavový transformátor o M _ _ P S V významová funkce o o x + + σ = σ, kde M x + + σ = σ(x) σ (x) = σ(x) + 1 y, y x. σ (y) = σ(y) Nedeterministická sémantika o Deterministická sémantika - Významem výrazu e je jeho hodnota (prvek sémantické domény). - V imperativních jazycích závisí sémantika výrazu na stavu σ S, takže M e S Val - Význam výrazu e ve stavu σ je hodnota M e σ Val. - V jazycích bez vedlejších efektů, ale s proměnnými závisí sémantika výrazů na tzv. hodnotovém kontextu ε Env. Potom M e Env Val - Význam výrazu e ve stavu ε je hodnota M e ε Val. - Příklad: o M 0 σ = 0 o M 1 σ = 1 o o M e 1 + e 2 σ = M e 1 σ + M e 2 σ o M e 1 e 2 σ = M e 1 σ M e 2 σ M e 2 σ, pokud M e 1 σ = tt o M if e 1 then e 2 else e 3 σ = M e 3 σ, pokud M e 1 σ = ff, jinak 4.2 Výrazy - Literály označují hodnoty - Jména konstanty, parametry fcí, proměnné - Výrazy popisující hodnoty složených typů - Podmíněné výrazy -- if then else, case of - Aplikace funkce na argumenty (volání funkce) - Abstrakce ( uzávěry ) - Příkazy Page 6 of 20

7 4.3 Funkcionální a procedurální abstrakce - Funkcionální abstrakce se provádí nad výrazem některé jeho (volné) proměnné se prohlásí za parametry výsledné funkce. - Počet těchto parametrů určuje tzv. aritu. - Procedurální abstrakce se provádí podobně nad příkazem. - Příklad: o float sqr (float x) { return x x; } 4.4 Proměnné Funkcionální, logické - Čisté proměnné (v matematickém smyslu), - označují hodnotu, - slouží i k označení parametrů fcí Imperativní - Přepisovatelné proměnné, - označují paměťové místo. - Paměťové místo je úložiště hodnoty. - Ve většině jazyku se však jménem proměnné označuje i daná hodnota ( automatické dereferencování). 4.5 Příkazy - Významem příkazu je stavový transformátor s S S. - MVar množina program. proměnných reprezentujících paměťová místa - Val množina hodnot, která mohou být do těchto míst uloženy - σ MVar Val stav - S množina všech stavů - Je-li p příkaz, pak se jeho stavový transformátor značí p S S Příkazy obsahující výrazy BEZ VEDLEJŠÍCH EFEKTŮ Page 7 of 20

8 Page 8 of 20

9 4.5.2 Příkazy obsahující výrazy S VEDLEJŠÍMI EFEKTY - Připustíme, aby příkazy (výrazy typu Command) byly podvýrazy výrazů jiného typu. - Pak jsou všechny výrazy stavovými transformátory e S S, ale kromě toho vracejí hodnotu M e S Val. - Například v C ve stavu σ, σ(x) = 5, je o x + + σ = σ, σ (x) = 6, σ (y) = σ(y) pro y x o M x + + σ = 5 Page 9 of 20

10 4.6 Řadící příkazy - Skoky o Explicitní přenesení řízení výopčtu do jiné části programu. - Úniky o Ukončují provádění složeného příkazu, který unikový příkaz obsahuje. - Vyjímky 4.7 Volání funkce a předávání parametrů - Aplikace funkce na argumenty = tzv. volání funkce Volání hodnotou Volání jménem - Implementuje se pomocí nulárních (bezparametrických) funkcí pro každý skutečný parametr předávaný jménem -- tzv. thunks. Page 10 of 20

11 4.7.3 Volání dle potřeby líná aplikace - Varianta volání jménem, argumenty se ale vyhodnocují nejvýše jednou. - U referenčně transparentních jazyků jazyky bez vedlejších efektů. - Počet vyhodnocování argumentů: o volání hodnotou 1 o volání jménem 0 n o volání dle potřeby Volání odkazem - Skutečné parametry smějí být jen (adresovatelná) paměťová místa (Ref T). - Neprovádí se jejich implicitní dereferencování. Page 11 of 20

12 4.7.5 Volání výsledkem - Skutečné parametry jsou typu Ref a, tj. adresovatelná paměťová místa Volání hodnotou-výsledkem - Skutečné parametry jsou typu Ref a, tj. adresovatelná paměťová místa Smíšené volání hodnotou, výsledkem, hodnotou-výsledkem - Víceparametrická funkce své parametry vyhodnocuje různými způsoby, podle předpisu v hlavičce funkce Shrnutí typů volání (není ze slidů, nezaručuji 100% správnost) - Volání jménem: o Argument není vyhodnocen před voláním funkce. o Je substituován přímo do funkce, tzn. je pokaždé vyhodnocován pouze v místech, kde se ve funkci objevuje. Page 12 of 20

13 o Použití v C: Pomocí ukazatele na unární funkci (viz příklad výše). - Volání hodnotou: o Argument je vyhodnocen a výsledná hodnota je zkopírována do odpovídající proměnné ve funkci. o Změny proměnné ve funkci se mimo ní neprojeví. o Použití v C: defaultní volání - Volání odkazem: o Změny obsahu přepisovatelné proměnné určené formálním parametrem, mění současně obsah proměnné, která je skutečným argumentem při volání. o Změny proměnné ve funkci se okamžitě projevují i mimo ní. o Použití v C: Předání odkazem na proměnnou. (Popřípadě v C++ předáním referencí.) - Volání hodnotou-výsledkem: o Změny obsahu přepisovatelné proměnné určené formálním parametrem, se dějí pouze lokálně a obsah skutečného argumentu se změní až v okamžiku návratu. o Změny proměnné ve funkci se mimo funkci projeví až po návratu. - Volání výsledkem: o Argument je neinicializovaný, resp. může být inicializovaný, ale jeho hodnota není v těle funkce brána v potaz (například tím, že hodnota formální proměnné je inicializována v těle funkce na určitou hodnotu, která není závislá na hodnotě skutečné proměnné). o Není důležitá hodnota proměnné při volání funkce + hodnota se do proměnné zapíše až po návratu z funkce. - Pozor na rozdíl mezi voláním odkazem a voláním hodnotou-výsledkem může mít vliv na výsledný stav. 5 Viditelnost 5.1 Viditelnost jazykových entit - Statická o Pro každou definici jazykové entity (konstanty, proměnné, ) je statickou sémantikou určena oblast platnosti definice. - Dynamická o Viditelnost jazykových entit závisí na momentálně aktivních programových jednotkách (blocích, funkcích, ) v době běhu. o Téměř nepoužívaná (Lisp, Snobol). 5.2 Třídy a objekty - Objekt o Modul s privátními proměnnými (atributy) a veřejnými operacemi (metodami). - Třída o ( generický objekt ) popisuje typ objektu. o Vlastní objekty se nazývají instance třídy. Page 13 of 20

14 5.2.1 Dědičnost - Třída A je podtřídou třídy B (značíme A B), když dědí metody třídy B a případně přidává další. - Jednoduchá každá třída má nejvýše jednu bezprostřední nadtřídu. - Násobná (jinak). 5.3 Vlastnosti OO jazyků - Třídy a objekty (statické nebo dynamické). - Dědičnost a inkluzní polymorfismus o typový systém s podtypy a A, A : A a A - Viditelnost omezená na objekty o Řízená pomocí public/protecte/private. - V (dynamických) objektech mohou být atributy i metody o statické definované ve třídách o dynamické definované v objektech - Jazyky: o Simula 67 Považován za nejstarší jazyk, v němž se objevily některé principy OO programování. o Smalltalk První čistě objektový OO jazyk; netypovaný. o Eiffel Čistě objektový, typovaný. o C++ Není čistě objektové. o Java Není čistě objektová (má i primitivní typy). o Python, Ruby Interpretovaný bytový kód. o Ada Staticky typovaná, na zakázku MO USA v 70. letech. o OCaML Objektová verze funkcionálního ML. 6 Správa paměti 6.1 Paměťové třídy dat Persistentní data - Existují nezávisle na výpočtu. - Obvykle na vnějších paměťových médiích (soubory, databáze) Transientní data - Existují pouze po dobu výpočtu. - Obvykle v procesem adresovatelné části operační paměti (hodnoty proměnných, ), ale i vně (dočasné soubory, ). Page 14 of 20

15 - Statická - Automatická (zásobníková) - Dynamická (haldová) 6.2 Správa paměti Statická - Prováděná překladačem. - [Instrukce programu, systémová data, statická data, vyrovnávací paměti, ] Zásobníková - V době výpočtu při zajájení/ukončení aktivace procedury, bloku, - [lokální data v blocích, parametry funkcí a procedur, pomocné datové struktury ve funkcích, návratové adresy, ] Dynamická - V době výpočtu, prováděna speciálními procedurami pro alokaci, dealokaci, přesouvání, scelování, - 1. řízena explicitně programem [malloc, free, ] - 2. spouštěná výhradně run-time podporou výpočtu [garbage collectiong, setřásání] 6.3 Fáze správy paměti - alokace - dealokace - obnovení volné paměti - scelování (změna polohy obsazených a volných bloků) 6.4 Správa dynamické paměti - Inicializace vytvoření seznamu volných bloků - Alokace bloku (požadované velikosti) - Uvolnění bloku může způsobit vznik slepého odkazu nebo smetí - Úklid smetí (garbage collection) o bloky mají příznak dostupnosti (1 bit) o nastaví se na nedostupné o postupuje se od známých ukazatelů a všechny navštívené bloky se označí dostupné o nedostupné bloku se dají do seznamu volných - Scelování (spojování sousedních volných bloků) - Setřásání (úplné scelování) způsobí změny ukazatelů Page 15 of 20

16 7 Paradigmata - Deklarativní paradigma o Program popisuje, co je výsledkem. o Funkcionální program je výraz a výpočet je jeho úprava. o Logické program je teorie a výpočet je odvozen z ní. - Imperativní paradigma o Program popisuje, jak se dospěje k výsledku. o Procedurální výpočet je provádění procedur nad daty. o Objektové výpočet je předávání zpráv mezi objekty. 7.1 Logické paradigma - Vztahy mezi hodnotami pomocí tzv. Hornových klausulí. - Program se skládá ze seznamu klausulí (teorie) a z formule (cíle, dotazu). - Abstraktní syntax: o Program ::== Klausule* Formule o Klausule ::== Formule :- Formule* o Formule ::== Pred (Term*) o Term ::== Var Fun (Term*) - Kontextová omezení (Statická sémantika) o Predikátové a funkční symboly mají konsistentní arity. o Levá strana (tj. závěr) implikace se nazývá hlava klausule. o Předpoklady implikace se nazývají podcíle. o Klausule s nulovým počtem podcílů je tzv. fakt. o o Proměnné v klausuli, které jsou na levé straně univerzálně kvantifikovány. Ostatní proměnné, které jsou jen na pravé straně existenčně kvantifikovány Termy - Zero nulární funkční symbol (konstanta). - Succ unární funkční symbol. - Uzavřené termy: o Zero o Succ(Zero) o Succ(Succ(Zero)) o - Termy s proměnými o Succ(x) o Succ(Succ(Succ(y))) o Klauzule - LessThan Zero, Succ(y). - LessThan Succ(x), Succ(y) LessThan(x, y). Page 16 of 20

17 7.1.3 Dotaz - LessThan(x, Succ(Succ(Zero))). 7.2 Sémantika logického programu Substituce - Subst je množina všech substitucí, tj. konečných zobrazení o σ Var f GTerm, - kde GTerm = {τ Term τ neobsahuje proměnné} je množina všech tzv. uzavřených termů. - Substituci σ lze rozšířit na termy rozšířená substituce σ Term GTerm Logické jazyky - Prolog o 70. léta o netypovaný jazyk o plochá struktura a viditelnost: všechny predikáty jsou globální všechny proměnné jsou lokální (v klauzuli) o není čistě logický - Gödel o 90. léta o typovaný jazyk o modulární struktura o parametrický polymorfismus - Mercury o polovina 90. let o multiparadigmatický jazyk (logický + funkcionální) Aplikace logického programování - zpracování přirozeného jazyka - simulace - symbolická manipulace s výrazy, řešení rovnic - Výhody o vyšší úroveň o logika programu oddělena od řízení výpočtu - Nevýhody o efektivita o nevýhodné pro aplikace s intenzivním I/O 7.3 Funkcionální paradigma - Nerozlišuje stavy, výpočet je jednostavový. o Nemá přepisovatelné proměnné. - parametrický polymorfismus, typové a konstruktorové třídy - uživatelské typy - líné vyhodnocování, nekonečné datové struktury Page 17 of 20

18 7.3.1 Sémantika - Hodnotový kontext (prostředí) o ε Var Val - Env množina všech hodnotových kontextů - Sémantická funkce o M Term Env Val - Val sémantická doména CPO - CPO je uspořádaná množina, v níž má každý nejvýše spočetný řetězec supremum. - Každá spojitá funkce je monotónní. (Obrácená věta neplatí.) - Každá monotónní funkce na konečné doméně je spojitá Sémantické domény - Primitivní, tzv. ploché: o Unit, Bool, Nat, Integer, Char Sémantika konstant - nezávisí na hodnotovém kontextu ε. Page 18 of 20

19 7.3.5 Sémantika výrazů Funkcionální jazyky - LISP o konec 50. let o jednoduchá syntax, stejná pro data i algoritmy o není čistě funkcionální o netypovaný o dynamická viditelnost o dialekty: AutoLisp, elisp, - Scheme o konec 50. let o netypovaný jazyk o statická viditelnost o striktní vyhodnocování o streamy - ML o konec 70. let o typovaný jazyk o striktní vyhodnocování o dialekty: CaML, OCaML - Erlang o dynamicky typovaný jazyk o striktní vyhodnocování o konstrukce pro podporu paralelního vyhodnocování Page 19 of 20

20 - Hope, Clean, Orwell, Miranda o konec 80. let o vesměs líně vyhodnocované o používané ve výuce - Opal o 90. léta o čistě funkcionální o modulární o striktně vyhodnocovaný - Haskell o čistě funkcionální o modulární o líně vyhodnocovaný o čisté začlenění imperativních konstrukcí do referenčně transparentního jazyka pomocí monadických typů a operací - Cayenne, Agda, Epigram o experimentální jazyky o velmi silný (tedy nerozhodnutelný) typový systém Page 20 of 20

Principy programovacích jazyků PB006 PB006 1

Principy programovacích jazyků PB006 PB006 1 Principy programovacích jazyků PB006 PB006 1 PB006 2 ØØÔ»»ÛÛÛº ºÑÙÒ ºÞ» Ð ÓÖ»ÚÝÙ»È ¼¼» Náplň kursu Přehled programovacích paradigmat, vlastností programovacích jazyků a zkoumání teoretické podstaty jevů,

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

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

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

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

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program Denotační sémantika programovacího jazyka doc. Dr. Ing. Miroslav Beneš katedra informatiky, A-1007 59 732 4213 Obsah přednášky Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

Struktura programu v době běhu

Struktura programu v době běhu Struktura programu v době běhu Miroslav Beneš Dušan Kolář Struktura programu v době běhu Vztah mezi zdrojovým programem a činností přeloženého programu reprezentace dat správa paměti aktivace podprogramů

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

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

Funkcionální programování

Funkcionální programování Funkcionální programování Typované - Haskell Netypované - Lisp, Scheme λ-kalkul Teoretický základ funkcionálniho programování Lambda kalkul analyzuje funkce nikoli z hlediska původního matematického smyslu

Více

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada

IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada IB015 Neimperativní programování Časová složitost, Typové třídy, Moduly Jiří Barnat Libor Škarvada Sekce IB015 Neimperativní programování 07 str. 2/37 Časová složitost Časová složitost algoritmu IB015

Více

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

Vý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í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

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění

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

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

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

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

Sdílení dat mezi podprogramy

Sdílení dat mezi podprogramy Sdílení dat mezi podprogramy Datové objekty mohou být mezi podprogramy sdíleny pomocí ne-lokálních referenčních prostředí, která jsou vytvářena na základě æ explicitních modifikací (formální parametry

Více

0. ÚVOD - matematické symboly, značení,

0. Ú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í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

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

Logické programy Deklarativní interpretace

Logické programy Deklarativní interpretace Logické programy Deklarativní interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 7 1 Algebry. (Interpretace termů) Algebra J pro jazyk termů L obsahuje Neprázdnou

Více

IB111 Úvod do programování skrze Python Přednáška 13

IB111 Úvod do programování skrze Python Přednáška 13 IB111 Úvod do programování skrze Python Přednáška 13 Programovací jazyky Nikola Beneš 14. prosinec 2016 IB111 přednáška 13: programovací jazyky 14. prosinec 2016 1 / 21 Osnova dnešní přednášky Programovací

Více

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Metody přidělování paměti Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Důležitá hlediska jazykových konstrukcí: Dynamické typy Dynamické

Více

Matematika v programovacích

Matematika v programovacích Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?

Více

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata 1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata Studijní cíl Tento první blok celého kurzu zaměřen na zvládnutí základních pojmů z oblasti programování a

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

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

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

Výroková a predikátová logika - VII Výroková a predikátová logika - VII Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - VII ZS 2018/2019 1 / 15 Platnost (pravdivost) Platnost ve struktuře

Více

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Metody přidělování paměti Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě Důležitá hlediska jazykových konstrukcí: Dynamické typy Dynamické

Více

Úvod do TI - logika Predikátová logika 1.řádu (4.přednáška) Marie Duží marie.duzi@vsb.cz

Úvod do TI - logika Predikátová logika 1.řádu (4.přednáška) Marie Duží marie.duzi@vsb.cz Úvod do TI - logika Predikátová logika 1.řádu (4.přednáška) Marie Duží marie.duzi@vsb.cz Jednoduché úsudky, kde VL nestačí Všechny opice mají rády banány Judy je opice Judy má ráda banány Z hlediska VL

Více

O datových typech a jejich kontrole

O datových typech a jejich kontrole .. O datových typech a jejich kontrole Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Typová kontrola Programovací techniky O datových typech

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

Ú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

Č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á a predikátová logika - VII

Výroková a predikátová logika - VII Výroková a predikátová logika - VII Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - VII ZS 2013/2014 1 / 21 Sémantika PL Teorie Vlastnosti teorií Teorie

Více

IB015 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 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íce

Matematická logika. Miroslav Kolařík

Matematická logika. Miroslav Kolařík Matematická logika přednáška šestá Miroslav Kolařík Zpracováno dle textu R. Bělohlávka: Matematická logika poznámky k přednáškám, 2004. a dle učebního textu R. Bělohlávka a V. Vychodila: Diskrétní matematika

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

IB111 Programování a algoritmizace. Programovací jazyky

IB111 Programování a algoritmizace. Programovací jazyky IB111 Programování a algoritmizace Programovací jazyky Programovací jazyky Programovací jazyk Prostředek pro zápis algoritmů, jež mohou být provedeny na počítači Program Zápis algoritmu v programovacím

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

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

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 28. Otázka : Vyšší programovací jazyky a jejich moderní rysy (správa paměti, implementace objektově orientovaných prvků, výjimky) Obsah : 1. Rozdělení

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

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

PB161 Programování v jazyce C++ Přednáška 4

PB161 Programování v jazyce C++ Přednáška 4 PB161 Programování v jazyce C++ Přednáška 4 Přetěžování funkcí Konstruktory a destruktory Nikola Beneš 9. října 2017 PB161 přednáška 4: přetěžování funkcí, konstruktory, destruktory 9. října 2017 1 / 20

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

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

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; Vícerozměrné pole type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; M[2,3] := 3145; - počet indexů není omezen (v praxi obvykle nejvýše tři) - více indexů pomalejší přístup k prvku (počítá

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Matematická analýza 1

Matematická analýza 1 Matematická analýza 1 ZS 2019-20 Miroslav Zelený 1. Logika, množiny a základní číselné obory 2. Limita posloupnosti 3. Limita a spojitost funkce 4. Elementární funkce 5. Derivace 6. Taylorův polynom Návod

Více

DTP Základy programování Úvod do předmětu

DTP Základy programování Úvod do předmětu DTP Základy programování 01 - Úvod do předmětu Úvod Co již umíte? Plán předmětu Studijní materiály Způsob ukončení předmětu Základní pojmy I. Řešený problém: Řešeným nebo zpracovávaným problémem je konkrétní

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

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

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

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

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu. Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus

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

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

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-SOC: 11 METODY VERIFIKACE SYSTÉMŮ NA ČIPU Hana Kubátov vá doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta 1 informačních

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

11. Přehled prog. jazyků

11. Přehled prog. jazyků Jiří Vokřínek, 2016 B6B36ZAL - Přednáška 11 1 Základy algoritmizace 11. Přehled prog. jazyků doc. Ing. Jiří Vokřínek, Ph.D. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze

Více

Teoretická informatika Tomáš Foltýnek Teorie čísel Nekonečno

Teoretická informatika Tomáš Foltýnek Teorie čísel Nekonečno Tomáš Foltýnek foltynek@pef.mendelu.cz Teorie čísel Nekonečno strana 2 Opakování z minulé přednášky Jak je definována podmnožina, průnik, sjednocení, rozdíl? Jak je definována uspořádaná dvojice a kartézský

Více

10. Techniky formální verifikace a validace

10. Techniky formální verifikace a validace Fakulta informačních technologií MI-NFA, zimní semestr 2011/2012 Jan Schmidt EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI 10. Techniky formální verifikace a validace 1 Simulace není

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena

Více

PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2

PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2 PI JE JEDNODUCHÝ IMPERATIVNÍ PROGRAMOVACÍ JAZYK OBSAHUJE PODPORU ANOTACÍ NEOBSAHUJE NĚKTERÉ TYPICKÉ KONSTRUKTY PROGRAMOVACÍCH JAZYKŮ JAKO JSOU REFERENCE, UKAZATELE, GLOBÁLNÍ PROMĚNNÉ PODOBÁ SE JAZYKU C

Více

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

Více

Teorie množin. Čekají nás základní množinové operace kartézské součiny, relace zobrazení, operace. Teoretické základy informatiky.

Teorie množin. Čekají nás základní množinové operace kartézské součiny, relace zobrazení, operace. Teoretické základy informatiky. Teorie množin V matematice je všechno množina I čísla jsou definována pomocí množin Informatika stojí na matematice Znalosti Teorie množin využijeme v databázových systémech v informačních systémech při

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

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

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

IB111 Programování a algoritmizace. Objektově orientované programování (OOP) IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

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

Programování II. Modularita 2017/18

Programování II. Modularita 2017/18 Programování II Modularita 2017/18 Modul? Osnova přednášky Vývoj programování Modularita Příklad Vývoj programování Paradigmata programování Jak a proč se jazyky vyvíjejí? V čem se OOP liší od předchozích

Více

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza.

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza. Sémantická analýza Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 19. listopadu 2009 Definice (Sémantická analýza) Vstup: konstrukce symbolů vytvořená

Více

Deskripční logika. Petr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Deskripční logika 37 / 157

Deskripční logika. Petr Křemen FEL ČVUT. Petr Křemen (FEL ČVUT) Deskripční logika 37 / 157 Deskripční logika Petr Křemen FEL ČVUT Petr Křemen (FEL ČVUT) Deskripční logika 37 / 157 Co nás čeká 1 Základy deskripční logiky 2 Jazyk ALC Syntax a sémantika 3 Cyklické a acyklické TBOXy Petr Křemen

Více

Kaž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 α

Kaž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íce

Programovací 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) 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íce

5 Přehled operátorů, příkazy, přetypování

5 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íce

Základní pojmy teorie množin Vektorové prostory

Základní pojmy teorie množin Vektorové prostory Základní pojmy teorie množin Přednáška MATEMATIKA č. 1 Katedra ekonometrie FEM UO Brno kancelář 69a, tel. 973 442029 email:jiri.neubauer@unob.cz 7. 10. 2010 Základní pojmy teorie množin Základní pojmy

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

postaveny výhradně na syntaktické bázi: jazyk logiky neinterpretujeme, provádíme s ním pouze syntaktické manipulace důkazy

postaveny výhradně na syntaktické bázi: jazyk logiky neinterpretujeme, provádíme s ním pouze syntaktické manipulace důkazy Formální systémy (výrokové) logiky postaveny výhradně na syntaktické bázi: jazyk logiky neinterpretujeme, provádíme s ním pouze syntaktické manipulace důkazy cíl: získat formální teorii jako souhrn dokazatelných

Více

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s

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

Bakalářská matematika I

Bakalářská matematika I 1. Funkce Diferenciální počet Mgr. Jaroslav Drobek, Ph. D. Katedra matematiky a deskriptivní geometrie Bakalářská matematika I Některé užitečné pojmy Kartézský součin podrobnosti Definice 1.1 Nechť A,

Více

Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/ Množiny, funkce

Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/ Množiny, funkce Moderní technologie ve studiu aplikované fyziky CZ.1.07/2.2.00/07.0018 2. Množiny, funkce MNOŽIN, ZÁKLDNÍ POJMY Pojem množiny patří v matematice ke stěžejním. Nelze jej zavést ve formě definice pomocí

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Objektově orientovaný přístup

Objektově orientovaný přístup Objektově orientovaný přístup 1 Historie programovacích jazyků 1945: John von Neumann článek o nové metodě pro ukládání programů 1945: Grace Hopper poprvé termín "bug" 1946: Konrad Zuse Plankalkul - první

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

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více