next up previous contents
Next: Ausgabe in Dateien / Up: Erste Schritte Previous: Prozeduren

  
Bibliotheken

Um Prozeduren für mehr als eine SINGULAR-Sitzung verfügbar zu machen, ist es sinnvoll, sie in Dateien abzuspeichern, die später von Singular wieder eingelesen werden können - sogenannten Bibliotheken (= Libraries). Die Namen der Bibliotheken lassen meist Rückschlüsse auf die enthaltenen Prozeduren zu, und tragen grundsätzlich die Endung .lib. Bibliotheken werden in SINGULAR eingelesen durch den Befehl LIB gefolgt von dem in Anführungszeichen " eingeschachtelten Bibliotheksnamen, etwa


LIB "KeilenT.lib";


(Bibliotheksnamen sollten nach Möglichkeit nur acht Zeichen lang sein, um die Kompatibilität mit Betriebssystemen wie Dos zu gewährleisten!) Sofern es sich nicht um SINGULAR-eigene Bibliotheken handelt, sollten sie sich in dem Verzeichnis befinden, von dem aus SINGULAR gestartet wurde.

Jeder Übungsteilnehmer sollte für die Prozeduren, die im Laufe des Semesters zu schreiben sind, eine Bibliothek anlegen - vorzugsweise unter dem eingenen Namen, etwa KeilenT.lib.

Natürlich muß auch eine Bibliothek gewissen Syntaxregeln entsprechen, und Prozeduren, die in Bibliotheken abgespeichert werden, sollten um zwei erläuternde Zusätze erweitert werden. Wir verdeutlichen dies an einem Musterbeispiel.

////////////////////////////////////////////////////////////////////
version="1.0";

info="
LIBRARY: KeilenT.lib LOESUNGEN ZU DEN LA-UEBUNGEN
AUTHOR: Thomas Keilen, email: keilen@mathematik.uni-kl.de
SEE ALSO: matrix.lib, linalg.lib
KEYWORDS: Lineare Algebra, Gauß-Algorithmus
PROCEDURES:  
permcol(matrix,int,int) vertauscht Spalten der Matrix
permrow(matrix,int,int) vertauscht Zeilen der Matrix

";
////////////////////////////////////////////////////////////////////
LIB "inout.lib";
////////////////////////////////////////////////////////////////////
proc permcol (matrix A, int c1, int c2)
"USAGE: permcol(A,c1,c2); A matrix, c1,c2 positive integers
RETURN: matrix, A being modified by permuting column c1 and c2
NOTE: Platz für wichtige Anmerkungen,
  auch über mehrere Zeilen gestreckt
KEYWORDS: matrix, gaussnf, Lineare Algebra
EXAMPLE: example permcol; shows an example"

{
matrix B=A;
B[1..nrows(B),c1]=A[1..nrows(A),c2];
B[1..nrows(B),c2]=A[1..nrows(A),c1];
return(B);
}
example
{
"EXAMPLE:";
echo = 2;
ring r=0,(x),lp;
matrix A[3][3]=1,2,3,4,5,6,7,8,9;
pmat(A);
pmat(permcol(A,2,3));
}
$\vdots$

Taucht innerhalb einer Zeile ein Doppelslash // auf, so wird der Rest der Zeile als Kommentar interpretiert und ignoriert.

Der erste Abschnitt, der zwischen den beiden Kommentarzeilen steht, ist sozusagen der Kopf der Bibliothek. Die erste Zeile enthält das reservierte Wort version, durch das die Versionsnummer der Bibliothek festgelegt wird. Dem reservierten Wort info folgen allgemeine Informationen zur Bibliothek. SEE ALSO: und KEYWORDS: dienen der Erstellung von Verweisen im Handbuch. Man sollte beachten, daß unter dem Punkt PROCECURES: alle Prozedurnamen, die in der Bibliothek enthalten sind, mit einer maximal einzeiligen Beschreibung aufgeführt werden. Dieser Teil wird von SINGULAR angezeigt, wenn die Hilfe zur entsprechenden Bibliothek angefordert wird, etwa


help KeilenT.lib;


Man beachte auch, daß sowohl version, als auch info durch das Gleichheitszeichen, =, Strings zugewiesen werden, so daß die Anführungszeichen ", die sie einschachteln ebenso erforderlich sind, wie das Semikolon am Ende der Zeile!

Abschnitt zwei dient dem Einladen von anderen Bibliotheken, deren Prozeduren im bei den eigenen Prozeduren benötigt werden. Im Beispiel die Bibliothek inout.lib, deren Prozedur pmat im example-Teil der Prozedur permcol verwendet wird.

Im dritten Abschnitt folgen die Prozeduren, schlicht aneinander gereiht. (Dabei ist darauf zu achten, daß der Befehl proc stets am Beginn einer neuen Zeile steht!) Es empfiehlt sich, die in Abschnitt [*] angegebene Syntax für Prozeduren um zwei Abschnitte zu erweitern. Zwischen Prozedurkopf und -körper kann man, in Anführungszeichen " eingeschachtelt, einen Kommentarblock einschieben, der gewisse Schlüsselworte gefolgt von zugehöriger Information enthält. Unter USAGE: sollte eingegeben werden, wie der Befehl aufgerufen wird, und ggf. von welchem Typ die Argumente sind. RETURN: sollte Informationen darüber enthalten, von welchem Typ die Rückgabe ist, und ggf. weitere Informationen. NOTE: dient dazu wichtige Hinweise, zur Prozedur, ihrer Bedienung, etc. zu geben. Die unter KEYWORDS: angegebenen Worte werden ins Inhaltsverzeichnis des SINGULAR-Handbuches aufgenommen, sofern die Bibliothek SINGULAR offiziell angegliedert wird. EXAMPLE: gibt schließlich einen Hinweis darauf, wie man sich unter SINGULAR ein Beispiel zeigen lassen kann. Der hier erläuterte Kommentarblock enthält die Information, die angezeigt wird, wenn man unter SINGULAR Hilfe zu einer Prozedur anfordert, etwa durch


help permcol;


Der zweite Zusatzabschnitt am Ende der Prozedur wird durch das reservierte Wort example eingeleitet, gefolgt von einem Abschnitt in geschweiften Klammern, der SINGULAR-Code enthält. Ziel ist es, ein Beispiel für die Wirkung der Prozedur zu geben, die dem Nutzer die Verwendung erleichtert. Der Nutzer erhält das Beispiel durch Eingabe von example PROZEDURNAME;.


next up previous contents
Next: Ausgabe in Dateien / Up: Erste Schritte Previous: Prozeduren
Thomas Keilen
2000-03-03