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
}