Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:funktionen:problems [2023-02-28 19:04] – [Problem 4] gragf_informatik:funktionen:problems [2023-11-16 14:27] (aktuell) – [Problem 5] hof
Zeile 2: Zeile 2:
 In jedem der folgenden Codes hat es jeweils einen Fehler bzw. ein Problem. In jedem der folgenden Codes hat es jeweils einen Fehler bzw. ein Problem.
  
-Finde das Problem und beschreibe es in eigenen Worten+Gehe für jedes Problem nach dem folgenden Muster vor: 
-Behebe das Problem und testeob der Code läuft.+  - *Predict*: Code lesen und voraussagen, was passiert
 +  - *Run*: Führe den Code in WebtigerJython aus und vergleich das Resultat mit deiner Voraussage. 
 +  - *Inspect*: Untersucheweshalb der Code nicht funktioniert - schreibe einen `# Kommentar` hinter die fehlerhafte Zeile. 
 +  - *Modify*: Behebe den Fehler im Code. 
  
 ==== Problem 1 ==== ==== Problem 1 ====
Zeile 17: Zeile 21:
     print("       ...bye!")     print("       ...bye!")
          
-if input("Yes or no? (y/n)") == 'y':+if input("Hi or bye? (h/b)") == 'h':
     say_hello     say_hello
 else: else:
Zeile 24: Zeile 28:
  
 ++++Lösung| ++++Lösung|
-In der If-Verzweigung unten soll entweder die Funktion //say\_hello// oder die Funktion //say\_goodbye// aufgerufen werden. Ein Aufruf einer Funktion muss aber immer Klammern (öffnende und schliessend) beinhalten, auch wenn nichts in den Klammern steht. ''say\_hello'' wird nicht als Aufruf einer Funktion erkannt, ''say\_hello()'' schon. +In der If-Verzweigung unten soll entweder die Funktion //say\_hello// oder die Funktion //say\_goodbye// aufgerufen werden. Ein Aufruf einer Funktion muss aber immer Klammern (öffnend und schliessend) beinhalten, auch wenn nichts in den Klammern steht. ''say\_hello'' wird nicht als Aufruf einer Funktion erkannt, ''say\_hello()'' schon. 
 ++++ ++++
 \\ \\
Zeile 86: Zeile 90:
  
 ++++Lösung| ++++Lösung|
-Der Code gibt erst 25, dann 5 aus. Wo liegt nun das Problem? Wenn du nur die letzte Zeile anschaust, würdest du erwarten, dass diese Zeile die Zahl 25 ausgibt (4 hoch 2 plus 3 hoch 2). Aber sie gibt 5 aus. Die Definition der Funktion //summe\_quadrate2// hat die Arguente x und y, rechnet aber mit Variablen namens a und b. Normalerweise würde hier eine Fehlermeldung entstehen – aber das Problem ist dies: Die Variablen a und b sind ganz oben schon definiert. Also verwendet //summe\_quadrate2// einfach diese Variablen, x und y bleiben ungenutzt. Es gilt Folgendes:+Der Code gibt erst 25, dann 5 aus. Wo liegt nun das Problem? Wenn du nur die letzte Zeile anschaust, würdest du erwarten, dass diese Zeile die Zahl 25 ausgibt (4 hoch 2 plus 3 hoch 2). Aber sie gibt 5 aus. Die Definition der Funktion //summe\_quadrate2// hat die Parameter x und y, rechnet aber mit Variablen namens a und b. Normalerweise würde hier eine Fehlermeldung entstehen – aber das Problem ist dies: Die Variablen a und b sind ganz oben schon definiert. Also verwendet //summe\_quadrate2// einfach diese Variablen, x und y bleiben ungenutzt. Es gilt Folgendes:
   * Variablen, die //ausserhalb// der Definition einer Funktion definiert werden, sind //globale Variablen//. Sie sind global, also überall bekannt – auch //in// der Definition der Funktion.    * Variablen, die //ausserhalb// der Definition einer Funktion definiert werden, sind //globale Variablen//. Sie sind global, also überall bekannt – auch //in// der Definition der Funktion. 
   * Falls in der Definition der Funktion eine Variable definiert wird, die gleich heisst wie die globale Variable, handelt es sich dabei um zwei verschiedene Variablen!   * Falls in der Definition der Funktion eine Variable definiert wird, die gleich heisst wie die globale Variable, handelt es sich dabei um zwei verschiedene Variablen!
  
-**Merke:** Definiere Variablen, die du innerhalb einer Funktino verwendest, immmer innerhalb der Funktion, nicht ausserhalb. +**Merke:** Definiere Variablen, die du innerhalb einer Funktion verwendest, immer innerhalb der Funktion, nicht ausserhalb. 
  
 ++++ ++++
Zeile 109: Zeile 113:
  
 ++++Lösung| ++++Lösung|
-Die Funktion zufallszahl() gibt keinen Wert //zurück//. Sie gibt bloss einen Wert //aus//. Damit die Funktion einen Wert zurückgibt, müsste ''print'' durch ''return'' ersetzt werden. +Die Funktion `zufallszahl()gibt keinen Wert //zurück//. Sie gibt bloss einen Wert //aus//. Damit die Funktion einen Wert zurückgibt, müsste ''print'' durch ''return'' ersetzt werden. 
  
 **Merke:** **Merke:**
  • gf_informatik/funktionen/problems.1677611062.txt.gz
  • Zuletzt geändert: 2023-02-28 19:04
  • von gra