Formální jazyky a překladače
|
|
- Kamil Ovčačík
- před 9 lety
- Počet zobrazení:
Transkript
1 Formální jazyky a překladače Přednášky: -Typy překladačů, základní struktura překladače -Regulární gramatiky, konečné automaty a jejich využití v lexikální analýze -Úvod do syntaktické analýzy, metoda rekurzivního sestupu -Překlad příkazů -Zpracování deklarací -Přidělování paměti -Interpretační zpracování -Generování cílového kódu -Vlastnosti bezkontextových gramatik -Deterministická analýza shora dolů -LL(1) transformace -Deterministická analýza zdola nahoru -Formální překlady Cvičení: -Opakování teoretického základu -Generátor lexikální analýzy - LEX -Jazyk PL0 a jeho překladač -Rozšíření konstrukcí jazyka PL0, zadání individuálních úloh -Příklady LL gramatik -Příklady LR gramatik, ukázky práce s generátorem YACC Zápočet: Udělen na základě referátu a předvedení zadané modifikace překladače PL0 Zkouška: Písemná forma - 2 příklady (s použitím vlastní literatury) a otázky (bez použití literatury). Výsledky budou spolu s termíny pro reklamaci, zápis do indexu či ústní přezkoušení zveřejněny na webu a nástěnce. Po uplynutí termínu bude výsledek zapsán do databáze známek i v případě, že student nepředložil index k zápisu. Literatura: web stránky předmětu FJP Melichar, Češka, Ježek, Rychta: Konstrukce překladačů (ČVUT) Mogensen: Basics of Compiler Design ( Melichar: Jazyky a překlady (ČVUT) Molnár a kol.: Gramatiky a jazyky (Alfa) Doporučená Aho, Sethi, Ullman: Compilers Principles Technics and Tools (v knihovně): Appel A.W.: Modern Compiler Implementation in Java
2 Formální jazyky a překladače - organizace FJP je šestikreditový předmět doporučený pro 2. ročník Informatika a výpočetní technika. K získání zkoušky je zapotřebí splnit požadavky cvičení a napsat zkouškový test. Celkové hodnocení se snadno zjistí z bodového zisku a následující převodní tabulky: Více než 82 b. výborně b. velmi dobře b. dobře 0 50 b. nevyhověl Na některých cvičeních se zadává samostatné vyřešení příkladu do příštího cvičení; správné řešení je honorováno polovinou bodu. V rámci cvičení vypracovávají studenti semestrální práci. Hodnocení lehké semestrální práce je až 30 bodů, těžké až 40 bodů. Termín odevzdání práce je do Za každý den prodlení se automaticky strhává 1 bod. Ze semestrální práce je zapotřebí získat alespoň 20 bodů. Zkouška probíhá písemně. Maximální hodnocení je 60 bodů. Ze zkouškového testu musí student získat alespoň 30 bodů. V polovině semestru mají studenti možnost napsat dobrovolně jednoduchý test z doposud probrané látky.
3 Využití teorie překladačů a formálních jazyků Assemblery překlad z JSI. Hlavní problém = adresace symbolických jmen, makra Kompilátory generují kód (strojový / symbolický / jiný jazyk) Interprety provádí překlad i exekuci programu převedeného do vhodné formy Strukturní editory napovídají možné tvary konstrukcí programů, či strukturovaných textů Pretty printers provádí úpravu struktury výpisů Statické odlaďovače vyhledávání chyb bez exekuce programu Reverzní překladače převádí strojový kód do JSI / vyššího jazyka Formátory textu překladače pro sazbu textu (Tex DVI) Silikonové překladače pro návrh integrovaných obvodů. Proměnné nereprezentují místo v paměti, ale log. proměnnou obvodu. Výstupem je návrh obvodu. Příkazové interprety pro administraci OS / sítí (viz shell Unixu) Dotazovací interprety analýza a překlad příkazů a podmínek dotazů a příkazů DB jazyků Preprocesory realizují vnořování částí programu do hostitelského jazyka (expandují makra, přidají include <něco.h> soubory apod.) Analyzátory textu kontroly pravopisu, práce s dokumenty, vyhledávání, indexace, zpracování XML. Znalost principů překladače patří k základním disciplínám informatiky. Programátorům umožní vytváření lepších programů v konkrétních jazycích, pochopit výhody a úskalí konkrétních programových struktur a lépe porozumět příčinám chyb, které překladač hlásí.
4 Formálně je překladač zobrazením: Překladač: zdrojový jazyk cílový jazyk Činnost assembleru: JSI strojový kód absolutní binární kód /přemístitelný binární kód Činnost kompilátoru: vyšší progr. Jazyk strojový kód Pozn.: První překladač Fortran IBM (Backus 1957) pracnost 18 člověkoroků -ad hoc technologie Činnost interpretu: vyšší progr. jazyk výsledky data Dávkový překladač Konverzační překladač batchové zpracování interaktivní Inkrementální překladač interaktivní + překládá po úsecích (př. Basic překlad po řádcích) Křížový překladač Kaskádní překladač překlad na jiném procesoru než exekuce (viz zabudované systémy) máme již A B, ale chceme A C, uděláme B C. Kdy se to vyplatí? Komplikace - chybová hlášení výpočtu jsou pomíchaná Optimalizující překladač (možnost ovlivnění optimalizace času / paměti programátorem) Paralelizující překladač zjišťuje nezávislost úseků programu
5 Hlavní části překladače Kompilátor: Zdrojový program Lexikální analýza - lineární Programové symboly Syntaktická analýza -hierarchická ANALÝZA Zjištění a kontrola struktury programu Derivační strom Zpracování sémantiky Kontrola typů, použití proměnných apod. Program konvertován do vnitřní formy Optimalizace -příprava generování SYNTÉZA Generování kódu Upravený program ve vnitřní formě Cílový program Všechny části spolupracují s pracovními tabulkami překladače. Základní tabulkou kompilátoru i interpretu je Tabulka symbolů Výhodou kompilátoru je rychlá exekuce programu
6 Interpret Zdrojový program Lexikální analýza - lineární Programové symboly Syntaktická analýza -hierarchická Zjištění a kontrola struktury programu Derivační strom Zpracování sémantiky Kontrola typů, použití proměnných apod. Program ve vnitřní formě Optimalizace -příprava generování Upravený program ve vnitřní formě Interpretace Výstupní data Vstupní data Výhodou interpretu je: eliminace kroků cyklu (Editace překlad sestavení exekuce ) Snazší realizace ladících mechanismů (zachování původních jmen symbolů)
7 Vícefázový / víceprůchodový překladač Fáze = logicky dekomponovaná část, (může obsahovat více průchodů, např. optimalizace). Průchod = čtení vstupního řetězce, zpracování, zápis výstupního řetězce (může obsahovat více fází). Jednoprůchodový překladač = všechny fáze probíhají v rámci jediného čtení zdrojového textu programu, omezená možnost kontextových kontrol, omezená možnost optimalizace, lepší možnost zpracování chyb a ladění (pro výuku) Co má vliv na strukturu překladače Vlastnosti zdrojového a cílového jazyka, Vlastnosti hostitelského počítače, Rychlost/velikost překladače, Rychlost/velikost cílového kódu, Ladicí schopnosti (detekce chyb, zotavení), Velikost projektu, prostředky, termíny. Testování a údržba překladače Formální specifikace jazyka možnost automatického generování testů, Systematické testování regresní testy = sada testů doplňovaná o testy na odhalené chyby. Po každé změně v překladači se provedou všechny testy a porovnají se výstupy s předešlými.
8 Vnitřní jazyky překladače Postfixová notace (operátory bezprostředně následují za svými operandy, pořadí operandů je zachováno) Vyjadřuje precedenci operátorů, nepotřebuje závorky Př.1 a + b a b + Př.2 ( a + b) * ( c + d ) a b + c d + * Postfixový zápis nepotřebuje (a nemá) závorky Postfix je elegantně vyhodnotitelný zásobníkem: 1) Čti symbol postfixového řetězce, 2) Je-li symbolem operand, ulož jej do zásobníku. 3) Je-li symbolem operátor, proveď jeho operaci nad vrcholem zásobníku a výsledek vlož do zásobníku 4) Jdi na 1). Po přečtení a vyhodnocení celého řetězce je výsledek uložen v zásobníku (princip interpretace). Pro př.2 čte a čte b čte + čte c čte d čte + čte * d b c c c+d a a a+b a+b a+b a+b (a+b)*(c+d) Pozn. Musíme umět vyjádřit i jiné než konstrukce pro výrazy. Prefixová notace (operátory bezprostředně předchází operandy, pořadí operandů je zachováno) Vyjadřuje precedenci operátorů, nepotřebuje závorky a + b + a b ( a + b) * ( c + d ) * + a b + c d Prefixový zápis nemá závorky!pozor, není to vždy zrcadlový obraz operátorů z postfixu!!! pořadí operandů u postfixu i prefixu zůstává zachováno, mění se pořadí operátorů!!! Zkusme na tabuli př. A = - B * C + D
9 Víceadresové instrukce (čtveřice / trojice) Čtveřice operátor, operand, operand, výsledek Např. +, a, b, Vysledek Potřeba přidělovat paměť pomocným prom. Př 2) ( a + b) * ( c + d ) tvar význam +, a, b, Pom1 Pom1 = a + b +, c. d. Pom2 Pom2 = c + d *, Pom1, Pom2, Vysl Vysl = Pom1* Pom2 Trojice odkládají potřebu přidělovat paměť pomocným proměnným v době generování víceadresových instrukcí. Vztahují výsledek operace k číslu trojice Př 2) 1) +, a, b 2) +, c, d 3) *, (1), (2) Vyjadřují abstraktní syntaktický strom * + + a b c d
10 Optimalizace Optimalizace cyklů Redukce počtu registrů a další Př. Optimalizace paměti. program (0) a = 0 a = 0; c = 0; L : b = a + 1; (1) c = 0 c = c + b; a = b * 2; (2) b = a+1 if a < K goto L; return c; (3) c = c+b (4) a = b*2 (5) a < K ano ne (6) return c živé b (2) (3) (4) živé a (0) (1) (2), (4) (5) (2) živé c (1) (2) (3) (4) (5) (2) (6)?Kolik potřebujeme registrů pro proměnné a, b, c, když K je konstanta? -zjištění živých a neživých proměnných v data flow diagramu, -vytvoření interferenčního grafu, -barvení grafu. počet potřebných barev = počet potřebných registrů a b c a x Matice interferencí b x c x x Výsledek 2
11 Př. překladu příkazu pozice = začátek + rychlost * 60 Lexikální analýza id1, =, id2, +, id3, *, 60 Syntaktická analýza = id1 + id2 * id3 60 Sémantická analýza = id1 + id2 * id3 konverze na real 60 Generování vnitřního jazyka pom1 = konverze_na_real(60) pom2 = id3 * pom1 pom3 = id2 + pom2 id1 = pom3 víceadresové instrukce Optimalizace
12 pom1 = id3 * 60.0 id1 = id2 + pom1 Generování kódu MOVF id3, R2 MULF #60.0, R2 MOVF id2, R1 ADDF R2, R1 MOVF R1, id1 Tabulka symbolů 1 pozice 2 zacatek 3 rychlost 4 5
13 Kostra zdrojového programu preprocesor zdrojový program cílový program v JSI kompilátor assembler přemístitelný strojový kod loader / linker knihovna přemístitelné objektové soubory absolutně adresovaný strojový kod Obr. Systém zpracování jazyka
14 Principiální možnost automatizace konstrukce překladače Bezkontextová gramatika
15 Jaké prostředky k tomu máme a co bychom chtěli
16 animace regulárních výrazů Javascript, Python, PHP, Ruby Lex, Flex, Yacc, Bizon stránky The Lex & Yacc Page Overview Lex Yacc Flex Bison Tools Books OVERVIEW A compiler or interptreter for a programminning language is often decomposed into two parts: 1. Read the source program and discover its structure. 2. Process this structure, e.g. to generate the target program. Lex and Yacc can generate program fragments that solve the first task. The task of discovering the source structure again is decomposed into subtasks: LEX 1. Split the source file into tokens (Lex). 2. Find the hierarchical structure of the program (Yacc). A First Example: A Simple Interpreter Lex - A Lexical Analyzer Generator M. E. Lesk and E. Schmidt Lex source is a table of regular expressions and corresponding program fragments. The table is translated to a program which reads an input stream, copying it to an output stream and partitioning the input into strings which match the given expressions. As each such string is recognized the corresponding program fragment is executed. The recognition of the expressions is performed by a deterministic finite automaton generated by Lex. The program fragments written by the user are executed in the order in which the corresponding regular expressions occur in the input stream. Online Manual PostScript Lex Manual Page YACC Yacc: Yet Another Compiler-Compiler
17 Stephen C. Johnson Yacc provides a general tool for describing the input to a computer program. The Yacc user specifies the structures of his input, together with code to be invoked as each such structure is recognized. Yacc turns such a specification into a subroutine that han- dles the input process; frequently, it is convenient and appropriate to have most of the flow of control in the user's application handled by this subroutine. Online Manual PostScript Yacc Manual Page FLEX Flex, A fast scanner generator Vern Paxson flex is a tool for generating scanners: programs which recognized lexical patterns in text. flex reads the given input files, or its standard input if no file names are given, for a description of a scanner to generate. The description is in the form of pairs of regular expressions and C code, called rules. flex generates as output a C source file, Online Manual PostScript Flex Manual Page Download Flex from ftp://prep.ai.mit.edu/pub/gnu/ BISON Bison, The YACC-compatible Parser Generator Charles Donnelly and Richard Stallman Bison is a general-purpose parser generator that converts a grammar description for an LALR(1) context-free grammar into a C program to parse that grammar. Once you are proficient with Bison, you may use it to develop a wide range of language parsers, from those used in simple desk calculators to complex programming languages. Online Manual PostScript Bison Manual Page Download Bison from ftp://prep.ai.mit.edu/pub/gnu/ TOOLS
18 Other tools for compiler writers: Compiler Construction Kits Lexer and Parser Generators Attribute Grammar Systems Transformation Tools Backend Generators Program Analysis and Optimisation Environment Generators Infrastructure, Components, Tools Compiler Construction with Java BOOKS Lex & Yacc John R. Levine, Tony Mason, Doug Brown Paperback pages 2nd/updated edition O'Reilly & Associates ISBN: Compilers: Principles, Techniques, and Tools Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman Addison-Wesley Pub Co ISBN: Modern Compiler Implementation in C Andrew W. Appel, Maia Ginsburg Hardcover pages Rev expand edition Cambridge University Press ISBN: X
Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.
Virtuální počítač Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor Virtuální počítač Překladač Překladač : Zdrojový jazyk Cílový jazyk Analytická část:
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Základní informace Přednášky: doc. Ing. Jan Janoušek, Ph.D.
Př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
Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie
Úvod z historie RNDr. Miroslav Benedikovič John Louis von Neumann r. 1946 nová koncepce počítače (společná paměť pro kód programu a zpracovávaná data) vytvořila podmínky pro vznik softvéru na přípravu
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ.
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Dva základní
Konstruktory překladačů
Konstruktory překladačů Miroslav Beneš Dušan Kolář Konstruktor Lex generátor lexikálních analyzátorů M. E. Lesk, 1975 - pro OS Unix flex - Vern Paxson, 1990 - GNU verze určeno pro generování výstupu v
VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace
1) Charakterizujte křížový překladač Překlad programu probíhá na jiném procesoru, než exekuce. Hlavním důvodem je náročnost překladače na cílovém stroji by ho nemuselo být možné rozběhnout. 2. Objasněte
Lexikální analýza Teorie programovacích jazyků
Lexikální analýza Teorie programovacích jazyků doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Osnova dnešní přednášky 1 Úvod do teorie překladačů kompilátor a interpret
1.Charakterizujte křížový překladač 2.Objasněte pojem silikonový překladač 3.Co to jsou formátory textu? Uveďte příklad
1.Charakterizujte křížový překladač Překlad pro jiný počítač, než na kterém je vytvářen. 2.Objasněte pojem silikonový překladač Pro návrh logických obvodů. Proměnné představují logické signály. Výsledkem
Předměty. Algoritmizace a programování Seminář z programování. Verze pro akademický rok 2012/2013. Verze pro akademický rok 2012/2013
Předměty Algoritmizace a programování Seminář z programování Verze pro akademický rok 2012/2013 Verze pro akademický rok 2012/2013 1 Přednášky Jiřina Královcová MTI, přízemí budovy A Tel: 48 53 53 521
GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)
GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK) 2011 Jan Janoušek MI-GEN Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Úvod
Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů
BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 2/29 Hodnocení předmětu BI-AAG (2011/2012) J. Holub: 1. Základní pojmy p. 4/29 Automaty a gramatiky(bi-aag) 1. Základní pojmy Jan Holub Katedra teoretické
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
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á
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
A Tutorial. George J. Klir State University of New York (SUNY) Binghamton, New York 13902, USA
A Tutorial Generování syntaktických analyzátorů George J. Klir Jan Konečný State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University, Olomouc, Czech Republic
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
Konečný automat. Jan Kybic.
Konečný automat Jan Kybic http://cmp.felk.cvut.cz/~kybic kybic@fel.cvut.cz 2016 2017 1 / 33 Konečný automat finite state machine Konečný automat = výpočetní model, primitivní počítač Řídící jednotka s
Západočeská univerzita v Plzni Dokumentace překladače PL/0 v PHP Předmět KIV/FJP
Západočeská univerzita v Plzni Dokumentace překladače PL/0 v PHP Předmět KIV/FJP Petr Sládek slady@slady.cz 27. ledna 2005 Zadání Cílem této semestrální práce je kontrola zdrojového kódu překladače jazyka
Název předmětu: Školní rok: Forma studia: Studijní obory: Ročník: Semestr: Typ předmětu: Rozsah a zakončení předmětu:
Plán předmětu Název předmětu: Algoritmizace a programování (PAAPK) Školní rok: 2007/2008 Forma studia: Kombinovaná Studijní obory: DP, DI, PSDPI, OŽPD Ročník: I Semestr: II. (letní) Typ předmětu: povinný
CASE. Jaroslav Žáček
CASE Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Co znamená CASE? Definice dle SEI A CASE tool is a computer-based product aimed at supporting one or more software engineering activities
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é
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
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
Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií
1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední
Implementace 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
TÉMATICKÝ OKRUH TZD, DIS a TIS
TÉMATICKÝ OKRUH TZD, DIS a TIS Číslo otázky : 27. Otázka : Principy moderních překladačů, virtuální stroj. Obsah : 1.Překladač a jeho struktura 2.Druhy překladačů 3.Hlavní části překladače 3.1 Lexikální
Generování vnitřní reprezentace programu
Generování vnitřní reprezentace programu Miroslav Beneš Dušan Kolář Možnosti překladu Interpretace Okamžité provádění programu Překlad do instrukcí procesoru Závislost na konkrétním typu procesoru Překlad
Databázové systémy úvod
Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2012/13 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal
2011 Jan Janoušek BI-PJP. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE TRANSFORMACE GRAMATIK NA LL(1) GRAMATIKU. TABULKA SYMBOLŮ. VNITŘNÍ REPREZENTACE: AST. JAZYK ZÁSOBNÍKOVÉHO POČÍTAČE. RUNTIME PROSTŘEDÍ. 2011 Jan Janoušek BI-PJP Evropský
Ú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
1 Úvod do kompilátorů
1 Úvod do kompilátorů 1.1 Úvodem několik slov Tyto texty obsahují úvod do návrhu programovacích jazyků a problematiky překladu programů. Téma pokrývá oblasti zahrnující lexikální analýzu (scanning), regulární
Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory
Plán přednášky Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Obecný algoritmus pro parsování bezkontextových jazyků dynamické programování 1 Zásobníkový
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é
CASE nástroje. Jaroslav Žáček
CASE nástroje Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Co znamená CASE? A CASE tool is a computer-based product aimed at supporting one or more software engineering activities within
Program a životní cyklus programu
Program a životní cyklus programu Program algoritmus zapsaný formálně, srozumitelně pro počítač program se skládá z elementárních kroků Elementární kroky mohou být: instrukce operačního kódu počítače příkazy
Databázové systémy úvod
Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2011 BI-DBS, ZS 2011/12 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal
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ů
ALGORITMIZACE 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í
Sudý počet jedniček: S 1 0S 1 1S 2 e S 2 1S 1 0S 2
Otázky ke zkoušce 1. Charakterizujte pojem křížový překladač Provádí překlad na počítači pro jiný počítač (např. pračky, myčky, automobily). Generuje kód pro jiný počítač, než na kterém probíhá překlad.
Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG 2008-9)
Programování v C++ Úplnej úvod Co se naučíte? tak samozřejmě C++, s důrazem na: dynamické datové struktury Objektově Orientované Programování STL (standardní knihovna šablon) vytváření vlastních šablon
POROVNÁNÍ NĚKTERÝCH SW PRO ZOBRAZENÍ GRAFU FUNKCE DVOU PROMĚNNÝCH
POROVNÁNÍ NĚKTERÝCH SW PRO ZOBRAZENÍ GRAFU FUNKCE DVOU PROMĚNNÝCH Martin Fajkus Univerzita Tomáše Bati ve Zlíně, Fakulta aplikované informatiky, Ústav matematiky, Nad Stráněmi 4511, 760 05 Zlín, Česká
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti LEXIKÁLNÍ ANALÝZA Kód ve vstupním jazyku Lexikální analyzátor
Formální jazyky a překladače
Formální jazyky a překladače Přednášky: -Typy překladačů, základní struktura překladače -Regulární gramatiky, konečné automaty a jejich využití v lexikální analýze -Úvod do syntaktické analýzy, metoda
DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v
DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve
VÝ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
Poslední 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
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é
Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.
BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 2/41 Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 4/41 Automaty a gramatiky(bi-aag) 5. Překladové konečné
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
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
Ú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) -
Natural Language Toolkit
Natural Language Toolkit prezentace do předmětu PA154 Nástroje pro korpusy část 1 možnosti NLTK Stručná charakteristika NLTK je sada knihoven pro Python a programů pro symbolické a statistické zpracování
Jaký programovací jazyk učit jako první a jak ho učit?
Vojtěch Merunka Katedra informačního inženýrství PEF ČZU Praha Jaký programovací jazyk učit jako první a jak ho učit? strana 1 Motivace dříve strana 2 Motivace... pokračování dnes strana 3 Obsah presentace
Ú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
ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2014 5.3-5.8 9/14
ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2014 5.3-5.8 9/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 12 0:40 UML unifikovaný modelovací jazyk Zkratka tohoto
Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD
Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD Obsah: 1 Struktura a princip činnosti překladače... 3 2 Regulární gramatika, konečný automat a jejich ekvivalence... 5 3 Lexikální analýza... 8 4 Bezkontextová
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
Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory
Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální
Algoritmizace. Cíle předmětu
Cíle předmětu Algoritmizace naučit se sestavovat algoritmy řešení jednoduchých problémů a zapisovat je v jazyku Java Organizace předmětu přednášky (učast nepovinná, ale doporučená) cvičení střídavě u tabule
Základy algoritmizace a programování
Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 21. září 2009 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Organizace předmětu Přednášky 1. 5. Základní
George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu
A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,
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í
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í
Databázové systémy úvod
Databázové systémy úvod Michal Valenta Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze c Michal Valenta, 2016 BI-DBS, LS 2015/16 https://edux.fit.cvut.cz/courses/bi-dbs/
Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů
- 1.1 - Kapitola 1: Úvod Účel databázových systémů Pohled na data Modely dat Jazyk pro definici dat (Data Definition Language; DDL) Jazyk pro manipulaci s daty (Data Manipulation Language; DML) Správa
Syntaktická 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
Dotazování nad stromem abstraktní syntaxe
Fakulta jaderná a fyzikáln inºenýrská ƒeské vysoké u ení technické v Praze 3.6.2010 Osnova while 1 Reprezentace programu 2 AST a Java 3 Vyhledávání v AST 4 Aplikace body if expr Jak reprezentovat program
Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115
Číslo projektu: Číslo šablony: Název materiálu: Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115 CZ.1.07/1.5.00/34.0410 II/2 Parts of a computer IT English Ročník: Identifikace materiálu: Jméno
Karta předmětu prezenční studium
Karta předmětu prezenční studium Název předmětu: Číslo předmětu: 548-0057 Garantující institut: Garant předmětu: Základy geoinformatiky (ZGI) Institut geoinformatiky doc. Ing. Petr Rapant, CSc. Kredity:
Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25
Programování v C# Úvodní slovo 1 / 25 Obsah přednášky Seznámení s předmětem Co je.net Vlastnosti.NET 2 / 25 Kdo je kdo Petr Vaněček vanecek@pf.jcu.cz J 502 Václav Novák vacnovak@pf.jcu.cz?? Při komunikaci
Databázové systémy BIK-DBS
Databázové systémy BIK-DBS Ing. Ivan Halaška katedra softwarového inženýrství ČVUT FIT Thákurova 9, m.č. T9:311 ivan.halaska@fit.cvut.cz Stránka předmětu: https://edux.fit.cvut.cz/courses/bi-dbs/parttime/start
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
x86 assembler and inline assembler in GCC
x86 assembler and inline assembler in GCC Michal Sojka sojkam1@fel.cvut.cz ČVUT, FEL License: CC-BY-SA 4.0 Useful instructions mov moves data between registers and memory mov $1,%eax # move 1 to register
Interpret jazyka IFJ2011
Dokumentace projektu Interpret jazyka IFJ2011 Tým číslo 093, varianta b/3/i: 20 % bodů: Cupák Michal (xcupak04) vedoucí týmu 20 % bodů: Číž Miloslav (xcizmi00) 20 % bodů: Černá Tereza (xcerna01) 20 % bodů:
1. Definujte překladač. Jaký je rozdíl mezi interpretačním a kompilačním překladačem? Co je to konverzační překladač?
1. Definujte překladač. Jaký je rozdíl mezi interpretačním a kompilačním překladačem? Co je to konverzační překladač? 2. Charakterizujte lexikální analýzu(vstup, výstup, lexikální chyby). 3. Definujte
09. Memory management. ZOS 2006, L.Pešička
09. Memory management ZOS 2006, L.Pešička Správa paměti paměťová pyramida absolutní adresa relativní adresa počet bytů od absolutní adresy fyzický prostor adres fyzicky k dispozici výpočetnímu systému
XML Š ABLONY A JEJICH INTEGRACE V LCMS XML TEMPLATES AND THEIN INTEGRATION IN LCMS
XML Š ABLONY A JEJICH INTEGRACE V LCMS XML TEMPLATES AND THEIN INTEGRATION IN LCMS Roman MALO - Arnošt MOTYČKA This paper is oriented to discussion about using markup language XML and its features in LCMS
Operační systémy. Cvičení 3: Programování v C pod Unixem
Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené
BR 52 Proudění v systémech říčních koryt
BR 52 Proudění v systémech říčních koryt Přednášející: Ing. Hana Uhmannová, CSc., doc. Ing. Jan Jandora, Ph.D. VUT Brno, Fakulta stavební, Ústav vodních staveb 1 Přednáška Úvod do problematiky Obsah: 1.
DocBy.TEX dokumentování zdrojových textů TEXem. 1. Úvod, motivace, zadání. Petr Olšák
DocBy.TEX dokumentování zdrojových textů TEXem Petr Olšák DocBy.TEX je makro TEXu, které umožní jednoduše dokumentovat zdrojové texty v programovacích jazycích, například v jazyku C. Obsahuje možnost vkládání
FAKULTA INFORMAČNÍCH TECHNOLOGIÍ
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS OBECNÝ SYSTÉM
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?
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNAKICKÁ ANALÝZA DOKONČENÍ, IMPLEMENACE. VLASNOSI LL GRAMAIK A JAZYKŮ. 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Gramatika
Funkce, podmíněný příkaz if-else, příkaz cyklu for
Funkce, podmíněný příkaz if-else, příkaz cyklu for Definice funkce Funkce je pojmenovaná část programu, kterou lze dále zavolat v jiné části programu. V Pythonu je definována klíčovým slovem def. Za tímto
Profilová část maturitní zkoušky 2013/2014
Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA
LOGICKÉ OBVODY X36LOB
LOGICKÉ OBVODY X36LOB Doc. Ing. Hana Kubátová, CSc. Katedra počítačů FEL ČVUT v Praze 26.9.2008 Logické obvody - 1 - Úvod 1 Obsah a cíle předmětu Číslicový návrh (digital design) Číslicové obvody logické
Karta předmětu prezenční studium
Karta předmětu prezenční studium Název předmětu: Číslo předmětu: 545-0250 Garantující institut: Garant předmětu: Ekonomická statistika Institut ekonomiky a systémů řízení RNDr. Radmila Sousedíková, Ph.D.
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY SYNTAKTICKÁ ANALÝZA ZALOŽENÁ NA MULTIGENEROVÁNÍ PARSING BASED ON MULTIGENERATION
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS SYNTAKTICKÁ ANALÝZA
III/2 Inovace a zkvalitnění výuky prostřednictvím ICT
Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň
/01: Teoretická informatika(ti) přednáška 5
460-4005/01: Teoretická informatika(ti) přednáška 5 prof. RNDr Petr Jančar, CSc. katedra informatiky FEI VŠB-TUO www.cs.vsb.cz/jancar LS 2010/2011 Petr Jančar (FEI VŠB-TU) Teoretická informatika(ti) LS
MPASM a IDE pro vývoj aplikací MCU (Microchip)
MPASM a IDE pro vývoj aplikací MCU (Microchip) MPLAB, vývojové prostředí a jeho instalace; Založení nového projektu a jeho základní nastavení; Zásady tvorby a základní úprava formuláře zdrojového kódu;
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 1.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 06 Ver.1.10 J. Zděnek,
Karta předmětu prezenční studium
Karta předmětu prezenční studium Název předmětu: Programování aplikací pro web (PAW) Číslo předmětu: 548- Garantující institut: Garant předmětu: Institut geoinformatiky Ing. Jan Růžička, Ph.D. Kredity:
1. Charakterizujte pojem křížový překladač Překlad na jiném procesoru než exekuce (viz zabudované systémy (např. pračky, myčky, automobily)).
Otázky ke zkoušce KIV/FJP 1. Charakterizujte pojem křížový překladač Překlad na jiném procesoru než exekuce (viz zabudované systémy (např. pračky, myčky, automobily)). 2. Objasněte pojem silikonový překladač
Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague
Assembler pro Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague Zápis instrukcí umíme už zapisovat instrukce v binárním tvaru to je silně nešikovné pro snazší vývoj
OSTRAVSKÁ UNIVERZITA V OSTRAVĚ
OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘEKLADAČE HASHIM HABIBALLA OSTRAVA 2005 Recenzenti: RNDr. PaedDr. Eva Volná, PhD. Mgr. Rostislav Fojtík Název: Překladače Autoři: Dr. Hashim Habiballa, PhD. Vydání: první,
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ů
Profilová část maturitní zkoušky 2017/2018
Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA