Ablauf und Kontrollstrukturen in verschiedenen
Programmiersprachen
1. Übersicht
2. Verzweigungen (Selektion)
2.1 Einfach-Selektion
2.2 Mehrfach-Selektion
3. Schleifen (Iteration)
3.1 Bedingungsprüfung am Anfang
3.2 Bedingungsprüfung am Ende
3.3 Zählschleifen
1. Übersicht
2. Verzweigungen
(Selektion)
2.1
Einfach-Selektion
Ein logischer Ausdruck (Bedingung) wird
auf seine Wahrheit geprüft. Je nachdem, ob die Bedingung erfüllt wird oder
nicht (logisches Ausdrucksergebnis ist wahr oder falsch), wird einer von zwei
verschiedenen Anweisungsblöcken ausgeführt.
In den Programmiersprachen C, JAVA, Visual Basic und Cobol 85 sieht die Syntax
der Einfach-Selektion folgendermaßen aus:
|
C,
C++, JAVA
|
C,C++,JAVA spezifische
Anmerkungen
|
|
Syntax:
|
Zu
beachten:
|
Der else-Zweig kann entfallen.
Die Bedingung(en) müssen geklammert
werden.
Die Bedingungen können mit &&
(logisches UND) oder mit || (logisches ODER) verknüpft bzw. mit ! negiert
werden.
Einzelne Anweisungen müssen nicht
eingeklammert werden (die Klammerpaare könne weggelassen werden),
mehrere Anweisungen allerdings schon.
|
|
|
Beispiele
|
|
C/C++
|
|
|
JAVA
|
siehe
oben, statt printf aber System.out.println
|
|
Visual Basic
|
Visual Basic
spezifische Anmerkungen
|
|
Syntax:
|
If
Bedingung Then
Anweisungsblock1
ElseIf Bedingung Then
Anweisungsblock2
Else
Anweisungsblock3
EndIf
|
|
Zu
beachten:
|
Der Else- bzw. ElseIf-Zweig kann
entfallen, der If-Zweig muß dann mit End If abgeschlossen sein.
In einer If-Anweisung kann es mehrere
ElseIf-Zweige geben.
Die Bedingungen können mit And oder Or
verknüpft, bzw. mit Not negiert werden.
Es besteht noch die Möglichkeit die If
Then [Else ]-Anweisung in einer Zeile zu schreiben.
|
|
|
Beispiel
|
|
If
i = 1 Then
print 'i ist 1'
ElseIf i = 2
print 'i ist 2'
Else
print 'i ist nicht 1 oder 2'
EndIf
|
|
|
Cobol
85
|
Cobol 85 spezifische
Anmerkungen
|
|
Syntax:
|
IF
Bedingung THEN
Anweisungsblock1
oder NEXT SENTENCE
ELSE Bedingung Then
Anweisungsblock2
oder NEXT SENTENCE
END-IF
|
|
Zu
beachten:
|
Der ELSE-Zweig kann entfallen, allerdings
muß der IF-Zweig mit END-IF abgeschlossen sein.
Mehrere Bedingungen müssen geklammert
werden.
Die Bedingungen können mit AND oder mit
OR verknüpft, bzw. mit NOT negiert werden.
NEXT SENTENCE: für IF-Anweisungen mit
Leeranweisung
|
|
|
Beispiel
|
|
IF i = 1 THEN
DISPLAY 'i ist 1'
ELSE
DISPLAY 'i ist nicht 1'
END-IF
|
|
2.2
Mehrfach-Selektion
Der Wert einer Auswahlgröße bestimmt,
welche der beliebig vielen Anweisungen durchlaufen wird.
In den Programmiersprachen C, JAVA, Visual Basic und Cobol 85 sieht die Syntax
der Mehrfach-Selektion folgendermaßen aus:
|
C,
C++, JAVA
|
C,C++, JAVA spezifische
Anmerkungen
|
|
Syntax:
|
Zu
beachten:
|
Der default-Zweig kann entfallen.
Wird kein break nach einer Anweisung
gesetzt, so werden auch die Anweisungen der nächsten case-Teile
abgehandelt, bis zum nächsten break oder bis zum Ende des
switch-Statements.
|
|
|
Beispiele
|
|
C/C++
|
|
|
JAVA
|
siehe
oben, statt printf aber System.out.println
|
|
Visual Basic
|
Visual Basic
spezifische Anmerkungen
|
|
Syntax:
|
Select
Case Ausdruck
Case Ausdruckliste
Anweisung1
Case Ausdruckliste
Anweisung2
Case Else
Anweisung3
Select End
|
|
Zu
beachten:
|
Der Case Else-Zweig kann entfallen.
Bei der Verwendung von logischen
Operatoren ist zusätzlich Is vor den Operator zu setzen.
Strings und Variablen sind im Case
möglich.
|
|
|
Beispiel
|
|
Select Case i
Case 1
Print 'i ist 1.'
Case 2,3
Print 'i ist 2,3.'
Case 4 To 6
Print 'i ist zw. 4. u. 6.'
Case Else
Print 'Falsch!'
Select End
|
|
|
Cobol 85
|
Cobol 85 spezifische
Anmerkungen
|
|
Syntax:
|
EVALUATE
Ausdruck [ALSO Ausdruck]
WHEN Literal [ALSO Literal]
Anweisung,
WHEN Konst THRU Konst
Anweisung,
WHEN OTHER
Anweisung,
END-EVALUATE
|
|
Zu
beachten:
|
Der WHEN OTHER-Zweig kann entfallen, die
Anweisung muß jedoch mit END- EVALUATE abgeschlossen werden.
Operanden vor dem ersten WHEN:
Auswahlsubjekte
Operanden im WHEN: Auswahlobjekte
Die Anzahl der Auswahlobjekte in jeder
WHEN-Phrase muß gleich der Anzahl der Auswahlsubjekte sein.
WHEN-Phrase trifft zu, wenn alle ihre
Auswahlobjekte mit den entsprechenden Auswahsubjekten übereinstimmen.
Bei WHEN können entweder Werte oder
Bereiche (THRU) angegeben werden.
|
|
|
Beispiel
|
|
EVALUATE i
WHEN 1
DISPLAY 'i ist 1.',
WHEN 2 THRU 3
DISPLAY 'i ist 2,3.',
WHEN 4 THRU 6
DISPLAY 'i ist zw. 4 u. 6.',
WHEN OTHER
DISPLAY 'Falsch!',
END-EVALUATE
|
|
3. Schleifen
(Iteration)
Schleifen dienen zur mehrmaligen
Ausführung gleicher Programmteile. Verschachtelungen von Schleifen sind in
allen Programmiersprachen beliebig weit möglich. Für die Verknüpfungen bzw.
Klammerungen von Bedingungen gelten in den jeweiligen Programmiersprachen die
selben Regeln wie bei den Verzweigungen (Selektion).
|
Begriffe
|
|
|
|
Laufbedingung:
|
Die
Schleife wird durchlaufen, solange die Bedingung erfüllt ist
|
|
Abbruchbedingung:
|
Die
Schleife wird durchlaufen, bis die Bedingung erfüllt ist.
|
|
Merkregel
|
|
Steht
vor der Bedingung ein while, muß eine Laufbedingung angegeben werden.
(Ausnahme: In Cobol gibt es kein while)
Steht vor der Bedingung ein until, muß eine Abbruchbedingung angegeben werden
|
3.1
Bedingungsprüfung am Anfang
Da der Wert des Bedingungsausdruckes vor
der Abarbeitung der Anweisung überprüft wird, ist es möglich, daß die Schleife
überhaupt nicht durchlaufen wird.
|
C,
C++, JAVA
|
C, C++, JAVA spezifische
Anmerkungen
|
|
Syntax:
|
Zu
beachten:
|
|
Beispiele
|
|
C/C++
|
|
|
JAVA
|
|
|
Visual Basic
|
Visual Basic
spezifische Anmerkungen
|
|
Syntax:
|
While
Laufbedingung
Anweisungsblock
Wend
Do While Laufbedingung
Anweisungsblock
Loop
Do Until Abbruchbedingung
Anweisungsblock
Loop
|
|
Zu
beachten:
|
|
Beispiele
|
|
While
i < 10
Print i,' ist kleiner als 10'
i = i + 1
Wend
Do While i < 10
Print i,' ist kleiner als 10'
i = i + 1
Loop
Do Until i = 10
Print i,' ist kleiner als 10'
i = i + 1
Loop
|
|
|
Cobol
85
|
Cobol 85 spezifische
Anmerkungen
|
|
Syntax:
|
PERFORM [WITH TEST BEFORE] UNTIL Abbruchbedingung
Anweisung
END-PERFORM
|
|
Zu
beachten:
|
WITH TEST BEFORE: Die Abbruchbedingung
wird am Anfang der Schleife geprüft (Default; kann weggelassen werden).
|
|
|
Beispiel
|
|
PERFORM UNTIL i = 10
DISPLAY i,' ist kleiner 10'
i = i + 1
END-PERFORM
|
|
3.2
Bedingungsprüfung am Ende
Die Schleife wird dabei auf jeden Fall mindestens
einmal durchlaufen.
|
C,
C++, JAVA
|
C,C++, JAVA spezifische
Anmerkungen
|
|
Syntax:
|
Zu
beachten:
|
|
Beispiele
|
|
C/C++
|
|
|
JAVA
|
|
|
Visual Basic
|
Visual Basic spezifische
Anmerkungen
|
|
Syntax:
|
Do
Anweisungsblock
Loop While Laufbedingung
Do
Anweisungsblock
Loop Until Abbruchbedingung
|
|
Zu
beachten:
|
|
Beispiele
|
|
Do
Print i,' ist kleiner als 10'
i = i + 1
Loop While i < 10
Do
Print i,' ist kleiner als 10'
i = i + 1
Loop Until i = 10
|
|
|
Cobol
85
|
Cobol 85 spezifische
Anmerkungen
|
|
Syntax:
|
PERFORM WITH TEST AFTER UNTIL Abbruchbedingung
Anweisung
END-PERFORM
|
|
Zu
beachten:
|
WITH TEST AFTER: Die Abbruchbedingung
wird am Ende der Schleife geprüft
|
|
|
Beispiel
|
|
PERFORM WITH TEST AFTER UNTIL i = 10
DISPLAY i,' ist kleiner 10'
i = i + 1
END-PERFORM
|
|
3.3 Zählschleifen
Wenn im voraus bekannt ist, wie oft die
Anweisungen zu wiederholen sind, werden Zählschleifen verwendet.
Es muß dabei immer ein Anfangswert (AW), Endwert (EW; bzw. Laufbedingung) und
eine Schrittweite (SW) angegeben werden.
|
C,
C++, JAVA
|
C, C++, JAVA spezifische
Anmerkungen
|
|
Syntax:
|
Zu
beachten:
|
|
Beispiele
|
|
C/C++
|
|
|
JAVA
|
|
for
( i = 1; i < 10; i++)
|
|
|
Visual Basic
|
Visual Basic
spezifische Anmerkungen
|
|
Syntax:
|
For Laufvariable = AW To EW [Step SW]
Anweisungsblock
Next [Laufvariable]
|
|
Zu
beachten:
|
AW, EW, SW dürfen auch aus einem Ausdruck
bestehen. Außerdem dürfen sie negativ sein oder aus einer beliebigen
rationalen Zahl bestehen.
Ohne Angabe einer Schrittweite mit Step
wird standardmäßig eine Schrittweite von 1 angenommen.
Laufvariable nach Next kann entfallen.
Dadurch wird nur die Ausführungsgeschwindigkeit geringfügig erhöht.
|
|
|
Beispiel
|
|
For i = 1 to 9
Print i,' ist kleiner als 10'
Next
|
|
|
Cobol
85
|
Cobol 85 spezifische
Anmerkungen
|
|
Syntax:
|
PERFORM VARYING Laufvariable FROM AW BY SW UNTIL Abbruchbedingung
Anweisungsblock
END-PERFORM
|
|
Zu
beachten:
|
Die Laufvariable darf in der Schleife
nicht verändert werden.
|
|
|
Beispiel
|
|
PERFORM VARYING i FROM 1 BY 1 UNTIL i = 10
DISPLAY i,' ist kleiner 10'
END-PERFORM
|
|