next up previous contents
Next: Klarheit Up: Programmierstil Previous: Programmierstil

Kommentare

Ein Programm dient zwei Zwecken: Erstens: Es sagt dem Computer, was er zu tun hat. Zweitens: Es sagt dem Programmierer, was das Programm tut.

Ein funktionierendes, aber nicht kommentiertes Programm ist wie eine Zeitbombe, die nur darauf wartet, zu explodieren. Früher oder später wird es jemand geben, der das Programm modifizieren möchte und dann ist seine Aufgabe unendlich viel schwerer, als wenn das Programm Kommentare enthielte. Deshalb ist es ebenso wichtig zu lernen, wie man ein Programm kommentiert wie das Programmieren selbst.

In C++ gibt es zwei Typen von Kommentaren. Die ersten beginnen mit /* und enden mit */. Sie umfassen mehrere Zeilen. Die andere Form der Kommentare beginnt mit zwei Schrägstrichen // und endet jeweils am Ende einer Zeile.

Es ist eine gute Idee, am Anfang des Programms einen Kommentarblock einzusetzen. Dieser könnte folgende Informationen enthalten (nicht alle Programme brauchen diese Informationen, also benutze nur die, die wichtig sind).

Ein Beispiel für ein mangelhaft kommentiertes Programm ist das Beispiel harmos.cc aus der Einleitung. Wir haben dort alle Kommentare gelöscht um die Arbeit ses Eintippens abzukuerzen. Die kommentierte Version des Programms lautet wie folgt:

/*********************************************************************
  harmos.cc -- harmonischer Oszillator
  Autor    : R. Hilfer
  Zweck    : Beispiel zur Vorlesung, demonstriert iterative Loesung
             des harmonischen Oszillators
  Gebrauch : Eingabe von stdin: 
               C   = dimensionslose Eigenfrequenz in der BGL u''=-Cu,
               u_0 = Anfangswert der Auslenkung u
               v_0 = Anfangsgeschwindigkeit
               dt  = Zeitschritt
               t_max = Gesamtzeit
             Erzeugt Datei harmon.dat mit Ergebnissen

  Dateien  : Ausgabe auf Datei harmon.dat dreispaltig im Format: 
               Spalte 1 = Zeit im Intervall [0,t_max]
               Spalte 2 = dimensionslose Auslenkung (Naeherungswert
                          iterativ berechnet mit Zeitschritt dt)
               Spalte 3 = dimensionslose Auslenkung (numerisch exakt
                          mit cos-Funktionsaufruf berechnet)
  Version  : 1.0 (Originalversion) erstellt am  21.9.2000
  Bemerkung: Es wird die dimensionslose BGL geloest, d.h. C=k*tau^2/m
             wobei k=Federkonstante,m=Masse,tau=Einheit der Zeit
 *********************************************************************/

// Einbinden benoetigter Bibliotheken
#include<iostream>
using std::cin;
using std::cout;
#include<fstream>
using std::ostream;

int main()
{
// Definiere die Variablen u(t),v(t) und t
   double u[10000], v[10000], t;  // Ausgabevariablen

// Definiere Anfangsbedingungen und Parameter
   double C;          // C=Eigenfrequenz
   double u_0,v_0;    // u_0=Anfangsauslenkung, v_0=Anfangsgeschwindigkeit
   double t_max, dt;  // t_max=Gesamtzeit, dt=Zeitintervall

// Parameter abfragen und einlesen
   cout << "dimensionslose Eigenfreq. :";  cin >> C;
   cout << "Anfangsauslenkung         :";  cin >> u_0;
   cout << "Anfangsgeschwindigkeit    :";  cin >> v_0;
   cout << "Gesamtzeit     :";  cin >> t_max;
   cout << "Zeitintervall  :";  cin >> dt;

// Initialisierungen der Variablen
   u[0]=u_0;
   v[0]=v_0;

// Schleife von t=0 bis t=t_max
   for( int i=0; i<=t_max/dt; i++ )
   {
     v[i+1]=v[i]-C*u[i]*dt;
     u[i+1]=u[i]+v[i+1]*dt;       // Berechne u und v rekursiv
   }

// Ausgabe der iterativ berechneten und der "exakten" Loesung
   ofstream outfile("harmon.dat"); // Eroeffnen der Ausgabedatei
   t=0.0;
   for( int i=0; i<=t_max/dt; i++ )
   {
      outfile << t << "\t" << u[i] << "\t" << u_0*cos(sqrt(C)*t) << "\n";
      t=t+dt;
   }
// Ende des Hauptprogramms
}


next up previous contents
Next: Klarheit Up: Programmierstil Previous: Programmierstil
© R.Hilfer et al., ICA-1, Univ. Stuttgart
28.6.2002