% % 00-diploma-thesis.tex % % Developed by Ondrej Jombik % Copyright (c) 2003-2007 Platon Group, http://platon.sk/ % Licensed under terms of GNU General Public License. % All rights reserved. % % Changelog: % 2007-08-08 - created % % $Platon: doc/ztp-zbierka/00-diploma-thesis.tex,v 1.4 2007-08-16 12:42:52 nepto Exp $ %% %% Cestne prehlasenie %% \thispagestyle{plain} \mbox{} % potrebujeme dat nieco prazdne na zaciatok stranky, aby % zafungoval \vfill \vfill \begin{minipage}[b!]{\textwidth} Čestne vyhlasujem, že predkladanú diplomovú prácu som vypracoval samostatne s~využitím uvedenej literatúry. \bigskip \bigskip \bigskip \begin{flushright} \begin{tabular}{ccc} \hline \hspace{1cm} & Ondrej Jombík & \hspace{1cm} \end{tabular} \end{flushright} \bigskip \end{minipage} \newpage %% %% Podakovanie %% \thispagestyle{plain} \mbox{} % potrebujeme dat nieco prazdne na zaciatok stranky, aby % zafungoval \vfill \vfill %\newlength{\odstavec} %\setlength{\odstavec}{\hsize} \begin{flushright} \newlength{\sirkaPodakovania} \newsavebox{\podakovanie} \savebox{\podakovanie}{ Ďakujem môjmu diplomovému vedúcemu \textsc{RNDr.~Dušanovi} % Martišovitšovi,~CSc.} } % zistime sirku riadku a na takuto sirku text narofmatujeme % To preto, aby sa meno zle nelamalo \settowidth{\sirkaPodakovania}{\usebox{\podakovanie}} %\parbox{16cm}{ \noindent \parbox{\sirkaPodakovania}{ \noindent Ďakujem môjmu diplomovému vedúcemu \textsc{RNDr.~Dušanovi Gullerovi,~PhD.} za cenné rady a odbornú pomoc pri písaní diplomovej práce.} \parbox{\sirkaPodakovania}{ \noindent Ďalej chcem poďakovať mojim rodičom, priateľom a spolužiakom za ich veľmi silnú podporu, trpezlivosť a~toleranciu.} \parbox{\sirkaPodakovania}{ \noindent Moje osobitné poďakovanie patrí \textsc{Mgr.~Ľubomírovi~Hostovi} za~vytvorenie skvelého pracovného a zostavovacieho rámca pre prácu so~systémami \LaTeX{ }a pdf\TeX.} \end{flushright} \newpage \chapter*{Abstrakt} \addcontentsline{toc}{chapter}{Abstrakt} \bibauthor{Ondrej Jombík}: \bibwork{Matematická teória programovania. Zbierka riešených úloh.} Diplomová práca. Univerzita Komenského. Fakulta matematiky, fyziky a informatiky. Školiteľ: RNDr. Dušan Guller, PhD.\\ Obhajoba: Bratislava, august 2007 ~ V našej práci sme sa snažili zozbierať reprezentatívnu vzorku úloh tématicky patriacu k základným okruhom matematickej teórie programovania, ako sú schémy, programy, interpretácie, (ne)rozhodnuteľnosť vlastností, správnosť programov, dokazovanie správnosti, sémantika programov a pod. Medzi úlohami sú zastúpené rôzne stupne obtiažnosti od ľahkých, cez stredne ťažké až po náročné úlohy. K všetkým úlohám sme poskytli stručné návody a taktiež vzorové riešenia. Okrem praktických úloh zbierka obsahuje vždy aj prehľad najdôležitejších definícií a tvrdení v danej oblasti. Tvrdenia sú uvádzané bez dôkazov. Kľúčové slová: matematická teória programovania, základy teórie programovania, cvičenia, príklady, úlohy, riešenia, zbierka úloh, ZTP. \chapter*{Predhovor} \addcontentsline{toc}{chapter}{Predhovor} Prvýkrát som sa s teóriou programovania stretol ako študent druhého ročníka informatiky na FMFI UK. Vtedy sa škola ešte volala Matematicko fyzikálna fakulta. Od starších spolužiakov som sa dopočul, že je to vraj ťažký predmet. Po jeho absolvovaní s nimi môžem súhlasiť, ale len čiastočne. Ľahký určite nebol, no aj napriek tomu sa mi stal v porovnaní s ostatnými predmetmi spadajúcimi do nášho odboru bližší. Matematická teória programovania prednášaná ako predmet Základy teórie programovania pánom doktorom RNDr.~Igorom~Prívarom,~CSc. ma zaskočila nepripraveného. Od základnej školy som vedel programovať a na strednej škole som si túto zručnosť výrazne zlepšil. Veľmi ma to bavilo, problematika ma zaujímala, ale absentovali mi teoretické znalosti. Dnes už viem ľahko posúdiť, že môj vtedajší spôsob uvažovania o programovaní bol veľmi povrchný a nekomplexný. Samozrejme s takýmto štýlom sa predmet úspešne dokončiť nedal. A tak som ho musel opakovať. Pre iných študentov by toto predstavovalo len ďalšiu obligátnu povinnosť, ktorú treba mať čo najrýchlejšie z krku. U mňa to však bolo zdrojom veľkej motivácie. Sám pre seba som si povedal, že chcem do toho vidieť. Keď nám navyše náš vtedajší cvičiaci Mgr.~Rastislav Graus položartom povedal, že v tomto predmete správne riešenia neexistujú a vraj sú len správne zadania, začal som s~prepisovaním cvičených príkladov do \LaTeX{}ového dokumentu, ktorý mal nám študentom s~tými správnymi riešeniami pomôcť. Od roku 2003 sa teda začali rodiť základy mojej terajšej diplomovej práce. Pôvodný cieľ samozrejme nebol až taký smelý, chcel som len spísať riešenia pre známe príklady z cvičení Teórie programovania. Postupne som v zbierke vychytával chyby, dopĺňal príklady, vylepšoval riešenia. Ako moje vedomosti a schopnosti rástli, zväčšovala sa aj kvalita samotného materiálu. Predmet som napokon úspešne absolvoval a na samotnej skúške sa mi už ani nezdal taký ťažký. \newpage Teoretické poznatky a prístupy ktoré mi matematická teória programovania odovzdala do mojho programátorského života sú k nezaplateniu. Okrem toho, že som si značne rozšíril okruh svojich vedomostí, som si uvedomil aj fakt, že sa signifikantne zmenil spôsob mojho uvažovania. Nie som viac obyčajný programátor, ale architekt. Kód, ktorý vytvorím, je menej náchylný na~chyby. Viac sa zamýšlam nad kritickými stavmi programu, analyzujem dosiahnuteľnosť výsledkov, skúmam časovú zložitosť algoritmov. Vďaka poznatkom z oblasti sémantiky viem podrobne skúmať úseky programov a v krátkom čase o nich povedať vlastnosti, ku ktorým by som inak dospel len dlhou analýzou. Jednoducho -- vidím veci, ktoré som kedysi nevidel. Zbierku som sa snažil koncipovať tak, aby pomáhala študentom všetkých kategórií. Príklady sú formulované jasne a zrozumiteľne, aby nebolo žiadnych pochýb o tom, čo je úlohou študenta. Riešenia sú podrobné, niekedy trošku dlhé, ale snažia sa dosiahnuť kompletné pochopenie daného problému u riešiteľa. Lepší študenti môžu čítať rýchlejšie a preskakovať jednoduché pasáže, tí zvyšní majú všetko podrobne vysvetlené. K~niektorým príkladom sú uvedené aj viaceré riešenia, čo má ukázať široké možnosti matematickej teórie programovania. Odozvy mojich mladších spolužiakov z nižších ročníkov ma prekvapili. Zbierku vítajú a vnímajú ju ako užitočnú pomôcku pri štúdiu. Som tomu veľmi rád, pretože sa mi týmto splnil môj sen, ktorý som mal od začiatku štúdia na vysokej škole. Aby moja diplomová práca nebola užitočná len mne, ale aby pomáhala aj ďalším luďom a neostala zapadnutá prachom v školskom archíve. % vim: ts=4 % vim600: fdl=0 fdm=marker fdc=3