Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
microcontrollertechnik:vorgaben_fuer_die_softwareentwicklung [2020/07/28 08:55]
tfischer
microcontrollertechnik:vorgaben_fuer_die_softwareentwicklung [2020/07/31 13:34] (aktuell)
tfischer
Zeile 329: Zeile 329:
  
   * Prüfen Sie, ob aufeinanderfolgende,​ ähnliche if-Anweisungen sich nicht direkt über Arrays lösen lassen (Beispiel Verzweigungen 1). Wählen Sie bei Verzweigungen statt vielen if-Anweisungen mit ähnlichen Bedingungen Switch-Case-Anweisungen (Beispiel Verzweigungen 2). Falls diese nicht möglich sind, eine For-Schleife und Arrays (Beispiel Verzweigungen 3).   * Prüfen Sie, ob aufeinanderfolgende,​ ähnliche if-Anweisungen sich nicht direkt über Arrays lösen lassen (Beispiel Verzweigungen 1). Wählen Sie bei Verzweigungen statt vielen if-Anweisungen mit ähnlichen Bedingungen Switch-Case-Anweisungen (Beispiel Verzweigungen 2). Falls diese nicht möglich sind, eine For-Schleife und Arrays (Beispiel Verzweigungen 3).
 +  * Auch Switch case kann auch durch verschiedene Vereinfachungen noch verbessert werden.
 +
 ++++Beispiel für Verzweigungen 1 - Umwandlung in Array | ++++Beispiel für Verzweigungen 1 - Umwandlung in Array |
  
Zeile 386: Zeile 388:
 </​code> ​      | </​code> ​      |
  
-++++++++Beispiel für Verzweigungen 3 - Umwandlung in For-Next|+++++++++Beispiel für Verzweigungen 3 - Optimierung von Switch-Case| 
 + 
 +|<fc #​800000>​**OPTIMIERBAR**</​fc>​| <code c> 
 +... 
 +    switch(i) { 
 +        case 1: doOne; ​  ​break; ​               // - die ersten beiden Cases 
 +        case 2: doOne; ​  ​break; ​               //   haben die gleichen Konsequenzen 
 +        case 3: doThree;​doFour;​doFive;​ break; ​ // - hier werden - je nach Zahl -  
 +        case 4: doFour;​doFive; ​        ​break; ​ //   nach und nach aufeinanderfolgende 
 +        case 5: doFive; ​               break; ​ //   ​Funktionen aufgerufen 
 +        case 6: doOne; ​  ​break; ​               // - hier haben mehrere Cases 
 +        case 7: doOne; ​  ​break; ​               //   haben die gleichen Konsequenzen 
 +        case 8: doOne; ​  ​break; ​               //   
 +        case 9: doOne; ​  ​break; ​               //   
 +        default: break; 
 +    }; 
 +... 
 + 
 +</​code> ​      | 
 +|<fc #​008000>​**BESSER**</​fc>​| <code c> 
 +... 
 +    switch(i) { 
 +        case 1, 2, 6...9 : doOne; ​  ​break; ​   // Einzelne Zahlen können mit Komma getrennt und Gruppen mit '​...'​ kombiniert werden 
 +        case 3:            doThree; ​          // ohne Break werden alle folgenden Befehle bis zum nächsten Break ausgeführt 
 +        case 4:            doFour; ​            
 +        case 5:            doFive;  
 +        default: ​          ​break;​ 
 +    }; 
 +... 
 +</​code> ​      | 
 + 
 +++++++++Beispiel für Verzweigungen 4 - Umwandlung in For-Next|
  
 |<fc #​800000>​**SCHLECHT**</​fc>​| <code c> |<fc #​800000>​**SCHLECHT**</​fc>​| <code c>