\documentclass[12pt]{article}
\usepackage{slovene}

\title{Sedme vaje iz ra\v{c}unalni\v{s}tva I}
\author{Jasna Bogataj}
\date{24. 11. 1998}

\begin{document}

\maketitle

\section*{Snovanje programa}

Pri snovanju programa sta vedno pomembna dva vpra\v{s}anja, in sicer
\emph{kaj} bomo delali in \emph{kako} bomo delali.

\subsection*{Kaj bomo delali}

Ko \v{z}elimo narediti \v{z}eljeni program se seveda vpra\v{s}amo kaj
bomo delali. To pa povemo v tako imenovanih \emph{komentarjih}, ki jih
zapi\v{s}emo tako \texttt{/*~komentar~*/}.  Ta na\v{c}in programiranja
je res dalj\v{s}i, vendar je bolj pregleden.

\subsection*{Kako bomo delali}

Pri programiranju je seveda va\v{z}no tudi \emph{kako} bomo izvedli
program. To napi\v{s}emo takoj za komentarjem tako, da se pri pregledu
to\v{c}no vidi kaj in kako naredimo program.

\subsection*{Na vajah ...}

\v{Z}elimo izpisati aritmeti\v{c}no zaporedje. Naredili smo program,
ki nas bo vpra\v{s}al po za\v{c}etnem \v{c}lenu, koraku in koliko
\v{c}lenov naj izpi\v{s}e -- \v{s}tevilo \v{c}lenov.  Za izpisovanje
zaporedja smo naredili funkcijo, ki jo kli\v{c}emo s tremi parametri:
za\v{c}etni \v{c}len, korak in \v{s}tevilo \v{c}lenov, kjer so vsi
trije parametri so celo\v{s}tevilski -- tipa \texttt{int}.

Za branje bi lahko definirali tri funkcije: za za\v{c}etni \v{c}len,
za korak in za \v{s}tevilo \v{c}lenov. Ker so si te tri funkcije zelo
podobne, je bolje sestaviti program tako, kot smo ga mi: ena funkcija
(\texttt{izpisi\_zaporedje}) z enim parametrom, ki mu spreminjamo
vrednost. Ta na\v{c}in je mnogo bolj prakti\v{c}en zato, ker \v{c}e se
npr.\ pojavi napaka jo pri eni funkciji popravimo enkrat, medtem ko bi
morali pri treh funkcijah popravljati napako kar trikrat.

V c-ju smo napisali program (zaporedje.c), ki ga lahko najdete na naslovu:
%
\[
 \texttt{Z:}\backslash
   \texttt{Predavanja}\backslash
   \texttt{Rac1VSS}\backslash
   \texttt{zaporedje.c}
\]


\subsubsection*{Drugi na\v{c}in:}

V prej\v{s}njem pristopu smo izpisovali zaporedje s \texttt{for}
zanko. Tokrat jo bomo izpisovali z rekurzijo (rekurzivnim klicanjem
fukncije).

Napisali (definirali) smo funkcijo \texttt{izpisi\_zaporedje1}, ki:
%
\begin{itemize}
\item izpi\v{s}e prvi \v{c}len,
\item potem pa kli\v{c}e drugo funkcijo, ki bo izpisala ostale
  \v{c}lene zaporedja.
\end{itemize}
%
Definirana funkcija \texttt{izpisi\_zaporedje1} bo izpisala zaporedje,
ki se za\v{c}ne pri \v{c}lenu \texttt{clen} tipa \texttt{int} in ima
korak \texttt{korak} (prav tako tipa \texttt{int}).

Ker preostali \v{c}leni zaporedja predstavljajo ni\v{c} drugega kot
neko novo zaporedje, lahko za izpis le tega ponovno uporabimo
funkcijo, ki smo jo pravkar definirali -- \texttt{izpisi\_zaporedje1}.
To, da funkcija kli\v{c}e (uporabi) samo sebe imenujemo
\emph{rekurzija}.

\end{document}
