\clearpage % Rozdziały zaczynamy od nowej strony.
\section{Code listings}

\lipsum[10]

% Fragment kodu źródłowego programu
% \addmargin pozwala na wcięcie kodu od lewej (tu: 8mm).
% Wcięcie służy do tego, aby numery linii nie wystawały poza lewy margines.
% Druga liczba oznacza wcięcie od prawej.
\begin{addmargin}[8mm]{0mm}
\begin{lstlisting}[
    language=HTML,
    numbers=left,
    firstnumber=1,
    caption={\emph{Hello world} w HTML},
    aboveskip=10pt
]
<html>
  <head>
    <title>Hello world!</title>
  </head>
  <body>
    Hello world!
  </body>
</html>
\end{lstlisting}
\end{addmargin}

\lipsum[11]

% Dla dłuższych numerów linii potrzebne jest większe wcięcie.
\begin{addmargin}[12mm]{0mm}
\begin{lstlisting}[
    language=C++,
    numbers=left,
    firstnumber=147,
    caption={Generowanie sekwencji Collatza w języku C++},
    aboveskip=10pt
]
class Collatz {
  private:
    unsigned current_val_;
    void update_val() {
        if( current_val_ % 2 == 0 )
            current_val_ /= 2;
        else
            current_val_ = current_val_ * 3 + 1;
    }

  public:
    explicit Collatz(unsigned initial_value) :
        current_val_(initial_value) {}
    void print_sequence() {
        unsigned i = 1;
        while( current_val_ > 1 ) {
            std::cout
                << "val " << i << " = " << current_val_
                << std::endl;
            update_val(); ++i;
        }
    }
};

int main() {
  // prints Collatz seqence, starting from 194375
  Collatz seq(194375);
  seq.print_sequence();
  return 0;
}
\end{lstlisting}
\end{addmargin}

\lipsum[12]
