Zum Inhalt springen

Computerprogramm

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. Mai 2004 um 17:55 Uhr durch Hubi (Diskussion | Beiträge) (Siehe auch gekürzt). Sie kann sich erheblich von der aktuellen Version unterscheiden.


Ein Computerprogramm ist die Umsetzung eines Algorithmus in eine Form, die von einem Computer verarbeitet werden kann. Dieser Prozess wird als Implementierung bezeichnet.

Der Begriff Programm wird sowohl für den in einer Programmiersprache verfassten Quelltext, als auch für den von einem Computer ausführbaren Maschinencode verwendet. Um aus dem Quelltext den Maschinencode zu generieren, wird ein Compiler oder Interpreter benötigt. Diese übersetzen die Befehle der Programmiersprache, die für menschliche Benutzer verständlich und bearbeitbar sein sollen, in die semantisch entsprechenden Befehle der Maschinensprache des verwendeten Computers.

Beispiel: ggT-Berechnung

Zunächst muss ein geeigneter Algorithmus gefunden werden.

Der Euklidische Algorithmus, der bereits um 300 v. Chr. beschrieben wurde, dient zur Ermittlung des größten gemeinsamen Teilers (ggT) zweier natürlicher Zahlen A und B:

  1. Sei A die größere der beiden Zahlen A und B (entsprechend vertauschen)
  2. Setze A = AB
  3. Wenn A und B ungleich sind, dann fahre fort mit Schritt 1, wenn sie gleich sind, dann beende den Algorithmus: Diese Zahl ist der größte gemeinsame Teiler.

Implementierung

Sobald eine formale Beschreibung eines Algorithmus, also eine genau definierte Verarbeitungsvorschrift, vorliegt, kann der Algorithmus umgesetzt werden. Dazu wird eine geeignete Programmiersprache ausgewählt.

Verwendung einer Programmiersprache

Zur Umsetzung wird heute meist eine höhere Programmiersprache verwendet, die von einem Computer eventuell nicht direkt ausgeführt werden kann. In Sprachen wie Pascal dienen Variablen, Ausdrücke, Vergleiche, Zuweisungen und Kontrollstrukturen zur Umsetzung des ggT-Algorithmus:

                          (* Schritt3:             *)
  WHILE A <> B DO BEGIN   (* Solange A ungleich B  *)
                          (* Schritt1:             *)
     IF B>A THEN BEGIN    (* Falls B größer als A  *)
        H:=A; A:=B; B:=H; (* Vertausche A und B    *)
     END;                 (* Schritt2:             *)
     A:=A-B;              (* Ersetze A durch A-B   *)
  END;                   

Berücksichtigung aller Sonderfälle

Bei der Umsetzung wird mit der Prüfung von Schritt 3 begonnen. Der ursprüngliche Algorithmus berücksichtigt nicht den Fall, dass A und B bereits zu Beginn gleich sein können. Wäre die Aufgabe, den größten Teiler von 103 und 103 zu finden, würde ein Mensch sofort das Ergebnis 103 nennen, er würde den Algorithmus gar nicht bemühen. Der originale Algorithmus würde aber Null ergeben. Die Umsetzung auf einem Rechner muss auch alle Sonderfälle berücksichtigen. Durch das Vorziehen von Schritt 3 wird der Sonderfall hier korrekt behandelt.

Elementare Schritte

Pascal und andere Programmiersprachen besitzen keine Operation zum Vertauschen von Zahlen. Dies muss daher in elementarere Schritte umgesetzt werden. Eine zusätzliche Variable H, eine sogenannte Hilfsvariable, erlaubt die Vertauschung mit Hilfe von drei Zuweisungen:

    H:=A;     (* Rette Wert von A in der Hilfsvariable H *)
    A:=B;     (* Überschreibe A mit dem Wert von B       *)
    B:=A;     (* Überschreibe B mit dem Wert von H (=A)  *)

Dies ist auch ein kleiner Algorithmus.

Ein vollständiges Programm

Damit hieraus ein korrektes Programm wird, muss der Algorithmus noch um Ein- bzw. Ausgabeanweisungen, oft jedoch auch um Variablen und eine Programmstruktur ergänzt werden. Diese sind nicht Teil des eigentlichen Algorithmus:

  PROGRAM Ggt(Input,Output);  (* Programmkopf        *)
    VAR A,B,H: Integer;       (* Variablendefinition *)
  BEGIN
    ReadLn(A,B);              (* Eingabe von A und B *)
    WHILE A <> B DO BEGIN     (* Euklidischer        *)
       IF B>A THEN BEGIN      (* Algorithmus         *)
          H:=A; A:=B; B:=H;
       END;
       A:=A-B;
    END;
    WriteLn(A);               (* Ausgabe von A       *) 
  END.                        (* Programmende        *)

Übersetzung und Ausführung

Erst dieses Programm kann mit einem Texteditor in eine Datei geschrieben werden, die dann dann übersetzt und ausgeführt werden kann. Hierzu ist ein Compiler erforderlich, der den Code in der Programmiersprache in Maschinensprache übersetzt und das Ergebnis in eine ausführbare Datei schreibt. Diese kann dann über ein Betriebssystem gestartet werden. Das Programm muss dabei nur einmal übersetzt werden. Es kann danach beliebig oft gestartet werden.

Manchmal wird auch ein Interpreter verwendet, der Programme ohne vorherige Übersetzung ausführen kann. Der Interpreter selbst ist dann ein ausführbares Programm in Maschinensprache. Auch die Verwendung von Zwischencode ist möglich.

Siehe auch: Software, Ausführbares Programm, Anwendungsprogramm, Dienstprogramm