namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:steuern

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


kennen:steuern [2019-01-13 14:18] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Steueranweisungen ======
 +> Iteration statements specify looping.
 +>> ---  C++ Standard ISO 14882, Abs. 6.5 Satz 1
 +
 +
 +===== Schleifen =====
 +Schleifen erlauben die wiederholte Ausführung eines Programmabschnitts.
 +Es sind [[.:begriffe#Steueranweisung|Steueranweisungen]], 
 +die aus einem Schleifenrumpf (einer [[.:begriffe#Anweisung]]
 +oder einem [[.:begriffe#Block|Anweisungsblock]])
 +und einem Ausführungstest mit einem logischen 
 +[[.:begriffe#Ausdruck]] (Bedingung) bestehen.
 +Ist der logische Ausdruck bei der Auswertung falsch, wird die Schleife verlassen.
 +Je nach Lage der Testbedingung im Steuerfluss sind die Schleifen
 +
 +  * [[#kopfgesteuerte Schleifen]],
 +  * [[#fußgesteuerte Schleifen]]
 +  * oder haben eine [[#Schleifenabbruch]]-Bedingung mitten im Block.
 +
 +
 +==== Kopfgesteuerte Schleifen ====
 +Kopfgesteuerte Schleifen führen den Test vor jedem Schleifendurchlauf aus.
 +Bei erfülltem Test wird der Schleifenrumpf abgearbeitet und zum Test
 +zurückgekehrt.
 +Ist die Testbedingung falsch, wird der Schleifenrumpf nicht (mehr) ausgeführt
 +(abweisender Test).
 +
 +Syntax:
 +{{ :kennen:bart_simpson_chalkboard.gif|Quelle: Bart Simpson Chalkboard Wallpaper Generator}}
 +
 +>  ''while ('' Bedingung '')'' 
 +>>  Schleifenrumpf
 +
 +Die "Zählschleifen"-Steueranweisung
 +
 +>  ''for ('' Start '';'' Bedingung '';'' Schleifenschritt '')'' 
 +>>  Schleifenrumpf
 +
 +ist gleichbedeutend mit
 +
 +>  ''{'' 
 +>>  Start '';''
 +>>  ''while ('' Bedingung '')''
 +>>  ''{'' 
 +>>>  Schleifenrumpf  
 +>>>  Schleifenschritt '';''
 +>>  ''}''
 +>  ''}''
 +
 +Start und Schleifenschritt sind beliebige Ausdrücke. 
 +Im Start-Ausdruck können Variablen definiert und / oder 
 +mit Anfangswerten versehen werden (Schleifenzähler).
 +Im Schleifenschritt nach Ausführung des Schleifenrumpfes werden 
 +solche Zähler verändert.
 +
 +Start, Bedingung und Schleifenschritt der 
 +''for''-Schleife dürfen auch leer bleiben:
 +''for (;;)'' ... ist gleichbedeutend mit ''while(true)'' ...
 +
 +Die [[.:keywords#for|range-based for]]-Anweisung (ab [[begriffe#C++11]])
 +
 +>  ''for (''Typ Element '':'' Bereich '')'' 
 +>>  Schleifenrumpf
 +
 +führt den Schleifenrumpf für jedes Element (Wert oder Referenz) eines Bereiches ([[.:typen#Felder|Feld]] oder [[.:stl#Container]]) aus.
 +
 +Siehe auch: 
 +Schlüsselwörter [[.:keywords#for]], [[.:keywords#while]], 
 +[[.:beispiel:for]], [[.:beispiel:while]].
 +
 +==== Fußgesteuerte Schleifen ====
 +Fußgesteuerte Schleifen führen den Test erst nach jedem (mindestens einem)
 +Schleifendurchlauf (nicht abweisender Test).
 +Ist das Testergebnis wahr, 
 +wird die Programmbearbeitung beim Schleifenanfang 
 +([[.:keywords#do|Schlüsselwort do]]) fortgesetzt.
 +Bei nicht erfüllter Bedingung wird die Schleife verlassen.
 +
 +Syntax:
 +>  ''do''
 +>>  Schleifenrumpf 
 +>  ''while ('' Bedingung '');''
 +
 +Siehe auch: 
 +Schlüsselwörter [[.:keywords#do]], [[.:keywords#while]],
 +[[.:beispiel:while]].
 +
 +==== Schleifenabbruch ====
 +Mit der Abbruchanweisung kann aus einer Schleife herausgesprungen werden.
 +So entstehen Schleifen mit Abbruchbedingung in der Mitte des Blocks.
 +
 +Syntax:
 +
 +>  ''for(;;)''
 +>  ''{''
 +>>  Anweisungen_Vorbereitung
 +>>  ''if('' Abbruch_Bedingung '') break;''
 +>>  Anweisungen_bei_Erfolg
 +>  ''}''
 +
 +Die Anweisung ''continue;'' wird (selten) eingesetzt, 
 +um ans innere Ende des Schleifenblocks zu springen.
 +Die Schleife wird dadurch nicht beendet.
 +
 +Siehe auch: 
 +Schlüsselwörter [[.:keywords#break]], [[.:keywords#continue]],
 +[[.:beispiel:forbreak]], [[.:beispiel:continue]].
 +
 +===== Verzweigungen =====
 +Verzweigungen ([[.:begriffe#Entscheidung|Entscheidungen]])
 +erlauben die wahlweise Ausführung von [[.:begriffe#Anweisung|Anweisungen]].
 +
 +==== Einfache Verzweigungen ====
 +Ein logischer [[.:begriffe#Ausdruck]] (Bedingung) wird überprüft.
 +Ist die Bedingung wahr, wird die nachfolgende Anweisung1 
 +(oder der [[.:begriffe#Block|Anweisungsblock]]) ausgeführt,
 +ansonsten die Anweisung2.
 +Der ''else''-Zweig kann weggelassen werden.
 +Der ''else''-Zweig bindet immer an das unmittelbar vorangehende ''if''.
 +Eine andere Zuordnung ist durch Blockklammern ''{ }'' möglich.
 +
 +Syntax: 
 +
 +>  ''if('' Bedingung '')'' 
 +>>  Anweisung1 
 +>  ''else'' 
 +>>  Anweisung2 
 +
 +Siehe auch: 
 +Schüsselwörter [[.:keywords#if]], [[.:keywords#else]],
 +[[.:beispiel:ifelse]].
 +
 +==== Mehrfachverzweigungen ====
 +Bei Mehrfachverzweigungen stehen mehr als zwei Programmzweige zur Auswahl.
 +Nimmt der Testausdruck wenige ganzzahlige Werte an,
 +ist die Formulierung als [[.:keywords#switch]]-Anweisung möglich.
 +Andernfalls muss die Mehrfachverzweigung durch mehrere 
 +[[#einfache Verzweigungen]] codiert werden 
 +(verschachtelte Verzweigungen oder if-else-Leiter).
 +
 +Syntax:
 +
 +>  ''switch('' Testausdruck '')''
 +>  ''{''
 +>  ''case'' Konstante '':'' Anweisungen ''break;''
 +>  %%//%% : -" weitere Fälle 
 +>  ''default:'' Anweisungen ''break;'' 
 +>  ''}''
 +
 +Nach dem Schlüsselwort [[.:keywords#case]]
 +darf immer nur eine ganzzahlige Konstante stehen.
 +Jede Konstante darf nur einmal aufgeführt werden.
 +Die Reihenfolge der Einsprungmarken ist beliebig.
 +
 +Mit der [[.:keywords#break]]-Anweisung
 +wird die Mehrfachverzweigung verlassen.
 +Mehrere ''case''-Marken können gemeinsamen Code besitzen,
 +weil die ''break''-Anweisung nicht nach jedem ''case''-Zweig stehen muss 
 +(Durchfallen, engl. fallthrough).
 +
 +Die Angabe des Standardzweiges 
 +([[.:keywords#default]]:)
 +ist optional. Dieser wird ausgeführt,
 +wenn keine der anderen Marken zutrifft.
 +
 +Siehe auch: 
 +Schlüsselwörter [[.:keywords#break]], [[.:keywords#case]], [[.:keywords#default]], [[.:keywords#switch]],
 +[[.:beispiel:switch]].
 +
 +===== Sprunganweisungen =====
 +Syntax:
 +>  ''goto'' Sprungmarke '';''
 +
 +Syntax:
 +>  Sprungmarke '':''
 +
 +Die Sprungmarke ist ein beliebiger [[.:sprachkern#Namen|Name]].
 +Sprungmarke und Sprungbefehl müssen innerhalb derselben Funktion stehen. 
 +Der Sprung kann vorwärts oder rückwärts erfolgen.
 +Durch den Sprungbefehl darf keine Variablendefinition übergangen werden.
 +
 +Siehe auch: 
 +Schlüsselwort [[.:keywords#goto]],
 +[[.:beispiel:goto]].
  
kennen/steuern.txt · Zuletzt geändert: 2019-01-13 14:18 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki