User Tools

Site Tools


switch

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
switch [2017/06/27 15:19] – [C++] ggswitch [2017/06/28 13:37] (current) gg
Line 1: Line 1:
 ====== switch Statement ====== ====== switch Statement ======
  
-Das switch ist im Grunde ein allgemeines if - elseif - else Konstrukt. Oftmals ist es schneller (Es wird direkt in den case gesprungen und nicht wie bei if - elseif - else Konstrukten, bei denen oft auch jede Bedingung geprüft werden muss). \\+Das switch ist im Grunde ein allgemeines if - elseif - else Konstrukt. Oftmals ist es schneller (Es wird direkt in den case gesprungen und nicht wie bei if - elseif - else Konstrukten, bei denen oft auch jede Bedingung geprüft werden muss). Es wird oft geschrieben, dass es besser lesbarer, besser verständlich und einfacher zum Testen sei. \\
  
 Allerdings kommt das switch Statement oftmals mit Einschränkungen. So kann es beispielsweise je nach Programmierprache nur für einzelne Zeichen oder Zahlen verwendet werden. \\ Allerdings kommt das switch Statement oftmals mit Einschränkungen. So kann es beispielsweise je nach Programmierprache nur für einzelne Zeichen oder Zahlen verwendet werden. \\
 +
 +Oft muss aus einem Zweig explizit ausgestiegen werden. Bei der bash erfolgt das durch zwei Semikolons, bei C++ wäre es das break. Es ist auch grundsätzlich keine schlechte Idee den default Zweig zu benutzen. Das erleichtert die Fehlerfindung, bzw. kann man eine Fehlermeldung ausgeben. \\
  
 Die folgenden Beispiele sind vom Ergebnis wieder ident. Es wird eine Zahl festgelegt, die als switch fungiert. Wieder ist es so, dass diese Zahl normalerweise irgendwo her kommt. Sei es aus einer Datenbank, aus einer Benutzereingabe, ein ausgerechneter Wert,.... Die folgenden Beispiele sind vom Ergebnis wieder ident. Es wird eine Zahl festgelegt, die als switch fungiert. Wieder ist es so, dass diese Zahl normalerweise irgendwo her kommt. Sei es aus einer Datenbank, aus einer Benutzereingabe, ein ausgerechneter Wert,....
  
-Oft muss aus einem Zweig explizit ausgestiegen werden. Bei der bash erfolgt das durch zwei Semikolons, bei C++ wäre es das break. Es ist auch grundsätzlich keine schlechte Idee einen default Zweig ein zu führen. Das erleichtert die Fehlerfindung, bzw. kann man eine Fehlermeldung ausgeben.+===== Bash =====
  
-====== if-elseif-else Konstrukte ====== +=== Das Programm ===
- +
-Alle folgenden Beispiele machen wieder das selbe. Zwei strings werden verglichen. Alle Beispiele liefern das selbe Ergebnis. Nämlich, dass die strings nicht ident sind. \\ +
- +
-Natürlich würde man normalerweise die beiden Strings nicht einfach setzen, sondern aus einer Datenbank, als Funktionsparameter oder Programmparameter einlesen. Das aber würde den Rahmen hier sprengen. +
-===== Bash =====+
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
Line 21: Line 18:
 age=3 age=3
  
-Switchen+switchen
 case "$age" in case "$age" in
     1)  echo "Du bist ein Jahr alt" ;;     1)  echo "Du bist ein Jahr alt" ;;
Line 29: Line 26:
     *)  echo "Ich kann nicht feststellen wie alt du bist. Bitte eine Zahl von 1-4 eingeben"     *)  echo "Ich kann nicht feststellen wie alt du bist. Bitte eine Zahl von 1-4 eingeben"
 esac esac
 +</code>
 +
 +=== Ausführen ===
 +switch.sh erstellen und so ausführen
 +<code bash>
 +chmod +x switch.sh # als ausführbar markieren
 +./switch.sh        # ausführen
 </code> </code>
  
 ===== C++ ===== ===== C++ =====
 +=== Das Programm ===
 <code cpp> <code cpp>
 #include <iostream> #include <iostream>
Line 37: Line 42:
  
 int main() { int main() {
- // Variable anlegen +    // Variable anlegen 
- int age = 3;+    int age = 3;
  
- // Switchen +    // switchen 
- switch (age) { +    switch (age) { 
- case 1: printf("%s", "Du bist ein Jahr alt"); break; +        case 1:  printf("%s", "Du bist ein Jahr alt"); break; 
- case 2: printf("%s", "Du bist zwei Jahre alt"); break; +        case 2:  printf("%s", "Du bist zwei Jahre alt"); break; 
- case 3: printf("%s", "Du bist drei Jahre alt"); break; +        case 3:  printf("%s", "Du bist drei Jahre alt"); break; 
- case 4: printf("%s", "Du bist vier Jahre alt"); break; +        case 4:  printf("%s", "Du bist vier Jahre alt"); break; 
- default: printf("%s", "Du bist ein Jahr alt"); +        default: printf("%s", "Ich kann nicht feststellen wie alt du bist. Bitte eine Zahl von 1-4 eingeben"); 
- }+    }
 } }
 </code> </code>
 +=== Kompilieren und ausführen === 
 +switch.cpp erstellen und so kompilieren/ausführen: 
 +<code bash> 
 +g++ -Wall -g -std=c++14 switch.cpp -o switch # kompilieren 
 +./switch                                     # ausführen 
 +</code>
 ===== C# ===== ===== C# =====
 +=== Das Programm ===
 <code csharp> <code csharp>
 using System; using System;
Line 57: Line 68:
 namespace IfStatements  namespace IfStatements 
 { {
- class ShowIf +    class ShowIf 
-+    
- static void Main()  +        static void Main()  
- +        
- // Variablen anlegen +            // Variable anlegen 
- string one "Walter"; +            int age 3
- string two = "walter"+             
- +            // switchen 
- // Vergleichen +            switch (age) { 
- if(one.equals(two)) { +                case 1:  Console.WriteLine("Du bist ein Jahr alt"); break; 
- // Ausgabe, wenn die beiden Strings ident sind +                case 2:  Console.WriteLine("Du bist zwei Jahre alt"); break; 
- Console.WriteLine(one+equals "+two); +                case 3:  Console.WriteLine("Du bist drei Jahre alt"); break; 
- } else { +                case 4:  Console.WriteLine("Du bist vier Jahre alt"); break
- // Ausgabe, wenn die beiden Strings nicht ident sind +                default: Console.WriteLine("Ich kann nicht feststellen wie alt du bist. Bitte eine Zahl von 1-4 eingeben"); break
- Console.WriteLine(one+equals not "+two); +            
- +        
- +    }
- }+
 } }
 </code> </code>
  
 ===== Golang ===== ===== Golang =====
 +=== Das Programm ===
 <code go> <code go>
 +package main
 +
 import ( import (
- "fmt+    "fmt"
- "strings"+
 ) )
  
-// Variablen anlegen +func main() { 
-one string = "Walter"; +    // Variable anlegen 
-two string "walter";+    age :3;
  
-// Vergleichen +    // switchen 
-if(strings.Compare(one, two)) +    switch age { 
- // Ausgabe, wenn die beiden Strings ident sind +        case 1:    fmt.Println("Du bist ein Jahr alt"
- fmt.Println("one equals two") +        case 2:    fmt.Println("Du bist zwei Jahre alt") 
-} else { +        case 3:    fmt.Println("Du bist drei Jahre alt"
- // Ausgabe, wenn die beiden Strings nicht ident sind +        case 4:    fmt.Println("Du bist vier Jahre alt") 
- fmt.Println("one equals not two")+        default:   fmt.Println("Ich kann nicht feststellen wie alt du bist. Bitte eine Zahl von 1-4 eingeben") 
 +    }
 } }
 </code> </code>
 +=== Ausführen === 
 +[[https://tour.golang.org|Online go compiler]]
  
 ===== Java ===== ===== Java =====
 +=== Das Programm === 
 <code java> <code java>
-public class HelloWorld +public class Switcher 
- public static void main(String[] args) { +    public static void main(String[] args) { 
- // Variablen anlegen +        // Variable anlegen 
- String one new String("Walter"); +        int age 3; 
- String two = new String("walter"); +         
- +        // switchen 
- // Vergleichen +        switch (month) { 
- if(one.equals(two)) { +            case 1:  System.out.println("Du bist ein Jahr alt"); break
- // Ausgabe, wenn die beiden Strings ident sind +            case 2:  System.out.println("Du bist zwei Jahre alt"); break
- printf("%s%s%s%s", one, " equals ", two, "\n"); +            case 3:  System.out.println("Du bist drei Jahre alt"); break; 
- } else { +            case 4:  System.out.println("Du bist vier Jahre alt"); break
- // Ausgabe, wenn die beiden Strings nicht ident sind +            default: System.out.println("Ich kann nicht feststellen wie alt du bist. Bitte eine Zahl von 1-4 eingeben"); break;
- printf("%s%s%s%s", one, " equals not ", two, "\n"); +
- }+
  }  }
 } }
 +</code>
 +=== Kompilieren und ausführen ===
 +Die Datei Switcher.java erstellen und so ausführen:
 +<code bash>
 +javac Switcher.java
 +java Switcher
 </code> </code>
  
 ===== Javascript ===== ===== Javascript =====
 +=== Das Programm ===
 <code javascript> <code javascript>
 <!DOCTYPE HTML> <!DOCTYPE HTML>
Line 126: Line 147:
   <body>   <body>
     <script>     <script>
-      // Variablen anlegen +      // Variable anlegen 
-      var one "Walter"; +      var age 3;
-      var two = "walter";+
              
-      // Vergleichen +      // switchen 
-      if(one === two) { +      switch (age) { 
-        // Ausgabe, wenn die beiden Strings ident sind +        case 1:  alert("Du bist ein Jahr alt"); break; 
- alert(one+equals "+two); +        case 2:  alert("Du bist zwei Jahre alt"); break
-      } else { +        case 3:  alert("Du bist drei Jahre alt"); break; 
-        // Ausgabe, wenn die beiden Strings nicht ident sind +        case 4:  alert("Du bist vier Jahre alt"); break; 
- alert(one+equals not "+two);+        default: alert("Ich kann nicht feststellen wie alt du bist. Bitte eine Zahl von 1-4 eingeben"); break;
       }       }
     </script>     </script>
Line 142: Line 162:
 </html> </html>
 </code> </code>
 +=== Ausführen ===
 +Den Code in die Datei switch.html kopieren und mit dem Browser öffnen
  
 ===== Perl ===== ===== Perl =====
 +=== Das Programm ===
 <code perl> <code perl>
 #!/usr/bin/perl #!/usr/bin/perl
Line 149: Line 172:
 use strict; use strict;
 use warnings; use warnings;
 +use Switch;
  
-Variablen anlegen +Variable anlegen 
-my $one "Walter"; +my $age 3;
-my $two = "walter";+
  
-Vergleichen +switchen 
-if($one eq $two) { +switch ($age) { 
- # Ausgabe, wenn die beiden Variablen ident sind +    case 1 { print "Du bist ein Jahr alt\n"; } 
- print $one.equals ".$two."\n"; +    case 2 { print "Du bist zwei Jahre alt\n"; } 
-} else { +    case 3 { print "Du bist drei Jahre alt\n"; } 
- # Ausgabe, wenn die beiden Variablen nicht ident sind +    case 4 { print "Du bist vier Jahre alt\n"; } 
- print $one." equals not ".$two."\n";+    else   { print "Ich kann nicht feststellen wie alt du bistBitte eine Zahl von 1-4 eingeben\n"; }
 } }
 </code> </code>
  
-===== Python3 ===== +=== Ausführen === 
-<code python+Die Datei switch.pl erstellen und so ausführen: 
-#!/usr/bin/python3 +<code bash
- +perl switch.pl
-# Variablen anlegen +
-one = "Walter"; +
-two = "walter"; +
- +
-# Vergleichen +
-if one == two: +
- # Ausgabe, wenn die beiden Strings ident sind +
- print(one+" equals "+two) +
-else: +
- # Ausgabe, wenn die beiden Strings nicht ident sind +
- print(one+" not equals "+two)+
 </code> </code>
  
 ===== PHP ===== ===== PHP =====
 +=== Das Programm ===
 <code php> <code php>
 <?php <?php
  
-// Variablen anlegen +// Variable anlegen 
-$one "Walter"; +$age 3;
-$two = "walter";+
  
-// Vergleichen +// switchen 
-if($one === $two) { +switch ($age) { 
- // Ausgabe, wenn die beiden Strings ident sind +    case 1:  echo "Du bist ein Jahr alt"; break; 
- echo "one equals two"; +    case 2:  echo "Du bist zwei Jahre alt"; break
-} else { +    case 3:  echo "Du bist drei Jahre alt"; break; 
- // Ausgabe, wenn die beiden Strings nicht ident sind +    case 4:  echo "Du bist vier Jahre alt"; break; 
- echo "one equals not two";+    default: echo "Ich kann nicht feststellen wie alt du bist. Bitte eine Zahl von 1-4 eingeben"; break;
 } }
 </code> </code>
 +=== Ausführen ===
 +Die Datei switch.php erstellen und so ausführen:
 +<code bash>
 +php switch.php
 +</code>
 +
 +===== Python3 =====
 +In Python gibt es kein switch im eigentlichen Sinne. Mit ein bisschen Tricksen bekommt man trotzdem eines hin. Das wird hier aber ausgelassen.
switch.1498569589.txt.gz · Last modified: 2017/06/27 15:19 by gg