Die bedingte Ausführung in C++ (Die bedingte Ausführung in C++), Lektion, Seite 722913
https://www.purl.org/stefan_ram/pub/bedingte_ausfuehrung_c++ (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C++-Kurs

Die bedingte Ausführung in C++ 

Syntax der bedingten Ausführung

     .--.      .--.     .----------.     .--.     .-----------.
--->( if )--->( ( )--->| Ausdruck |--->( ) )--->| Anweisung |--->
'--' '--' '----------' '--' '-----------'

Nach ihrem einleitenden Schlüsselwort if  wird die Anweisung zur bedingten Ausführung auch if-Anweisung  oder kurz „if “ genannt.

Die Anweisung hinter der runden Klammer zu »)« nennen wir auch die innere Anweisung  der if-Anweisung.

if ” /ɪf/ „wenn“

Semantik (Verhalten) der bedingten Ausführung

Bei der Ausführung einer Anweisung dieser Art wird zunächst der Ausdruck ausgewertet.

Die Anweisung wird genau dann ausgeführt, wenn die Auswertung nicht den Wert 0 ergab.

Beispiel

Das folgende Programm zeigt, wie die if-Anweisung Ausdrücke auswertet.

main.cpp

#include <iostream>
#include <ostream>
#include <string>
#include <cstdio>

int main()
{ if( ::std::cout << "Hallo, Welt" << "\n" ){}
if( ::std::cout << "Anton" << "\n" ){}
if( ::std::cout << "Berta" << "\n" ){}
if( ::std::putchar( 65 ) ){}
if( 0 ){}
if( 1 + 1 ){} }

::std::cout
Hallo, Welt
Anton
Berta
A

Mit Hilfe der if-Anweisung läßt sich belegen, daß es falsch  ist, zu sagen, daß jede Anweisung in C++  mit einem Semikolon abgeschlossen wird, wie man manchmal lesen kann. Denn das voranstehende Programm enthält mehrere Anweisungen, aber kein einziges Semikolon!

Beispiel

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main()
{ if( 0 )::std::cout << 0 << "\n"s;
if( -2 )::std::cout << -2 << "\n"s; }

::std::cout
-2

Die Anweisung wird also nur unter einer bestimmten Bedingung ausgeführt – sie wird bedingt  ausgeführt.

Beispiel

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

void kehrwert_ausgeben( double const x )
{ if( x ){ ::std::cout << 1/x << "\n"s; return; }
::std::cout << "undefiniert\n"s; }

int main()
{ kehrwert_ausgeben( 2 );
kehrwert_ausgeben( 1 );
kehrwert_ausgeben( 0 ); }

::std::cout
0.5
1
undefiniert

Die Ausführung von »return;« in einer void-Funktion beendet die Ausführung jener Funktion. Dadurch wird im obigen Programm »undefiniert« nur ausgegeben, falls »x« gleich »0« ist. Insofern ist die früher gegebene Erklärung, derzufolge es keinen Sinn hat, in einer Funktion hinter eine return-Anweisung noch etwas zu schreiben, nun hinfällig.

Übungen

Bedingte Ausführung

Der folgende Programmteil soll sowohl den Text "a" als auch den Text "b" nur dann ausgeben, wenn x ungleich 0 ist.

Steuerung zweier Anweisungen [Struktogramm]
.-------------------------------------. 
| Ist x ungleich 0 ? | 
| | 
| Ja | Nein | 
|--------------------|----------------| 
| Ausgabe von "a" | | 
|--------------------| | 
| Ausgabe von "b" | | 
'-------------------------------------'

Steuerung mehrerer Anweisungen
if( x ) 
::std::cout << "a"s; 
::std::cout << "b"s;   

Beispiel   Korrektur *

Ein Student erklärt: „Bei der If-Schleife wird die Anweisung nach »if( x )« nur dann ausgeführt, wenn der Wert »x« positiv ist.”. Korrigieren Sie eventuelle Fehler des Studenten!

Graphische Darstellungen Struktogramme *

Das folgende Struktogramm (gemäß DIN 66261 nach Nassi und Shneiderman ACM SIGPLAN Notices 8, August 1973) zeigt die Darstellung der folgenden C++ -Anweisung als Struktogramm.

C++ -Anweisung
if( n )::std::cout << "*"s;
Struktogramm
.-----------------------------------------.
|'-. .-'|
| '-. .-' |
| '-. n .-' |
| '-. .-' |
| nicht 0 '-. .-' 0 |
| '-. .-' |
|------------------'-.-'------------------|
| Ausgabe "*" | |
'-----------------------------------------'
Struktogramm (vereinfachte Form)
.-----------------------------------------.
| n ? |
| nicht 0 | 0 |
|--------------------|--------------------|
| Ausgabe "*" | |
'-----------------------------------------'

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. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722913 stefan_ram:722913 Die bedingte Ausführung in C++ Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722913, slrprddef722913, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/bedingte_ausfuehrung_c++