\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{3. feladatsor, 1. feladat}
\begin{document}
\noindent
\emph{Feladat:} Adott az egész számokat tartamlazó $x$ vektor.  Válogassuk
ki az $y$ sorozatba a vektor pozitív elemeit!

\emph{Specifikáció:}\\
$\V = \vect(\Z,\Z)$\\
$\S = \seq(\Z)$ \\
$A = \alatt{\V}{x} \times \alatt{\S}{y}$\\
$B = \alatt{\V}{x'}$\\
$Q = ( x=x' )$\\
$R = ( y=f(x') )$

Ez egy egyváltozós-egyértékû elemenkénti feldolgozás, melynek
programja halmazokra:

\begin{stuki}[6cm]
  \stm{y:=\varnothing}
  \begin{WHILE}{3}{\stm{x\ne\varnothing}}
    \stm{e:\in x}
    \stm{y:=y\Tilde{\cup}f(\{e\})}
    \stm{x:=x\Tilde- e}
  \end{WHILE}
\end{stuki}

Írjuk át ezt a tételt az ismert koordináta-transzformációkkal sorozatokra:

\begin{stuki}[6cm]
  \stm{y:=<>}
  \begin{WHILE}{2}{\stm{x.dom \ne 0}}
    \stm{y:hiext(f(\{x.lov\}))}
    \stm{x:lorem}
  \end{WHILE}
\end{stuki}

Majd folytassuk vektorra való átírással $x$ szerint:

\begin{stuki}[6cm]
  \stm{y:=<>}
  \stm{i:=x.lob-1}
  \begin{WHILE}{2}{\stm{i\ne x.hib}}
    \stm{y:hiext(f(\{x[i+1]\}))}
    \stm{i:=i+1}
  \end{WHILE}
\end{stuki}

Most írjuk fel $f$ függvény egy elemet feldolgozó verzióját a feladat
szövegezése alapján:
\[
\Tilde f(e):= \left\{
\begin{array}{ll}
\varnothing & \text{, ha } e\le 0 \\
e & \text{, ha } e>0
\end{array}
\right.
\]

Az esetszétválasztással definiált függvény kiszámításának tételét felhasználva:
\begin{stuki}[6cm]
  \stm{y:=<>}
  \stm{i:=x.lob-1}
  \begin{WHILE}{3}{\stm{i\ne x.hib}}
    \begin{IF}{1}{\stm{x[i+1]>0}}
      \stm{y:hiext(x[i+1])}
      \ELSE
      \SKIP
    \end{IF}
    \stm{i:=i+1}
  \end{WHILE}
\end{stuki}

\end{document}
