Einführung in die Verbundanweisung (Block, Sequenz) in C++ im Rahmen der Lehre des Programmierens mit der Programmiersprache C++. [] (C++ Block C++ compound-statement C++ Sequenz C++ Verbundanweisung C++ Anweisungsverbund C++), Lektion, Seite 721126
http://www.purl.org/stefan_ram/pub/c++_verbundanweisung_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Die Verbundanweisung in C++

Eine Anweisung, die mit einer geschweiften Klammer beginnt und endet und weitere Anweisungen enthalten kann, nennt man eine Verbundanweisung  (compound statement ). Das Nichtterminalsymbol der C++ -Syntax für die Verbundanweisung ist 〈compound-statement 〉 (Verbundanweisung), es hat die folgende Produktion.

compound-statement ::=
"{" [〈block-item-list 〉] "}".

Das Nichtterminalsymbol block-item-list  soll hier nicht weiter erklärt werden. Es reicht zu sagen, daß an dieser Stelle Anweisungen  stehen können.

Verbundanweisung mit einer Anweisung

Eine Verbundanweisung kann beispielsweise genau eine  Anweisung enthalten, wie die Ausdruckanweisung in dem folgenden Beispiel. Die Verbundanweisung ist "{ ::std::cout << "Haus" << '\n'; }" und die enthaltene Ausdruckanweisung ist "::std::cout << "Haus" << '\n';" mit dem Ausdruck "::std::cout << "Haus" << '\n'".

verbundanweisung1.cpp
#include <iostream> 
#include <ostream>
int main() 
{ ::std::cout << "Haus" << '\n'; }

::std::cout
Haus

Verbundanweisung mit mehreren Anweisungen

Eine Verbundanweisung kann auch eine Folge mehrerer Anweisungen  enthalten. Diese werden dann in zeitlicher Reihenfolge hintereinander ausgeführt und zwar in derselben Reihenfolge, in der sie auch im Programmtext stehen. Wegen dieser Eigenschaft kann man sagen, daß die Verbundanweisung in C++  das Konzept der Sequenz  realisiert.

verbundanweisung2.cpp
#include <iostream> 
#include <ostream>
int main() 
{ ::std::cout << "Haus" << '\n';  
::std::cout << "Hof" << '\n'; }

::std::cout
Haus 
Hof

Verbundanweisung ohne Anweisungen

Es ist aber auch möglich, daß eine Verbundanweisung ganz leer ist, also keine weitere Anweisung enthält.

verbundanweisung0.cpp
int main(){}

Solch eine Verbundanweisung ist, wie das Semikolon ";" eine Schreibweise für eine Anweisung ohne Wirkung.

Kombination von Verbundanweisungen

Da eine Verbundanweisung eine Anweisung ist und eine Verbundanweisung selber wieder Anweisungen enthalten kann, kann eine Verbundanweisung auch als Anweisung in einer anderen Verbundanweisung vorkommen. So können beispielsweise zwei Verbundanweisungen sequentiell kombiniert werden: Sie werden dann in der gegebenen Reihenfolge hintereinander ausgeführt: Die Kontrolle gelangt vom Ausgang der ersten Verbundanweisung zum Eingang der zweiten.

verbundanweisung3.cpp
#include <iostream> 
#include <ostream>
int main() 
{ { ::std::cout << "Haus" << '\n';  
::std::cout << "Hof" << '\n'; } 
{ ::std::cout << "Tisch" << '\n';  
::std::cout << "Stuhl" << '\n'; }}

::std::cout
Haus 
Hof 
Tisch 
Stuhl

Verbundanweisungen zur Strukturierung

Verbundanweisungen können zur Strukturierung (übersichtlichen Gliederung) von Programmen dienen.

In dem folgenden Programm wird durch die Verbundanweisung klargestellt, daß sich der Kommentar auf die beiden folgenden Anweisungen bezieht.

verbundanweisung4.cpp
#include <iostream> 
#include <ostream> 
#include <cmath>
int main() 
{ { // Ausgabe von Potenzen 
::std::cout << ::std::pow( 10., 2. ) << ", ";  
::std::cout << ::std::pow( 2., 10. ) << ". "; } 
::std::cout << 10. + 2. << ", ";  
::std::cout << 2. + 10. << ".\n"; }

::std::cout
100, 1024. 12, 12.

In dem folgenden Beispielprogramm werden Blöcke (und zwei Leerzeilen) zur übersichtlichen Gliederung von Anweisungen zur Ausgabe eines Liedtextes verwendet.

Kuckuck.cpp
#include <iostream> 
#include <ostream>
int main() 
{  
{ ::std::cout << "Auf einem Baum ein Kuckuck, -" << '\n'; 
{ ::std::cout << "Sim sa la dim, bam ba," << '\n'; 
::std::cout << "Sa la du, sa la dim -" << '\n'; } 
::std::cout << "Auf einem Baum ein Kuckuck sass." << '\n'; }
 
{ ::std::cout << "Da kam ein junger Jaeger, -" << '\n'; 
{ ::std::cout << "Sim sa la dim, bam ba," << '\n'; 
::std::cout << "Sa la du, sa la dim -" << '\n'; } 
::std::cout << "Da kam ein junger Jaegersmann." << '\n'; }
 
{ ::std::cout << "Der schoss den armen Kuckuck, -" << '\n'; 
{ ::std::cout << "Sim sa la dim, bam ba," << '\n'; 
::std::cout << "Sa la du, sa la dim -" << '\n'; } 
::std::cout << "Der schoss den armen Kuckuck tot." << '\n'; }}

::std::cout
Auf einem Baum ein Kuckuck, - 
Sim sa la dim, bam ba, 
Sa la du, sa la dim - 
Auf einem Baum ein Kuckuck sass. 
Da kam ein junger Jaeger, - 
Sim sa la dim, bam ba, 
Sa la du, sa la dim - 
Da kam ein junger Jaegersmann. 
Der schoss den armen Kuckuck, - 
Sim sa la dim, bam ba, 
Sa la du, sa la dim - 
Der schoss den armen Kuckuck tot.

Übungen

Semikolon
Nehmen Sie Stellung zu der folgenden, gelegentlich gehörten, Aussage: „Jede Anweisung in C++  muß mit einem Semikolon abgeschlossen werden.“
Kommentare
Was gibt das Programm "zwei.cpp" aus?
zwei.cpp
#include <iostream>
#include <ostream> int main()
{ ::std::cout << "one" << '\n'; /* Eins *
::std::cout << "two" << '\n'; * Zwei */ }
Kategorisieren
Enthalten die folgenden Zeilen jeweils einen Ausdruck, eine Anweisung oder keines von beidem?
;
{ ; }
0
0;
0; 0
0; 0;
{ 0; 0; }
{}
{ {} }
{{ 0 }}
(( 0 ))
Debugger  benutzen
Machen Sie sich damit vertraut, wie Sie den Debugger  des von Ihnen verwendeten Entwicklungssystems benutzen können, um sich den zeitlichen Ablauf einer Verbundanweisung mit mehreren Anweisungen anzeigen zu lassen und dabei Start- und Haltepunkte zu verwenden. (Nicht alle Entwicklungssysteme bieten alle dieser Möglichkeiten.)

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721126 stefan_ram:721126 slrprd, slrprdqxx, slrprddoc, slrprd721126, slrprddef721126, PbclevtugFgrsnaEnz

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten.
http://www.purl.org/stefan_ram/pub/c++_verbundanweisung_de