Difference between revisions of "ApCoCoA-1:Examples Tutorial De Programming"

From ApCoCoAWiki
(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...)
 
Line 4: Line 4:
 
<center>[[Image:case_sens.png]]</center>
 
<center>[[Image:case_sens.png]]</center>
  
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.
+
Neue Befehle werden in CoCoA mit <tt>Define ... EndDefine;</tt> erzeugt. Auch hier kommt nur ein Semikolon an das Ende von <tt>EndDefine</tt>, 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.
+
<code>
\begin{center}
+
  Define MeineFunktion(A,I)
\includegraphics[width=0.45\textwidth]{./../images/bsp_lokal}
+
    B:=A^I;
\end{center}
+
    Return B;\\
 +
  EndDefine;
 +
</code>
  
\textbf{Globale Variablen} sind auch außerhalb der Funktion sichtbar. Mit dem Präfix \texttt{MEMORY.} werden lokale Variablen zu globalen Variablen verwandelt.
+
<center>[[Image:bsp_define.png]]</center>
\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.
+
Der Befehl <tt>Return B;</tt> gibt nicht nur das Ergebnis <tt>B</tt> aus, er beendet auch das Programm, mit <tt>Return;</tt> springt man also aus der Funktion ohne ein Ergebnis auszugeben.  
  
 +
<tt>A</tt> und <tt>I</tt> sind die Übergabe-Parameter der Funktion. Das in der Funktion definierte <tt>B</tt> ist eine so genannte '''lokale Variable''', d.h. sie existieren nur innerhalb des Programms.
 +
<center>[[Image:bsp_lokal.png]]</center>
  
\subsection*{userinit.coc}
+
'''Globale Variablen''' sind auch außerhalb der Funktion sichtbar. Mit dem Präfix <tt>MEMORY.</tt> werden lokale Variablen zu globalen Variablen verwandelt.
 +
<center>[[Image:bsp_global.png]]</center>
 +
Die Liste aller globalen Variablen kann mit <tt>GlobalMemory();</tt> aufgerufen werden.
  
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:
+
Natürlich ist es möglich, Funktionen ohne <tt>Return</tt> 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.
\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}
+
== userinit.coc ==
  
Um Programme, auch kleine Programme, verständlich für jedermann zu gestalten, sollten sie kommentiert werden. Hierfür bietet {\CoCoA} drei Möglichkeiten an.  
+
Um eine selbstgeschriebene Funktion in CoCoA zur Verfügung zu stellen, kann man sie entweder eingeben und abschicken (wie im Kapitel [[ApCoCoA:GUI_Tutorial_De|GUI und jetzt?]] beschrieben) oder man speichert seine selbstgeschriebenen Programme in einer Datei <tt>MeineDatei.coc</tt> 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 <tt>userinit.coc</tt> (welche sich im CoCoA-Installationsordner befindet) wie folgt ein:
\begin{description}
+
<center>
\item[\mdseries\texttt{/* <Kommentar> */}] ~\\
+
<tt><< "MeineDatei.coc";</tt>
Derartige Kommentare können über mehrere Zeilen gehen.  
+
</center>
Alles (\texttt{<Kommentar>}), was zwischen \texttt{/*} und \texttt{*/} steht, wird als Kommentar  
+
In diesem Fall muss die Datei <tt>MeineDatei.coc</tt> im CoCoA-Installationsordner liegen. Beim Aufruf von CoCoA werden nun die in <tt>MeineDatei.coc</tt> definierten Programme automatisch geladen und stehen somit zur Verfügung.
 +
 
 +
 
 +
== 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.  
 +
 
 +
<tt>/* ''Kommentar'' */</tt> Derartige Kommentare können über mehrere Zeilen gehen.  
 +
Alles (<tt>''Kommentar''</tt>), was zwischen <tt>/*</tt> und <tt>*/</tt> steht, wird als Kommentar  
 
betrachtet und hat keine Auswirkungen auf den Rest der eingegebenen Befehle.
 
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  
+
<tt>// ''Kommentar''</tt> Diese Kommentare sind nur die aktuelle Zeile lang. Nur der Text in derselben Zeile gilt als  
 
Kommentar.
 
Kommentar.
\item[\mdseries\texttt{-- <Kommentar>}]  ~\\
+
 
Diese Art von einzeiligen Kommentar steht meistens direkt hinter einem Befehl.
+
<tt>-- ''Kommentar''</tt> Diese Art von einzeiligen Kommentar steht meistens direkt hinter einem Befehl.
\end{description}
 
  
  

Revision as of 18:21, 17 July 2008

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 Define ... EndDefine; erzeugt. Auch hier kommt nur ein Semikolon an das Ende von EndDefine, da dies eine zweiteiliger Befehl ist. Ein CoCoA-Programm wäre z.B.

 Define MeineFunktion(A,I)
   B:=A^I;
   Return B;\\
 EndDefine;

Bsp define.png

Der Befehl Return B; gibt nicht nur das Ergebnis B aus, er beendet auch das Programm, mit Return; springt man also aus der Funktion ohne ein Ergebnis auszugeben.

A und I sind die Übergabe-Parameter der Funktion. Das in der Funktion definierte B ist eine so genannte lokale Variable, d.h. sie existieren nur innerhalb des Programms.

Bsp lokal.png

Globale Variablen sind auch außerhalb der Funktion sichtbar. Mit dem Präfix MEMORY. werden lokale Variablen zu globalen Variablen verwandelt.

Bsp global.png

Die Liste aller globalen Variablen kann mit GlobalMemory(); aufgerufen werden.

Natürlich ist es möglich, Funktionen ohne 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.


userinit.coc

Um eine selbstgeschriebene Funktion in CoCoA zur Verfügung zu stellen, kann man sie entweder eingeben und abschicken (wie im Kapitel GUI und jetzt? beschrieben) oder man speichert seine selbstgeschriebenen Programme in einer Datei 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 userinit.coc (welche sich im CoCoA-Installationsordner befindet) wie folgt ein:

<< "MeineDatei.coc";

In diesem Fall muss die Datei MeineDatei.coc im CoCoA-Installationsordner liegen. Beim Aufruf von CoCoA werden nun die in MeineDatei.coc definierten Programme automatisch geladen und stehen somit zur Verfügung.


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.

/* Kommentar */ Derartige Kommentare können über mehrere Zeilen gehen. Alles (Kommentar), was zwischen /* und */ steht, wird als Kommentar betrachtet und hat keine Auswirkungen auf den Rest der eingegebenen Befehle.

// Kommentar Diese Kommentare sind nur die aktuelle Zeile lang. Nur der Text in derselben Zeile gilt als Kommentar.

-- Kommentar Diese Art von einzeiligen Kommentar steht meistens direkt hinter einem Befehl.