%% History:
% Pavel Tvrdik (26.12.2004)
%  + initial version for PhD Report
%
% Daniel Sykora (27.01.2005)
%
%  Michal Valenta (23.5. 2005)
% Upraveno a vyuzito pro formatovani diplomovych praci
% prozatim pouze v cestine.
%
% Michal Valenta (29.4. 2008)
% Preklopeno do kodovani UTF-8 a mirne doplneno
% dle http://en.wikibooks.org/wiki/LaTeX/Internationalization
% Michal Valenta (1.5. 2008)
% doplneno nekolik postrehu a pripominek Martina Duška.

% M. Dušek poukazuje, ze tato varianta cestiny ma mnohem
% hezci fonty. Na me konfiguraci latexu to ale nezije :-(.
%\documentclass[11pt,twoside,a4paper,czech]{mr}%two-page printing
%\usepackage[utf8]{inputenc}


\documentclass[11pt,twoside,a4paper]{mr}%two-page printing
\usepackage[czech]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}

\usepackage{graphicx}


\input diplbakmacro.tex   % specialni makra pro formatovani DP a BP

 % muzete si vytvorit i sva vlastni  v souboru diplbakmacro.tex
 % najdete  radu jednoduchych definic, ktere zde ani nejsou pouzity
 % napriklad:
 % \newcommand{\bfig}{\begin{figure}\begin{center}}
 % \newcommand{\efig}{\end{center}\end{figure}}
 % umoznuje pouzit prikaz \bfig namisto \begin{figure}\begin{center} atd.

\newcommand\TypeOfWork{Bakalářská práce}
\newcommand\WorkTitle{Úprava minimalizačního nástroje ESPRESSO}
\newcommand\FirstandFamilyName{Martin Miklánek}
\newcommand\Month{červen}
\newcommand\Year{2008}
\newcommand\Supervisor{Ing. Petr Fišer, Ph.D.}

\newcommand\StudProgram{Elektrotechnika a informatika strukturovaný bakalářský}
\newcommand\StudBranch{Informatika a výpočetní technika}
\newcommand\Faculty{Fakulta elektrotechnická}
\newcommand\University{České vysoké učení technické v Praze}

% Pouzijete-li pdflatex, tak je prijmene, kdyz bude mit vase prace
% klikaci obsah
\usepackage[
pdftitle={\WorkTitle},
pdfauthor={\FirstandFamilyName},
bookmarks=true,
colorlinks=true,
breaklinks=true,
urlcolor=red,
citecolor=blue,
linkcolor=blue,
unicode=true,
]
{hyperref}


\begin{document}

% Nasledujici pasaz uzavrenou v {} ve sve praci samozrejme
% zakomentujte nebo odstrante.
% Ve vysledne svazane praci bude nahrazena skutecnym
% oficialnim zadanim vasi prace.
{
\pagenumbering{roman} \cleardoublepage \thispagestyle{empty}
\chapter*{Na tomto místě bude oficiální zadání vaší práce}
\begin{itemize}
\item Toto zadání je podepsané děkanem a vedoucím katedry,
\item musíte si ho vyzvednout na studiijním oddělení Katedry počítačů na Karlově náměstí,
\item v jedné odevzdané práci bude originál tohoto zadání (originál zůstává po obhajobě na katedře),
\item ve druhé bude na stejném místě neověřená kopie tohoto dokumentu (tato se vám vrátí po obhajobě).
\end{itemize}
\newpage
}

\cleardoublepage

\coverpagestarts

\cleardoublepage %\thispagestyle{empty}
\vspace*{\fill}
\chapter*{Poděkování}
Děkuji všem, kteří mi pomohli a měli se mnou trpělivost. 

\cleardoublepage %\thispagestyle{empty}
\vspace*{\fill}
\chapter*{Prohlášení}
Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu.

Nemám závažný důvod proti užití tohoto školního díla ve smyslu \S 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a  o změně některých zákonů (autorský zákon).
\\[15mm]
V  Praze dne 11.7. 2008   \hfill \hbox to 70mm{\tiny\dotfill}

\cleardoublepage%\thispagestyle{empty}
\chapter*{Abstract}
The main aim of this bachelor work was to create a library from already
existing tool Espresso, designed for minimization of logical functions.

Except design and implementation of this library interface, the work also
includes transformation of the original source code from K{\&}R C language
to C++ language.

The library was meant to be applicable under operating system MS Windows and
Linux and available in static and dynamic version.

\vglue60mm
\chapter*{Abstrakt}
C\'{\i}lem bakal\'{a}řsk\'{e} pr\'{a}ce bylo vytvořit knihovnu z~ji\v{z}
existuj\'{\i}c\'{\i}ho n\'{a}stroje Espresso, slou\v{z}\'{\i}c\'{\i}ho pro
minimalizaci logick\'{y}ch funkc\'{\i}.

Pr\'{a}ce, kromě n\'{a}vrhu a implementace rozhran\'{\i} knihovny, zahrnuje
tak\'{e} transformaci původn\'{\i}ch zdrojov\'{y}ch k\'{o}dů z~jazyka K{\&}R
C do jazyka C++.

