\documentclass[10pt,a4paper]{article}

\usepackage{slovene}

\author{Filip Dem\v{s}ar}
\title{Pete vaje iz ra\v{c}unalni\v{s}tva I}
\date{08. 11. 1998}

\begin{document}
\maketitle

\section{Konstante in parametri}

\subsection{Vrste konstant}

V c-u glede na uporabo uporabljamo dve vrsti konstant in sicer
tak\v{s}ne, ki so odvisne od programskega jezika c, in take, ki so
odvisne od pred-prejavalnika, ki ga uporablja c.

\subsection{Vrste parametrov glede na uporabo}

Parametre lahko prena\v{s}amo v podprogram na dva na\v{c}ina in sicer
\emph{po vrednosti} (po uporabi nam podprogram ne vrne morebitne
spremebe) in \emph{po referenci} (sprememba parametra je na
razpolago).


\section{Popravljen izpis \v{s}tevk}

\v{S}tevke \v{z}elimo izpisati z besedami, za kar uporabimo
\texttt{switch} \texttt{case} stavek.

Nadalje, \v{z}elimo \v{s}tevke izpisati najprej od leve proti desni in
nato \v{s}e od desne proti levi.  Razlika med obema izpisoma je samo v
zaporedju klicev funkcij v funkciji \texttt{izpisi\_stevilo}. Pri prvem
izpisu najprej kli\v{c}emo \texttt{izpisi\_stevko} in nato (rekurzivno)
\texttt{izpisi\_stevilo}, v drugem primeru pa najprej izpi\v{s}emo
preostalo \v{s}tevilo (\texttt{kolicnik}) ter na koncu zadnjo
\v{s}tevko.

Na koncu smo izpisali \v{s}e \v{s}tevilo tako z leve proti desni, kot
z desne proti levi. Dodali smo \v{s}e ukaze za prehod v novo vrsto: ko
izpi\v{s}emo najbolj levo \v{s}tevko v prvem izpisu in najbolj desno
\v{s}tevko v drugem izpisu.

