\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{3. feladatsor, 19. feladat. függvényabsztrakcióval}
\newcommand{\ChE}{\text{ChE}}
\newcommand{\extr}{\text{extr}}
\begin{document}
\noindent
\emph{Feladat:} Adott egy karakterekből álló szekvenciális file
(megengedett művelet az $sx,dx,x:read$).  Számoljuk meg, hogy a szöveg
hány szóból áll, ha a 12 jelnél hosszabb szavakat két szónak
tekintjük!  (A szavakat tetszőleges számú szóköz választhatja el.)

\emph{Specifikáció:}\\
$\F = \file(Ch)$\\
$A = \alatt{\F}{x} \times \alatt{\N_0}{d}$
$B = \alatt{\F}{x'}$\\
$Q = ( x=x' )$\\
$R = ( d = f(dom(x'))_1)$, ahol $f:[0,dom(x')]\nyil \N_0\times\N_0, f(0):=(0,0), \forall i\in[1,dom(x')]:f(i):=F(i,f(i-1))$
\[
F(i,z):= \left\{
\begin{array}{ll}
(z_1,0) & \text{, ha } x_i=\_ \\
(z_1+1,z_2+1) & \text{, ha } x_i\ne\_ \es z_2=0 \vagy z_2=12 \\
(z_1,z_2+1) & \text{, ha } x_i\ne\_ \es z_2\ne0\es z_2\ne12 \\
\end{array}
\right.
\]

Ez a specifikáció visszavezethető a rekurzív formulával adott függvény
kiszámításának tételére, amit file-ra írunk fel ($z_1\nyil d, z_2\nyil h$):

\begin{stuki}[16cm]
  \stm{sx,dx,x:\Read}
  \stm{d,h:=0,0}
  \begin{WHILE}{3}{\stm{sx=\norm}}
    \begin{CASE}{1}{3}
      \WHEN{\stm{dx=\_}}
      \stm{h:=0}
      \WHEN{\stm{dx\ne\_\es (h=0 \vagy h=12)}}
      \stm{d,h:=d+1,h+1}
      \WHEN{\stm{dx\ne\_\es h\ne 0 \es h\ne 12 }}
      \stm{h:=h+1}
    \end{CASE}
    \stm{sx,dx,x:\Read}
  \end{WHILE}
\end{stuki}
\end{document}
