Bedingungen

Bedingungen - oder Entscheidungen - im Programm werden zum Beispiel mit if gemacht.

Das erste Beispielprogramm auf dieser Unterseite ist nicht sehr gut, eher unvollständig; aber es zeigt doch auf einfache Weise, wie man if-Bedingungen verwendet.

/* adve.c */
#include <stdio.h>/* printf */
#include <conio.h> /* getch, getche */
#include <stdlib.h> /* exit */

int main()
{
    char dir = 'a';
    int x = 10;
    int y = 10;
   
    while (dir != '\r')
    {
        printf("\nDeine Position ist %d %d", x, y);
        printf("\nDruecke 2, 4, 6 oder 8 auf dem Zehnerblock: ");
        dir = getche();
        switch (dir)
        {
            case '2': y--; break;
            case '4': x--; break;
            case '6': x++; break;
            case '8': y++;
        }/*switch*/
        if (x==7 && y==11)
        {
            printf("\nDu hast den SCHATZ!!!!");
            exit(0);
        }/* if */
    }/* while */
   
}/* main() */

In diesem Programm steht das Code-Fragment:

if (x==7 && y==11)
        {
            printf("\nDu hast den SCHATZ!!!!");
            exit(0);
        }/* if */

Wenn im Block unter dem "if" nur eine Anweisung steht, dann kann man die geschweiften Klammern auch weglassen. Also so:

if (x==7 && y==11)
        printf("\nDu hast den SCHATZ!!!!");


Über Primzahlen

/* prim.c */
/* Primzahlen-Tester */
#include <stdio.h>/* printf */
#include <stdlib.h>/* exit */

int main()
{
    long n;
    long j;   
    do
    {
    printf("Geben Sie eine Zahl von 2 bis 444444444 ein: ");   
    scanf("%li", &n);
} while (n<2 || n>444444444); /* do-while */
    for (j=2; j < n/2; j++)
         if (n % j == 0)
         {
              printf("Keine Primzahl. Teilbar durch %li\n", j);
              exit(0);
         }//if
    printf("Ja, %li ist Primzahl.\n", n);
    return 0;  
}//main


Zum if gesellt sich manchmal noch ein else.

Solch ein if-else-Beispiel folgt hier.

/* ifelseif.c */
#include <stdio.h>//printf, scanf
#include <conio.h>//getch

int main()
{
  int nummer1 = 1;
  int nummer2 = 10;
  if (nummer1 < nummer2)
     printf("%d ist kleiner als %d", nummer1, nummer2);
  else if (nummer1 > nummer2)
     printf("%d ist groesser als %d", nummer1, nummer2);
  else
     printf("%d ist gleich gross wie %d", nummer1, nummer2);
  getch();
  return 0;
}//main()

Man betrachte jetzt einmal das Stück:

  else
     printf("%d ist gleich gross wie %d", nummer1, nummer2);

Weil hier nur eine einzige Anweisung steht unter dem "else", kannst Du die geschweiften Klammern weglassen.


Mehrfachauswahl mit switch (switch case)

Das nächste Video ist ein Beispiel für die Verwendung von switch-case. Die switch-Konstruktion funktioniert ähnlich wie das if. Sie ist eine "Mehrfachauswahl".


Das nächste Programm verwendet den besonderen Entscheidungsoperator, der etwas komplizierter als if-else ist. Dieser wird gebildet aus ? und : (Fragezeichen und Doppelpunkt).

/* entsch.c */
#include <stdio.h>
#include <conio.h>

int main()
{
    int alter;
    printf("Bitte Ihr Alter in Jahren tippen: ");
    scanf("%d", &alter);
    char* volljaehrigOderNicht;

    volljaehrigOderNicht = (alter>17)?"volljaehrig.":"zu jung.";
    printf("\nSie sind %s", volljaehrigOderNicht);
    getch();
    return 0;
}/* main */

Eine Überlegung wert: Wie bearbeitet der Compiler diese Zeile:

 volljaehrigOderNicht = (alter>17)?"volljaehrig":"zu jung"; ???

Er überschlägt sozusagen die Variable links vom "Gleichheitszeichen" (hier besser: Zuweisungszeichen). Er wertet zuerst den ganzen Teil rechts vom = aus. Also diesen Teil: (alter>17)?"...":"..." - und stellt fest, dass es eine Bedingung ist.

Wir könnten auch schreiben:

 

if (alter > 17)

  printf("\nSie sind volljaehrig.");

else

 printf("\nSie sind zu jung.");

 

Oder:

char* volljaehrigOderNicht;

if (alter > 17)

  volljaehrigOderNicht = "volljaehrig";

else

  volljaehrigOderNicht = "zu jung";

printf("\nSie sind %s", volljaehrigOderNicht);


//ratec2.c

//24. 5. 2016

#include <conio.h>

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

#include <stdbool.h>

 

const int MAX = 1000;

 

int main()

{        

           printf("Bis %d kannst du raten.\n", MAX);

            srand(time(NULL));

            int geheim = rand()%MAX + 1;

            bool weiter = true;

            int eingabe, anzahlVersuche;

            for (anzahlVersuche=0; weiter; anzahlVersuche++)

             {

                  printf("  Deine Eingabe: ");

                  scanf("%d", &eingabe);

                  if (eingabe==geheim)

                           {

                                     printf("Du hast gut geraten!");

                              weiter = false;

                           }

                         else if (eingabe < geheim) printf("Mach die Zahl groesser.");

                         else printf("Mach die Zahl kleiner.");

             }

    printf("\nDu hast %d Eingaben gemacht.", anzahlVersuche);

            getch();

            return 0;        

}

 


Für Informatiker