Prostredie pre podporu výučby predmetu Formálne jazyky a automaty

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Prostredie pre podporu výučby predmetu Formálne jazyky a automaty"

Transcript

1 UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY KATEDRA INFORMATIKY Prostredie pre podporu výučby predmetu Formálne jazyky a automaty Bakalárska práca Peter Havlíček Odbor: Informatika Vedúci: RNDr. Dana Pardubská, PhD. Bratislava, 2007

2 ii Čestne prehlasujem, že túto bakalársku prácu som vypracoval samostatne len s použitím uvedenej literatúry. V Bratislave 14.júna

3 Ďakujem svojej vedúcej bakalárskej práce RNDr. Dane Pardubskej PhD., za cenné rady a pripomienky pri jej písaní. iii

4 Abstrakt Práca sa zaoberá návrhom a implementáciou softvéru, ktorý má slúžiť ako pomôcka v procese výučby formálnych jazykov. Softvér umožňuje vytvárať regulárne, bezkontextové, kontextové a frázové gramatiky, deterministické turingové stroje a deterministické konečné automaty. Prvky množín, použitých pri konštrukcii, je možné parametrizovať. Softvér následne umožňuje vytvárať odvodenia v skonštruovaných gramatikách a krokovať skonštruované automaty na vstupoch. V jednotlivých častiach práce sa zaoberám návrhom aplikácie, postupom pri implementácii, spracovaním a vyhodnotením vstupu a ukladaním do súboru. Kľúčové slová: simulácia gramatík, simulácia automatov, pedagogický softvér iv

5 Obsah 1 Úvod Cieľ Použité technológie, postupy JavaSE Vývojovéprostredia NetBeans Eclipse UML CVS CVSNT Swing-Layout Swing Návrhovévzory Návrh softvéru GUI Hlavnéokno Menu OknoDerive OknoSimulateDTM OknoSimulateDFA SwingaMVC Spracovanievstupu Špecifikáciavstupu Syntaxzápisugramatiky SyntaxzápisuDTS SyntaxzápisuDFA Syntaxmnožinovéhozápisu Fázyspracovaniavstupu Lexikálnaanalýza Syntaktickáanalýza Návrhovývzorvisitor Ďalšiakontrolavstupu Enumeráciaprvkovmnožiny v

6 OBSAH vi 3.4 NávrhaimplementáciasimulátoraDTSaDFA Príkladypoužitia Formátsúboru Záver 28 Príloha na CD 30

7 Zoznam obrázkov 3.1 Hlavnéoknoaplikácie Záložkanazadávaniemnožiny ZáložkanazadávanieDTS OknoDerive OknoSimulateDTM Fázyspracovaniavstupu Lexikálnaanalýza Syntaktickýstrom Návrhovývzorvisitor-štruktúra vii

8 Kapitola 1 Úvod Tak, ako mnohé iné oblasti informatiky, aj teória formálnych jazykov a automatov je postavená na matematickom základe. Študenti riešia v procese výučby úlohy na papier, bez možnosti vyskúšať si svoje riešenie na živo. Formálne jazyky a automaty pritom nie sú čisto teoretický predmet, majú široké uplatnenie v praxi, ktoré mnohí študenti podceňujú. Už len taká bežná vec, ako je spracovanie vstupu programu, má základy v tejto teórii. Študenti majú často problém pochopiť jednoduchšie konštrukcie, vidieť za nimi niečo viac, ako len matematickú teóriu. Rozhodli sme sa preto navrhnúť softvér, ktorý by umožnil študentom simulovať jednotlivé konštrukcie v počítači a vizualizovať a odhaliť tak prípadné chyby riešenia. Softvér by tak umožňoval v zmysle škola hrou osvojiť si základnú zručnosť pri konštrukcii gramatík, či automatov. Táto bakalárska práca bola vypísaná ako tímový projekt pre dvoch študentov. Časti softvéru su preto opísané v práci Dušana Baníka, ktorý so mnou spolupracoval pri vývoji tohto softvéru. 1.1 Cieľ Cieľom tejto bakalárskej práce bolo navrhnúť softvér, ktorý by slúžil ako pomôcka v procese výučby formálnych jazykov a automatov. Mal by umožniť študentom vyskúšať a overiť si preberanú látku. Softvér by pritom nemal slúžiť ako automatický riešiteľ úloh, ale mal by fungovať ako forma inteligentného elektronického papiera. Mal by overovať formálnu korektnosť vstupu a umožňovať experimentovať s gramatikami, či automatmi. Dôležitá požiadavka bola krokovanie jednotlivých krokov odvodenia (výpočtu). 1

9 Kapitola 2 Použité technológie, postupy V tejto kapitole popíšem technológie, nástroje a postupy, ktoré sme použili počas vývoja softvéru. Z technológií sú to: programovací jazyk Java, vývojové prostredia NetBeans a Eclipse a systém na skupinovú spoluprácu programátorov CVS. Z postupov sú to najmä návrhové vzory. 2.1 JavaSE Java je objektovo orientovaný programovací jazyk vyvinutý spoločnosťou Sun Microsystems. Tento jazyk sme zvolili pre jeho platformovú nezávislosť, dostupnosť vývojových prostredí, rozsiahlu knižnicu objektov vrátane knižnice na tvorbu grafických uživateľských aplikácií(ďalej len GUI), možnosť spúšťať aplikácie cez internet priamo z prehliadača a predošlými skúsenosťami s týmto programovacím jazykom. SE znamená standard edition a je to verzia určená na vývoj menších aplikácií bežiacich na pracovných staniciach. Okrem tejto edície existujú ešte ME- mobile edition určenej pre mobilne zariadenia a EE- enterprise edition určenej pre vývoj podnikových viacvrstvových aplikácií. Je zrejmé, že tento projekt zapadá najlepšie do určenia edície SE. Pri vývoji sme používali vývojový kit(java Development Kit, ďalejlenjdk)voverzií Vývojové prostredia Vývojové prostredia(ďalej len IDE- integrated development environment) sú podporné nástroje na vývoj aplikácií. Väčšinou obsahujú editor zvýrazňujúci syntax, prehliadač objektov, spolupracujú s kompilátorom a debuggerom a obsahujú nástroje na tímovú spoluprácu NetBeans NetBeans je IDE vyvinuté firmou Sun na podporu programovania v Jave. Oproti Eclipse obsahuje navyše nástroj na rýchly grafický návrh GUI a uľahčenie písania dokumentácie a tiež nástroje na tvorbu UML diagramov. Toto IDE je šírené pod 2

10 KAPITOLA 2. POUŽITÉ TECHNOLÓGIE, POSTUPY 3 licenciou CDDL, ktorá umožňuje jeho bezplatné používanie. Použité NetBeans bolo vo verzii Eclipse Eclipse je IDE vyvinuté pôvodne firmou IBM, určené pre ich vývojový nástroj na podporu programovania v Jave. Toto prostredie je v kombinácií s Javou veľmi používané. Celé prostredie je tvorené základným aplikačným rámcom(framework), ktorý sa dá rozširovať pomocou tzv. zásuvných modulov. Okrem už spomenutých bežných súčastí, obsahuje aj modul na tímovú spoluprácu cez CVS. Keďže obe spomínané prostredia obsahujú podporu CVS, mohli sme bezproblémovo používať každý svoje preferované IDE. 2.3 UML UML je štandardizovaný špecifikačný jazyk určený na modelovanie objektových systémov. Umožňuje špecifikovať, vizualizovať, navrhovať a dokumentovať softvérové systémy pomocou grafických diagramov. Tento jazyk sme použili pri prvotnom návrhu aplikácie. UML obsahuje 9 typov diagramov. My sme z nich použili hlavne: 1. Diagram tried- umožňuje vizualizovať triedy a spoluprácu medzi nimi. Tento diagram znázorňuje, ktoré triedy spolupracujú, ale nezachytáva čo sa stane pri- /po výmene správ(je statický). 2. Diagram balíčkov a objektov- Java umožňuje zoskupovanie súvisiacich tried do balíčkov. Tento diagram umožňuje zobraziť zoskupenie tried do balíčkov a ich následnú spoluprácu. Niektoré nasledujúce diagramy v tejto práci budú práve v UML. 2.4 CVS CVS znamená Concurrent Versions System a je to open source softvér umožňujúci spolupracovať viacerým vývojárom na rovnakom projekte súčasne. Tento softvér je založený na technológií klient-server. Aby sa zamedzilo vzájomnému prepisovaniu si kódu, server dovoľuje ukladať len zmeny vykonané na poslednej verzií súboru. Každá zmena vyvolá zvýšenie verzie a programátor musí dokumentovať vykonané zmeny. Klienti si môžu vyžiadať od servera stiahnutie celého projektu(checkout), alebo len zmeny vykonané od poslednej verzie, ktorú majú lokálne prístupnú(update). Okrem toho umožňuje vytvárať bočné vývojové vetvy a tieto následne zlučovať do hlavnej vetvy, čo je výhodne pri dorábaní funkcionality, ak chceme zamedziť znefunkčneniu celej aplikácie. Ďalšia užitočná funkcia je prechádzanie jednotlivých verzií. Táto funkcia sa ukázala byť užitočná aj pre jednotlivého programátora. Pre vývoj sme zvolili toto riešenie, vzhľadom na jeho dostupnosť, podporu vývojovými prostrediami a dostatočnou znalosťou tejto technológie.

11 KAPITOLA 2. POUŽITÉ TECHNOLÓGIE, POSTUPY CVSNT CVSNT[8] je implementácia CVS bežiaca pod OS Windows NT. Použili sme verziu 2.5, čo bola aktuálna verzia v dobe začiatku vývoja. Tento softvér bol zvolený pre jeho ľahkú dostupnosť, pretože je šírený pod GNU GPL, a jeho kompatibilitu s implementáciou CVS vo vývojových prostrediach Eclipse a NetBeans. 2.5 Swing-Layout Swing-Layout[5] je knižnica implementujúca rozhranie LayoutManager, vhodná najmä pre aplikácie podporujúce grafický návrh GUI. NetBeans potrebuje na grafický návrh GUI práve túto knižnicu. Swing-layout implementuje tri základné triedy: 1. Baseline- umožňuje získať základný riadok komponentu 2. GroupLayout- umožňuje hierarchicky zoskupovať komponenty 3. LayoutStyle- určuje koľko miesta sa má umiestniť medzi jednotlivé komponenty Spolu tieto triedy umožňujú vytvárať prehľadné okná s odporúčaným rozmiestením komponentov na danej platforme. Ide najmä o veľkosti okrajov, vzdialenosť medzi jednotlivými komponentmi a zarovnanie. Základné časti tejto knižnice sa stali súčasťou Javy v1.6. Keďže my sme pracovali s verziou 1.5, museli sme použiť samostatnú verziu tejto knižnice. Knižnica je šírená pod LGPL licenciou a použitá bola verzia Swing Triedy určené na tvorbu grafických aplikácií sú na platforme Java združené do tzv. JFC(JavaFoundationClasses).ČastiJFCsúAWT,SwingaJava2D.Java2Dslúži na kreslenie dvojrozmerných objektov. AWT(Abstract Window Toolkit) je starší toolkitnatvorbuguiajeplatformovozávislý-ajkeďrozhraniezostávarovnaké,na danej platforme musí existovať implementácia. Obsahuje iba základné typy komponentov, a niektoré nemusia fungovať na rôznych platformách rovnako. Oproti tomu novší Swing je celý napísaný v Jave, a preto je platformovo nezávislý. Keďže dostupnosť komponentov nie je závislá na platforme, obsahuje aj viac komponentov. Z týchto príčin som sa rozhodol použiť práve Swing[6]. 2.7 Návrhové vzory Návrhové vzory ponúkajú riešenia často sa vyskytujúcich problémov pri návrhu softvéru. Návrhové vzory pritom nepredstavujú hotové riešenie, ale iba pomáhajú pri vytváraníobjektovejštruktúry-čomábyťobjekt,akémámaťrozhraniaaakámá byť hierarchia objektov, ako objekty spolupracujú. Pri návrhu som použil vzory MVC avisitor.

12 Kapitola 3 Návrh softvéru Keďže sme na vývoji softvéru spolupracovali dvaja, rozdelili sme návrh softvéru do niekoľkých disjunktných modulov, aby sme na nich mohli následne pracovať samostatne. Návrh pozostával z týchto fáz: 1. V prvotnej fáze sme špecifikovali v spolupráci s vedúcim práce základné požiadavky na softvér. Softvér má slúžiť ako pomôcka pri výučbe formálnych jazykov. Má dohliadať, aby študentom zadaná gramatika mala správny tvar, aby bola zo správnej triedy(správny tvar pravidiel) a má umožniť s gramatikou rôzne experimentovať. Má umožniť aj overovanie príslušnosti slova do jazyka generovaného gramatikou, či už deterministicky alebo heuristicky. Podobne má umožniť experimentovať s automatmi, overiť, či automat akceptuje dané slovo a overovať ekvivalenciu medzi gramatikou a automatom. 2. Následne sme sa dohodli na základnej objektovej a dátovej reprezentácii. Pri tomto návrhu vznikli triedy Rule, Grammar, Regular, ContextFree, Context- Sensitive, Phrasal. Tiež sme sa dohodli na základných balíčkoch(packages). Pri tejto fázi sme používali najmä UML. Podrobnejší popis spomenutých tried, sa nachádza v práci Dušana Baníka. 3. Navrhol som základné rozhranie aplikácie. Následne sme sa dohodli na rozdelení častí. Ja som implementoval interakciu s uživateľom- grafická časť, spracovanie vstupu,prácusmnožinami,implementáciudts 1,DKA 2,ukladaniedosúboru a kolega Baník už spomenuté triedy na manipuláciu s gramatikami. 3.1 GUI V tejto časti popíšem grafické uživateľské rozhranie aplikácie(ďalej len GUI- graphics user interface), ktoré som navrhol a implementoval. GUI slúži na interakciu s uživateľomvgrafickomprostredíos.starásaovstupdátdoaplikácieaichzobrazovanie. 1 deterministickýturingovstroj 2 deterministickýkonečnýautomat 5

13 KAPITOLA 3. NÁVRH SOFTVÉRU 6 Moderné návrhy nemiešajú logiku aplikácie a prezentáciu dát, toto popíšem v časti MVC(3.2).GUIjeprávetáčasťaplikácie,ktorúvidíuživateľakoprvú,nemalaby preto pôsobiť odstrašujúcim dojmom, pôsobiť zložito a nezvládnuteľne. Snažil som sa ho preto navrhnúť tak, aby pôsobilo jednoducho a intuitívne pre študenta študujúceho formálne jazyky. AplikáciadodržiavaštandardSDI 3.Totoznamená,žekaždénačítaniesúboru vytvorí samostatné nové okno zobrazujúce načítané dáta Hlavné okno Hlavné okno aplikácie môžeme vidieť na obrázku 3.1. Obr. 3.1: Hlavné okno aplikácie. Okno je rozdelené na dve časti: 1. Ľavá- strom obsahujúci všetky uživateľom vytvorené množiny, gramatiky a automaty. Tieto radí do priečinkov. 2. Pravá- obsahuje všetky otvorené definície gramatík, množín a automatov, či už nové alebo otvorené existujúce. Tieto radí do záložiek. Dvojkliknutímnapríslušnýprvok 4 vstromevľavejčastisaotvorínovázáložkavpravej časti, alebo sa aktivuje príslušná záložka, ak už je prvok otvorený. 3 SingleDocumentInterface 4 gramatika,automat,množina

14 KAPITOLA 3. NÁVRH SOFTVÉRU 7 Množiny Formulár na zadávanie množín vidieť na obr Nová množina sa dá vytvoriť pomocou menu File/New/Global set. Tento formulár slúži na zadávanie globálnych množín, t.j.. prístupných v definícii inejmnožiny.množiny 5 definovanévrámciautomatovagramatíkniesúprístupné v iných definíciách automatov a gramatík. Obsahuje len položky pre názov množiny a pre samotnú definíciu. Definícia množín podporuje jednoduché kvantifikácie. Toto je podrobnejšie popísané v časti Tlačidlom Save sa množina po overení korektnosti vstupu uloží. Tlačidlom Close sa záložka uzavrie. Obr. 3.2: Záložka na zadávanie množiny. Gramatiky Na obrázku 3.1 je vidieť otvorenú záložku s jednoduchou gramatikou. Novú gramatiku vytvoríme výberom príslušnej gramatiky pomocou menu File/New/... Pri návrhu tohto formulára som vychádzal zo zaužívaného poradia zápisu gramatiky: definícia gramatiky, neterminálov, terminálov a samotnej množiny pravidiel. Pre sprehľadnenie sa množina pravidiel zadáva do tabuľky. Korektnosť zápisu sa kontroluje počas písania s výnimkou množiny pravidiel, ktorá sa kontroluje až pri ukladaní. Pri nekorektnom vstupe sa zmení pozadie príslušného riadku na červeno. Množiny terminálov a neterminálov sa zadávajú v zjednodušenom štandardnom množinovom zápise, pričom je možná aj kvantifikovaná indexácia prvkov množiny. Ide o jednoduchý výpočet prvkov, rôzne logické operácie nie sú podporované. Syntax presne popíšem v časti Pre zadávanie definícií množín na viac riadkov slúži tlačidlo s tromi bodkami. Po jeho stlačení sa otvorí okno s textovým vstupom a v prípade, že používateľ skutočne zadal viacriadkový vstup, v pôvodnom jednoriadkovom vstupe sa zamedzí editovanie. Editovanie je opätovne povolené len ak je vstup jednoriadkový(editovanie rozšíreného 5 terminály,neterminály,symbolyvstupnejapracovnejabecedy

15 KAPITOLA 3. NÁVRH SOFTVÉRU 8 vstupufungujevždy).taktosašetrímiestomvokneapritomsazachovávaplná funkcionalita. Automaty Z automatov softvér podporuje len deterministické turingové stroje(dts) a deterministické konečné automaty(dka). Formulár na zadávanie DTS vidíme na obrázku 3.3. Nový DTS vytvoríme pomocou menu File/New/DTM, podobne DKA pomocou File/New/DFA. Obr. 3.3: Záložka na zadávanie DTS. PrvkyformulárasledujúdefiníciuDTSpodľa[2].Súnaňompoložkyvtomtoporadí: samotná definícia DTS, definícia množiny stavov, abecedy vstupných symbolov, abecedy pracovných symbolov, množiny akceptačných stavov a definícia δ funkcie. Táto sa zadáva do textového komponentu po riadkoch, na každom riadku musí byť jeden riadok δ funkcie. Kontrola vstupu definície DTS sa vykonáva počas písania, ak nie je korektná, riadok má červené pozadie, inak biele. Ostatné prvky sa kontrolujú až pri ukladaní. Tento formulár, na rozdiel od formulára pre zadávanie gramatík, neobsahuje tlačidlá na zadávanie viacriadkového vstupu. Pre toto som sa rozhodol z dôvodu možnosti zadávať samostatné množiny, kde sa toto dá. Formulár na zadávanie DKA vyzerá rovnako ako formulár na zadávanie DTS, len je v ňom vynechaný riadok na zadávanie pracovných symbolov. Pre zadávanie δ funkcieplatítoistéakoprezadávanie δfunkciedts.

16 KAPITOLA 3. NÁVRH SOFTVÉRU Menu Menu aplikácie obsahuje položky File, Grammar, Automata. File obsahuje: 1. New- umožňuje vytvoriť novú gramatiku, množinu a automat. Obsahuje podmenu s položkami Regular Grammar, Context Sensitive Grammar, Context Free Grammar, Phrasal Grammar, DTM, DFA, Global set. Vytvorené typy gramatík zodpovedajú slovenskému ekvivalentu príslušného názvu položky, DTM vytvorí nový deterministický turingov stroj, DFA nový det. konečný automat a global set novú množinu. 2. Open- načíta súbor. Tento súbor musí byť vopred uložený aplikáciou. Jeho formátbudepopísanývčasti3.6.pokliknutínatútopoložkusaotvorídialóg navýbersúboru,následnesanačítaaakmasprávnyformát,vytvorísanové okno aplikácie. Aplikácia neumožňuje zlúčenie už vytvorených prvkov(gramatík, automatov) s vopred uloženým dokumentom. Otvorenie súboru a následné pridávanie a uberanie prvkov samozrejme funguje podľa očakávaní. 3. Save- uloží vytvorené gramatiky, automaty a množiny do súboru. Po kliknutí na túto položku sa otvorí dialóg na výber umiestnenia a názvu súboru a následne sa uloží. 4. Quit- ukončí aplikáciu. Grammar sa vzťahuje vždy na aktuálne otvorenú gramatiku- aktívnu záložku, pričom pri otvorení záložky obsahujúcej iný element(napr. automat) sa nesúvisiace položky zneprístupnia. Obsahuje: 1. Derive- otvorí okno na odvodzovanie vetných foriem. Toto bude popísané v časti Okno Derive. 2.TestwordisfromG-otvorídialógnazadanieslovaanáslednesapokúsioveriť jeho príslušnosť do jazyka generovaného gramatikou. Automata sa podobne, ako v prípade gramatík, vzťahuje vždy na aktuálne aktívnu záložku, nesúvisiace záložky sa zneprístupnia. Momentálne obsahuje len položky Run DTM on input a Run DFA on input, ktoré vyvolajú okno umožňujúce krokovanie daného DTS(DFA) na zadanom vstupe Okno Derive TotooknosaotvorípokliknutínapoložkuDerivevhlavnommenuaslúžinamanuálne alebo automatické generovanie krokov odvodenia. Okno je vidieť na obrázku Nachádza sa v ňom: 1.Tlačidloback-umožňujevrátiťsaokrokspäť.Dásavrátiťažkpočiatočnému neterminálu.

17 KAPITOLA 3. NÁVRH SOFTVÉRU 10 Obr. 3.4: Okno Derive 2. Pole textového vstupu- slúži na zadanie počtu opakovaní náhodne urobeného kroku odvodenia. 3. Tlačidlo rnd. step- vytvorí n nasledujúcich krokov odvodenia náhodne výberom v každom kroku aplikovateľných pravidiel, kde n je počet zadaný v predošlom poli. 4. Samotná plocha s odvodením- na začiatku obsahuje iba počiatočný neterminál. Ľavú stranu pravidla vyberieme výberom textu do bloku. Po kliknutí pravým tlačidlom myši sa vyvolá menu, ktoré zobrazí aplikovateľné pravé strany pravidiel. Toto menu je vidieť na obr Pri manuálnom odvodení sa zvýrazňuje vybraná časť predošlých vetných foriem. Vyberať do bloku možno len text, ktorý tvorí poslednú vetnú formu v odvodení Okno Simulate DTM TotooknosavyvolázmenuAutomata/Run DTM on inputaslúžinasimuláciudts nazadanomvstupe.totooknomôžemevidieťnaobr.3.5.nachádzasavňompo rade: 1. Riadok na zadanie vstupu. Po stlačení tlačidla Reset sa overí, či riadok obsahuje iba symboly zo vstupnej abecedy a začne sa simulácia s týmto vstupom. Jednotlivé kroky výpočtu sa simulujú tlačidlom Step. Ak už simulácia prebieha azmenímevstup,prerušísaazačnesanovásimulácia.akprepíšemetentoriadok a nový vstup je rovnaký ako starý, simulácia pokračuje ďalej. Po stlačení tlačidla Reset sa zruší prebiehajúca simulácia a začne sa nová. 2. Časť s pravou a ľavou stranou. Posledný riadok ľavej strany obsahuje momentálny obsah pásky, predošlé zaznamenávajú históriu, pričom pozícia hlavy je zvýraznená tučným písmom. Pravá strana obsahuje históriu použitých riadkov delta funkcie.

18 KAPITOLA 3. NÁVRH SOFTVÉRU 11 Obr. 3.5: Okno Simulate DTM 3. Spodná časť obsahuje aktuálny stav, počet krokov a stav automatu, teda či je zaseknutý(lock), krokuje(step), alebo je v akceptačnom stave(in accept state) Okno Simulate DFA TotooknovyzeráasprávasarovnakoakooknoSimulateDTM. 3.2 SwingaMVC MVC znamená model-view-controller a je to návrhový vzor popisujúci architektúru aplikácie prezentujúcej nejaké dáta. Základom tohoto návrhového vzoru je myšlienka oddelenia dát(aplikačnej logiky) a uživateľského rozhrania. Model reprezentuje dáta aplikácie,viewvizualizovaniedát-vnašomprípade 6 oknáaplikácieacontrollerspracováva uživateľský vstup a robí prípadné zmeny v modeli. Swing vychádza z designu MVC, pričom poskytuje vlastné implementácie modelov pre jednotlivé komponenty a tak nenúti programátora používať tento návrhový vzor. Model pre dokument aplikácie je reprezentovaný triedou Main. Táto trieda vzniká nová pre každý otvorený súbor. Pre jednoduché dialógové okná som sa rozhodol používať hotové modely a na tabuľku s pravidlami som vytvoril vlastný model, ktorý je implementovaný v triede RuleTableModel. Okrem toho som vytvoril modely pre udržovanie definícií množín, automatov a gramatík. Tieto slúžia na uloženie uživateľom 6 Napr.priwebaplikáciitvoríviewHTMLstránkavklientskomprehliadači

19 KAPITOLA 3. NÁVRH SOFTVÉRU 12 zadaných dát. Obsahujú aj metódy na kontrolu týchto dát a spolupracujú s triedou Main na ich ukladaní. Všetky nasledujúce triedy sa nachádzajú v balíku sk.fmfi.gui: 1. Main - Táto trieda tvorí hlavnú triedu aplikácie. Obsahuje hlavnú metódu main(). Okrem toho sa v nej nachádzajú zoznamy vytvorených gramatík, automatov a množín a metódy na ukladanie a načítavanie stavu aplikácie. Hlavný formulár sa zobrazí metódou exec(). 2. MainFrame- Trieda implementujúca hlavné okno aplikácie. V tejto triede sa nachádzajú obslužné metódy udalostí vyvolané z menu, ďalej metódy na pridávanie uzlov do ľavej časti okna(stromu) a vytváranie záložiek v pravej časti. 3. JPanelGrammarDef- Trieda implementujúca panel zadávania gramatiky(obr. 3.1). Keďže je táto trieda odvodená od triedy JPanel, nie je problém vytvoriť na zadávanie samostatné okno, ktorého obsahom bude tento panel. V súčasnej verzii je však implementované iba otváranie v záložkách. Editáciu gramatiky, terminálov a neterminálov som implementoval tak, že vyhodnocuje syntaktickú správnosť vstupu hneď, ako uživateľ píše. Nájdené chyby sa zobrazujú v stavovom riadku. Modelom pre toto okno je trieda GrammarModel. 4.GrammarModel Vtejtotriedesúuloženévstupypresnetak,akoichzadal uživateľ. Predstavuje model pre JPanelGrammarDef. V prípade, že sa otvorí už existujúca gramatika, dostane trieda JPanelGrammarDef na vstup konštruktora túto triedu, z ktorej potom inicializuje príslušné komponenty. Inštancie týchto tried sú uložené v triede Main. 5. RuleTableModel Trieda implementujúca model pre tabuľku(trieda JTable). Túto triedu som implementoval z dôvodu automatického pridávania posledného prázdneho riadku do tabuľky, rušenia prázdnych riadkov v prípade zrušenia pravidla používateľom a automatické zobrazovanie šípky medzi ľavou a pravou stranou pravidla. 6. JPanelSetDef Trieda implementujúca formulár pre zadanie globálnej množiny (obr. 3.2). Korektnosť zadaného vstupu sa overuje až pri ukladaní. Táto trieda je odvodená od JPanel. Modelom pre tento formulár je SetModel. 7. SetModel Trieda implementujúca model pre množinu. Nachádzajú sa v nej dáta pre formulár JPanelSetDef. 8. JPanelDTMDef Trieda implementujúca formulár na zadávanie DTS. Korektnosť zadaného vstupu sa overí podobne ako v prípade JPanelSetDef až pri ukladaní. Modelom pre tento formulár je DTMAutomataModel. 9. DTMAutomataModel Trieda implementujúca model pre DTS. Pretože jednotlivé definície automatov sa líšia, musel som pre DTS implementovať konkrétny model. Nachádzajú sa v nej dáta pre formulár JPanelDTMDef.