Knihovna měla b\'{y}t pou\v{z}iteln\'{a} pod operačn\'{\i}mi syst\'{e}my
Microsoft Windows a Linux, a to jak ve~statick\'{e}, tak i dynamick\'{e}
verzi.

\cleardoublepage%\thispagestyle{empty}
\tableofcontents

\cleardoublepage%\thispagestyle{empty}
\listoffigures
\addcontentsline{toc}{chapter}{\protect\numberline{}{Seznam obrázků}}

\cleardoublepage%\thispagestyle{empty}
\listoftables
\addcontentsline{toc}{chapter}{\protect\numberline{}{Seznam tabulek}}


%**************************************************************
\cleardoublepage%\thispagestyle{empty}

\mainbodystarts
\parskip=5pt

%**************************************************************

% Pro snadnejsi praci s vetsimi texty je rozumne tyto rozdelit
% do samostatnych souboru nejlepe dle kapitol a tyto potom vkladat
% pomoci prikazu \include{jmeno_souboru.tex}
% ve vyslednem textu je dobre, kdyz kazda kapitola zacina na liche strance tedy pouzijte:
%\cleardoublepage\include{1_uvod}
%\cleardoublepage\include{2_teorie}
% atd...

\cleardoublepage\include{1_uvod}
\cleardoublepage\include{2_popis}
\cleardoublepage\include{3_struktura}
\cleardoublepage\include{4_analyzaimplementace}
\cleardoublepage\include{5_testovani}
\cleardoublepage\include{6_zaver}

%*****************************************************************************
% seznam literatury
% je v samostatnem souboru reference.bib
% ten upravte dle vlastnich potreb
% potom zpracujte (a do textu zapracujte)
% pomoci prikazu bibtex a nasledne pdflatex (nebo latex)
% druhy z nich alespon 2x, aby se poresily reference
\cleardoublepage
\bibliography{reference}
%bibliographystyle{plain}
\bibliographystyle{abbrv}

% M. Dušek radi:
%\bibliographystyle{alpha}
% kdy citace ma tvar [AutorRok] (napriklad [Cook97]). Sice to asi neni  podle ceske normy (BTW BibTeX stejne neodpovida ceske norme), ale je to nejprehlednejsi.

%*************************************************************************

\cleardoublepage
\appendix
\chapter{Příloha k portacím}
\section{Popis balíčků původního Espressa}\label{Balicky}
Informativn\'{\i} popis bal\'{\i}čků:
\begin{itemize}
\item ERRTRAP - obsluha z\'{a}va\v{z}n\'{y}ch chyb
\item ESPRESSO - funkce samotn\'{e}ho Espressa
\item MM - spr\'{a}va paměti (funkce malloc, free,{\ldots})
\item PORT - bal\'{\i}k funkc\'{\i} umo\v{z}ňuj\'{\i}c\'{\i} přenositelnost mezi různ\'{y}mi operačn\'{\i}mi syst\'{e}my
\item ST - bal\'{\i}k implementuj\'{\i}c\'{\i} tabulku řetězců
\item UPRINTF - umo\v{z}ňuje u\v{z}ivatelovi vypsat form\'{a}tovan\'{y} řetězec na určen\'{y} v\'{y}stup
\item UTILITY - bal\'{\i}k bě\v{z}ně pou\v{z}\'{\i}van\'{y}ch funkc\'{\i} a maker
\end{itemize}

\section{Příloha k portaci do ANSI C}\label{PrilohaAnsi}
Zde je uveden jenom útržek zmíněných problémů

