Solars C++ Kurs
Programmieren leicht erlernt
Das erste Programm

Entscheidungen

Bisher liefen die Programme immer gleich ab. Dieses Programm kann jedoch durch verschiedene Daten auch unterschiedlich reagieren.
Zudem wird in diesem Programm die Zahl nicht mehr nachgefragt, sondern direkt als Übergabeparameter beim Programmaufruf übergeben.

main( arc, argv[], envp[] )

Die Hauptfunktion main gibt es sowohl in einer Version mit Übergabeparametern als auch ohne. Mit Hilfe von Übergabeparametern können Werte an die Funktion weitergereicht werden.
In der Hauptfunktion gibt der Parameter arc die Anzahl der Strings (Texte) an, welche in argv[] gespeichert sind.
argv[] ist eine Liste von Strings. Der erste String beinhaltet Pfad und Namen des Programms. Die weiteren Strings (falls vorhanden) beinhalten die Argumente mit denen das Programm aufgerufen wurde. Argumente sind Werte, welche einem Programm beim Start mitgegeben werden. Bei 'quadrat.exe ?' ist z.B. '?' ein Argument.
envp[] ist ebenfalls eine Liste von Strings. Jeder dieser Strings enthält eine Umgebungsvariable wie sie z.B. in der 'AUTOEXEC.BAT' gesetzt werden. Dieser Übergabeparameter wird von uns aber noch nicht genutzt.

Abfragen mit 'if'

Die einfachste Abfrage in einem Programm ist die Abfrage mit if. Das englische 'if' heißt auf deutsch 'wenn'.
if ( x > 2 ) würde ausgesprochen also 'Wenn x größer 2' heissen. (Bei Vergleichen steht > für 'größer' und < für 'kleiner'.)
Der Teil der dieser Abfrage in geschweifter Klammer folgt wird nur ausgeführt, wenn die Bedingung wahr ist.

if ( BEDINGUNG 1 )
{
  BEREICH 1.
  AUSZUFÜHREN WENN BEDINGUNG 1 WAHR IST.
}

Eine if-Abfrage läßt sich um ein else erweitern. Das englische 'else' bedeutet in deutsch 'sonst'.

if ( BEDINGUNG 1 )
{
  BEREICH 1.
  AUSZUFÜHREN WENN BEDINGUNG 1 WAHR IST.
}
else
{
  BEREICH 2.
  AUSZUFÜHREN WENN BEDINGUNG 1 NICHT WAHR IST.
}

Das bedeutet also 'Wenn BEDINGUNG 1, dann BEREICH 1, sonst BEREICH 2.
Also eine entweder/oder Anweisung.

Falls nicht nur eine, sondern mehrere Bedingungen gelten, kann else mit if kombiniert werden:

if ( BEDINGUNG 1 )
{
  BEREICH 1.
  AUSZUFÜHREN WENN BEDINGUNG 1 WAHR IST.
}
else if ( BEDINGUNG 2 )
{
  BEREICH 2.
  AUSZUFÜHREN WENN BEDINGUNG 1 NICHT WAHR IST
  ABER BEDINGUNG 2 WAHR IST.
}
else if ( BEDINGUNG 3 )
{
  BEREICH 2.
  AUSZUFÜHREN WENN BEDINGUNG 1 NICHT WAHR IST
  UND BEDINGUNG 2 NICHT WAHR IST
  ABER BEDINGUNG 3 WAHR IST.
}
else
{
  BEREICH 4.
  AUSZUFÜHREN WENN BEDINGUNG 1 NICHT WAHR IST
  UND BEDINGUNG 2 NICHT WAHR IST
  UND BEDINGUNG 3 NICHT WAHR IST.
}

Auf diese Weise lassen sich lange Abfragen erstellen. Es dürfen beliebig viele else if enthalten sein. Immer die erste Abfrage die zutrifft wird ausgeführt. Falls keine der Abfragen zutrifft wird (falls vorhanden) else ausgeführt.

Hier ein einfaches Beispiel aus der Praxis:
if ( x <  0 )
{
  cout << "x ist kleiner als 0";
}
else if ( x == 0 )
{
  cout << "x ist gleich 0";
}
else
{
  cout << "x ist größer als 0";
}
if ( x !=  0 )
{
  cout << "x ist nicht 0";
}
In der else-Abfrage sind kleiner 0 und gleich 0 bereits ausgeschlossen. Also muß 'x' in diesem Fall größer als 0 sein. Mit dem unterem if beginnt eine neue Abfrage.

Das Programm:

Erstellen sie ein Projekt 'quadrat' und fügen sie dem Projekt die Datei main.cpp hinzu.
Wenn sie das Programm kompilieren, sollte die ausführbare Datei quadrat.exe genannt werden.

main.cpp
#include <iostream.h>
#include <stdlib.h>
#include <string.h>

int main( int argc, char * argv[], char * envp[] )
{
  double dZahl;

  if ( argc > 2 )
  {
    cout << "Bitte nur eine Zahl uebergeben.";
    cout << " (z.B. Quadrat 34)\n";
  }
  else if ( argc < 2 )
  {
    cout << "Bitte die Zahl als Argument mit angeben.";
    cout << " (z.B. Quadrat 34)\n";
  }
  else
  {
    if ( strcmp(argv[1], "?" ) == 0 )
    {
      cout << "Dieses Programm berechnet das Quadrat der";
      cout << "uebergebenen Zahl. (z.B. Quadrat 34)\n\n";
      cout << "Folgende Daten wurden dem Programm uebergeben:\n";
      cout << "Anzahl der Uebergabeparameter (argc): ";
      cout << argc << "\n";
      cout << "Erster Parameter (argv[0]): ";
      cout << argv[0] << " (Programmname)\n";
      cout << "Zweiter Parameter (argv[1]): ";
      cout << argv[1] << " (1. Argument)\n";
    }
    else
    {
      dZahl = atof( argv[1] );
      cout << "Das Quadrat von " << dZahl;
      cout << " ist " << dZahl * dZahl;
    }
  }
  return 0;
}


Spielen sie in diesem Programm etwas mit den Abfragen herum. Durch Ausprobieren wird die Funktion der if-Abfrage (und was man damit alles machen kann) am schnellsten klar.