20 KAPITOLA 3. NÁVRH SOFTVÉRU JPanelDFADef Trieda implementujúca formulár na zadávanie DFA. Správa sa rovnako ako JPanelDTMDef. 11. DFAAutomataModel Trieda implementujúca model pre DFA. Táto trieda reprezentuje dáta pre formulár JPanelDFADef. 12. InputSetDialog- Implementácia dialógu viacriadkového zadávania množín terminálov a neterminálov. 13. AppletStarter- Táto trieda je odvodená od triedy javax.swing.japplet, ktorá implementuje rozhranie Applet. Toto zabezpečuje, že aplikácia sa dá pustiť z internetového prehliadača. V jej hlavnej metóde init() je vytvorený hlavný objekt Main, ktorý zobrazí hlavný formulár. 3.3 Spracovanie vstupu V tejto kapitole budú popísané špecifikácie a spracovanie uživateľského vstupu. Keďže vstup je potrebné aj vyhodnocovať, bolo potrebné použiť pokročilejšie techniky, ponúkajúce systematický prístup. Použil som známe techniky používané pri vývoji kompilátorov. V nasledujúcich častiach sa pokúsim stručne zhrnúť metódy ktoré som použil ja, podrobnejšie sa čitateľ môže dočítať v[10] Špecifikácia vstupu Pri spracovaní syntakticky pevne daného vstupu potrebujeme mať najprv definované, aká táto syntax je. Na toto sa najčastejšie používajú práve prostriedky z teórie formálnych jazykov. V tejto časti preto formálne špecifikujem formát vstupu, aký sa od používateľa očakáva. EBNF Na špecifikáciu formálneho vstupu sa používa viacero prístupov. Medzi najznámejšie patríxml,bnfaebnf.jasomsarozhodolpreebnf 7,ktorýještandardizovaný organizáciou ISO v norme ISO 14977[3]. Syntaxe definované gramatikami v EBNF generujú bezkontextové jazyky[10, p.14]. Pretože popis tohto metajazyka presahuje rámec tejto práce, popíšem len prvky ktoré budeme potrebovať. Syntaktický metajazyk je zápis definície syntaxe jazyka za použitia gramatických pravidiel. Neterminál je prvok jazyka, ktorý definujeme. Môžu byť nahradené pravou stranou, ak sa zhoduje príslušná ľavá strana pravidla. Terminál je reťazec jedného, alebo viac znakov tvoriacich nedeliteľný prvok jazyka, tzn. že nemôžu byť nahradené žiadnou inou postupnosťou. Syntax jazyka pozostáva z jedného, alebo viacerých pravidiel. 7 ExtendedBackus-Naurform

21 KAPITOLA 3. NÁVRH SOFTVÉRU 14 Pravidlo pozostáva z neterminálneho symbolu, ktorý definujeme, nasledované =, nasledované zoznamom definícií, oddelených. Zoznam definícií je ukončený ;. Pravidlo teda definuje možné náhrady neterminálnych symbolov. Voliteľná postupnosť pozostáva z [, zoznamu definícií, ukončená ]. Opakovaná postupnosť pozostáva z {, zoznamu definícií, ukončená }. Zoskupenie symbolov pozostáva z (, zoznamu definícií, ukončená ). DefiníciasyntaxeEBNFvEBNFvyzerápotomtakto 8 [10]: syntax = {production}; production = identifier "=" expression ";"; expression = term {" " term}; term = factor {factor}; factor = identifier string "(" expression ")" "[" expression "]" "{" expression "}"; identifier = letter {letter digit}; string = """ {character} """; letter = "A"... "Z" "a"... "z"; digit = "0"... "9"; Syntax zápisu gramatiky Gramatikasazapisujepodľa[2,p.9].Zjednodušenejetoštvorica G=(N, T, P, s). gramatika = string,"=(",string,",",string,",",string,",",element-starting,")"; string = letter,[{letter}]; element-starting = letter digit "[",elbr-starting,"]"; elbr-starting = oneelbr,[{",",oneelbr}]; oneelbr = (letter,{(letter digit)}); strana-pravidla = element-string,{element-string}; kvantifikacia-pravidiel = kvantifikacia,{" ",kvantifikacia}; Kvantifikácia a element-string sú popísané v časti Elnumber predstavuje max. 5 ciferné číslo. Toto som zvolil ako primerané optimum medzi použiteľnosťou a rozsahom reprezentovateľným celočíselným typom int. Pri definícii gramatiky nie sú povolené biele znaky. Príklad vstupu: G=(N,T,P,[s,1]) N={[s,a] a<10} T={a} P={ [s,i]->a[s,i+1] i<5 [s,6]->a [s,6]->[s,1] } 8 FormálnadefiníciaEBNFdefinovanápomocouEBNFvnormeISOzaberá2stranyA4.

22 KAPITOLA 3. NÁVRH SOFTVÉRU 15 Sémantika Jednotlivé neterminály string znamenajú názvy, priama definícia anonymnej množiny nie je povolená. V súčasnej verzii nie je možné zadať množinu priamo pomocouglobálnejmnožinyjejzápisomdodefinície.dásatonahradiťpomocou N = {[a] a in M}kde Mvpríkladejeglobálnamnožina(vtomtoprípadezrejmeneterminálov). Prvky množín tvaru[cislo a + cislo] sa vyhodnocujú podľa očakávania. V prípade, že a nie je kvantifikované, výraz ostáva nezmenený. Spracovanie vstupu Vstup je rozpoznaný regulárnym výrazom pomocou triedy Matcher. Táto trieda je štandardnou súčasťou Java API a umožňuje aj zistiť jednotlivé matchujúce reťazce, čo využívam pri zisťovaní jednotlivých názvov(gramatiky, množín, počiatočného neterminálu). Uvádzam príslušný regulárny výraz zapísaný v jazyku Java: String str = ([a za Z]+) ; String CS= [a za Z0 9]+(?:,[a za Z0 9]+) ; String El = ([a za Z0 9] \\[ +CS+ \ \]) ; String gramregexp = ˆ +str+ =\\( +str+, +str+, +str+, +El+ \\)$ ; Implementácia je v triede InputGrammarParser. Táto trieda poskytuje okrem metódy na rozpoznanie syntaxe(metóda checksyntax()) aj metódy na zistenie jednotlivých reťazcov Syntax zápisu DTS DTS sa zapisuje podobne ako gramatika podľa štandardnej definície. S využitím už definovaných neterminálov je to: DTS = string,"=(",string,",",string,",",string,",",string,",",element-starting,",",string)"; delta = {delta-riadok,newline}; delta-riadok = string,"(",element-string,",",element-string,")=(",element-string,element-string,"0" ["-"]"1"),[{" ",kvantifikacia}]; Jednotlivé množiny v gramatikách a automatoch sa definujú podľa Sémantika Sémantika je podobná ako pri gramatike. Pre úplnosť uvádzam príklad: T=(K, S, W, d, q,f) K= {q, k} S= {a, b} W= {a, b,[a, b] b <3} d(q, a)=(q, a,0) d(q,[a, i])=(q,[a, i+1],1) i <2

23 KAPITOLA 3. NÁVRH SOFTVÉRU 16 Vriadku W= {a, b,[a, b] b <3}definujeme,žeabecedapracovnýchsymbolovbude maťprvkya,b,[a,0],[a,1],[a,2].vriadku d(q,[a, i])=(q,[a, i+1],1) i <2definujeme 2 riadky delta funkcie: d(q,[a,0])=(q,[a,1],1) d(q,[a,1])=(q,[a,2],1) Spracovanie vstupu Podobne ako v prípade gramatík, vstup je rozpoznaný regulárnym výrazom. V tomto prípade sú takto rozpoznané aj riadky δ funkcie. Regulárny výraz na rozpoznanie δ funkcie zapísaný v jazyku Java: String N= ˆ[ ]?[0 9]{1,5}$ ; String N1= (?:[ ]?[0 9]{1,5}\\ )? ; String N2= (?:[+ ][0 9]{1,5})? ; String CS= (?: +N1+ (?:[a za Z0 9][a za Z0 9] ) +N2+ ) ; String El = ((?:[a za Z]) (?:\\[ +CS+ (?:, +CS+ ) \ \])) ; String DIR= ((?:[ ]?1) 0) ; String QUANTS= ( \ \. )? ; String delta = \\( +El+, +El+ \\)=\\( +El+, +El+, +DIR+ \\) +QUANTS+ $ ; Kvantifikácie(podvýraz QUANTS) sú rozpoznané a súčastne vyhodnotené dodatočne samostatným parserom. Implementácia kontroly vstupu pre definíciu TS je v súbore InputDTMParser, implementácia parsovania delta funkcie je v triede DTMDeltaParser. Rozpoznanie syntaxe a sparsovanie sa robí metódou parse(), ktorá má ako výstup zoznam riadkov delta funkcie(časť 3.4) Syntax zápisu DFA PretentozápisplatítoistéakopreDTM,menísalenformátdefinícieatvardelta funkcie: DFA = string,"=(",string,",",string,",",string,",",element-starting,",",string)"; delta = {delta-riadok,newline}; delta-riadok = string,"(",element-string,",",element-string,")=",element-string,[{" ",kvantifikacia}]; Syntax množinového zápisu V nasledujúcich definíciách som pre prehľadnosť vynechal biele znaky. Nejde teda o formálne presné zápisy. mnozina = "{",obsah-mnoziny,"}"; obsah-mnoziny = element-string kvant-element,

24 KAPITOLA 3. NÁVRH SOFTVÉRU 17 [{",",(element-string kvant-element)}] ""; kvantifikacia = cislo,relacia,retazecc cislo,relacia,retazecc,relacia,cislo retazecc," in ",retazec relacia = "<" "<="; retazec = letter,[{letter}]; retazecc = letter digit,[{cislo retazec}] cislo = ["-"],digit,[digit],[digit],[digit],[digit]; kvant-element = brelement,{" ",kvantifikacia}; element-string = letter digit brelement; brelement = "[",elbr,"]"; elbr = oneelbrexpr,[{",",oneelbrexpr}]; oneelbrexpr = [["-"],elnumber,"*"],(letter,{(letter digit)}),[("+" "-"),elnumber]; elnumber = digit,[digit],[digit],[digit],[digit] V uvedenej syntaxi sú významné biele znaky len v prípade obsah-mnoziny. Prvok obsahujúci biele znaky nebude v tomto prípade považovaný za korektný. Príklad zápisu: {a,[aa],[a, b] b <10 a <10,[a] a in L} Sémantika Množinový zápis som sa snažil navrhnúť tak, aby sa čo najviac podobal známemu zápisu množín z matematiky. Bolo pri tom treba umožniť kvantifikovanie prvkov množiny. Keďže v textovom zápise nie je možné písať jeden viacznakový prvok(neterminál/terminál) ako jeden znak, teda tak ako vo formálnych jazykoch napr. nové neterminály vytvorené z kartézského súčinu neterminálov, viacznakové prvky sa píšu do hranatých zátvoriek. Kvantifikovať je možné len prvky v hranatých zátvorkách a kvantifikácia sa vzťahuje len na predošlý prvok. Kvantifikované sú potom prvky pre ktoré existuje kvantifikovaná premenná v kvantifikácii zhodujúca sa s niektorou súradnicou. Príklad: {[a, c], a,[a, b] 2 < a <5} Vtomtopríkladekvantifikujemelenprvok[a, b].zápisznamená {[a, c], a,[3, b],[4, b]}. Prvky ba[b]niesútenistýprvok.vstup L={[a, b], c} M= {[c, d] d in L} Vygenerujeprvky {[c, a,b],[c, c]}premnožinum,kdeljezadefinovanáakoglobálna množina Fázy spracovania vstupu Spracovanie vstupu je rozdelené do niekoľkých fáz, ktoré sú zachytené na obr V nasledujúcich častiach popíšem jednotlivé fázy.

25 KAPITOLA 3. NÁVRH SOFTVÉRU Lexikálna analýza Obr. 3.6: Fázy spracovania vstupu Prvou fázou spracovania vstupu je lexikálna analýza. Úlohou lexikálneho analyzátora je vytvoriť zo vstupu zodpovedajúcu postupnosť tokenov, ktoré dostane na vstup syntaktický analyzátor. V minulosti sa program rozdeľoval na takéto časti pre nedostatok operačnej pamäte[10]. V súčastnosti sú hlavné dôvody takéhoto rozdelenia[7]: 1. zjednodušenie a sprehľadnenie návrhu 2. efektívnosť(môžme napr. urýchľovať načítanie vstupu bufferovaním a pod.) 3. portabilita a nezávislosť na kódovaní vstupu Pozn.: Lexéma je reťazec znakov, ktorý predstavuje najnižšie postavenú syntaktickú jednotku v danom jazyku. Token označuje triedu lexém. Úlohou lexikálneho analyzátora je potom vytvoriť dvojice < token, lexema >(napr. < retazec, nejakyretazec >). Zjednodušený stavový diagram lexikálneho analyzátora, ktorý rozpoznáva ostrú a neostrú nerovnosť a reťazce, ktoré môžu obsahovať číslo, ale začínajú znakom je na obr 3.7. Analýza začína v stave 0, v príslušnom stave analyzátor vráti výsledok, stav rozdelenýnadvečastiznamená,žetrebavrátiťjedenznaknavstup,pretožeužnieje súčasťou tokenu. Po zavolaní metódy nexttoken() analyzátor pokračuje v stave 0. Po dočítaní vstupu je každý ďalší token EOF. Po každom rozpoznanom tokene preskočí biele znaky a začne rozpoznávať ďalší. Implementácia Lexikálny analyzátor pre vstup mnozina je implementovaný v triede Tokenizer. Ako vstup konštruktora má táto trieda celý rozpoznávaný reťazec. Ide o jednoduchý stavový automat, ktorý sa môže pohybovať po vstupe(lba). Toto je z toho dôvodu, že potrebujeme rozpoznávať aj dlhšie lexémy ako 1 znak, napr. reťazec a v prípade konca lexémy sa vrátiť o jeden znak naspäť. Kľúčová je metóda nexttoken(). Na začiatku sa preskočia biele znaky. Toto sa dá však vypnúť z dôvodu jemnejšej kontroly v syntaktickom analyzátore. Potom sa

26 KAPITOLA 3. NÁVRH SOFTVÉRU 19 Obr. 3.7: Lexikálna analýza načíta jeden znak zo vstupu. Aktuálna pozícia je zaznamenaná jednoducho celočíselnou premennou. Následne sa podľa načítaného znaku rozhodne, o aký token ide jednoduchým príkazom switch. Načítanie reťazca je v samostatnej metóde a tak je možné napr. odvodiť nový lexikálny analyzátor, ktorý nepripúšťa čísla v reťazci. Na obr. 3.6 prerušovaná čiara medzi lexikálnym analyzátorom a syntaktickým analyzátorom znamená, že syntaktický analyzátor si pýta ďalšie tokeny postupne, teda sa nespracuje celý vstup naraz. Pre zjednodušenie pri takto jednoduchom vstupe analyzátor vytvára samostatné tokeny len pre reťazce a čísla. Pre ostatné operátory a znaky je výsledkom názov príslušného operátora alebo znaku Syntaktická analýza Úlohou syntaktickej analýzy je spracovať tokeny a zistiť, či daný vstup patrí do jazyka generovaného gramatikou. Syntaktický analyzátor pritom vytvára syntaktický strom. Jeden taký syntaktický strom je na obr.3.8. Je viacero spôsobov, ako zistiť príslušnosť slova do jazyka, napr. zdola nahor, zhora nadol. Ja som si vybral metódu rekurzívne zostupného prehľadávania(recursive descent parsing). Hlavnou výhodou tejto metódy je jej jednoduchosť a názornosť, nevýhodou je, že nerozpoznáva všetky bezkontextové jazyky[7], gramatika generujúca jazyk nesmie obsahovať ľavú rekurziu a musí byť LL(1) gramatika. Pri rozpoznávaní slova z jazyka generovaného takouto gramatikou sa musí dať urobiť rozhodnutie pre nasledujúci krok iba na základe nasledujúceho tokenu. Gramatika pre množinový zápis obsahuje rekurziu iba pri opakovaní. Rozšírenie vebnfpreopakovaniesadázostrojiťpravidlom α αa α,čoniejeľavárekurzia. Z gramatiky vidieť, že rozhodnutie pre nasledujúci neterminál sa dá urobiť na základe

27 KAPITOLA 3. NÁVRH SOFTVÉRU 20 Obr. 3.8: Syntaktický strom oddeľujúceho symbolu(čiarka,,hranaté zátvorky, kučeravé zátvorky). V prípade kvantifikácie sa dá rozhodnutie medzi hornou hranicou, rozsahom a príslušnosťou do množiny urobiť na základe názvu premennej resp. číslom ako prvým tokenom, následne podľa operátora. Parsovací algoritmus sa zostrojí tak, že sa pre každý neterminál zostrojí samostatná metóda, ktorá rozpoznáva vstup a nesie názov neterminálu. Výskyt neterminálu v syntaxe(podľa gramatiky) sa nahradí volaním zodpovedajúcej metódy. Je vidieť, že toto sa dá zostrojiť priamo z danej gramatiky[9],[10]. Implementácia Parser je implementovaný uvedeným postupom v triede SetParser v balíku sk.fmfi. parsers. Jednotlivé uzly stromu sú definované v balíku sk.fmfi.parsers.ptree. Všetky uzly sú odvodené od triedy PNode. Významné metódy triedy SetParser sú najmä:

28 KAPITOLA 3. NÁVRH SOFTVÉRU boolean parse(string setname,graph graph) táto metóda dostane na vstup názov množiny a graf závislosti zatiaľ definovaných množín. Graf závislosti je orientovaný graf, kde ak množina A využíva prvky množiny B, potom smeruje z Ado B orientovanáhrana.tentografsavsúčasnejverziinevyužíva.ak parsovanie prebehlo v poriadku, výsledok získame metódou getptree(). 2. boolean parsequantified(linkedlist<string>,string q,graph graph) táto metóda dostane na vstup zoznam prvok, kvantifikáciu a graf závislostí. Používa sa na generovanie kvantifikovaných pravidiel a riadkov δ funkcie. Výsledok získame metódou getptree() Návrhový vzor visitor V tejto časti popíšem návrhový vzor visitor, ktorý sa využíva v nasledujúcich fázach spracovania vstupu. Návrhový vzor visitor je spôsob, ako oddeliť algoritmus od objektovej štruktúry. Dovoľuje nám definovať nové operácie na objektovej štruktúre, bez zmeny tried elementov, na ktorých majú byť vykonané. Motivácia Majme nejaký syntaktický strom ako výsledok syntaktickej analýzy a chceme na ňom vykonávať nejaké operácie, napr. overovanie platnosti rozsahu kvantifikačných premenných, vypisovanie jednotlivých prvkov množiny a pod. Visitor nám dovoľuje pridávaťnovéoperáciebeztoho,abysarobilizmenyvtriedepnodeavjejpotomkoch. Jednotlivé operácie zapuzdrime do samostatných tried implementujúcich Visitor a potom inštanciu takejto triedy budeme posielať špeciálnej metóde accept(visitor v) triedy PNode. Táto trieda následne zavolá metódu visit(pnode n) objektu v triedy Visitor s parametrom this. Visitor teda musí implementovať metódu visit so správnym typom parametra pre každého potomka triedy PNode. Pri volaní visit() pritom nemusíme vytvárať žiadne podmienky, správna metóda sa zavolá automaticky podľa typu volajúcej metódy. Štruktúru objektov vidíme na obr. 3.9 Pre tento návrhový vzor som sa rozhodol z nasledujúcich dôvodov: 1. Prehľadnosť. Jednotlivé operácie sú od seba oddelené a rovnako sú oddelené od objektovej štruktúry na ktorej ich vykonávame. 2. Oddelenie operácií. Toto mi umožnilo pracovať na jednej operácii a pritom neovplyvniť funkčnosť už implementovanej operácie. 3. Ľahké pridávanie nových operácií a experimentovanie s nimi. Tento vzor však nie je bez chýb, za najväčší nedostatok považujem nutnosť pridávať metódu visit do rozhrania visitor a teda aj jeho implementujúcich tried po pridaní každého nového potomka triedy PNode. Je zrejmé, že stav momentálneho spracovania štruktúry si bude musieť visitor pamätať ako súčasť svojho stavu. Toto je na jednej

29 KAPITOLA 3. NÁVRH SOFTVÉRU 22 Obr. 3.9: Návrhový vzor visitor- štruktúra strane výhoda, pretože objekty, ktoré visitor prechádza nemusia definovať stavové premenné pre každú operáciu, na druhej strane musia poskytnúť dostatok informácií objektom visitor, čo v prípade absencie spriatelených tried, čo je prípad Javy, môže viesť k narušeniu princípu zapuzdrenia. Nasledujúce spracovanie syntaktického stromu je vykonávané práve pomocou visitorov Ďalšia kontrola vstupu Po sparsovaní vstupu a vytvorení syntaktického stromu sa kontrolujú rôzne sémantické vlastnosti. Toto je implementované v triede SetValidateVisitor. Kontroluje sa, či je každá kvantifikačná premenná prítomná v prvku množiny, ktorý kvantifikuje ačisapremennánevyskytujevkvantifikáciidvakrát.ajkeďtotoniesúchyby,pretoževprvomprípadebybolprvokvypísanýbezdosadenia,avšakzrejmetonieto, čo používateľ zamýšľal. V druhom prípade to nie je chyba v prípade disjunktných rozsahov kvantifikačnej premennej, toto však momentálne nie je implementované a preto takýto vstup vylúčime Enumerácia prvkov množiny V definícii syntaxe množinového zápisu bolo povedané, že je možné kvantifikovať jednotlivé prvky množiny. Pri nasledujúcom spracovaní triedami, ktoré implementoval kolega Dušan Baník, sme potrebovali mať zoznam jednotlivých prvkov po dosadení hodnôt za jednotlivé kvantifikačné premenné. Pod enumeráciou prvkov množiny budem označovať postupné dosadenie hodnôt z rozsahu kvantifikačných premenných do príslušného prvku, vyhodnotenie výrazu a jeho vypísanie na výstup. Toto je implementované ako visitor v triede SetEvaluatorVisitor. Táto trieda

30 KAPITOLA 3. NÁVRH SOFTVÉRU 23 môže ukladať jednotlivé prvky ako prvky množín pomocou kolekcie HashSet, alebo pomocouspájanéhozoznamulinkedlist 9.Ospôsobeukladaniarozhodujeparameter konštruktora isset. Ak je true, výsledok bude množina, inak zoznam. Toto je potrebné pri enumerácii kvantifikovaných pravidiel, keď môžeme mať zhodnú jednu stranu pravidla, ale rôznu druhú. Pri spájanom zozname a dodržaní vhodného poradia vypisovania prvkov množiny som sa vyhol implementácii ďalších tried. Stačí dohoda, žepárneprvkyspájanéhozoznamusúpravéstranyanepárnesúľavé,postupneodprvého.tedaprvkysúenumerovanévporadíakobolizadanénavstupe.totoriešeniesa dá zovšeobecniť na ľubovoľný počet prvkov. Nasledujúce objekty budem potrebovať pri popise činnosti visitora v nasledujúcom texte, preto stručne popíšem ich význam: 1. PQuantifiedElement predstavuje kvantifikovaný prvok množiny. Sú v ňom uloženézoznamprvkov akojedenprvok,aleboviacprvkovakopelems a zoznam kvantifikácií ako PQuantification. 2. PQuantification zoznam kvantifikácií v PQuantifiedElement. 3. PQuantElRange predstavuje celočíselný rozsah kvantifikovanej premennej. Hodnoty premenných pri enumerácii sa získavajú pomocou iterátorov. Každá premenná, ktorá môže nadobudnúť nejaké hodnoty musí mať implementovaný príslušný iterátor. Toto riešenie som zvolil z dôvodu enumerácie a dosadzovania aj iných ako číselných hodnôt, napríklad prvkov iných množín. Pre číselné rozsahy hodnôt je iterátor implementovaný v triede RangeIterator, ktorá je súčasťou triedy SetEvaluatorVisitor ako vnorená trieda. Pre samotnú enumeráciu sa udržuje v objekte SetEvaluatorVisitor tabuľka premenných, pre každý iterátor príslušný objekt z ktorého ho získame, usporiadaná n-tica iterátorov a tabuľka hodnôt. Udržovať tabuľku objektov je nutné z dôvodu absencie metódy na nastavenie iterátora na začiatok v rozhraní iterator. Pre optimálny výkon sú objekty v týchto tabuľkách hashované pomocou triedy HashMap. Enumerácia prebieha podľa nasledujúceho postupu: Vo visit(pquantifiedelement): 1. Vynuluj tabuľky premenných, hodnôt, objektov a iterátorov. 2. Zavolaj accept(this) na PQuantification. Toto volanie spôsobí naplnenie tabuliek hodnôt, premenných a iterátorov. 3. Opakovane volaj accept na podstrome s prvkami množiny, dokiaľ existujú ďalšie hodnoty iterátorov. Vo visit(pelem): dosaď hodnoty z aktuálnej tabuľky hodnôt za zhodujúce sa súradnice prvkov. 9 Viacokolekciáchaiterátorochnapr.v[1]

31 KAPITOLA 3. NÁVRH SOFTVÉRU 24 Samotné prechádzanie cez n-ticu iterátorov prebieha postupným zvyšovaním hodnoty iterátora a prenosu do vyššieho rádu v prípade dosiahnutia konca. Následne sa všetky iterátory v nižšom ráde vynulujú. Enumerácia končí, ak iterátor v najvyššom ráde dosiahol poslednú hodnotu. Toto teda kopíruje klasické počítanie s prenosom do vyššieho rádu. Takto sa postupne prejde cez všetky možné kombinácie hodnôt. 3.4 Návrh a implementácia simulátora DTS a DFA V tejto časti popíšem návrh a implementáciu simulátora deterministického turingovho stroja(dts) a deterministického konečného automatu(dka). Návrh DTS som sa rozhodol navrhnúť ako prvý. Pomocou neho vieme jednoducho simulovať DKA a LBA, preto som pri návrhu bral do úvahy jednoduché vytvorenie odvodených tried na takúto simuláciu. V prípade DKA je to hlavne deštruktívne čítanie vstupu, vprípadelbaadtsjetozmenapolíčkanapáskeapohybpopáskeojednopolíčko, v prípade DTS je to predlžovanie pásky v oboch smeroch(simulácia nekonečnej pásky). Na toto sa najlepšie hodí spájaný zoznam, všetky tieto operácie na ňom vieme vykonať v konštantnom čase, pretože hlava automatu sa pohybuje po vstupnej páske maximálne o jedno políčko. VytvorilsomjednutriedupreDTSakozákladaDFAsompotomodvodilod tejto triedy. DFA bude vo výpočtovom kroku kontrolovať, či už nedočítal vstup a rušiťprázdnepolíčkapásky.vdtssibudememusieťpamätať,čisamázastaviť v akceptačnom stave. DTS dostane na vstup zoznamy prvkov jednotlivých množín a zoznam riadkov δ funkcie. V jednom kroku simulácie potom vyhľadá zhodujúci sa riadok δ funkcie s aktuálnym stavom a obsahom pásky, prepíše obsah pásky, nastaví nový stav a posunie hlavu. Pretože jednotlivé δ funkcie sa mierne líšia rozhodol som sa zvoliť δ funkciu DTS ako základ. Pomocou nej potom vieme vytvoriť(simulovať) δ funkciu pre DKA. Táto funkcia bude zapisovať prázdny reťazec a vždy sa posunie o jedno políčko doprava. Implementácia Triedy implementujúce funkcie simulátora sa nachádzajú v balíku sk.fmfi.automata. Ide o triedy: 1. TM trieda implementujúca DTS. Obsahuje metódy setinput(string input), boolean iscorrect(), int onestep(). Okrem toho sú tu pomocné metódy na zistenie aktuálnej pozície hlavy a obsahu pásky, ktoré sa využívajú pri vizualizácii simulácie. Simulácia sa nastavuje v troch krokoch: Najprv sa metódou iscorrect overí, či sú všetky množiny definované správne, overí sa podľa δ funkcie, či je TS deterministický.

32 KAPITOLA 3. NÁVRH SOFTVÉRU 25 V ďalšom kroku sa metódou setinput nastaví obsah vstupnej pásky. Táto metóda rozdelí vstup na jednotlivé políčka a tieto si zapamätá v spájanom zozname. Overuje pritom, či symbol na vstupnej páske je zo vstupnej abecedy. Na aktuálnu pozíciu hlavy si trieda TM uchováva obojsmerný iterátor. Tento sa nastaví na začiatku na prvé políčko. Následne sa metódou onestep() vykoná jeden krok výpočtu TS. Ak je v akceptačnom stave a nemusí dočítať pásku, nerobí nič, inak podľa δ funkcie prepíše pásku a nastaví iterátor. Ak je na začiatku alebo konci zoznamu, pridá blank (reťazec B ). Metóda vráti stav automatu, teda či počíta, je v akceptačnom stave, alebo sa zasekol. 2. Delta trieda predstavujúca jeden riadok δ funkcie DTS. 3. DFA trieda odvodená od DTS simulujúca DKA. V konštruktore nastaví, že sa musí pred zastavením sa v akceptačnom stave dočítať celý vstup. Okrem toho prekrýva metódu onestep, kde volá prekrytú metódu a následne vymaže zpáskyprázdnereťazce.akjenapáskelenblank,znamenáto,žesacelá dočítala a simulácia sa skončí. 4. DFADelta trieda odvodená od Delta, predstavujúca jeden riadok simulácie DKA. Konštruktor predka volá so zápisom prázdneho reťazca a posunom hlavy o jeden krok vpravo. 3.5 Príklady použitia Príklad:Zostrojteregulárnugramatiku G,kde L(G)={w w {a, b} +,# a (w) mod10= 0}. Gramatikasibudevneterminálepamätaťpočet aavkaždomkrokumôžeokrem a vygenerovať b bez zmeny počtu a. Vytvoríme novú regulárnu gramatiku pomocou File/New/Regular grammar. Vyplníme príslušné textové polia: G=(N,T,P,s) N={s,[a,i] 1<=i<=10} T={a,b} P={ s->a[a,1] s->bs [a,i]->a[a,i+1] 1<=i<=8 [a,i]->b[a,i] 1<=i<=10 [a,9]->a [a,9]->as } Príklad:ZostrojteDKAakceptujúcijazyk L={w w {a, b} +,vowjedruhépísmeno od konca b}. Automat si bude v stave pamätať posledné prečítané 2 písmená,

33 KAPITOLA 3. NÁVRH SOFTVÉRU 26 akceptačné stavy budu tie, kde je toto písmeno b. Budeme potrebovať pomocnú množinu vstupnej abecedy, vytvoríme preto novú globálnu množinu pomocou File/New/Global set a vyplníme: Definition of set named: A Set definition: {a,b} Vytvoríme nový DKA pomocou File/New/DFA a vyplníme príslušné textové polia: DFA: T=(K,S,d,q,F) K={q,[q,a],[q,b],[a,b] a in K b in K} S={[a],[b]} F={[b,a] a in K} delta: d(q,[a])=[q,a] d(q,[b])=[q,b] d([q,i],[j])=[i,j] i in A j in A d([i,j],[k])=[j,k] i in A j in A k in A 3.6 Formát súboru V tejto časti popíšem formát súboru s uloženými dátami. Pri navrhovaní tohto formátu som sa snažil zabezpečiť aspoň minimálnu kontrolu korektnosti. Pritom som chcel dosiahnuť čitateľnosť bežným textovým editorom a možnú editáciu bez potreby púšťať program. Preto je súbor s dátami bežný ASCII textový súbor, kde jednotlivé zadefinovanéprvky 10 súvypísanépodsebavtextovejpodobe.vpseudo 11 EBNF vyzerá štruktúra takto: file = {sets},{grammars},{automata-dtm},{automata-dfa}; sets = "set",newline,numbern,stringn,mnozinan; grammars = "grammar",newline,grtype,newline,numbern,gramatika,newline,mnozinan-n,mnozinan-t,elbr,newline,"rules",newline,numbern,{rules}; automata-dtm = "DTM",newline,numbern,numbern,dtm,newline,mnozinan-K,mnozinan-S,mnozinan-W,numbern,string-delta,newline,mnozinan-F; automata-dfa = "DFA",newline,numbern,numbern,dtm,newline,mnozinan-K,mnozinan-S,numbern,string-delta,newline,mnozinan; set_length = number; grtype = "REGULAR" "CONTEXT_FREE" "CONTEXT_SENSITIVE" "PHRASAL"; rules = stringn-left,stringn-right,numbern,[string-quant],newline; numbern = number,newline; mnozinan = numbern,mnozina,newline; stringn = numbern,string,newline; 10 gramatika,množina,automat 11 Niektoréneterminálysúnedefinované,aleichvýznamjezrejmý.

Gramatická indukcia a jej využitie

Gramatická indukcia a jej využitie a jej využitie KAI FMFI UK 29. Marec 2010 a jej využitie Prehľad Teória formálnych jazykov 1 Teória formálnych jazykov 2 3 a jej využitie Na počiatku bolo slovo. A slovo... a jej využitie Definícia (Slovo)

Διαβάστε περισσότερα

Ekvačná a kvantifikačná logika

Ekvačná a kvantifikačná logika a kvantifikačná 3. prednáška (6. 10. 004) Prehľad 1 1 (dokončenie) ekvačných tabliel Formula A je ekvačne dokázateľná z množiny axióm T (T i A) práve vtedy, keď existuje uzavreté tablo pre cieľ A ekvačných

Διαβάστε περισσότερα

Start. Vstup r. O = 2*π*r S = π*r*r. Vystup O, S. Stop. Start. Vstup P, C V = P*C*1,19. Vystup V. Stop

Start. Vstup r. O = 2*π*r S = π*r*r. Vystup O, S. Stop. Start. Vstup P, C V = P*C*1,19. Vystup V. Stop 1) Vytvorte algoritmus (vývojový diagram) na výpočet obvodu kruhu. O=2xπxr ; S=πxrxr Vstup r O = 2*π*r S = π*r*r Vystup O, S 2) Vytvorte algoritmus (vývojový diagram) na výpočet celkovej ceny výrobku s

Διαβάστε περισσότερα

Matematika Funkcia viac premenných, Parciálne derivácie

Matematika Funkcia viac premenných, Parciálne derivácie Matematika 2-01 Funkcia viac premenných, Parciálne derivácie Euklidovská metrika na množine R n všetkých usporiadaných n-íc reálnych čísel je reálna funkcia ρ: R n R n R definovaná nasledovne: Ak X = x

Διαβάστε περισσότερα

Kompilátory. Cvičenie 6: LLVM. Peter Kostolányi. 21. novembra 2017

Kompilátory. Cvičenie 6: LLVM. Peter Kostolányi. 21. novembra 2017 Kompilátory Cvičenie 6: LLVM Peter Kostolányi 21. novembra 2017 LLVM V podstate sada nástrojov pre tvorbu kompilátorov LLVM V podstate sada nástrojov pre tvorbu kompilátorov Pôvodne Low Level Virtual Machine

Διαβάστε περισσότερα

LR(0) syntaktické analyzátory. doc. RNDr. Ľubomír Dedera

LR(0) syntaktické analyzátory. doc. RNDr. Ľubomír Dedera LR0) syntaktické analyzátory doc. RNDr. Ľubomír Dedera Učebné otázky LR0) automat a jeho konštrukcia Konštrukcia tabuliek ACION a GOO LR0) syntaktického analyzátora LR0) syntaktický analyzátor Sám osebe

Διαβάστε περισσότερα

7. FUNKCIE POJEM FUNKCIE

7. FUNKCIE POJEM FUNKCIE 7. FUNKCIE POJEM FUNKCIE Funkcia f reálnej premennej je : - každé zobrazenie f v množine všetkých reálnych čísel; - množina f všetkých usporiadaných dvojíc[,y] R R pre ktorú platí: ku každému R eistuje

Διαβάστε περισσότερα

Goniometrické rovnice a nerovnice. Základné goniometrické rovnice

Goniometrické rovnice a nerovnice. Základné goniometrické rovnice Goniometrické rovnice a nerovnice Definícia: Rovnice (nerovnice) obsahujúce neznámu x alebo výrazy s neznámou x ako argumenty jednej alebo niekoľkých goniometrických funkcií nazývame goniometrickými rovnicami

Διαβάστε περισσότερα

AerobTec Altis Micro

AerobTec Altis Micro AerobTec Altis Micro Záznamový / súťažný výškomer s telemetriou Výrobca: AerobTec, s.r.o. Pionierska 15 831 02 Bratislava www.aerobtec.com info@aerobtec.com Obsah 1.Vlastnosti... 3 2.Úvod... 3 3.Princíp

Διαβάστε περισσότερα

Cvičenie č. 4,5 Limita funkcie

Cvičenie č. 4,5 Limita funkcie Cvičenie č. 4,5 Limita funkcie Definícia ity Limita funkcie (vlastná vo vlastnom bode) Nech funkcia f je definovaná na nejakom okolí U( ) bodu. Hovoríme, že funkcia f má v bode itu rovnú A, ak ( ε > )(

Διαβάστε περισσότερα

1. Limita, spojitost a diferenciálny počet funkcie jednej premennej

1. Limita, spojitost a diferenciálny počet funkcie jednej premennej . Limita, spojitost a diferenciálny počet funkcie jednej premennej Definícia.: Hromadný bod a R množiny A R: v každom jeho okolí leží aspoň jeden bod z množiny A, ktorý je rôzny od bodu a Zadanie množiny

Διαβάστε περισσότερα

Automaty a formálne jazyky

Automaty a formálne jazyky Automaty a formálne jazyky Podľa prednášok prof. RNDr. Viliama Gefferta, DrSc., PrírF UPJŠ Dňa 8. februára 2005 zostavil Róbert Novotný, r.novotny@szm.sk. Typeset by LATEX. Illustrations by jpicedit. Úvodné

Διαβάστε περισσότερα

Obvod a obsah štvoruholníka

Obvod a obsah štvoruholníka Obvod a štvoruholníka D. Štyri body roviny z ktorých žiadne tri nie sú kolineárne (neležia na jednej priamke) tvoria jeden štvoruholník. Tie body (A, B, C, D) sú vrcholy štvoruholníka. strany štvoruholníka

Διαβάστε περισσότερα

1. písomná práca z matematiky Skupina A

1. písomná práca z matematiky Skupina A 1. písomná práca z matematiky Skupina A 1. Vypočítajte : a) 84º 56 + 32º 38 = b) 140º 53º 24 = c) 55º 12 : 2 = 2. Vypočítajte zvyšné uhly na obrázku : β γ α = 35 12 δ a b 3. Znázornite na číselnej osi

Διαβάστε περισσότερα

Prechod z 2D do 3D. Martin Florek 3. marca 2009

Prechod z 2D do 3D. Martin Florek 3. marca 2009 Počítačová grafika 2 Prechod z 2D do 3D Martin Florek florek@sccg.sk FMFI UK 3. marca 2009 Prechod z 2D do 3D Čo to znamená? Ako zobraziť? Súradnicové systémy Čo to znamená? Ako zobraziť? tretia súradnica

Διαβάστε περισσότερα

Fakulta matematiky, fyziky a informatiky Univerzita Komenského, Bratislava Katedra Informatiky

Fakulta matematiky, fyziky a informatiky Univerzita Komenského, Bratislava Katedra Informatiky Fakulta matematiky, fyziky a informatiky Univerzita Komenského, Bratislava Katedra Informatiky Paralelné kooperujúce systémy gramatík diplomová práca autor: Lýdia Hanusková vedúci dipl. práce: Prof. RNDr.

Διαβάστε περισσότερα

Moderné vzdelávanie pre vedomostnú spoločnosť Projekt je spolufinancovaný zo zdrojov EÚ M A T E M A T I K A

Moderné vzdelávanie pre vedomostnú spoločnosť Projekt je spolufinancovaný zo zdrojov EÚ M A T E M A T I K A M A T E M A T I K A PRACOVNÝ ZOŠIT II. ROČNÍK Mgr. Agnesa Balážová Obchodná akadémia, Akademika Hronca 8, Rožňava PRACOVNÝ LIST 1 Urč typ kvadratickej rovnice : 1. x 2 3x = 0... 2. 3x 2 = - 2... 3. -4x

Διαβάστε περισσότερα

Motivácia Denícia determinantu Výpo et determinantov Determinant sú inu matíc Vyuºitie determinantov. Determinanty. 14. decembra 2010.

Motivácia Denícia determinantu Výpo et determinantov Determinant sú inu matíc Vyuºitie determinantov. Determinanty. 14. decembra 2010. 14. decembra 2010 Rie²enie sústav Plocha rovnobeºníka Objem rovnobeºnostena Rie²enie sústav Príklad a 11 x 1 + a 12 x 2 = c 1 a 21 x 1 + a 22 x 2 = c 2 Dostaneme: x 1 = c 1a 22 c 2 a 12 a 11 a 22 a 12

Διαβάστε περισσότερα

Gramatiky. Kapitola Úvod. 1.2 Návrh gramatík

Gramatiky. Kapitola Úvod. 1.2 Návrh gramatík Kapitola 1 Gramatiky 1.1 Úvod Základnými spôsobmi reprezentácie jazykov sú rozpoznávanie a generovanie. Gramatika je reprezentáciou jazyka generovaním. Gramatika je konečná množina pravidiel, ktorých postupnou

Διαβάστε περισσότερα

Matematika prednáška 4 Postupnosti a rady 4.5 Funkcionálne rady - mocninové rady - Taylorov rad, MacLaurinov rad

Matematika prednáška 4 Postupnosti a rady 4.5 Funkcionálne rady - mocninové rady - Taylorov rad, MacLaurinov rad Matematika 3-13. prednáška 4 Postupnosti a rady 4.5 Funkcionálne rady - mocninové rady - Taylorov rad, MacLaurinov rad Erika Škrabul áková F BERG, TU Košice 15. 12. 2015 Erika Škrabul áková (TUKE) Taylorov

Διαβάστε περισσότερα

Reprezentácia informácií v počítači

Reprezentácia informácií v počítači Úvod do programovania a sietí Reprezentácia informácií v počítači Ing. Branislav Sobota, PhD. 2007 Informácia slovo s mnohými významami, ktoré závisia na kontexte predpis blízky pojmom význam poznatok

Διαβάστε περισσότερα

ARMA modely čast 2: moving average modely (MA)

ARMA modely čast 2: moving average modely (MA) ARMA modely čast 2: moving average modely (MA) Beáta Stehlíková Časové rady, FMFI UK, 2014/2015 ARMA modely časť 2: moving average modely(ma) p.1/24 V. Moving average proces prvého rádu - MA(1) ARMA modely

Διαβάστε περισσότερα

6 Limita funkcie. 6.1 Myšlienka limity, interval bez bodu

6 Limita funkcie. 6.1 Myšlienka limity, interval bez bodu 6 Limita funkcie 6 Myšlienka ity, interval bez bodu Intuitívna myšlienka ity je prirodzená, ale definovať presne pojem ity je značne obtiažne Nech f je funkcia a nech a je reálne číslo Čo znamená zápis

Διαβάστε περισσότερα

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy Beáta Stehlíková Časové rady, FMFI UK, 2012/2013 Jednotkový koreň(unit root),diferencovanie časového radu, unit root testy p.1/18

Διαβάστε περισσότερα

Komplexné čísla, Diskrétna Fourierova transformácia 1

Komplexné čísla, Diskrétna Fourierova transformácia 1 Komplexné čísla, Diskrétna Fourierova transformácia Komplexné čísla C - množina všetkých komplexných čísel komplexné číslo: z = a + bi, kde a, b R, i - imaginárna jednotka i =, t.j. i =. komplexne združené

Διαβάστε περισσότερα

Vlastnosti nekonečných slov generovaných pomocou DGSM (diplomová práca)

Vlastnosti nekonečných slov generovaných pomocou DGSM (diplomová práca) Odbor 9.2.1 Informatika Katedra Informatiky Fakulta Matematiky, Fyziky a Informatiky Univerzita Komenského, Bratislava Vlastnosti nekonečných slov generovaných pomocou DGSM (diplomová práca) Marián Sládek

Διαβάστε περισσότερα

Tomáš Madaras Prvočísla

Tomáš Madaras Prvočísla Prvočísla Tomáš Madaras 2011 Definícia Nech a Z. Čísla 1, 1, a, a sa nazývajú triviálne delitele čísla a. Cele číslo a / {0, 1, 1} sa nazýva prvočíslo, ak má iba triviálne delitele; ak má aj iné delitele,

Διαβάστε περισσότερα

MIDTERM (A) riešenia a bodovanie

MIDTERM (A) riešenia a bodovanie MIDTERM (A) riešenia a bodovanie 1. (7b) Nech vzhl adom na štandardnú karteziánsku sústavu súradníc S 1 := O, e 1, e 2 majú bod P a vektory u, v súradnice P = [0, 1], u = e 1, v = 2 e 2. Aký predpis bude

Διαβάστε περισσότερα

M6: Model Hydraulický systém dvoch zásobníkov kvapaliny s interakciou

M6: Model Hydraulický systém dvoch zásobníkov kvapaliny s interakciou M6: Model Hydraulický ytém dvoch záobníkov kvapaliny interakciou Úlohy:. Zotavte matematický popi modelu Hydraulický ytém. Vytvorte imulačný model v jazyku: a. Matlab b. imulink 3. Linearizujte nelineárny

Διαβάστε περισσότερα

Úvod do lineárnej algebry. Monika Molnárová Prednášky

Úvod do lineárnej algebry. Monika Molnárová Prednášky Úvod do lineárnej algebry Monika Molnárová Prednášky 2006 Prednášky: 3 17 marca 2006 4 24 marca 2006 c RNDr Monika Molnárová, PhD Obsah 2 Sústavy lineárnych rovníc 25 21 Riešenie sústavy lineárnych rovníc

Διαβάστε περισσότερα

,Zohrievanie vody indukčným varičom bez pokrievky,

,Zohrievanie vody indukčným varičom bez pokrievky, Farba skupiny: zelená Označenie úlohy:,zohrievanie vody indukčným varičom bez pokrievky, Úloha: Zistiť, ako závisí účinnosť zohrievania vody na indukčnom variči od priemeru použitého hrnca. Hypotéza: Účinnosť

Διαβάστε περισσότερα

Návrh vzduchotesnosti pre detaily napojení

Návrh vzduchotesnosti pre detaily napojení Výpočet lineárneho stratového súčiniteľa tepelného mosta vzťahujúceho sa k vonkajším rozmerom: Ψ e podľa STN EN ISO 10211 Návrh vzduchotesnosti pre detaily napojení Objednávateľ: Ing. Natália Voltmannová

Διαβάστε περισσότερα

ARMA modely čast 2: moving average modely (MA)

ARMA modely čast 2: moving average modely (MA) ARMA modely čast 2: moving average modely (MA) Beáta Stehlíková Časové rady, FMFI UK, 2011/2012 ARMA modely časť 2: moving average modely(ma) p.1/25 V. Moving average proces prvého rádu - MA(1) ARMA modely

Διαβάστε περισσότερα

Modelovanie dynamickej podmienenej korelácie kurzov V4

Modelovanie dynamickej podmienenej korelácie kurzov V4 Modelovanie dynamickej podmienenej korelácie menových kurzov V4 Podnikovohospodárska fakulta so sídlom v Košiciach Ekonomická univerzita v Bratislave Cieľ a motivácia Východiská Cieľ a motivácia Cieľ Kvantifikovať

Διαβάστε περισσότερα

Úprava textu. Použitie schránky: Hlavička a Päta: Poznámka pod čiarou: Modul č.3 WORD pre pokročilých

Úprava textu. Použitie schránky: Hlavička a Päta: Poznámka pod čiarou: Modul č.3 WORD pre pokročilých Úprava textu Použitie schránky: Pomocou schránky je možné prenášať objekty (texty, obrázky, tabuľky...) medzi rôznymi aplikáciami. Pri prenosoch sa používajú nasledovné klávesy: CTRL/ C kopírovanie CTRL/

Διαβάστε περισσότερα

VOJENSKÁ AKADÉMIA V LIPTOVSKOM MIKULÁŠI PREKLADAČE

VOJENSKÁ AKADÉMIA V LIPTOVSKOM MIKULÁŠI PREKLADAČE VOJENSKÁ AKADÉMIA V LIPTOVSKOM MIKULÁŠI Fakulta zabezpečenia velenia Katedra informatiky a výpočtovej techniky RNDr. Ľubomír Dedera, PhD. PREKLADAČE Prvá kniha Skriptá Liptovský Mikuláš 2002 RNDr. Ľubomír

Διαβάστε περισσότερα

Matematika 2. časť: Analytická geometria

Matematika 2. časť: Analytická geometria Matematika 2 časť: Analytická geometria RNDr. Jana Pócsová, PhD. Ústav riadenia a informatizácie výrobných procesov Fakulta BERG Technická univerzita v Košiciach e-mail: jana.pocsova@tuke.sk Súradnicové

Διαβάστε περισσότερα

24. Základné spôsoby zobrazovania priestoru do roviny

24. Základné spôsoby zobrazovania priestoru do roviny 24. Základné spôsoby zobrazovania priestoru do roviny Voľné rovnobežné premietanie Presné metódy zobrazenia trojrozmerného priestoru do dvojrozmernej roviny skúma samostatná matematická disciplína, ktorá

Διαβάστε περισσότερα

Metódy vol nej optimalizácie

Metódy vol nej optimalizácie Metódy vol nej optimalizácie Metódy vol nej optimalizácie p. 1/28 Motivácia k metódam vol nej optimalizácie APLIKÁCIE p. 2/28 II 1. PRÍKLAD: Lineárna regresia - metóda najmenších štvorcov Na základe dostupných

Διαβάστε περισσότερα

Štrukturálne (syntaktické) rozpoznávanie

Štrukturálne (syntaktické) rozpoznávanie Štrukturálne (syntaktické) rozpoznávanie syntaktické metódy pracujú s relačnými štruktúrami, ktoré sa skladajú z prvkov nosiča relačnej štruktúry zodpovedajú primitívam ako ďalej nedeliteľným častiam

Διαβάστε περισσότερα

Priamkové plochy. Ak každým bodom plochy Φ prechádza aspoň jedna priamka, ktorá (celá) na nej leží potom plocha Φ je priamková. Santiago Calatrava

Priamkové plochy. Ak každým bodom plochy Φ prechádza aspoň jedna priamka, ktorá (celá) na nej leží potom plocha Φ je priamková. Santiago Calatrava Priamkové plochy Priamkové plochy Ak každým bodom plochy Φ prechádza aspoň jedna priamka, ktorá (celá) na nej leží potom plocha Φ je priamková. Santiago Calatrava Priamkové plochy rozdeľujeme na: Rozvinuteľné

Διαβάστε περισσότερα

4. Výrokové funkcie (formy), ich definičný obor a obor pravdivosti

4. Výrokové funkcie (formy), ich definičný obor a obor pravdivosti 4. Výrokové funkcie (formy), ich definičný obor a obor pravdivosti Výroková funkcia (forma) ϕ ( x) je formálny výraz (formula), ktorý obsahuje znak x, pričom x berieme z nejakej množiny M. Ak za x zvolíme

Διαβάστε περισσότερα

Funkcie - základné pojmy

Funkcie - základné pojmy Funkcie - základné pojmy DEFINÍCIA FUNKCIE Nech A, B sú dve neprázdne číselné množiny. Ak každému prvku x A je priradený najviac jeden prvok y B, tak hovoríme, že je daná funkcia z množiny A do množiny

Διαβάστε περισσότερα

Metodicko pedagogické centrum. Národný projekt VZDELÁVANÍM PEDAGOGICKÝCH ZAMESTNANCOV K INKLÚZII MARGINALIZOVANÝCH RÓMSKYCH KOMUNÍT

Metodicko pedagogické centrum. Národný projekt VZDELÁVANÍM PEDAGOGICKÝCH ZAMESTNANCOV K INKLÚZII MARGINALIZOVANÝCH RÓMSKYCH KOMUNÍT Moderné vzdelávanie pre vedomostnú spoločnosť / Projekt je spolufinancovaný zo zdrojov EÚ Kód ITMS: 26130130051 číslo zmluvy: OPV/24/2011 Metodicko pedagogické centrum Národný projekt VZDELÁVANÍM PEDAGOGICKÝCH

