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

Unstrukturierte Programmierung mit Sprüngen

weiter

weiter

goto-Programmierung am Beispiel von Primzahltests

1. Beispiel
schlecht
int
prime1 (unsigned int n)
{
  unsigned int i = 2;
  int prime = 0;
 
  while (i * i <= n)
    {
      if (n % i == 0)
          goto ENDE;
      else
        i = i + 1;
    }
  prime = 1;
 
ENDE:
  return prime;
}
?
Ist die Implementierung korrekt?
weiter
2. Beispiel
subtile goto-Programmierung
schlechtschlecht
int
prime2 (unsigned int n)
{
  unsigned int i = 2;
  int prime = 1;
 
  if (n <= 1)
    return 0;
 
  while (i * i <= n)
    {
      if (n % i == 0)
        {
          prime = 0;
          i = n;
        }
      else
        i = i + 1;
    }
 
  return prime;
}
weiter
3. Beispiel
schlecht
int
prime3 (unsigned int n)
{
  unsigned int i = 2;
  int prime = 1;
 
  if (n <= 1)
    return 0;
 
  while (i * i <= n)
    {
      if (n % i == 0)
        {
          prime = 0;
          break;
        }
      else
        i = i + 1;
    }
 
  return prime;
}
weiter
4. Beispiel
lineare Suche
 
while-Schleife aus Spezifikation abgeleitet
 
int
prime4 (unsigned int n)
{
  unsigned int i = 2;
 
  while (i * i <= n && n % i != 0)
    {
      i = i + 1;
    }
 
  return
    n > 1
    &&
    i * i > n;
}

weiter

goto-Programmierung bei Apple

schlechtschlechtschlecht
static OSStatus
SSLVerifySignedServerKeyExchange
  (SSLContext *ctx,
   bool isRsa,
   SSLBuffer signedParams,
   uint8_t *signature,
   UInt16 signatureLen)
{
  OSStatus        err;
  ...
 
  if ((err = SSLHashSHA1.update(&hashCtx&serverRandom)) != 0)
      goto fail;
  if ((err = SSLHashSHA1.update(&hashCtx&signedParams)) != 0)
      goto fail;
      goto fail;
  if ((err = SSLHashSHA1.final(&hashCtx&hashOut)) != 0)
      goto fail;
  ...
 
fail:
  SSLFreeBuffer(&signedHashes);
  SSLFreeBuffer(&hashCtx);
  return err;
}
Quelle

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