Poslední aktualizace: 14. října 2011
|
|
- Leoš Bařtipán
- před 4 lety
- Počet zobrazení:
Transkript
1 Lexikální analýza Překladače, přednáška č. 2 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz vav10ui Poslední aktualizace: 14. října 2011
2 Symboly Co je to symbol? Symbol je nejmenší část kódu s vlastním významem číslo, identifikátor (proměnná, název funkce, klíčové slovo), aritmetický či relační operátor, závorka, středník, atd. Struktura symbolu identifikace (název) o jaký typ symbolu jde, atribut (-y) skutečná hodnota čísla, název proměnné, pozice ve zdrojovém souboru, apod.
3 Symboly Co je to symbol? Symbol je nejmenší část kódu s vlastním významem číslo, identifikátor (proměnná, název funkce, klíčové slovo), aritmetický či relační operátor, závorka, středník, atd. Struktura symbolu identifikace (název) o jaký typ symbolu jde, atribut (-y) skutečná hodnota čísla, název proměnné, pozice ve zdrojovém souboru, apod.
4 Symboly TSymbol = record typ: TTypSymbolu; // identifikace symbolu atrib: string; // atribut symbolu end;
5 Příklad CONST hodn = 32; VAR prom; BEGIN prom := 25 * (hodn + 4); IF prom < 100 THEN PRINT prom ELSE PRINT prom - 100; END S CONST S ID HODN S EQ S NUM 32 S SEM S VAR S ID PROM S SEM S BEGIN S ID PROM S IS S NUM 25 S MUL... S NUM 100 S SEM S END
6 Úkoly lexikální analýzy Lexikální analyzátor převádí zdrojový (textový) soubor na posloupnost symbolů. Vstup: zdrojový program překladače Výstup: posloupnost symbolů Lexikální chyby: v rámci jednoho symbolu, například posloupnost znaků, která není symbolem (72R4), znak nepatřící do abecedy jazyka,...
7 Úkoly lexikální analýzy Lexikální analyzátor převádí zdrojový (textový) soubor na posloupnost symbolů. Vstup: zdrojový program překladače Výstup: posloupnost symbolů Lexikální chyby: v rámci jednoho symbolu, například posloupnost znaků, která není symbolem (72R4), znak nepatřící do abecedy jazyka,...
8 Vstupní formáty text (většinou jeden nebo několik textových souborů), binární formát (např. struktura graficky nadefinovaného formuláře a jiné prvky, které uživatel umístil myší ), vázaný text (předem daná struktura např. každý příkaz na novém řádku), dynamická struktura v paměti.
9 Abstraktní fáze plánování Určíme abecedu jaké znaky se ve vstupu mohou vyskytovat typy symbolů, které budeme rozpoznávat bude jazyk case-sensitive? klíčová slova tvar identifikátorů (názvů proměnných) a čísel
10 Postup vytvoření lexikálního analyzátoru Příklad celá nezáporná čísla (pro konstanty), rezervované identifikátory klíčová slova: BEGIN, END, VAR, CONST, IF, THEN, ELSE, PRINT, ostatní identifikátory pro názvy proměnných, aritmetické operátory (+,,, /), relační operátory (<, <=, >, >=, <>, =), operátor přiřazení (:=), pomocné symboly (závorky, středník).
11 Vytvoření syntaktického grafu symbolu S ID, S NUM: letter digit letter digit S PLUS, S SEM, S LQ: + ; < =
12 Regulární gramatika lexikální struktury jazyka (k příkladu) G = (N, T, P, S), T = Σ, N = {S, A, B, C, D, E} S l la identifikátory A l d la da S d db čísla B d db S + / aritmetické operátory S > < = < C > D relační operátory C = > D = S : E operátor přiřazení E = S ( ) ; pomocné symboly
13 Konečný automat rozpoznávající slova jazyka Postup zpracování slov jazyka 1 Na vstupu máme řetězec znaků, který chceme analyzovat. 2 Automat postupně čte znaky ze vstupu, mění svůj stav, a pokud je to nutné, načtené znaky ukládá na výstupní pásku. 3 Pro každý typ symbolu má automat jiný koncový stav. Podle toho, ve kterém stavu ukončí výpočet, určíme, o jaký symbol se jedná.
14 Konečný automat rozpoznávající slova jazyka Postup zpracování slov jazyka 1 Na vstupu máme řetězec znaků, který chceme analyzovat. 2 Automat postupně čte znaky ze vstupu, mění svůj stav, a pokud je to nutné, načtené znaky ukládá na výstupní pásku. 3 Pro každý typ symbolu má automat jiný koncový stav. Podle toho, ve kterém stavu ukončí výpočet, určíme, o jaký symbol se jedná.
15 Konečný automat rozpoznávající slova jazyka Postup zpracování slov jazyka 1 Na vstupu máme řetězec znaků, který chceme analyzovat. 2 Automat postupně čte znaky ze vstupu, mění svůj stav, a pokud je to nutné, načtené znaky ukládá na výstupní pásku. 3 Pro každý typ symbolu má automat jiný koncový stav. Podle toho, ve kterém stavu ukončí výpočet, určíme, o jaký symbol se jedná.
16 Konečný automat rozpoznávající slova jazyka S ID, S NUM S letter S ID digit letter digit S S NUM digit :=, <=, <, <> : S A = S IS < S S LESS > = S NEQ S LQ
17 Postup 1 V každém stavu automatu program načte ze zdrojového programu jeden znak a podle něho se rozhodne, kterou větví pokračovat. 2 V koncových stavech je třeba provést test, zda je načtený symbol korektně ukončen, tedy načteme následující znak. 3 Pokud automat nenalezne větev, po které by pokračoval, a 1 je v koncovém stavu právě načetl jeden celý symbol a po analýze dalšího znaku (viz předchozí bod) se přesouvá do počátečního stavu S, aby (po případné přestávce) mohl načítat další symbol. 2 není v koncovém stavu načtený znak je chybný, došlo k lexikální chybě.
18 Postup 1 V každém stavu automatu program načte ze zdrojového programu jeden znak a podle něho se rozhodne, kterou větví pokračovat. 2 V koncových stavech je třeba provést test, zda je načtený symbol korektně ukončen, tedy načteme následující znak. 3 Pokud automat nenalezne větev, po které by pokračoval, a 1 je v koncovém stavu právě načetl jeden celý symbol a po analýze dalšího znaku (viz předchozí bod) se přesouvá do počátečního stavu S, aby (po případné přestávce) mohl načítat další symbol. 2 není v koncovém stavu načtený znak je chybný, došlo k lexikální chybě.
19 Postup 1 V každém stavu automatu program načte ze zdrojového programu jeden znak a podle něho se rozhodne, kterou větví pokračovat. 2 V koncových stavech je třeba provést test, zda je načtený symbol korektně ukončen, tedy načteme následující znak. 3 Pokud automat nenalezne větev, po které by pokračoval, a 1 je v koncovém stavu právě načetl jeden celý symbol a po analýze dalšího znaku (viz předchozí bod) se přesouvá do počátečního stavu S, aby (po případné přestávce) mohl načítat další symbol. 2 není v koncovém stavu načtený znak je chybný, došlo k lexikální chybě.
20 Postup 1 V každém stavu automatu program načte ze zdrojového programu jeden znak a podle něho se rozhodne, kterou větví pokračovat. 2 V koncových stavech je třeba provést test, zda je načtený symbol korektně ukončen, tedy načteme následující znak. 3 Pokud automat nenalezne větev, po které by pokračoval, a 1 je v koncovém stavu právě načetl jeden celý symbol a po analýze dalšího znaku (viz předchozí bod) se přesouvá do počátečního stavu S, aby (po případné přestávce) mohl načítat další symbol. 2 není v koncovém stavu načtený znak je chybný, došlo k lexikální chybě.
21 Postup 1 V každém stavu automatu program načte ze zdrojového programu jeden znak a podle něho se rozhodne, kterou větví pokračovat. 2 V koncových stavech je třeba provést test, zda je načtený symbol korektně ukončen, tedy načteme následující znak. 3 Pokud automat nenalezne větev, po které by pokračoval, a 1 je v koncovém stavu právě načetl jeden celý symbol a po analýze dalšího znaku (viz předchozí bod) se přesouvá do počátečního stavu S, aby (po případné přestávce) mohl načítat další symbol. 2 není v koncovém stavu načtený znak je chybný, došlo k lexikální chybě.
22 Základní datové typy type TTypSymbolu = (S_BEGIN, S_END, S_CONST, S_VAR, S_ID, S_NUM, S_SEM, S_LPAR, S_RPAR, S_IF, S_THEN, S_ELSE, S_PRINT, S_IS, S_PLUS, S_MINUS, S_MUL, S_DIV, S_EQ, S_NEQ, S_LESS, S_GRT, S_LQ, S_GQ); TSymbol = record typ: TTypSymbolu; atrib: string; end; // identifikace (název) symbolu // atributy
23 Práce se vstupem type TZnak = record rad: string; // zpracovávaný řádek pozice: byte; // pozice posledního načteného znaku na řádku delka: byte; // délka tohoto řádku cislo: word; // číslo řádku end; var zdroj: Text; symbol: TSymbol; znak: TZnak; // zdrojový program (textový soubor) // proměnná pro zachycení načítaného symbolu // proměnná pro uložení části vstupního souboru
24 Práce se vstupem procedure DejZnak; var i: byte; begin if eof(zdroj) then znak.rad[pozice] := #0 else with Znak do begin if delka = pozice then begin // je nutné načíst další řádek readln(zdroj, rad); rad := rad + ; delka := length(rad); pozice := 1; for i := 1 to delka do rad [i] := UpCase(rad [i]); // převod na velká písmena end; end; end else inc(pozice); // ještě nejsme na konci řádku
25 Metoda 1. Přímé stavové programování Princip a vlastnosti přepisujeme schéma stavového diagramu (nebo tabulku přechodů) metoda je použitelná pro přepis diagramu, kde nejsou smyčky přes více než jeden stav metoda je určena pro nekonečné jazyky
26 while zn = a0 do begin DejZnak; zn := znak.rad[znak.pozice]; end; case zn of a1: begin... end; a2: begin... end;... else...; end;... a 1 a2 a. 0 A a n
27 < S S LESS > = case znak.rad[znak.pozice] of // stav S... < : begin // stav S_LESS S NEQ S LQ DejZnak(znak); // posun ve vstupu na další znak case znak.rad[pozice] of > : symbol.typ := S_NEQ; // stav S_NEQ = : symbol.typ := S_LQ; // stav S_LQ else symbol.typ := S_LESS; // zůstáváme ve stavu S_LESS end;... // jiný typ symbolu end; else...; // ošetření chyby end;
28 Metoda 2. Tabulka přechodů jako celočíselná matice Princip a vlastnosti přepisujeme tabulku přechodů, a to na matici (2D pole) metoda je použitelná pro jakoukoliv tabulku přechodů, tabulka musí být deterministická používá se především na konečné jazyky
29 Metoda 2. Tabulka přechodů jako celočíselná matice Příklad G = (N, T, P, S), kde N = {S, A 1, A 2,..., A 8 }, T = {i, f, t, h, e, n, l, s} S ia 1 A 1 f [ IF ] S ta 2 A 2 ha 3 A 3 ea 4 ia 8 A 4 n A 8 s [ T HEN] [ T HIS] S ea 5 A 5 la 6 A 6 sa 7 A 7 e [ ELSE]
30 Metoda 2. Tabulka přechodů jako celočíselná matice i f t h e n l s CH
31 const k_chyba = 9; // chybový stav a koncové stavy k_if = 10; k_then = 11; k_else = 12; k_this = 13; MaxStav = 8; // maximální číslo stavu MaxZnak = 8; // maximální číslo znaku var tab: array [0..MaxStav, 1..MaxZnak] of byte; procedure DalsiZnak (var x: byte); external; // Přečte ze vstupu jeden znak, vrátí číslo z intervalu 1..MaxZnak // pro jeden ze znaků i, f,..., nebo číslo 0 pro chybný vstup.
32 procedure NactiTabulkuPrechodu; var i, j: byte; begin for i := 0 to MaxStav do for j := 1 to MaxZnak do tab[i,j] := k_chyba; tab[0,1] := 1; tab[0,3] := 2; tab[0,5] := 5; tab[2,4] := 3; tab[3,1] := 8; tab[3,5] := 4; tab[5,7] := 6; tab[6,8] := 7; tab[1,2] := k_if; tab[4,6] := k_then; tab[7,5] := k_else; tab[8,8] := k_this; end;
33 procedure Lex; var stav: byte; znak: byte; begin symbol := ; stav := 0; // vynulujeme while (not konec_vstupu) and (stav < k_chyba) do begin DalsiZnak(znak); stav := tab[stav, znak]; end; // while case stav of k_chyba:writeln( Chyba při zpracování ); k_if: Symbol.Typ := S_IF; k_then: Symbol.Typ := S_THEN; k_else: Symbol.Typ := S_ELSE; k_this: Symbol.Typ := S_THIS; end; end;
34 Metoda 3. Stav reprezentován proměnnou Princip a vlastnosti přepisujeme tabulku přechodů nebo regulární gramatiku, a to přímo do programu v jedné proměnné je uchován stav (řádek tabulky), v druhé načtený znak (sloupec tabulky) použitelnost stejná jako u předchozí metody
35 procedure Lex; begin stav := 0; while (not konec_vstupu) and (stav < k_chyba) do begin DalsiZnak(znak); case stav of 0: case znak of I : stav := 1; T : stav := 2; E : stav := 5; else stav := k_chyba; end; 1: if znak = F then stav := k_if else stav := k_chyba; 2: if znak = H then stav := 3 else stav := k_chyba; 3: case znak of I : stav := 8; E : stav := 4; else stav := k_chyba; end; 4: if znak = N then stav := k_then else stav := k_chyba; 5: if znak = L then stav := 6 else stav := k_chyba;
36 6: if znak = S then stav := 7 else stav := k_chyba; 7: if znak = E then stav := k_else else stav := k_chyba; 8: if znak = S then stav := k_this else stav := k_chyba; else stav := k_chyba; end; end; // while case stav of k_chyba:writeln( Chyba při zpracování ); k_if: Symbol.Typ := S_IF; k_then: Symbol.Typ := S_THEN; k_else: Symbol.Typ := S_ELSE; k_this: Symbol.Typ := S_THIS; end; end;
Uplatnění metod na zvolený jazyk
Uplatnění metod na zvolený jazyk Při výběru mezi metodami výše popsanými se řídíme především podle typu symbolů, které jazyk obsahuje. Výhodná bývá často kombinace těchto metod nejdřív použijeme metodu
VíceSyntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava
Implementace LL(1) překladů Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 6. ledna 2012 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
VíceLexiká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
VíceImplementace LL(1) překladů
Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku
VícePřekladač a jeho struktura
Překladač a jeho struktura Překladače, přednáška č. 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz http://fpf.slu.cz/ vav10ui Poslední aktualizace: 23. září 2008 Definice
VíceNáznak ukázky syntaxe a sémantiky pro projekt. 1 Syntaktické prvky. Poslední aktualizace: 8.
Jednoduchý interpretační překladač Náznak ukázky syntaxe a sémantiky pro projekt Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 8. ledna 2008 1 Syntaktické
VíceProgramovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)
Programovací jazyk - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi) Odlišnosti implementace od normy - odchylky např.: nepovinná hlavička programu odlišná
VícePROGRAMOVACÍ 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
VíceLexikální analýza. Rozhraní lexikálního analyzátoru. Miroslav Beneš Dušan Kolář. M. Beneš, D. Kolář: Lexikální analýza 1. Lexikální analýza 2
Lexikální analýza Miroslav Beneš Dušan Kolář Rozhraní lexikálního analyzátoru Lexikální analýza 2 M. Beneš, D. Kolář: Lexikální analýza 1 Úkoly Čtení zdrojového textu Sestavování symbolů Odstranění mezer
VíceLexikální analýza. Miroslav Beneš Dušan Kolář
Lexikální analýza Miroslav Beneš Dušan Kolář Rozhraní lexikálního analyzátoru Lexikální analýza 2 Úkoly Čtení zdrojového textu Sestavování symbolů Odstranění mezer a poznámek Normalizace symbolů (velká/malá
VíceVirtuá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:
Více- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku
Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová
VícePROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I
PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I 2011 Jan Janoušek BI-PJP Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Programová realizace DKA typedef enum {q0, q1,... qn,
VíceObsah 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íceSyntaxí řízený překlad
Syntaxí řízený překlad Překladový automat Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 27. listopadu 2008 Zobecněný překladový automat Překladový automat
VíceSé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íce1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5
Obsah Obsah 1 Programovací jazyk Pascal 1 1.1 Struktura programu v Pascalu.................... 1 2 Proměnné 2 2.1 Vstup a výstup............................ 3 3 Operátory a některé matematické funkce 5
VíceZá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
Více2) 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íceProgramovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
VíceAtributovaný překlad
Atributovaý překlad Typy atributů, implemetace Šárka Vavrečková Ústav iformatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Posledí aktualizace: 5. prosice 008 Typy atributů Defiice (Sytetizovaé a dědičé
VíceKonstruktory 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íceČtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
VíceVyuč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ícePascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7
Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí
VíceKoneč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
VíceTest prvočíselnosti. Úkol: otestovat dané číslo N, zda je prvočíslem
Test prvočíselnosti Úkol: otestovat dané číslo N, zda je prvočíslem 1. zkusit všechny dělitele od 2 do N-1 časová složitost O(N) cca N testů 2. stačí zkoušet všechny dělitele od 2 do N/2 (větší dělitel
VíceGENEROVÁ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
VíceAlgoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.
Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou
VíceVISUAL BASIC. Práce se soubory
VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit
VíceÚvod do programování
Úvod do programování Základní literatura Töpfer, P.: Algoritmy a programovací techniky, Prometheus, Praha učebnice algoritmů, nikoli jazyka pokrývá velkou část probíraných algoritmů Satrapa, P.: Pascal
VíceAlgoritmy a datové struktury
Algoritmy a datové struktury 1 / 34 Obsah přednášky Základní řídící struktury posloupnost příkazů podmínka cyklus s podmínkou na začátku cyklus s podmínkou na konci cyklus s pevným počtem opakování Jednoduchá
VíceVÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu
VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632
Více1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1
1 PRVOCISLA: KRATKY UKAZKOVY PRIKLAD NA DEMONSTRACI BALIKU WEB 1 1. Prvocisla: Kratky ukazkovy priklad na demonstraci baliku WEB. Nasledujici program slouzi pouze jako ukazka nekterych moznosti a sluzeb,
VíceImplementace překladače imperativního jazyka IFJ05
Dokumentace ke společnému projektu IFJ a IAL Implementace překladače imperativního jazyka IFJ05 16. prosince 2005 řešitelé David Bařina xbarin02 Kamil Dudka xdudka00 Jakub Filák xfilak01 Lukáš Hefka xhefka00
VíceO 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ícePříklady: (y + (sin(2*x) + 1)*2)/ /2 * 5 = 8.5 (1+3)/2 * 5 = /(2 * 5) = 1.3. Pavel Töpfer, 2017 Programování 1-3 1
Výraz - syntaxe i sémantika podobné jako v matematice - obsahuje proměnné, konstanty, operátory, závorky, volání funkcí - všechny operátory nutno zapisovat (nelze např. vynechat znak násobení) - argumenty
Více- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku
Znaky - standardní typ char var Z, W: char; - znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku - v TP (často i jinde) se používá kódová
VíceNMIN102 Programování /2 Z, Zk
NMIN102 Programování 2 --- 2/2 Z, Zk Pavel Töpfer Katedra softwaru a výuky informatiky MFF UK MFF Malostranské nám., 4. patro, pracovna 404 pavel.topfer@mff.cuni.cz http://ksvi.mff.cuni.cz/~topfer Pavel
VíceMaturitní 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íceZápis programu v jazyce C#
Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač
VíceAlgoritmizace a programování
Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech
VíceNPRG030 Programování I, 2017/18 1 / :22:16
NPRG030 Programování I, 2017/18 1 / 26 20. 10. 2017 11:22:16 Ordinální typy standardní: integer, char, boolean Vlastnosti ordinálních typů: 1. hodnot je konečný počet a hodnoty jsou uspořádány 2. ke každé
VíceDUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA
DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: vzdělávací
VíceLogické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false
Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární
Více2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5
Obsah Obsah 1 Řídicí struktury 1 2 Podmínka 1 2.1 Podmínka typu case......................... 2 3 Příkaz skoku 3 4 Cykly 4 4.1 Cyklus s podmínkou na začátku................... 4 4.2 Cyklus s podmínkou
Více24-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íce53. ročník Matematické olympiády 2003/2004
5. ročník Matematické olympiády 00/004 Úlohy celostátního kola kategorie P. soutěžní den Na řešení úloh máte 4,5 hodiny čistého času. Řešení každého příkladu musí obsahovat: Popis řešení, to znamená slovní
VícePseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla
Pseudonáhodná čísla = algoritmicky generovaná náhrada za náhodná čísla Použití: - náhodnost při rozhodování např. ve hrách (výběr z více možných stejně dobrých tahů v dané pozici, házecí kostka) - generování
VíceLexikální analýza (Obsah)
Lexikální analýza (Obsah) 1. Rekapitulace potřebných znalostí -Regulární jazyky, regulární výrazy -Pravé lineární gramatiky -Konečné automaty (tabulka přechodů, stavový diagram, stavový strom) -Převod
VíceAnotace. Soubory a práce s nimi, rekurze podruhé, struktury (datový typ record), Martin Pergel,
Anotace Soubory a práce s nimi, rekurze podruhé, struktury (datový typ record), základní třídicí algoritmy. Soubory a práce s nimi Dnes budou pouze soubory textové. Textový soubor ovládáme pomocí proměnné
VíceALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
VíceÚ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
VíceNPRG030 Programování I, 2016/17 1 / :58:13
NPRG030 Programování I, 2016/17 1 / 31 10. 10. 2016 10:58:13 Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE NPRG030 Programování
VíceStandardní algoritmy vyhledávací.
Standardní algoritmy vyhledávací. Vyhledávací algoritmy v C++ nám umožňují vyhledávat prvky v datových kontejnerech podle různých kritérií. Také se podíváme na vyhledávání metodou půlením intervalu (binární
VíceÚ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íceVYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
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 PARALELNÍ SYNTAKTICKÁ
VíceZáklady algoritmizace a programování
Základy algoritmizace a programování Příklady v MATLABu Přednáška 10 30. listopadu 2009 Řídící instrukce if else C Matlab if ( podmínka ) { } else { } Podmíněný příkaz if podmínka elseif podmínka2... else
VíceObsah. 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íceBasic256 - úvod do programování Příklady. ing. petr polách
Basic256 - úvod do programování Příklady ing. petr polách 1 Basic 256 input, print Př.: Vytvořte program pro součet dvou čísel: input "Zadej a: ", a input "Zadej b: ", b print a+b input "Zadej a: ", a
Vícetype 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íceAutomaty 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é
Vícefor (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
VíceNPRG030 Programování I, 2010/11
Podmínka = něco, co JE, nebo NENÍ splněno typ Boolean hodnoty: TRUE pravda FALSE lež domluva (optimistická): FALSE < TRUE když X, Y jsou (číselné) výrazy, potom X = Y X Y X < Y X > Y X = Y jsou
VíceBezkontextové gramatiky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května / 49
Bezkontextové gramatiky Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května 2018 1/ 49 Bezkontextové gramatiky Příklad: Chtěli bychom popsat jazyk aritmetických výrazů obsahující výrazy jako například:
VíceZáklady algoritmizace
Algoritmus Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice
VíceAutomaty 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é
VíceČinnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.
Přiřazovací příkaz V := E, V jednoduchá nebo indexovaná proměnná, E výraz, jehož typ je kompatibilní podle přiřazení s typem proměnné V. 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.
VíceÚvod do programování. Lekce 1
Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -
VíceZáklady programovacího jazyka Turbo Pascal
Základy programovacího jazyka Turbo Pascal Programovací jazyk Pascal byl navržen začátkem 70. let profesor Niklaus Wirth z Vysoké školy technické v Curychu Cíle návrhu vytvořit jazyk vhodný pro výuku programování
VíceÚvod do informatiky. Miroslav Kolařík
Úvod do informatiky přednáška desátá Miroslav Kolařík Zpracováno dle R. Bělohlávek, V. Vychodil: Diskrétní matematika 2, http://phoenix.inf.upol.cz/esf/ucebni/dm2.pdf P. Martinek: Základy teoretické informatiky,
VícePř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íceSouhrn Apendixu A doporučení VHDL
Fakulta elektrotechniky a informatiky Univerzita Pardubice Souhrn Apendixu A doporučení VHDL Práce ke zkoušce z předmětu Programovatelné logické obvody Jméno: Jiří Paar Datum: 17. 2. 2010 Poznámka k jazyku
VíceDynamické datové typy a struktury
.. a Programovací techniky doc. Ing. Jiří Rybička Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Programovací techniky a 2 / 18 Uchovávají adresu v paměti Programovací techniky a 2 / 18 Uchovávají
VíceGenerová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
VíceImplementace aritmetického stromu pomocí směrníků
Implementace aritmetického stromu pomocí směrníků Úvod Aritmetický strom je binární strom, který má ve vnitřních uzlech matematické operátory (+, -, /, *) a v listech (vrcholech) má operandy (např. čísla
Více1. D Y N A M I C K É DAT O V É STRUKTUR Y
1. D Y N A M I C K É DAT O V É STRUKTUR Y Autor: Petr Mik Abychom se mohli pustit do dynamických datových struktur, musíme se nejdřív podívat na datový typ ukazatel. 1. D AT O V Ý TYP U K A Z AT E L Datové
VíceWSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007
WSH Windows Script Hosting OSY 2 Přednáška číslo 2 opravená verze z 15.10.2007 Co je skript? Skriptování nástroj pro správu systému a automatizaci úloh Umožňuje psát skripty jednoduché interpretované programové
VíceAUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace
AUTOMATY A 11 GRAMATIKY Pavel Surynek Univerzita Karlova v Praze Matematicko-fyzikální fakulta Katedra teoretické informatiky a matematické logiky Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně
VíceGENEROVÁNI KÓDU jazyk Mila
Czech Technical University in Prague Faculty of Information Technology Department of Theoretical Computer Science GENEROVÁNI KÓDU jazyk Mila Jan Janoušek Evropský sociální fond. Praha & EU: Investujeme
VíceEVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI
EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!
VíceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
VíceProgramy v prostředí operačního systému
.. Programy v prostředí operačního systému Programovací techniky doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Standardní soubory Programovací techniky Programy v
VícePROGRAMOVÁNÍ V SHELLU
PROGRAMOVÁNÍ V SHELLU Prostředí, jazyk, zdrojový kód chceme-li posloupnost jistých příkazů používat opakovaně, případně z různých míst adresářové struktury, můžeme tuto posloupnost uložit souboru, který
VíceSystém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných
Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných jakési nádoby na hodnoty jsou různých typů při běžné
VíceIdentifikátory označují objekty v programu používané (proměnné, typy, podprogramy).
JAZYK PASCAL ÚVOD materiály pro studenty Jiráskova gymnázia v Náchodě (verze 2005-10-28) RNDr Jan Preclík, PhD preclik@gymnachodcz Jazyk Pascal byl navržen profesorem curyšské univerzity Niklausem Wirthem
VíceSada 1 - Základy programování
S třední škola stavební Jihlava Sada 1 - Základy programování 06. Proměnné, deklarace proměnných Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284
VíceVISUAL BASIC. Přehled témat
VISUAL BASIC Přehled témat 1 ÚVOD DO PROGRAMOVÁNÍ Co je to program? Kuchařský předpis, scénář k filmu,... Program posloupnost instrukcí Běh programu: postupné plnění instrukcí zpracovávání vstupních dat
VíceProgramování v jazyce JavaScript
Programování v jazyce JavaScript Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze Pavel Štěpán, 2011 Operátory a příkazy BI-JSC Evropský sociální fond
VíceProfilová čá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
VíceProgramovací jazyk PASCAL Turbo
Obsah 1 Programovací jazyk PASCAL Turbo 5 11 Základní prostředky pro zápis programu 5 111 Lexikální symboly jazyka 6 12 Struktura programu 7 13 Část definicí a deklarací 8 131 Deklarace návěští 8 132 Definice
VíceObjektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
Více- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.
Základní symboly - písmena A B C Y Z a b c y z - číslice 0 1 2 9 - speciální symboly + - * / =., < > = a další - klíčová slova and array begin case const a další Klíčová slova jsou chráněnými útvary,
Vícewhile cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu
while cyklus s podmínkou na začátku cyklus bez udání počtu opakování while podmínka příkazy; příkazy; příkazy; end; % další pokračování programu podmínka je libovolný logický výraz s logickou hodnotou
VícePracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus
Pracovní listy - programování (algoritmy v jazyce Visual Basic) Předmět: Seminář z informatiky a výpočetní techniky Třída: 3. a 4. ročník vyššího stupně gymnázia Algoritmus Zadání v jazyce českém: 1. Je
VíceRegulární výrazy. Filtry grep, sed a awk.
Přednáška 5 Regulární výrazy. Filtry grep, sed a awk. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2011 Příprava studijního programu Informatika je podporována projektem
VíceAlgoritmizace. 1. Úvod. Algoritmus
1. Úvod Algoritmizace V dnešní době již počítače pronikly snad do všech oblastí lidské činnosti, využívají se k řešení nejrůznějších úkolů. Postup, který je v počítači prováděn nějakým programem se nazývá
VíceVýrazy, operace, příkazy
Výrazy, operace, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad Karel Richta, Martin Hořeňovský,
Vícedovolují dělení velkých úloh na menší = dekompozice
Podprogramy dovolují dělení velkých úloh na menší = dekompozice Příklad: Vytiskněte tabulku malé násobilky ve tvaru XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX X X 1 2 3 4 5 6 7 8 9 10 X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
VíceX36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka
X36UNX 16 Numerické výpočty v sh příkazy expr, bc, dc Zdeněk Sojka sojkaz1@fel.cvut.cz dc desk calculator - zadávání příkazů postfixově - data se ukládají do stacku - příkazy obyčejně pracují s jedním
Více