WikiDer > Kontrollfluss
Kontrollfluss oder Kontrollfluss ist ein Konzept aus dem Informatik. Es bezieht sich auf die (nichtlineare) Reihenfolge der Ausführung der Anleitung in einem Computer Programm. Der Kontrollfluss wird normalerweise durch die Verwendung von Kontrollstrukturen bestimmt, wie z Schleifen (während, für), Entscheidungsstrukturen (wenn, Fall), Sprunganweisungen und rufen Unterprogramme.
Labels und goto
Die einfachste Form eines Kontrollflusses ist die Verwendung von gehe zu in Kombination mit a wennDies ist normalerweise a usually Etikette wird verwendet, um anzuzeigen, wo man springen soll.
Obwohl alle im Folgenden erwähnten Formen der Flusskontrolle auf diese Weise realisiert werden können, wird sie in den meisten Programmiersprachen nicht verwendet oder wird aufgrund der schlechten Programmstruktur, die sie erzeugt, nicht verwendet.
Kontrollstrukturen
Alle Programmiersprachen außer Narrowtalk haben Bedienstrukturen.
Hiermit wird ein Block von Aussagen (Ausführungsblock ) gesteuert durch eine einfache Struktur, die vor oder um diesen Ausführungsblock platziert wird.Diese Steuerung beinhaltet die Steuerung, ob und wenn ja wie oft der Ausführungsblock ausgeführt wird.
Ein Kontrollbaum wird immer mit einem Schlüsselwort gestartet, normalerweise gefolgt von einem Kontrollausdruck (Ausdruck).
Beispiele für diese Schlüsselwörter sind: zum, während, wenn, Schalter und Fall
Wie das Ende des Ausführungsblocks angezeigt wird, ist für verschiedene Sprachen unterschiedlich.
- kein bestimmtes Schlüsselwort am Ende des Blocks, sondern eine Abgrenzung des Blocks:
- in C, C, C#, Java und Javascript wird der Block von geschweiften Klammern eingeschlossen {...}, oder bei einer einzelnen Anweisung können sogar diese geschweiften Klammern fehlen.
- In Pascal und älteren Algol-Dialekten, loslegen...Ende benutzt.
- Bei PLM, TUN..ENDE benutzt.
- spezifisches Stichwort am Ende:
- In späteren Algol-Dialekten wird das Schlüsselwort rückwärts verwendet: wenn...fi oder Fall...esac
- Fortran, Visual Basic, Ada und verwenden Sie das Schlüsselwort: wenn...ende wenn
Grundsätzlich lassen sich alle Kontrollstrukturen unterteilen in:
- Wahlstrukturen, in diesem Fall wird der Ausführungsblock je nach Steuerausdruck entweder nicht durchlaufen (also 0 oder 1 Mal).
- Schleifen, kann der Ausführungsblock mehrmals durchlaufen werden.
Auswahlstrukturen
Prüfung
Diese Struktur findet sich in allen Programmiersprachen. Je nach Bedingung wird der Ausführungsblock ausgeführt. Sie sieht oft so aus:
wenn (Bedingung){ ...}In anderen Sprachen, einschließlich Basic, sieht es so aus:
if Bedingung dann ...end if
Darüber hinaus gibt es oft einen alternativen Ausführungsblock, wenn die Bedingung nicht erfüllt ist:
if (Bedingung){ ...}sonst{ ...}Diese Notation kennen wir auch in Basic, aber in sehr alten Versionen wird der alternative Ausführungsblock nicht unterstützt BASIC Version 7.0 des Commodore 128 kennt diese Notation nur mit a LOSLEGEN...KURVE wie unten zu sehen:
IF Bedingung THEN BEGIN ...BEND:ELSE BEGIN ...BEND
Wir sehen auch oft, dass es auch möglich ist, mit einer zweiten (und folgenden) Bedingung mit zugehörigen Ausführungsblöcken zu testen:
if (condition1){ ...}elseif (condition2){ ...}else{ ...}Auch Basic hat diese Struktur wie Visual Basic, aber ältere Versionen und BASIC 7.0 unterstützen sie nicht.
Wahl
In vielen Sprachen ist es auch möglich, einen der vielen Ausführungsblöcke anhand einer Nummer auszuwählen:
Schalter (Wert) { Fall 1: // Ausführungsblock 1 ... Fall 2: // Ausführungsblock 2 ... Fall 3: // Ausführungsblock 3 ... Fall 4: // Ausführungsblock 4 ... Fall 5: // Ausführungsblock 5 ...default:}In verschiedenen Basic-Dialekten funktioniert das so:
Fallwert auswählen Fall 1 ' Ausführungsblock 1 ... Fall 2 ' Ausführungsblock 2 ... Fall 3 ' Ausführungsblock 3 ... Fall 4 ' Ausführungsblock 4 ... Fall 5 ' Ausführungsblock 5 ... Fall sonst ... Auswahl beenden
Schleifen
In einer Schleife wird ein Ausführungsblock mehrmals durchlaufen. Jedes Mal, wenn es durchlaufen wird, a Wiederholung Die Hauptschleifen sind unten erwähnt.
Zustandsgesteuerte Schleifen
Bei dieser Form einer Schleife wird der Ausführungsblock ausgeführt, solange eine Bedingung erfüllt ist.
Wir finden dies in den meisten modernen Programmiersprachen (zumindest in C, C, C#, Java, Javascript, Pascal auch in späteren Dialekten von Algol) in der Form:
solange (Bedingung){ ...}und
do { ...} while (Bedingung);Basic hat auch diese bedingten Schleifen, die wiederum dazu führen, dass die geschweiften Klammern verschwinden. EIN während Schleife muss mit a enden wend und in Visual Basic .NET sogar mit Ende während.In der letzten bedingten Schleife wird der Ausführungsblock immer mindestens einmal durchlaufen.
In älteren Sprachen werden Sie auch auf Folgendes stoßen:wiederholen ... bis umBedingung
Gegengesteuerte Schleifen
Diese Schleifen sollen den Ausführungsblock eine voreingestellte Anzahl von Malen durchlaufen.Alle Programmiersprachen der letzten 25 Jahre haben einen solchen Aufbau und sogar einige Assembler (zB der 80386-Assembler und höher) haben eine solche Schleife eingebaut von Standard.
Innerhalb der Schleife kann der Zähler weiterhin in den Anweisungen verwendet werden.
In C, C, C#, Java und Javascript könnte eine zählergesteuerte Schleife so aussehen:
für (i = 0; i < Ende; i ){ ...}In Basic wie folgt:
Für i = 1 Zum Beenden von Schritt 1 ...Weiter i
Sammlungsgesteuerte Schleifen
Diese Schleifen wurden entwickelt, um den Ausführungsblock für jedes Element (eines bestimmten Typs) einer Sammlung zu durchlaufen.Wir begegnen diesem Konstrukt in C#, Visual Basic, Visual Basic .NET, Javascript, Smaltalk und Perl.
In C# könnte das so aussehen:
foreach (Katze k in MyAnimalsCollection){ ...}In Visual Basic und Visual Basic .NET sieht das gleiche so aus.
Dim K As KatFor Each K In MyAnimalsCollection ...Next K
Beachten Sie, dass MyDierenCollection auch Hunde enthalten kann, diese jedoch nicht dem Ausführungsblock angeboten werden.
Besondere Möglichkeiten innerhalb einer Schleife
Im Allgemeinen bietet eine Programmiersprache Möglichkeiten, eine Schleife vorzeitig abzubrechen. Dies umgeht dann die Bedingung, die im Kontrollausdruck steht. In vielen Sprachen kann dies mit der Unterbrechung Statement.Javascript ist die einzige Sprache, die die Möglichkeit hat, break mit einem Label zu versehen, damit mehr verschachtelte Schleifen auf einmal verlassen werden können. Ausfahrt gefolgt vom verwendeten Schleifentyp (z.B Beenden für).
Es ist auch oft möglich, den Rest des Ausführungsblocks für diese Zeit zu überspringen und direkt zur nächsten Iteration zu gehen. Dafür ist es oft kontinuierlichAussage verwendet.
Rekursion als Alternative zu einer Schleife
Wenn sich eine Funktion wiederholt aufruft, wird dies zu Rekursion erwähnt. Auf diese Weise lassen sich auch viele Dinge realisieren, die mit einer Schleife möglich sind. Das kann auch in Basic verwendet werden.
Beispiel: Die Summe aller Zahlen zu Zahl
1 2 .... Zahl
Beispiel für eine rekursive Funktion und eine Schleife, die dasselbe tut
int TelOpTot(int Zahl) { if (Zahl > 0) { return (Zahl TelOpTot(Zahl - 1)); } 0 zurückgeben; }int CountOpTot(int number){ int result = 0 while (number > 0) { result = number; Nummer--; } 0 zurückgeben; }Unendliche Schleifen
Einige Schleifen laufen (unbeabsichtigt) auf unbestimmte Zeit. Solche Schleifen können entstehen, wenn eine Bedingung zum Beenden der Schleife fehlt oder eine Bedingung, die nie erfüllt werden kann, erfüllt ist. Eine Rekursion, die nicht terminiert, kann auch ein Grund dafür sein, dass eine Endlosschleife erstellt wird.
Toter Code
Es ist möglich, dass bestimmte Codeteile nie ausgeführt werden können. Diese Codeteile werden als toter Code bezeichnet. Ein Compiler kann den Kontrollfluss eines Programms analysieren, um den toten Code zu finden.
Wissenswertes
Bei einem der ersten Assemblersprachen der Kontrollfluss erfolgte ausschließlich über eine spezielle Prüfanweisung. Je nach Ergebnis dieser Testanweisung wurde die nächste Anweisung übersprungen oder ausgeführt.
Es war üblich, das nächste Kommando ein Sprungkommando sein zu lassen.