Lahko si zamislimo, da je najbolj leva \v{s}tevka 0, ki je ne
izpi\v{s}emo, ampak namesto nje prestopimo v novo vrsto (glej
\texttt{if} stavek -- ustavitveni pogoj rekurzije -- v funkciji
\texttt{izpisi\_stevilo}. Drugi prehod v novo vrsto pa izpi\v{s}emo,
ko se vrnemo iz funkcije \texttt{izpisi\_stevilo} v glavno funkcijo
(program).

Natan\v{c}en postopek si lahko ogledate na na\v{s}em podro\v{c}ju.

\subsection{Konstante}

V programu, ki smo ga pri\v{c}eli pisati na prej\v{s}njih vajah,
dopolnjujemo in spreminjamo pa ga na dana\v{s}njih, dodamo zanko, da
se bo izvajal ve\v{c}krat -- dokler ne vpi\v{s}emo neke v naprej
dolo\v{c}ene vrednosti. \v{C}e to vrednost spreminjamo, jo moramo
spremeniti tako tam, kjer spra\v{s}ujemo uporabnika programa po
\v{s}tevilu s katerim kon\v{c}amo izvajanje programa, kot tudi v
glavnem programu, kjer programu povemo, kdaj naj preneha s svojim
izvajanjem. Veliko la\v{z}je to storimo, \v{c}e \v{z}e na za\v{c}etku
programa dolo\v{c}imo vrednost, s katero izstopimo iz programa To
storimo z \emph{definicijo konstante} :
%
{\tt
\begin{verbatim}
 const int izhodna_vrstica = 17 ;
\end{verbatim}
}
%
Pri popravljanju besedila programa moramo vedno biti pozorni na
preglednost.


\section{Izris kvadrata ustreznih dimenzij}

\subsection{Predpriprava}

Na splo\v{s}no je program sestavljen iz \emph{kode} in iz
\emph{komentarjev}. Komentarji so lahko \emph{opisni} ali
\emph{programski} (pomagajo pri bolj\v{s}i \v{c}itljivosti). Konkretno
ta program je sestavljen iz \emph{glavnega programa} (ki nam
pokli\v{c}e funkcijo, katera prebere velikost kvadrata in nato
kli\v{c}e podprogram, ki bo ta kvadrat izrisal) ter
\emph{podprogramov} (le ti so po potrebi zopet razdeljeni na
podprograme, ki opravijo to\v{c}no dolo\v{c}eno nalogo).

\subsection{Izgled napisanega programa z nekaj opombami}

Program, ki ga uporabljamo za risanje kvadrata z ustrezno dol\v{z}ino
stranice izgleda takole :
%
{\tt
\begin{verbatim}
#include<stdio.h>

int preberi_velikost()
{
  int dolzina;

  printf("Vpisi dolzino stranice kvadrata:");
  scanf("%d", &dolzina);
  return dolzina;

} /* preberi_velikost */

void izrisi kvadrat(int sirina)
{

  int i;

  izrisi_osnovnico(sirina);
  for (i = 1; i <= sirina - 2; i++)
    izrisi_vmesnico(sirina);
  izrisi_osnovnico(sirina);

} /* izrisi_kvadrat */

   int main(void)
  {

    int sirina;

    sirina = preberi_velikost();

    izrisi_kvadrat(sirina);
    return 0;

} /* main */
\end{verbatim}
}

Pri pisanju kateregakoli programa moramo vedno zelo natan\v{c}no
dolo\v{c}iti, kaj ho\v{c}emo od uporabnika.  V tem primeru, kak\v{s}na
naj bo dol\v{z}ina stranice kvadrata. Podprogram
\texttt{preberi\_velikost} prebere dol\v{z}ino stranice, jo shrani v
spremenljivko ter nam jo vrne po klicu (vrne jo podprogramu
\texttt{main}). Podprogram \texttt{main} nato pokli\v{c}e podprogram,
ki kvadrat z ustrezno dol\v{z}ino stranice tudi nari\v{s}e.

Ker se bodo pri risanju kvadrata nekatere vrstice ponavljale in sicer
odvisno od dol\v{z}ine stranice, bomo pri pisanju programa
\texttt{izrisi\_kvadrat} uporabili \emph{\texttt{for} zanko}. Ta zanka
izgleda takole:
%
{\tt
\begin{verbatim}

  for(_A_ , _B_ , _C_ )
  {
    stavek
  }
\end{verbatim}
}

Pri \texttt{for} zanki se najprej izvede ukaz \texttt{\_A\_}, nato
program pogleda pogoj \texttt{\_B\_}, izvede \texttt{stavek}, gre na
\texttt{\_C\_} in zopet preveri pogoj \texttt{\_B\_} ter to izvaja
toliko \v{c}asa, dokler je pogoj \texttt{\_B\_} izpolnjen.

Za doma\v{c}o nalogo moramo definirati funkciji, ki bosta narisali
\emph{osnovnico} in \emph{vmesnico}, ter ju vgraditi v program.

\section{Uporaba ukaza Help v Turbo C-u}

Do datoteke Help pridemo z pritiskom na gumba \emph{alt} in \emph{h},
s \v{c}imer pridemo do grafi\v{c}nega vmesnika, po katerem se
sprehajamo s pomo\v{c}jo tabulatorja. \v{C}e nas zanima to\v{c}no
dolo\v{c}eno podro\v{c}je, se postavimo na \emph{topic search},
vtipkamo prve \v{c}rke izbranega podro\v{c}ja in ga izberemo med na te
\v{c}rke izbranimi podpodro\v{c}ji. Na vajah smo si v knji\v{z}njici
\emph{podprogrami oz. rutine} ogledali \emph{grafi\v{c}ne rutine}:
\emph{arc, circle, ...}.

\end{document}