Διαβάστε περισσότερα

UČEBNÉ TEXTY. Pracovný zošit č.2. Moderné vzdelávanie pre vedomostnú spoločnosť Elektrotechnické merania. Ing. Alžbeta Kršňáková

UČEBNÉ TEXTY. Pracovný zošit č.2. Moderné vzdelávanie pre vedomostnú spoločnosť Elektrotechnické merania. Ing. Alžbeta Kršňáková Stredná priemyselná škola dopravná, Sokolská 911/94, 960 01 Zvolen Kód ITMS projektu: 26110130667 Názov projektu: Zvyšovanie flexibility absolventov v oblasti dopravy UČEBNÉ TEXTY Pracovný zošit č.2 Vzdelávacia

Διαβάστε περισσότερα

2. prednáška. Teória množín I. množina operácie nad množinami množinová algebra mohutnosť a enumerácia karteziánsky súčin

2. prednáška. Teória množín I. množina operácie nad množinami množinová algebra mohutnosť a enumerácia karteziánsky súčin 2. prednáška Teória množín I množina operácie nad množinami množinová algebra mohutnosť a enumerácia karteziánsky súčin Verzia: 27. 9. 2009 Priesvtika: 1 Definícia množiny Koncepcia množiny patrí medzi

Διαβάστε περισσότερα

Rozsah hodnotenia a spôsob výpočtu energetickej účinnosti rozvodu tepla

Rozsah hodnotenia a spôsob výpočtu energetickej účinnosti rozvodu tepla Rozsah hodnotenia a spôsob výpočtu energetickej účinnosti príloha č. 7 k vyhláške č. 428/2010 Názov prevádzkovateľa verejného : Spravbytkomfort a.s. Prešov Adresa: IČO: Volgogradská 88, 080 01 Prešov 31718523

Διαβάστε περισσότερα

RIEŠENIE WHEATSONOVHO MOSTÍKA

RIEŠENIE WHEATSONOVHO MOSTÍKA SNÁ PMYSLNÁ ŠKOL LKONKÁ V PŠŤNO KOMPLXNÁ PÁ Č. / ŠN WSONOVO MOSÍK Piešťany, október 00 utor : Marek eteš. Komplexná práca č. / Strana č. / Obsah:. eoretický rozbor Wheatsonovho mostíka. eoretický rozbor

Διαβάστε περισσότερα

Derivácia funkcie. Pravidlá derivovania výrazov obsahujúcich operácie. Derivácie elementárnych funkcií

Derivácia funkcie. Pravidlá derivovania výrazov obsahujúcich operácie. Derivácie elementárnych funkcií Derivácia funkcie Derivácia funkcie je jeden z najužitočnejších nástrojov, ktoré používame v matematike a jej aplikáciách v ďalších odboroch. Stručne zhrnieme základné informácie o deriváciách. Podrobnejšie

Διαβάστε περισσότερα

HASLIM112V, HASLIM123V, HASLIM136V HASLIM112Z, HASLIM123Z, HASLIM136Z HASLIM112S, HASLIM123S, HASLIM136S

HASLIM112V, HASLIM123V, HASLIM136V HASLIM112Z, HASLIM123Z, HASLIM136Z HASLIM112S, HASLIM123S, HASLIM136S PROUKTOVÝ LIST HKL SLIM č. sklad. karty / obj. číslo: HSLIM112V, HSLIM123V, HSLIM136V HSLIM112Z, HSLIM123Z, HSLIM136Z HSLIM112S, HSLIM123S, HSLIM136S fakturačný názov výrobku: HKL SLIMv 1,2kW HKL SLIMv

Διαβάστε περισσότερα

PRIEMER DROTU d = 0,4-6,3 mm

PRIEMER DROTU d = 0,4-6,3 mm PRUŽINY PRUŽINY SKRUTNÉ PRUŽINY VIAC AKO 200 RUHOV SKRUTNÝCH PRUŽÍN PRIEMER ROTU d = 0,4-6,3 mm èíslo 3.0 22.8.2008 8:28:57 22.8.2008 8:28:58 PRUŽINY SKRUTNÉ PRUŽINY TECHNICKÉ PARAMETRE h d L S Legenda

Διαβάστε περισσότερα

KATEDRA DOPRAVNEJ A MANIPULAČNEJ TECHNIKY Strojnícka fakulta, Žilinská Univerzita

KATEDRA DOPRAVNEJ A MANIPULAČNEJ TECHNIKY Strojnícka fakulta, Žilinská Univerzita 132 1 Absolútna chyba: ) = - skut absolútna ochýlka: ) ' = - spr. relatívna chyba: alebo Chyby (ochýlky): M systematické, M náhoné, M hrubé. Korekcia: k = spr - = - Î' pomerná korekcia: Správna honota:

Διαβάστε περισσότερα

Planárne a rovinné grafy

Planárne a rovinné grafy Planárne a rovinné grafy Definícia Graf G sa nazýva planárny, ak existuje jeho nakreslenie D, v ktorom sa žiadne dve hrany nepretínajú. D sa potom nazýva rovinný graf. Planárne a rovinné grafy Definícia

Διαβάστε περισσότερα

KOMPILÁTORY: Syntaxou riadený preklad. Jana Dvořáková

KOMPILÁTORY: Syntaxou riadený preklad. Jana Dvořáková KOMPILÁTORY: Syntaxou riadený preklad Jana Dvořáková dvorakova@dcs.fmph.uniba.sk Čo je syntaxou riadený preklad? Celý kompilátor je riadený procesom parsovania Syntaxou riadený preklad = prepojenie syntaktickej

Διαβάστε περισσότερα

REZISTORY. Rezistory (súčiastky) sú pasívne prvky. Používajú sa vo všetkých elektrických

REZISTORY. Rezistory (súčiastky) sú pasívne prvky. Používajú sa vo všetkých elektrických REZISTORY Rezistory (súčiastky) sú pasívne prvky. Používajú sa vo všetkých elektrických obvodoch. Základnou vlastnosťou rezistora je jeho odpor. Odpor je fyzikálna vlastnosť, ktorá je daná štruktúrou materiálu

Διαβάστε περισσότερα

Spojité rozdelenia pravdepodobnosti. Pomôcka k predmetu PaŠ. RNDr. Aleš Kozubík, PhD. 26. marca Domovská stránka. Titulná strana.

Spojité rozdelenia pravdepodobnosti. Pomôcka k predmetu PaŠ. RNDr. Aleš Kozubík, PhD. 26. marca Domovská stránka. Titulná strana. Spojité rozdelenia pravdepodobnosti Pomôcka k predmetu PaŠ Strana z 7 RNDr. Aleš Kozubík, PhD. 6. marca 3 Zoznam obrázkov Rovnomerné rozdelenie Ro (a, b). Definícia.........................................

Διαβάστε περισσότερα

C. Kontaktný fasádny zatepľovací systém

C. Kontaktný fasádny zatepľovací systém C. Kontaktný fasádny zatepľovací systém C.1. Tepelná izolácia penový polystyrén C.2. Tepelná izolácia minerálne dosky alebo lamely C.3. Tepelná izolácia extrudovaný polystyrén C.4. Tepelná izolácia penový

Διαβάστε περισσότερα

3. Striedavé prúdy. Sínusoida

3. Striedavé prúdy. Sínusoida . Striedavé prúdy VZNIK: Striedavý elektrický prúd prechádza obvodom, ktorý je pripojený na zdroj striedavého napätia. Striedavé napätie vyrába synchrónny generátor, kde na koncoch rotorového vinutia sa

Διαβάστε περισσότερα

KLP-100 / KLP-104 / KLP-108 / KLP-112 KLP-P100 / KLP-P104 / KLP-P108 / KLP-P112 KHU-102P / KVM-520 / KIP-603 / KVS-104P

KLP-100 / KLP-104 / KLP-108 / KLP-112 KLP-P100 / KLP-P104 / KLP-P108 / KLP-P112 KHU-102P / KVM-520 / KIP-603 / KVS-104P Inštalačný manuál KLP-100 / KLP-104 / KLP-108 / KLP-112 KLP-P100 / KLP-P104 / KLP-P108 / KLP-P112 KHU-102P / KVM-520 / KIP-603 / KVS-104P EXIM Alarm s.r.o. Solivarská 50 080 01 Prešov Tel/Fax: 051 77 21

Διαβάστε περισσότερα

Model redistribúcie krvi

Model redistribúcie krvi .xlsx/pracovný postup Cieľ: Vyhodnoťte redistribúciu krvi na začiatku cirkulačného šoku pomocou modelu založeného na analógii s elektrickým obvodom. Úlohy: 1. Simulujte redistribúciu krvi v ľudskom tele

Διαβάστε περισσότερα

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY MINIMAXNÉ OPTIMÁLNE NÁVRHY REGRESNÝCH EXPERIMENTOV DIPLOMOVÁ PRÁCA 2014 Bc. Gabriel GROMAN UNIVERZITA KOMENSKÉHO V BRATISLAVE

Διαβάστε περισσότερα

Symbolická logika. Stanislav Krajči. Prírodovedecká fakulta

Symbolická logika. Stanislav Krajči. Prírodovedecká fakulta Symbolická logika Stanislav Krajči Prírodovedecká fakulta UPJŠ Košice 2008 Názov diela: Symbolická logika Autor: Doc. RNDr. Stanislav Krajči, PhD. Vydala: c UPJŠ Košice, 2008 Recenzovali: Doc. RNDr. Miroslav

Διαβάστε περισσότερα

3. kapitola. Axiomatická formulácia modálnej logiky Vzťah medzi syntaxou a sémantikou. priesvitka 1

3. kapitola. Axiomatická formulácia modálnej logiky Vzťah medzi syntaxou a sémantikou. priesvitka 1 3. kapitola Axiomatická formulácia modálnej logiky Vzťah medzi syntaxou a sémantikou priesvitka 1 Axiomatická výstavba modálnej logiky Cieľom tejto prednášky je ukázať axiomatickú výstavbu rôznych verzií

Διαβάστε περισσότερα

Pevné ložiská. Voľné ložiská

Pevné ložiská. Voľné ložiská SUPPORTS D EXTREMITES DE PRECISION - SUPPORT UNIT FOR BALLSCREWS LOŽISKA PRE GULIČKOVÉ SKRUTKY A TRAPÉZOVÉ SKRUTKY Výber správnej podpory konca uličkovej skrutky či trapézovej skrutky je dôležité pre správnu

Διαβάστε περισσότερα

KURZ JAZYKA C učebný text pre kvartu a kvintu osemročného gymnázia

KURZ JAZYKA C učebný text pre kvartu a kvintu osemročného gymnázia Škola pre Mimoriadne Nadané Deti a Gymnázium, Teplická 7, 831 02 Bratislava Anino BELAN KURZ JAZYKA C učebný text pre kvartu a kvintu osemročného gymnázia 2. vydanie BRATISLAVA 2003 2011 Copyright 2011,

Διαβάστε περισσότερα

Kompilátory Syntaxou riadený preklad. Ján Šturc Zima 2009

Kompilátory Syntaxou riadený preklad. Ján Šturc Zima 2009 Kompilátory Syntaxou riadený preklad Ján Šturc Zima 2009 Syntaxou riadené definície Symbolom gramatiky sú priradené atribúty, ktoré nesú dodačnú informáciu o konštrukciách rozpoznávaných syntaxou. Hodnoty

Διαβάστε περισσότερα

Kódovanie a dekódovanie

Kódovanie a dekódovanie Kódovanie a deovanie 1 Je daná množina B={0,1,2} Zostrojte množinu B* všetkých možných slov dĺžky dva 2 Je daná zdrojová abeceda A={α,β,ϕ,τ} Navrhnite príklady aspoň dvoch prostých ovaní týchto zdrojových

Διαβάστε περισσότερα

6 APLIKÁCIE FUNKCIE DVOCH PREMENNÝCH

6 APLIKÁCIE FUNKCIE DVOCH PREMENNÝCH 6 APLIKÁCIE FUNKCIE DVOCH PREMENNÝCH 6. Otázky Definujte pojem produkčná funkcia. Definujte pojem marginálny produkt. 6. Produkčná funkcia a marginálny produkt Definícia 6. Ak v ekonomickom procese počet

Διαβάστε περισσότερα

Chí kvadrát test dobrej zhody. Metódy riešenia úloh z pravdepodobnosti a štatistiky

Chí kvadrát test dobrej zhody. Metódy riešenia úloh z pravdepodobnosti a štatistiky Chí kvadrát test dobrej zhody Metódy riešenia úloh z pravdepodobnosti a štatistiky www.iam.fmph.uniba.sk/institute/stehlikova Test dobrej zhody I. Chceme overiť, či naše dáta pochádzajú z konkrétneho pravdep.

Διαβάστε περισσότερα

Riešenie rovníc s aplikáciou na elektrické obvody

Riešenie rovníc s aplikáciou na elektrické obvody Zadanie č.1 Riešenie rovníc s aplikáciou na elektrické obvody Nasledujúce uvedené poznatky z oblasti riešenia elektrických obvodov pomocou metódy slučkových prúdov a uzlových napätí je potrebné využiť

Διαβάστε περισσότερα

Motivácia pojmu derivácia

Motivácia pojmu derivácia Derivácia funkcie Motivácia pojmu derivácia Zaujíma nás priemerná intenzita zmeny nejakej veličiny (dráhy, rastu populácie, veľkosti elektrického náboja, hmotnosti), vzhľadom na inú veličinu (čas, dĺžka)

