ApCoCoA-1:Examples Tutorial De Programming

From ApCoCoAWiki
Revision as of 16:25, 17 July 2008 by StK (talk | contribs) (New page: == CoCoA-Programmierung == Programme in CoCoA werden in einer eigenen Programmiersprache namens CoCoAL geschrieben, welche natürlich ihre eigen Syntax hat. Teile dieser Syntax kennen wir...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

CoCoA-Programmierung

Programme in CoCoA werden in einer eigenen Programmiersprache namens CoCoAL geschrieben, welche natürlich ihre eigen Syntax hat. Teile dieser Syntax kennen wir ja schon, Befehle werden immer groß geschrieben und mit einem Semikolon beendet, nur Unbestimmte werden klein geschrieben. Diese Programmiersprache ist case sensitive, d.h. die Groß- und Kleinschreibung ist von großer Bedeutung.

Case sens.png

Neue Befehle werden in {\CoCoA} mit \texttt{Define ... EndDefine;} erzeugt. Auch hier kommt nur ein Semikolon an das Ende von \texttt{EndDefine}, da dies eine zweiteiliger Befehl ist. Ein {\CoCoA}-Programm wäre z.B. \vspace*{-1.5em} \begin{center} \begin{minipage}[t][5cm][c]{0.35\textwidth} \texttt{Define MeineFunktion(A,I)\\ \hspace*{1em}B:=A\textasciicircum I;\\ \hspace*{1em}Return B;\\ EndDefine;} \end{minipage} \begin{minipage}[t][5cm][c]{0.55\textwidth} \begin{center} \includegraphics[height=5cm]{./../images/bsp_define} \end{center} \end{minipage} \end{center} Der Befehl \texttt{Return B;} gibt nicht nur das Ergebnis \texttt{B} aus, er beendet auch das Programm, mit \texttt{Return;} springt man also aus der Funktion ohne ein Ergebnis auszugeben. \medskip

\texttt{A} und \texttt{I} sind die Übergabe-Parameter der Funktion. Das in der Funktion definierte \texttt{B} ist eine so genannte \textbf{lokale Variable}, d.h. sie existieren nur innerhalb des Programms. \begin{center} \includegraphics[width=0.45\textwidth]{./../images/bsp_lokal} \end{center}

\textbf{Globale Variablen} sind auch außerhalb der Funktion sichtbar. Mit dem Präfix \texttt{MEMORY.} werden lokale Variablen zu globalen Variablen verwandelt. \begin{center} \includegraphics[width=0.45\textwidth]{./../images/bsp_global} \end{center} Die Liste aller globalen Variablen kann mit \texttt{GlobalMemory();} aufgerufen werden. \medskip

Natürlich ist es möglich, Funktionen ohne \texttt{Return} zu schreiben, man muss sich dann aber darüber im Klaren sein, dass man kein Ergebnis erhält. Es sei denn, man verwendet globale Variablen.


\subsection*{userinit.coc}

Um eine selbstgeschriebene Funktion in {\CoCoA} zur Verfügung zu stellen, kann man sie entweder eingeben und abschicken (wie im Kapitel~\ref{GUI} auf Seite~\pageref{GUI} beschrieben) oder man speichert seine selbstgeschriebenen Programme in einer Datei \texttt{MeineDatei.coc} ab und kann sie (wenn man die Funktionen nur manchmal braucht) bei Bedarf öffnen und ausführen. Wenn man jetzt Programme geschrieben hat, die man häufig braucht, so speichert man diese in einer Datei ab und trägt den Datei-Namen in die \texttt{userinit.coc} (welche sich im {\CoCoA}-Installationsordner befindet) wie folgt ein: \begin{center} \texttt{<< ``MeineDatei.coc;} \end{center} In diesem Fall muss die Datei \texttt{MeineDatei.coc} im {\CoCoA}-Installationsordner liegen. Beim Aufruf von {\CoCoA} werden nun die in \texttt{MeineDatei.coc} definierten Programme automatisch geladen und stehen somit zur Verfügung.


\subsection*{Kommentare}

Um Programme, auch kleine Programme, verständlich für jedermann zu gestalten, sollten sie kommentiert werden. Hierfür bietet {\CoCoA} drei Möglichkeiten an. \begin{description} \item[\mdseries\texttt{/* <Kommentar> */}] ~\\ Derartige Kommentare können über mehrere Zeilen gehen. Alles (\texttt{<Kommentar>}), was zwischen \texttt{/*} und \texttt{*/} steht, wird als Kommentar betrachtet und hat keine Auswirkungen auf den Rest der eingegebenen Befehle. \item[\mdseries\texttt{// <Kommentar>}] ~\\ Diese Kommentare sind nur die aktuelle Zeile lang. Nur der Text in derselben Zeile gilt als Kommentar. \item[\mdseries\texttt{-- <Kommentar>}] ~\\ Diese Art von einzeiligen Kommentar steht meistens direkt hinter einem Befehl. \end{description}