Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Saturday, October 17, 2026

Diff for doc/ztp-zbierka/02-programove-schemy.tex between version 1.1 and 1.2

version 1.1, 2003/07/18 17:07:11 version 1.2, 2003/11/07 17:33:19
Line 10 
Line 10 
 % 26/02/2003 - created  % 26/02/2003 - created
 %  %
   
 % $Platon$  % $Platon: doc/ztp-zbierka/02-programove-schemy.tex,v 1.1 2003/07/18 17:07:11 nepto Exp $
   
 \chapter{Programové schémy}  \chapter{Programové schémy}
   
Line 501  divergentná.
Line 501  divergentná.
   
 \section{Porovnávanie tried programových schém}  \section{Porovnávanie tried programových schém}
   
 \begin{example} % /*  \begin{example} % /* is volnost?
   
 Rozhodnite, či je schéma $S$ voľná.  Rozhodnite, či je schéma $S$ voľná.
   
Line 539  nedá spraviť napríklad 3-násobné opakova
Line 539  nedá spraviť napríklad 3-násobné opakova
   
 \end{solution} % */  \end{solution} % */
   
 \begin{example} % /*  \begin{example} % /* volnost
   
 Máme danú Janovovu schému $S$.  Máme danú Janovovu schému $S_1$.
   
 $$  $$
 \begin{array}{lrl}  \begin{array}{lrl}
 S:      & \cmd{begin}   & [y] := [x]                                                            \\  S_1:    & \cmd{begin}   & [y] := [x]                                                            \\
         & 1:                    & [y] := [f(y)]                                                         \\                  & 1:                    & [y] := [f(y)]                                                         \\
         & 2:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~6       \\                  & 2:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~6       \\
         & 3:                    & [y] := [f(y)]                                                         \\                  & 3:                    & [y] := [f(y)]                                                         \\
         & 4:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~6       \\                  & 4:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~6       \\
         & 5:                    & \cmd{goto}~2                                                          \\                  & 5:                    & \cmd{goto}~2                                                          \\
         & 6:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~8       \\                  & 6:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~8       \\
         & 7:                    & \cmd{goto}~4                                                          \\                  & 7:                    & \cmd{goto}~4                                                          \\
         & 8:                    & [y] := [f(y)]                                                         \\                  & 8:                    & [y] := [f(y)]                                                         \\
         & \cmd{end}             & [z] := [y]                                                            \\                  & \cmd{end}             & [z] := [y]                                                            \\
 \end{array}  \end{array}
 $$  $$
   
 Nájdite ku schéme $S$ ekvivalentnú voľnú Janovovu schému $S_v$.  Schému  Nájdite ku~schéme~$S_1$ ekvivalentnú voľnú Janovovu schému~$S_{1_v}$. Schému
 napíšte a stručne zdôvodnite, prečo je schéma $S_v$ voľná a ekvivalentná  napíšte a stručne zdôvodnite, prečo je schéma~$S_{1_v}$ voľná a ekvivalentná
 so schémou $S$.  so~schémou~$S_1$.
   
 \end{example} % */  \end{example} % */
   
 \begin{solution} % /*  \begin{solution} % /*
   
 Riešením je schéma $S_v$.  Riešením je schéma $S_{1_v}$.
   
 $$  $$
 \begin{array}{lrl}  \begin{array}{lrl}
 S_v:    & \cmd{begin}   & [y] := [x]                                                            \\  S_{1_v}:        & \cmd{begin}   & [y] := [x]                                                            \\
                 & 1:                    & [y] := [f(y)]                                                         \\                          & 1:                    & [y] := [f(y)]                                                         \\
                 & 2:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~4       \\                          & 2:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~4       \\
                 & 3:                    & \cmd{goto}~1                                                          \\                          & 3:                    & \cmd{goto}~1                                                          \\
                 & 4:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~6       \\                          & 4:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~6       \\
                 & 5:                    & \cmd{goto}~5                                                          \\                          & 5:                    & \cmd{goto}~5                                                          \\
                 & 6:                    & [y] := [f(y)]                                                         \\                          & 6:                    & [y] := [f(y)]                                                         \\
                 & \cmd{end}             & [z] := [y]                                                            \\                          & \cmd{end}             & [z] := [y]                                                            \\
 \end{array}  \end{array}
 $$  $$
   
 \underline{Voľnosť:} Ak predikát $p(y)$ platí, tak sa už ďalej netestuje. Ak  \underline{Voľnosť:} Ak predikát $p(y)$ platí, tak sa už ďalej netestuje. Ak
 neplatí, tak pred ďalším testom toho istého predikátu sa zmení premenná $y$.  neplatí, tak pred ďalším testom toho istého predikátu sa zmení premenná $y$.
 Predikát $q(y)$ sa testuje len raz. Pre každú cestu existuje interpretácia  Predikát~$q(y)$ sa testuje len raz. Pre každú cestu existuje interpretácia
 $I_v$ a valuácia $v_v$ taká, že výpočet $(S_v,~I_v,~v_v)$ sleduje túto cestu,  $I_{1_v}$ a valuácia $v_{1_v}$ taká, že výpočet $(S_{1_v},~I_{1_v},~v_{1_v})$
 takže schéma je voľná.  sleduje túto cestu, takže schéma je voľná.
   
 \underline{Ekvivalencia:} Oproti pôvodnej schéme sme zmenili príkaz  \underline{Ekvivalencia:} Oproti pôvodnej schéme sme zmenili príkaz
 $7:\cmd{goto}~4$ na nový príkaz $5:\cmd{goto}~5$. V pôvodnej schéme bol  $7:\cmd{goto}~4$ na nový príkaz $5:\cmd{goto}~5$. V pôvodnej schéme bol
Line 601  malých úpravách novej schémy dajú nahrad
Line 601  malých úpravách novej schémy dajú nahrad
   
 \end{solution} % */  \end{solution} % */
   
 \begin{example} % /*  \begin{example} % /* volnost II.
   
 Daná je štandardná schéma $S$.  Daná je štandardná schéma $S_2$.
   
 $$  $$
 \begin{array}{lrl}  \begin{array}{lrl}
 S:      & \cmd{begin}   & [y] := [x]                                                                            \\  S_2:    & \cmd{begin}   & [y] := [x]                                                                            \\
         & 1:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\                  & 1:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\
         & 2:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~6                       \\                  & 2:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~6                       \\
         & 3:                    & [y] := [f_1(y)]                                                                       \\                  & 3:                    & [y] := [f_1(y)]                                                                       \\
         & 4:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~2                       \\                  & 4:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~2                       \\
         & 5:                    & \cmd{goto}~\cmd{end}                                                          \\                  & 5:                    & \cmd{goto}~\cmd{end}                                                          \\
         & 6:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~10                      \\                  & 6:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~10                      \\
         & 7:                    & [y] := [f_2(y)]                                                                       \\                  & 7:                    & [y] := [f_2(y)]                                                                       \\
         & 8:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\                  & 8:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\
         & 9:                    & \cmd{goto}~1                                                                          \\                  & 9:                    & \cmd{goto}~1                                                                          \\
         & 10:                   & [y] := [f_3(y)]                                                                       \\                  & 10:                   & [y] := [f_3(y)]                                                                       \\
         & 11:                   & \cmd{goto}~8                                                                          \\                  & 11:                   & \cmd{goto}~8                                                                          \\
         & \cmd{end}             & [z] := [y]                                                                            \\                  & \cmd{end}             & [z] := [y]                                                                            \\
 \end{array}  \end{array}
 $$  $$
   
 Nájdite ku schéme $S$ ekvivalentnú voľnú schému $S_v$\HWwarn{3}.  Nájdite ku~schéme~$S_2$ ekvivalentnú voľnú schému~$S_{2_v}$\HWwarn{3}.
   
 \end{example} % */  \end{example} % */
   
 \begin{solution} % /*  \begin{solution} % /*
   
 Riešením je schéma $S_v$.  Riešením je schéma $S_{2_v}$.
   
 $$  $$
 \begin{array}{lrl}  \begin{array}{lrl}
 S_v:    & \cmd{begin}   & [y] := [x]                                                                            \\  S_{2_v}:        & \cmd{begin}   & [y] := [x]                                                                            \\
                 & 1:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\                          & 1:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\
                 & 2:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~6                       \\                          & 2:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~6                       \\
                 & 3:                    & [y] := [f_1(y)]                                                                       \\                          & 3:                    & [y] := [f_1(y)]                                                                       \\
                 & 4:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~10                      \\                          & 4:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~10                      \\
                 & 5:                    & \cmd{goto}~\cmd{end}                                                          \\                          & 5:                    & \cmd{goto}~\cmd{end}                                                          \\
                 & 6:                    & [y] := [f_2(y)]                                                                       \\                          & 6:                    & [y] := [f_2(y)]                                                                       \\
                 & 7:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\                          & 7:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\
                 & 8:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\                          & 8:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~\cmd{end}       \\
                 & 9:                    & \cmd{goto}~3                                                                          \\                          & 9:                    & \cmd{goto}~3                                                                          \\
                 & 10:                   & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~12                      \\                          & 10:                   & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~12                      \\
                 & 11:                   & \cmd{goto}~3                                                                          \\                          & 11:                   & \cmd{goto}~3                                                                          \\
                 & 12:                   & [y] := [f_3(y)]                                                                       \\                          & 12:                   & [y] := [f_3(y)]                                                                       \\
                 & 13:                   & \cmd{goto}~7                                                                          \\                          & 13:                   & \cmd{goto}~7                                                                          \\
                 & \cmd{end}             & [z] := [y]                                                                            \\                          & \cmd{end}             & [z] := [y]                                                                            \\
 \end{array}  \end{array}
 $$  $$
   
 Schému $S_v$ sme našli pomocou vytvorenia vývojového diagramu pôvodnej schémy  Schému $S_{2_v}$ sme našli pomocou vytvorenia vývojového diagramu pôvodnej
 $S$ a jeho následných modifikácií vedúcich k zvoľneniu pri zachovaní  schémy~$S_2$ a jeho následných modifikácií vedúcich k zvoľneniu pri zachovaní
 ekvivalencie. Tento postup je štandardný. Nedoporučuje sa písať programový kód  ekvivalencie. Tento postup je štandardný. Nedoporučuje sa písať programový kód
 výslednej schémy priamo\footnote{pretoźe to ide naozaj len veľmi ťažko}.  výslednej schémy priamo\footnote{pretože to ide naozaj len veľmi ťažko}.
   
   \end{solution} % */
   
   \begin{example} % /* volnost III.
   
   Daná je štandardná schéma $S_3$.
   
   $$
   \begin{array}{lrl}
   S_3:    & \cmd{begin}   & [y] := [x]                                                                            \\
                   & 1:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~9                       \\
                   & 2:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~5                       \\
                   & 3:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~8                       \\
                   & 4:                    & \cmd{goto}~2                                                                          \\
                   & 5:                    & [y] := [f_1(y)]                                                                       \\
                   & 6:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~1                       \\
                   & 7:                    & \cmd{goto}~\cmd{end}                                                          \\
                   & 8:                    & [y] := [f_2(y)]                                                                       \\
                   & 9:                    & [y] := [f_3(y)]                                                                       \\
                   & \cmd{end}             & [z] := [y]                                                                            \\
   \end{array}
   $$
   
   Nájdite ku~schéme~$S_3$ ekvivalentnú voľnú schému~$S_{3_v}$.
   
   \end{example} % */
   
   \begin{solution} % /*
   
   Riešením úlohy je teda schéma $S_{3_v}$.
   
   $$
   \begin{array}{lrl}
   S_{3_v}:        & \cmd{begin}   & [y] := [x]                                                                            \\
                           & 1:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~4                       \\
                           & 2:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~8                       \\
                           & 3:                    & \cmd{goto}~3                                                                          \\
                           & 4:                    & \cmd{if}~ p(y) ~\cmd{then}~\cmd{goto}~8                       \\
                           & 5:                    & [y] := [f_1(y)]                                                                       \\
                           & 6:                    & \cmd{if}~ q(y) ~\cmd{then}~\cmd{goto}~1                       \\
                           & 7:                    & \cmd{goto}~\cmd{end}                                                          \\
                           & 8:                    & [y] := [f_3(y)]                                                                       \\
                           & \cmd{end}             & [z] := [y]                                                                            \\
   \end{array}
   $$
   
 \end{solution} % */  \end{solution} % */
   

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top