Διαβάστε περισσότερα

Obsah. 1.1 Reálne čísla a ich základné vlastnosti... 7 1.1.1 Komplexné čísla... 8

Obsah. 1.1 Reálne čísla a ich základné vlastnosti... 7 1.1.1 Komplexné čísla... 8 Obsah 1 Číselné obory 7 1.1 Reálne čísla a ich základné vlastnosti............................ 7 1.1.1 Komplexné čísla................................... 8 1.2 Číselné množiny.......................................

Διαβάστε περισσότερα

2 Chyby a neistoty merania, zápis výsledku merania

2 Chyby a neistoty merania, zápis výsledku merania 2 Chyby a neistoty merania, zápis výsledku merania Akej chyby sa môžeme dopustiť pri meraní na stopkách? Ako určíme ich presnosť? Základné pojmy: chyba merania, hrubé chyby, systematické chyby, náhodné

Διαβάστε περισσότερα

1-MAT-220 Algebra februára 2012

1-MAT-220 Algebra februára 2012 1-MAT-220 Algebra 1 12. februára 2012 Obsah 1 Grupy 3 1.1 Binárne operácie.................................. 3 1.2 Cayleyho veta.................................... 3 2 Faktorizácia 5 2.1 Relácie ekvivalencie

Διαβάστε περισσότερα

KURZ JAZYKA C učebný text pre kvartu a kvintu osemročného gymnázia

KURZ JAZYKA C učebný text pre kvartu a kvintu osemročného gymnázia Škola pre Mimoriadne Nadané Deti a Gymnázium, Teplická 7, 831 02 Bratislava Mgr. Anino BELAN KURZ JAZYKA C učebný text pre kvartu a kvintu osemročného gymnázia BRATISLAVA 2003 1 2 Obsah Úvod...4 Totálny

Διαβάστε περισσότερα

Harmonizované technické špecifikácie Trieda GP - CS lv EN Pevnosť v tlaku 6 N/mm² EN Prídržnosť

Harmonizované technické špecifikácie Trieda GP - CS lv EN Pevnosť v tlaku 6 N/mm² EN Prídržnosť Baumit Prednástrek / Vorspritzer Vyhlásenie o parametroch č.: 01-BSK- Prednástrek / Vorspritzer 1. Jedinečný identifikačný kód typu a výrobku: Baumit Prednástrek / Vorspritzer 2. Typ, číslo výrobnej dávky

Διαβάστε περισσότερα

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy

Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy Jednotkový koreň (unit root), diferencovanie časového radu, unit root testy Beáta Stehlíková Časové rady, FMFI UK, 2013/2014 Jednotkový koreň(unit root),diferencovanie časového radu, unit root testy p.1/27

Διαβάστε περισσότερα

Vektorový priestor V : Množina prvkov (vektory), na ktorej je definované ich sčítanie a ich

Vektorový priestor V : Množina prvkov (vektory), na ktorej je definované ich sčítanie a ich Tuesday 15 th January, 2013, 19:53 Základy tenzorového počtu M.Gintner Vektorový priestor V : Množina prvkov (vektory), na ktorej je definované ich sčítanie a ich násobenie reálnym číslom tak, že platí:

Διαβάστε περισσότερα

Reálna funkcia reálnej premennej

Reálna funkcia reálnej premennej (ÚMV/MAN3a/10) RNDr. Ivan Mojsej, PhD ivan.mojsej@upjs.sk 18.10.2012 Úvod V každodennom živote, hlavne pri skúmaní prírodných javov, procesov sa stretávame so závislosťou veľkosti niektorých veličín od

Διαβάστε περισσότερα

Podnikateľ 90 Mobilný telefón Cena 95 % 50 % 25 %

Podnikateľ 90 Mobilný telefón Cena 95 % 50 % 25 % Podnikateľ 90 Samsung S5230 Samsung C3530 Nokia C5 Samsung Shark Slider S3550 Samsung Xcover 271 T-Mobile Pulse Mini Sony Ericsson ZYLO Sony Ericsson Cedar LG GM360 Viewty Snap Nokia C3 Sony Ericsson ZYLO

Διαβάστε περισσότερα

ZÁSADY VYPRACOVANIA BAKALÁRSKYCH PRÁC

ZÁSADY VYPRACOVANIA BAKALÁRSKYCH PRÁC Dubnický technologický inštitút v Dubnici nad Váhom Dubnica Institute of Technology in Dubnica nad Váhom ZÁSADY VYPRACOVANIA BAKALÁRSKYCH PRÁC v akademickom roku 2011/2012 1) Úvodne ustanovenia Bakalárska

Διαβάστε περισσότερα

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA CHEMICKEJ A POTRAVINÁRSKEJ TECHNOLÓGIE Ústav informatizácie, automatizácie a matematiky

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA CHEMICKEJ A POTRAVINÁRSKEJ TECHNOLÓGIE Ústav informatizácie, automatizácie a matematiky SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA CHEMICKEJ A POTRAVINÁRSKEJ TECHNOLÓGIE Ústav informatizácie, automatizácie a matematiky Semestrálny projekt E-learning: Proseminár z matematiky a Matematika

Διαβάστε περισσότερα

Aproximačné algoritmy. (7. októbra 2010) DRAFT

Aproximačné algoritmy. (7. októbra 2010) DRAFT R. Královič Aproximačné algoritmy (7. októbra 2010) ii Obsah 1 Úvod 1 1.1 Algoritmy a zložitosť........................... 1 1.2 Lineárne programovanie......................... 1 1.3 Použité vzťahy..............................

Διαβάστε περισσότερα

Numerické metódy Zbierka úloh

Numerické metódy Zbierka úloh Blanka Baculíková Ivan Daňo Numerické metódy Zbierka úloh Strana 1 z 37 Predhovor 3 1 Nelineárne rovnice 4 2 Sústavy lineárnych rovníc 7 3 Sústavy nelineárnych rovníc 1 4 Interpolačné polynómy 14 5 Aproximácia

Διαβάστε περισσότερα

Život vedca krajší od vysnívaného... s prírodou na hladine α R-P-R

Život vedca krajší od vysnívaného... s prírodou na hladine α R-P-R Život vedca krajší od vysnívaného... s prírodou na hladine α R-P-R Ako nadprirodzené stretnutie s murárikom červenokrídlym naformátovalo môj profesijný i súkromný život... Osudové stretnutie s murárikom

Διαβάστε περισσότερα

Definícia parciálna derivácia funkcie podľa premennej x. Definícia parciálna derivácia funkcie podľa premennej y. Ak existuje limita.

Definícia parciálna derivácia funkcie podľa premennej x. Definícia parciálna derivácia funkcie podľa premennej y. Ak existuje limita. Teória prednáška č. 9 Deinícia parciálna deriácia nkcie podľa premennej Nech nkcia Ak eistje limita je deinoaná okolí bod [ ] lim. tak túto limit nazýame parciálno deriácio nkcie podľa premennej bode [

Διαβάστε περισσότερα

SLOVENSKO maloobchodný cenník (bez DPH)

SLOVENSKO maloobchodný cenník (bez DPH) Hofatex UD strecha / stena - exteriér Podkrytinová izolácia vhodná aj na zaklopenie drevených rámových konštrukcií; pero a drážka EN 13171, EN 622 22 580 2500 1,45 5,7 100 145,00 3,19 829 hustota cca.

Διαβάστε περισσότερα

1 Prevod miestneho stredného slnečného času LMT 1 na iný miestny stredný slnečný čas LMT 2

1 Prevod miestneho stredného slnečného času LMT 1 na iný miestny stredný slnečný čas LMT 2 1 Prevod miestneho stredného slnečného času LMT 1 na iný miestny stredný slnečný čas LMT 2 Rozdiel LMT medzi dvoma miestami sa rovná rozdielu ich zemepisných dĺžok. Pre prevod miestnych časov platí, že

Διαβάστε περισσότερα

η = 1,0-(f ck -50)/200 pre 50 < f ck 90 MPa

η = 1,0-(f ck -50)/200 pre 50 < f ck 90 MPa 1.4.1. Návrh priečneho rezu a pozĺžnej výstuže prierezu ateriálové charakteristiky: - betón: napr. C 0/5 f ck [Pa]; f ctm [Pa]; fck f α [Pa]; γ cc C pričom: α cc 1,00; γ C 1,50; η 1,0 pre f ck 50 Pa η

Διαβάστε περισσότερα

Analýza údajov. W bozóny.

Analýza údajov. W bozóny. Analýza údajov W bozóny http://www.physicsmasterclasses.org/index.php 1 Identifikácia častíc https://kjende.web.cern.ch/kjende/sl/wpath_teilchenid1.htm 2 Identifikácia častíc Cvičenie 1 Na web stránke

Διαβάστε περισσότερα

ALGEBRA. Číselné množiny a operácie s nimi. Úprava algebrických výrazov

ALGEBRA. Číselné množiny a operácie s nimi. Úprava algebrických výrazov ALGEBRA Číselné množiny a operácie s nimi. Úprava algebrických výrazov Definícia Množinu považujeme za určenú, ak vieme o ľubovoľnom objekte rozhodnúť, či je alebo nie je prvkom množiny. Množinu určujeme

Διαβάστε περισσότερα

Pravdivostná hodnota negácie výroku A je opačná ako pravdivostná hodnota výroku A.

Pravdivostná hodnota negácie výroku A je opačná ako pravdivostná hodnota výroku A. 7. Negácie výrokov Negácie jednoduchých výrokov tvoríme tak, že vytvoríme tvrdenie, ktoré popiera pôvodný výrok. Najčastejšie negujeme prísudok alebo použijeme vetu Nie je pravda, že.... Výrok A: Prší.

Διαβάστε περισσότερα

Kontrolné otázky na kvíz z jednotiek fyzikálnych veličín. Upozornenie: Umiestnenie správnej a nesprávnych odpovedí sa môže v teste meniť.

Kontrolné otázky na kvíz z jednotiek fyzikálnych veličín. Upozornenie: Umiestnenie správnej a nesprávnych odpovedí sa môže v teste meniť. Kontrolné otázky na kvíz z jednotiek fyzikálnych veličín Upozornenie: Umiestnenie správnej a nesprávnych odpovedí sa môže v teste meniť. Ktoré fyzikálne jednotky zodpovedajú sústave SI: a) Dĺžka, čas,

Διαβάστε περισσότερα

Príklady na precvičovanie Fourierove rady

Príklady na precvičovanie Fourierove rady Príklady na precvičovanie Fourierove rady Ďalším významným typom funkcionálnych radov sú trigonometrické rady, pri ktorých sú jednotlivé členy trigonometrickými funkciami. Konkrétne, jedná sa o rady tvaru

Διαβάστε περισσότερα

Tutoriál3 : Využitie grafických možností jazyka Matlab

Tutoriál3 : Využitie grafických možností jazyka Matlab NÁPLŇ 1. ÚVOD DO PRÁCE S GRAFIKOU 2. 2D GRAFIKA 3. 3D GRAFIKA 4. PRÍKLADY NA SAMOSTATNÉ RIEŠENIE 1 Matlab ponúka rýchlu a kvalitnú reprezentáciu funkcií vo forme grafov. Disponuje pokročilou grafikou v

Διαβάστε περισσότερα

Riadenie zásobníkov kvapaliny

Riadenie zásobníkov kvapaliny Kapitola 9 Riadenie zásobníkov kvapaliny Cieľom cvičenia je zvládnuť návrh (syntézu) regulátorov výpočtovými (analytickými) metódami Naslinovou metódou a metódou umiestnenia pólov. Navrhnuté regulátory

Διαβάστε περισσότερα

u R Pasívne prvky R, L, C v obvode striedavého prúdu Činný odpor R Napätie zdroja sa rovná úbytku napätia na činnom odpore.

u R Pasívne prvky R, L, C v obvode striedavého prúdu Činný odpor R Napätie zdroja sa rovná úbytku napätia na činnom odpore. Pasívne prvky, L, C v obvode stredavého prúdu Čnný odpor u u prebeh prúdu a napäta fázorový dagram prúdu a napäta u u /2 /2 t Napäte zdroja sa rovná úbytku napäta na čnnom odpore. Prúd je vo fáze s napätím.

Διαβάστε περισσότερα

KATALÓG KRUHOVÉ POTRUBIE

KATALÓG KRUHOVÉ POTRUBIE H KATALÓG KRUHOVÉ POTRUBIE 0 Základné požiadavky zadávania VZT potrubia pre výrobu 1. Zadávanie do výroby v spoločnosti APIAGRA s.r.o. V digitálnej forme na tlačive F05-8.0_Rozpis_potrubia, zaslané mailom

Διαβάστε περισσότερα

3. prednáška. Komplexné čísla

3. prednáška. Komplexné čísla 3. predáška Komplexé čísla Úvodé pozámky Vieme, že existujú také kvadratické rovice, ktoré emajú riešeie v obore reálych čísel. Študujme kvadratickú rovicu x x + 5 = 0 Použitím štadardej formule pre výpočet

Διαβάστε περισσότερα

Riešenie úloh v simulačnom jazyku MATLAB s využitím skriptov a funkcií

Riešenie úloh v simulačnom jazyku MATLAB s využitím skriptov a funkcií Riešenie úloh vsimulačnom využitím skriptov s.m, ktorý slúži na ukladanie postupnosti, alebo na ukladanie užívateľských funkcií. Využívajú sa predovšetkým vtedy, keď je potrebné zadať väčšie množstvo príkazov,

Διαβάστε περισσότερα