\documentclass[a4paper]{article}
\usepackage{progm}
\analpacks
\analoldal{2. feladatsor, 19. feladat}
\begin{document}
\noindent
\emph{Feladat:} Határozzuk meg az $f$ függvény azon értékeinek a
számát, amelyek vagy az $[a,b]$ vagy a $[c,d]$ intervallumba esnek!

\emph{Specifikáció:}\\
$A = \alatt{\Z}{m} \times \alatt{\Z}{n} \times \alatt{\Z}{a} \times \alatt{\Z}{b} \times \alatt{\Z}{c} \times \alatt{\Z}{d} \times \alatt{\N_0}{o}$\\
$B = \alatt{\Z}{m'} \times \alatt{\Z}{n'} \times \alatt{\Z}{a'} \times \alatt{\Z}{b'} \times \alatt{\Z}{c'} \times \alatt{\Z}{d'}$\\
$Q = ( m=m' \es n=n' \es m\le n+1 \es a=a' \es b=b' \es c=c' \es d=d' )$\\
$R = ( Q \es o=\sum\limits_{i=m}^n\chi(a\le f(i)\le b \vagy c\le f(i)\le d))$

A specifikáció nagyon hasonló a számlálás programozási tételéhez.  Az
eltéréseket az alábbi táblázattal foglalhatjuk össze:

\begin{tabular}{ccc}
feladat &  & számlálás \\
\hline
$a\le f(i)\le b \vagy c\le f(i)\le d$ & \knyil & $\beta(i)$ \\
$o$ & \knyil & $d$
\end{tabular}

A visszavezetés paraméteres $a, b, c$ és $d$ szerint.

\begin{stuki}[7cm]
  \stm{k,d:=m-1,0}
  \begin{WHILE}{3}{\stm{k \ne n}}
    \begin{IF}{1}{\stm{a\le f(k+1)\le b \vagy c\le f(k+1)\le d}}
      \stm{d:=d+1}
      \ELSE
      \SKIP
    \end{IF}
    \stm{k:=k+1}
  \end{WHILE}
\end{stuki}

\end{document}
