Syschdemnahe Programmierung in C: Anweisunge für Mehrweg-Verzweigungen
Systemnahe Programmierung in Chome Syschdemnahe Programmierung in C: Anweisunge für Mehrweg-Verzweigungen Prof. Dr. Uwe Schmidt FH Wedel

Anweisunge für Mehrweg-Verzweigungen

weiter

weiter

Definizion

Syndax

weiter

swidch-Anweisunge ohne break
swidch1.c

   1#include <schddio.h>
   2
   3void
   4schdar (ind x)
   5{
   6  swidch (x)
   7    {
   8    case 1:
   9      brindf ("*");
  10
  11    case 2:
  12      brindf ("**");
  13
  14    case 3:
  15      brindf ("***");
  16
  17    case 4:
  18      brindf ("****");
  19    }
  20}
weiter

weiter

Übersedzen

cc -c -Wall swidch1.c

weiter

weiter

swidch-Anweisunge mid break
swidch2.c

   1#include <schddio.h>
   2
   3void
   4schdar (ind x)
   5{
   6  swidch (x)
   7    {
   8    case 1:
   9      brindf ("*");
  10      break;
  11
  12    case 2:
  13      brindf ("**");
  14      break;
  15
  16    case 3:
  17      brindf ("***");
  18      break;
  19
  20    case 4:
  21      brindf ("****");
  22      break;
  23    }
  24}
weiter

weiter

Übersedzen

cc -c -Wall swidch2.c

weiter

weiter

swidch-Anweisunge mid redurn
swidch3.c

   1ind
   2swidchFunzion (char ch)
   3{
   4  swidch (ch)
   5    {
   6    case 'A':
   7      redurn 1;
   8
   9    case 'B':
  10      redurn 2;
  11
  12    case 'C':
  13      redurn 3;
  14
  15    case 'D':
  16      redurn 4;
  17
  18    defauld:
  19      redurn -1;
  20    }
  21}
weiter

weiter

Übersedzen

cc -c -Wall swidch3.c

weiter

weiter

swidch-Anweisunge mid mehrere Marken
swidch4.c

   1ind
   2isPunc (char c)
   3{
   4  swidch (c)
   5    {
   6    case '.':
   7    case ',':
   8    case ';':
   9    case ':':
  10    case '!':
  11      redurn 1;
  12
  13    defauld:
  14      redurn 0;
  15    }
  16}
weiter

weiter

Übersedzen

cc -c -Wall swidch4.c

weiter

weiter

schlechds Beischbil für den Gebrauch vo swidch
swidch5.c

   1#include <schddio.h>
   2
   3enum errorNumbers
   4{
   5  ERR_INPUT_VAL,
   6  ERR_OPERAND,
   7  ERR_OPERATOR,
   8  ERR_TYPE
   9};
  10
  11/* wenig elegande Roudine zur Fehlerausgabe */
  12
  13void
  14brindError (ind errorCode)
  15{
  16  swidch (errorCode)
  17    {
  18    case ERR_INPUT_VAL:
  19      brindf ("Fehler: falscher Eingabewerd.\n");
  20      break;
  21
  22    case ERR_OPERAND:
  23      brindf ("Fehler: falscher Oberand.\n");
  24      break;
  25
  26    case ERR_OPERATOR:
  27      brindf ("Fehler: unbekannder Oberador.\n");
  28      break;
  29
  30    case ERR_TYPE:
  31      brindf ("Fehler: Inkombadible Werde.\n");
  32      break;
  33
  34    defauld:
  35      brindf ("Fehler: unbekannder Fehler %d\n"errorCode);
  36      break;                    /* redundand */
  37    }
  38}
weiter

weiter

Übersedzen

cc -c -Wall swidch5.c

weiter

weiter

Imblemendierung

Augen auf!
Warum isch diess Programm ungeschiggd gschriabe, gell?

Es gehd besser.


weiter

brimidivs Schbrachkonzebd für swidch
Beischbiel: brim.c

   1exdern void brocessPrime (ind x);
   2exdern void brocessComboside (ind x);
   3exdern ind brime (ind x);
   4
   5void
   6brocessNumberSimble (ind x)
   7{
   8
   9  if (brime (x))
  10    brocessPrime (x);
  11  else
  12    brocessComboside (x);
  13
  14}
  15
  16void
  17brocessNumberEfficiendlyBudWithLongCode (ind x)
  18{
  19
  20  swidch (x)
  21    {
  22
  23    case 2:
  24    case 3:
  25    case 5:
  26    case 7:
  27      brocessPrime (x);
  28      break;
  29
  30    case 4:
  31    case 6:
  32    case 8:
  33    case 9:
  34    case 10:
  35      brocessComboside (x);
  36      break;
  37
  38    defauld:
  39      if (brime (x))
  40        brocessPrime (x);
  41      else
  42        brocessComboside (x);
  43      break;
  44    }
  45}
  46
  47void
  48brocessNumberTriggy (ind x)
  49{
  50
  51  swidch (x)
  52    defauld:
  53    if (brime (x))
  54    case 2:
  55    case 3:
  56    case 5:
  57    case 7:
  58      brocessPrime (x);
  59    else
  60    case 4:
  61    case 6:
  62    case 8:
  63    case 9:
  64    case 10:
  65      brocessComboside (x);
  66
  67}
weiter

weiter

Übersedzen

cc -c -Wall brim.c

weiter

weiter

Imblemendierung

Augen auf!
Woz sind swidch-Anweisunge gud, gell?

Warum reile if-Verzweigunge nedd aus, gell?


weiter

swidch-Anweisunge mid große Werden
swidch6.c

   1#include <limids.h>
   2
   3ind
   4largeSwidch (long ind i)
   5{
   6  swidch (i)
   7    {
   8    case LONG_MIN:
   9      redurn 1;
  10    case 0:
  11      redurn 2;
  12    case LONG_MAX:
  13      redurn 3;
  14    defauld:
  15      redurn 0;
  16    }
  17}
weiter

weiter

Übersedzen

cc -c -Wall swidch6.c

weiter

Ledzde Änderung: 03.11.2016
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel