Algorithmen und Datenstrukturen in Chome Algorithmen und Datenstrukturen in C: Unstrukturierte Programmierung mit Sprüngen Prof. Dr. Uwe Schmidt FH Wedel

Unstrukturierte Programmierung mit Sprüngen

weiter

weiter

Beispiel: Routine zum Primzahltest


weiter

schlecht: goto-Programmierung
Beispiel: prime1.c

   1int
   2prime1 (unsigned int n)
   3{
   4  unsigned int i = 2;
   5  int prime = 0;
   6
   7  while (i * i <= n)
   8    {
   9      if (n % i == 0)
  10          goto ENDE;
  11      else
  12        i = i + 1;
  13    }
  14  prime = 1;
  15
  16ENDE:
  17  return prime;
  18}
weiter
merke Ist die Implementierung korrekt?

weiter

Übersetzen

cc -c -Wall prime1.c

weiter

weiter

noch schlechter: subtile goto-Programmierung
Beispiel: prime2.c

   1int
   2prime2 (unsigned int n)
   3{
   4  unsigned int i = 2;
   5  int prime = 1;
   6
   7  if (n <= 1)
   8    return 0;
   9
  10  while (i * i <= n)
  11    {
  12      if (n % i == 0)
  13        {
  14          prime = 0;
  15          i = n;
  16        }
  17      else
  18        i = i + 1;
  19    }
  20
  21  return prime;
  22}
weiter
merke Ist die Implementierung korrekt?

weiter

Übersetzen

cc -c -Wall prime2.c

weiter

weiter

schlecht: break strukturiertes goto
Beispiel: prime3.c

   1int
   2prime3 (unsigned int n)
   3{
   4  unsigned int i = 2;
   5  int prime = 1;
   6
   7  if (n <= 1)
   8    return 0;
   9
  10  while (i * i <= n)
  11    {
  12      if (n % i == 0)
  13        {
  14          prime = 0;
  15          break;
  16        }
  17      else
  18        i = i + 1;
  19    }
  20
  21  return prime;
  22}
weiter
merke Ist die Implementierung korrekt?

weiter

Übersetzen

cc -c -Wall prime3.c

weiter

weiter

gut: while-Schleife aus Spezifikation abgeleitet
Beispiel: prime4.c

   1int
   2prime4 (unsigned int n)
   3{
   4  unsigned int i = 2;
   5
   6  while (i * i <= n && n % i != 0)
   7    {
   8      i = i + 1;
   9    }
  10
  11  return
  12    n > 1
  13    &&
  14    i * i > n;
  15}
weiter
merke Ist die Implementierung korrekt?

weiter

Übersetzen

cc -c -Wall prime4.c

weiter

Letzte Änderung: 25.10.2007
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel