Übung: Verwenden von Ablaufsteuerungen in Go
Üben Sie, was Sie in diesem Modul gelernt haben, indem Sie einige Programmieraufgaben durchführen. Diese Aufgaben sind nicht kompliziert, und Sie finden die Lösungen in der nächsten Lerneinheit.
Versuchen Sie zunächst, die Aufgaben selbst zu lösen. Vergleichen Sie dann die Ergebnisse mit den Lösungen. Sie können das Modul jederzeit erneut durchsehen, wenn Sie sich an ein wichtiges Detail nicht mehr erinnern.
Schreiben eines FizzBuzz-Programms
Schreiben Sie zunächst ein Programm mit den folgenden Änderungen, das die Zahlen 1 bis 100 ausgibt:
- Geben Sie
Fizz
aus, wenn die Zahl durch 3 teilbar ist. - Geben Sie
Buzz
aus, wenn die Zahl durch 5 teilbar ist. - Geben Sie
FizzBuzz
aus, wenn die Zahl durch 3 und 5 teilbar ist. - Geben Sie die Zahl aus, wenn keiner der vorherigen Fälle zutrifft.
Versuchen Sie, die switch
-Anweisung zu verwenden.
Ermitteln der Primzahlen
Schreiben Sie ein Programm, um alle Primzahlen unter 20 zu finden. Eine Primzahl ist eine beliebige Zahl größer als 1, die nur durch sich selbst und 1 glatt geteilt werden kann. „Glatt geteilt“ bedeutet, dass nach dem Divisionsvorgang kein Rest bleibt. Wie die meisten Programmiersprachen bietet Go ein Verfahren, um zu prüfen, ob ein Divisionsvorgang einen Rest ergibt. Wir können den Modulusoperator %
(Prozentzeichen) verwenden.
In dieser Übung aktualisieren Sie eine Funktion mit dem Namen findprimes
, um zu prüfen, ob eine Zahl prim ist. Die Funktion weist ein ganzzahliges Argument auf und gibt einen booleschen Wert zurück. Die Funktion testet, ob die Eingabezahl eine Primzahl ist, indem sie auf einen Rest prüft. Wenn die Zahl eine Primzahl ist, gibt die Funktion „true“ zurück.
Verwenden Sie den folgenden Codeausschnitt als Ausgangspunkt, und ersetzen Sie alle Instanzen von ??
durch die richtige Syntax:
package main
import "fmt"
func findprimes(number int) bool {
for i := 2; i ?? number; i ?? {
if number ?? i == ?? {
return false
}
}
if number ?? {
return true
} else {
return false
}
}
func main() {
fmt.Println("Prime numbers less than 20:")
for number := ??; number ?? 20; number++ {
if ?? {
fmt.Printf("%v ", number)
}
}
}
Dieses Programm überprüft die Zahlen 1 bis 20 und gibt die Zahl aus, wenn es sich um eine Primzahl handelt. Ändern Sie das Beispiel wie beschrieben.
- Durchlaufen Sie in der
main
-Funktion alle zu überprüfenden Zahlen. Beenden Sie die Schleife, nachdem Sie die letzte Zahl überprüft haben. - Rufen Sie die
findprimes
-Funktion auf, um die Zahl zu überprüfen. Wenn die Funktion TRUE zurückgibt, geben Sie die Primzahl aus. - Beginnen Sie in der
findprimes
-Schleife mit 2, und wiederholen Sie den Vorgang, bis der Zähler größer oder gleich dem Wert vonnumber
ist. - Überprüfen Sie, ob
number
glatt durch den aktuellen Zähler teilbar ist. Falls ja, beenden Sie die Schleife. - Wenn
number
prim ist, geben Sie TRUE zurück, andernfalls FALSE. - Hinweis: Achten Sie darauf, den Fall, dass die eingegebene Zahl 1 ist, ordnungsgemäß zu behandeln.
Aufforderung zur Eingabe einer Zahl und Verwendung von „panic“ bei einer negativen Zahl
Schreiben Sie ein Programm, das einen Benutzer nach einer Zahl fragt. Verwenden Sie den folgenden Codeausschnitt als Startpunkt:
package main
import "fmt"
func main() {
val := 0
fmt.Print("Enter number: ")
fmt.Scanf("%d", &val)
fmt.Println("You entered:", val)
}
Dieses Programm fragt nach einer Zahl und gibt sie aus. Ändern Sie den Beispielcode wie folgt:
- Fragen Sie kontinuierlich nach einer ganzen Zahl. Die Beendigungsbedingung für die Schleife sollte eine Benutzereingabe sein, die eine negative Zahl ist.
- Lassen Sie das Programm abstürzen, wenn der Benutzer eine negative Zahl eingibt. Geben Sie dann den Fehler der Stapelüberwachung aus.
- Wenn die Zahl 0 ist, geben Sie
0 is neither negative nor positive
aus. Fragen Sie weiter nach einer Zahl. - Wenn die Zahl positiv ist, geben Sie
You entered: X
aus (wobeiX
die eingegebene Zahl ist). Fragen Sie weiter nach einer Zahl.
Ignorieren Sie vorerst die Möglichkeit, dass der Benutzer etwas anderes als eine ganze Zahl eingeben könnte.