§3. Auswahl

  1. Gerade Zahlen
  2. Der IF-Befehl
  3. Bedingungen
  4. Beispiel: Positive Zahlen
  5. Beispiel: Teilbarkeit durch beliebige Zahl
  6. Struktogramme
  7. Beispiel: Betragsfunktion
  8. Beispiel: Lösung der quadratischen Gleichung

»3.1 Gerade Zahlen

a)
Flussdiagramm:



b)
PASCAL-Programm:


program even;

uses crt;

var i: integer;

begin

  write( 'Bitte Zahl eingeben:' );

  readln( i );

  if i mod 2 = 0 then begin

    writeln( 'Die Zahl ist gerade' );

  end else begin

    writeln( 'Die Zahl ist ungerade' );

  end;

  readln;

end.


»3.2 Der IF-Befehl

Immer, wenn im Flussdiagramm eine Verzweigung anhand einer Bedingung notwendig ist, dann kann in PASCAL der IF-Befehl eingesetzt werden:
if <Bedingung> then begin

  <Ja-Anweisung 1>

  <Ja-Anweisung 2>

end[ else begin

  <Nein-Anweisung 1>

  <Nein-Anweisung 2>

end];


Die Teile in eckigen Klammern kann man auch weglassen (einseitige Anweisung).

»3.3 Bedingungen

Für eine Auswahl muss immer eine Bedingung getestet werden. Hier sind einige Beispiele, wie Bedingungen für Zahlen geschrieben werden können:

Relation Zeichen Beispiel
"gleich" = if a = 4 then ...
"ungleich" <> if a <> 4 then ...
"größer" > if a > 4 then ...
"kleiner" < if a < 4 then ...
"größer gleich" >= if a >= 4 then ...
"kleiner gleich" <= if a <= 4 then ...

»3.4 Beispiel: Positive Zahlen

In diesem Programm muss nur getestet werden, ob eine Zahl größer oder gleich Null ist. Entsprechend wird dann ausgegeben, ob sie positiv oder negativ ist.
program positiv;

uses crt;

var i: integer;

begin

  write( 'Bitte Zahl eingeben:' );

  readln( i );

  if i >= 0 then begin

    writeln( 'Die Zahl ist positiv' );

  end else begin

    writeln( 'Die Zahl ist negativ' );

  end;

  readln;

end.


»3.5 Beispiel: Teilbarkeit durch beliebige Zahl

Hierbei handelt es sich um das gleiche Programm, wie unter (1), nur dass statt der 2 eine beliebige Zahl eingegeben werden kann:
program divisibility;

uses crt;

var i, t: integer;

begin

  write( 'Bitte Zahl eingeben:' );

  readln( i );

  write( 'Bitte den Teiler eingeben:' );

  readln( t );

  if i mod t = 0 then begin

    writeln( 'Die Zahl ist durch ', t, ' teilbar.' );

  end else begin

    writeln( 'Die Zahl ist nicht durch ', t, ' teilbar.' );

  end;

  readln;

end.


»3.6 Struktogramme

Der Algorithmus zur Entscheidung, ob eine Zahl gerade ist, kann auch so aufgezeichnet werden:


Vergleiche dieses Diagramm und das Flussdiagramm mit dem Quelltext aus (1). Was fällt dir auf?
Zur "Kodierung" eines Algorithmus in PASCAL ist ein Struktogramm besser geeignet als ein Flussdiagramm.

»3.7 Beispiel: Betragsfunktion

Der Betrag einer Zahl ist dessen Abstand zum Nullpunkt. Eine positive Zahl entspricht deshalb ihrem Betrag, während man bei einer negativen Zahl ihre "Gegenzahl" nehmen muss.
Teste also, ob eine Zahl kleiner als Null ist, und bilde in diesem Fall ihre Gegenzahl:



program betrag;

uses crt;

var x: real;

begin

  write( 'Bitte Zahl eingeben:' );

  readln( x );

  if x < 0 then begin

    x := -x;

  end;

  writeln( 'Der Betrag ist ', x );

  readln;

end.


»3.8 Beispiel Lösung quadratischer Gleichungen

Bei der Lösung der quadratischen Gleichung:

ax² + bx + c = 0

Gibt es drei Fälle zu unterscheiden.
  1. Diskriminante > 0: Es gibt zwei Lösungen
  2. Diskriminante = 0: Es gibt eine Lösung
  3. Diskriminante < 0: Es gibt keine Lösungen
Hier das entsprechende Struktogramm:

br>