Informatikmaterialien 
von Tino Hempel

Startseite | Informatik | Physik | Mathematik | Sonstiges |

| Inhalt | Vorherige Seite | Nächste Seite | 


Richard-Wossidlo-Gymnasium Ribnitz-Damgarten
Fachbereich Informatik


Formatierung des Quelltextes

Eine gute Quelltextformatierung vereinfacht das Finden von logischen Fehlern. Um nicht etwa das Abschließen einer Verbundanweisung zu vergessen, empfiehlt sich auch bei der Quelltexteingabe darauf zu achten, dass das Programm jeder zeitlauffähig ist.


Eingabereihenfolge der Anweisungen

Man schreibe die zu verwendende algorithmische Grundstruktur stets komplett auf und kommentiere die Lücken. Diese werden im Anschluss nach dem gleichen Prinzip gefüllt.

Beispiel (Object-Pascal)

sinnvolle Weise ungünstige Weise
Schritt 1
repeat
  //kommt später
until dieMaus.doppelKlick;
repeat
  meinStift.hoch;
Schritt 2
repeat
  meinStift.hoch;
  if dieMaus.istGedrueckt
  then
  begin
    //kommt später
  end;
until dieMaus.doppelKlick;
repeat
  meinStift.hoch;
  if dieMaus.istGedrueckt
  then
  begin
    meinStift.bewegeBis(x,y);
    meinStift.zeichneKreis(1);
    while dieMaus.istGedrueckt
Schritt 3
repeat
  meinStift.hoch;
  if dieMaus.istGedrueckt 
  then
  begin
    meinStift.bewegeBis(x,y);
    meinStift.zeichneKreis(1);
    while dieMaus.istGedrueckt
    do ; //warte
    meinStift.runter;
    meinStift.bewegeBis(x,y);
  end;
until dieMaus.doppelKlick;
repeat
  meinStift.hoch;
  if dieMaus.istGedrueckt 
  then
  begin
    meinStift.bewegeBis(x,y);
    meinStift.zeichneKreis(1);
    while dieMaus.istGedrueckt
    do ; //warte
    meinStift.runter;
    meinStift.bewegeBis(x,y);
  end;
until dieMaus.doppelKlick;
Konsequenz Programm ist stets lauffähig Programm läuft erst, wenn der gesamte Quelltext eingegeben wurde

Einrückungen

Quelltext, der eine Teilstruktur darstellt, ist einzurücken. Es empfehlen sich Kommentare. 

Damit ergeben sich Konsequenzen für die algorithmischen Grundstrukturen.

Grundstruktur

Musterbeispiel Hinweise

Verbundanweisung

begin
  meinStift.bewegeBis(x,y);
  meinStift.zeichneKreis(1);
end;
Nach dem Beginn einer Verbundanweisung wird um zwei Zeichen eingerückt, das Ende der Verbundanweisung hebt die Einrückung wieder auf.

Selektion

einsteige Selektion

if dieTastatur.wurdegedrueckt
then
begin //begin of then
  meinStift.bewegeBis(x,y);
  meinStift.zeichneKreis(1);
end; //end of then
Vereinfachung, falls nur eine Anweisung abzuarbeiten ist:
if dieTastatur.wurdegedrueckt
then meinStift.setzeFarbe(ROT);

zweiseitige Selektion

if dieTastatur.wurdegedrueckt
then
begin //begin of then
  meinStift.setzeFarbe(ROT);  
  meinStift.zeichneKreis(1);
end //end of then
else
begin //begin of else
  meinStift.setzeFarbe(GELB);
  meinStift.zeichneRechteck(100,80);
end; //end of else
Vereinfachung, falls in einem Zweig nur eine Anweisung abzuarbeiten ist:
if dieTastatur.wurdegedrueckt
then meinStift.setzeFarbe(ROT)
else
begin //begin of else
  meinStift.setzeFarbe(GELB);
  meinStift.zeichneRechteck(100,80);
end; //end of else

mehrseitige Selektion

CASE zeichen OF
  'r':meinStift.zeichneRecheck(100,100);
  'k':meinStift.ZeichneKreis(70);
  'g':
  begin //begin of selektor 'g'
    meinStift.runter;
    meinStift.bewegebis(x,y);
    meinStift.hoch;
  end; //end of selektor 'g'
  else derBildschirm.loecheAlles;
end; //end of case
Wird in einem Alternativzweig eine Verbundanweisung notwendig, so beginnt diese unter dem entsprechendem Selektor. Gleiches gilt für den Alternativzweig für nicht genannte Selektoren. Man beachte, dass die mehrseitige Selektion abgeschlossen werden muss (end of CASE).

Iteration

abweisende Schleife

while dieMaus.istgedrueckt
do 
begin //begin of while
  meinStift.bewegeBis(x,y);
  meinStft.zeichenKreis(5);
end; //end of while
Vereinfachung, falls nur eine Anweisung abzuarbeiten ist:
while dieMaus.istgedrueckt
do meinStift.bewegeBis(x,y);

 

nichtabweisende Schleife

repeat
  meinStift.bewegeBis(x,y);
  meinStift.zeichneKreis(1);
until dieMaus.doppelKlick;
Es ist keine Verbundanweisung erforderlich.

Zählschleife

for i:=1 to 10 
do
begin //begin of for
  meinStift.zeichneKreis(4*i+5);
  meinStift.setzeFarbe(i);
end; //end of for
Vereinfachung, falls nur eine Anweisung abzuarbeiten ist:
for i:=1 to 10
do meinStift.zeichneKreis(4*i+5);

 

Groß- und Kleinschreibungen

kommt noch ;-).

 



zur Startseite
© Tino Hempel 1997 - 2004 Im Web vertreten seit 1994.
Eine Internet-Seite aus dem Angebot von Tino Hempel.

Für alle Seiten gilt der 
Haftungsausschluss/Disclaimer.