{\bf Konfliktn\'{\i} typy -- }\v{s}lo o deklaraci funkce se stejn\'{y}m 
jm\'{e}nem, jako m\'{a} knihovn\'{\i} funkce, kterou autor deklaroval 
s~odli\v{s}n\'{y}m typem -- v~minulosti se nam\'{\i}sto typu {\it void*} 
pou\v{z}\'{\i}val typ {\it char*. }Ře\v{s}ilo se to přeps\'{a}n\'{\i}m prototypu a 
pou\v{z}it\'{\i} přetypov\'{a}n\'{\i} na př\'{\i}slu\v{s}n\'{y} typ při 
ka\v{z}d\'{e}m vol\'{a}n\'{\i} t\'{e}to funkce. Např. knihovn\'{\i} funkce 
{\it qsort()},{\ldots}

{\bf Redefinice -- }knihovn\'{\i} funkce a autorem definovan\'{a} funkce 
měli stejn\'{y} prototyp a u v\v{s}ech př\'{\i}padů měli i stejnou funkci. 
To nastalo v~př\'{\i}pade, kdy si autor s\'{a}m implementoval funkci, 
kter\'{a} se později stala souč\'{a}st\'{\i} standardn\'{\i} knihovny. Tato 
chyba se ře\v{s}ila odstraněn\'{\i}m autorovy funkce a pou\v{z}it\'{\i} 
knihovn\'{\i}.

\section{Příloha k portaci do C++}\label{PrilohaCpp}
Při změně zdrojov\'{e}ho k\'{o}du z~jazyka C do jazyka C++ se vyskytly tři 
typy probl\'{e}mů:

\begin{enumerate}
\item {\bf přeps\'{a}n\'{\i} n\'{a}zvů knihoven}\\ 
	\begin{itemize}
	\item hlavičkov\'{e} soubory v~C maj\'{\i} tvar: {\it nazev}.h
	\item ekvivalentn\'{\i} knihovny v~C++ maj\'{\i} tvar: c{\it nazev}
	\end{itemize}
kde {\it nazev} je: stdio, stdlib, time, math, assert, string, limits.
\item {\bf Konflikt nov\'{y}ch kl\'{\i}čov\'{y}ch slov}\\
Jazyk C++ byl roz\v{s}\'{\i}řen o několik kl\'{\i}čov\'{y}ch slov. Tato 
slova nane\v{s}těst\'{\i} kolidovala s:
\begin{enumerate}
\item[\textbullet] n\'{a}zvy někter\'{y}ch funkc\'{\i}, např. funkce delete a new, byly přejmenov\'{a}ny na delete{\_} (s n\'{\i} p\'{a}rov\'{a} funkce insert{\_}) a new{\_}
\item[\textbullet] autor si definoval booleovskou proměnnou pro tř\'{\i}hodnotovou logiku a nazval ji v\'{y}sti\v{z}ně {\it bool}. To je v~konfliktu s~definic\'{\i} {\it bool}-u v~C++. Autorův {\it bool} byl proto nazv\'{a}n {\it bool3} a konflikt byl vyře\v{s}en.
\end{enumerate}
\item {\bf konflikt maker}\\
C++ definuje několik maker nav\'{\i}c, kter\'{e} byla v~konfliktu s~ji\v{z} 
definovan\'{y}mi makrami a funkcemi. Probl\'{e}mov\'{e} byly makra {\it false}, {\it or}, 
{\it and}, kter\'{e} autor Espressa pou\v{z}il jako n\'{a}zvy n\'{a}vě\v{s}t\'{\i} 
nebo proměnn\'{y}ch. Opět to bylo vyře\v{s}eno n\'{a}hradou původn\'{\i}ch 
n\'{a}zvů za {\it false{\_}}, {\it or{\_}}, a {\it and{\_}.}
\end{enumerate}


\cleardoublepage\include{PrilohyStruct}

\cleardoublepage
\chapter{Seznam použitých zkratek}
\begin{description}

\item[ANSI] American National Standardization Institute
\item[GCC] GNU C Compiler
\item[ISO] International Standardization Organization
\item[K\&R] Kernighan and Ritchie
\item[PLA] Programmable logic array

\end{description}

\cleardoublepage
\chapter{Obsah přiloženého optického média}
\begin{figure}[h]
\begin{center}
\includegraphics[width=16cm]{dirlist}
\caption{Adresářová struktura přiloženého optického disku}
\label{seznamcd}
\end{center}
\end{figure}
V~kořenov\'{e}m adres\'{a}ři se nach\'{a}z\'{\i} soubor {\bf READ.ME}, 
kter\'{y} obsahuje z\'{a}kladn\'{\i} informace o obsahu v\v{s}ech 
hlavn\'{\i}ch adres\'{a}řů na optick\'{e}m m\'{e}diu. Jednotliv\'{e} 
adres\'{a}ře rovně\v{z} obsahuj\'{\i} soubor READ.ME, kter\'{y} je 
specifick\'{y} pro ka\v{z}d\'{y} adres\'{a}ř zvl\'{a}\v{s}ť a obsahuje 
bli\v{z}\v{s}i informace, je li to potřebn\'{e}.
Z\'{a}kladn\'{\i} popis adres\'{a}řů: 
\begin{itemize}
\item {\bf exe }-- obsahuje dva adres\'{a}ře Linux a Windows, a v~kter\'{y}ch se nach\'{a}zej\'{\i} zkompilovan\'{e} knihovny a tak\'{e} n\'{a}zorn\'{e} uk\'{a}\v{z}ky pou\v{z}it\'{\i} těchto knihoven.
\item {\bf src} -- obsahu zdrojov\'{e} k\'{o}dy knihovny připraven\'{e} ke kompilov\'{a}n\'{\i} pod po\v{z}adovan\'{y}m operačn\'{\i}m syst\'{e}mem a v~po\v{z}adovan\'{e} verzi
\item {\bf test} -- adres\'{a}ř obsahuj\'{\i}c\'{\i} testovac\'{\i} data a specieln\'{\i} k\'{o}d, kter\'{y} pou\v{z}\'{\i}v\'{a} v\'{y}slednou knihovnu a zkou\v{s}\'{\i} jej\'{\i} funkčnost na různ\'{y}ch vstupn\'{\i}ch funkc\'{\i}ch
\item {\bf text} -- tento adres\'{a}ř obsahuje textovou formu t\'{e}to bakal\'{a}řsk\'{e} pr\'{a}ce a to jak v~TeX tak v~PDF form\'{a}tu.
\end{itemize}


% pro tisk je dobre, aby dokument mel sudy pocet stranek.
% proto:
\cleardoublepage

\end{document}
