Ćwiczenie — używanie przepływów sterowania w języku Go
Przećwicz zdobytą wiedzę w tym module, wykonując niektóre ćwiczenia programistyczne. Te ćwiczenia nie są skomplikowane i w następnej lekcji znajdziesz rozwiązania.
Spróbuj rozwiązać ćwiczenia na własną rękę. Następnie porównaj wyniki z rozwiązaniami. Zawsze możesz przejrzeć moduł, jeśli nie pamiętasz ważnych szczegółów.
Pisanie programu FizzBuzz
Najpierw napisz program, który drukuje liczby od 1 do 100, z następującymi zmianami:
- Drukuj
Fizz
, jeśli liczba jest podzielna przez 3. - Drukuj
Buzz
, jeśli liczba jest podzielna przez 5. - Wydrukuj
FizzBuzz
, jeśli liczba jest podzielna zarówno przez 3, jak i 5. - Wydrukuj liczbę, jeśli żadna z poprzednich przypadków nie jest zgodna.
Spróbuj użyć instrukcji switch
.
Znajdź podstawy
Napisz program, aby znaleźć wszystkie liczby pierwsze mniejsze niż 20. Liczba główna to dowolna liczba większa niż 1, która może być równomiernie podzielona tylko przez siebie i 1. Aby być "równomiernie podzielonym", nie ma reszty po operacji dzielenia. Podobnie jak większość języków programowania, język Go umożliwia sprawdzenie, czy operacja dzielenia generuje resztę. Możemy użyć operatora modulus %
(znak procentowy).
W tym ćwiczeniu zaktualizujesz funkcję o nazwie findprimes
, aby sprawdzić, czy liczba jest liczbą główną. Funkcja ma jeden argument całkowity i zwraca wartość logiczną. Funkcja sprawdza, czy numer wejściowy jest głównym, sprawdzając resztę. Jeśli liczba jest liczbą pierwszą, funkcja zwraca wartość true.
Użyj następującego fragmentu kodu jako punktu początkowego i zastąp wszystkie wystąpienia ??
poprawną składnią:
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)
}
}
}
Ten program sprawdza liczby od 1 do 20 i drukuje liczbę, jeśli jest to prime. Zmodyfikuj przykład zgodnie z opisem.
- W funkcji wykonaj pętlę
main
przez wszystkie liczby, które mają być sprawdzane. Zamknij pętlę po sprawdzeniu ostatniej liczby. - Wywołaj funkcję ,
findprimes
aby sprawdzić numer. Jeśli funkcja zwróci wartość true, wydrukuj element prime. findprimes
W pętli rozpocznij od 2 i powtórz, aż licznik będzie większy niż lub równynumber
wartości.- Sprawdź, czy zmienna
number
jest równomiernie podzielna przez bieżącą wartość licznika. Jeśli tak jest, zamknij pętlę. number
Gdy parametr jest prime, zwraca wartość true; w przeciwnym razie zwraca wartość false.- Wskazówka: upewnij się, że poprawnie obsłuż przypadek, w którym numer wejściowy to 1.
Zapytaj liczbę, panikę, jeśli ujemna
Napisz program, który prosi użytkownika o liczbę. Użyj następującego fragmentu kodu jako punktu początkowego:
package main
import "fmt"
func main() {
val := 0
fmt.Print("Enter number: ")
fmt.Scanf("%d", &val)
fmt.Println("You entered:", val)
}
Ten program prosi o numer i drukuje go. Zmodyfikuj przykładowy kod na:
- Stale pytaj o liczbę całkowitą. Warunek zakończenia pętli powinien być wpisem użytkownika, który jest liczbą ujemną.
- Awaria programu, gdy użytkownik wprowadzi liczbę ujemną. Następnie wyświetl błąd śledzenia stosu.
- Gdy liczba to 0, wydrukuj wartość
0 is neither negative nor positive
. Ciągle pytaj o liczbę. - Gdy liczba jest dodatnia, wyświetl (
You entered: X
gdzieX
jest wprowadzona liczba). Ciągle pytaj o liczbę.
Na razie ignoruj możliwość, że użytkownik może wprowadzić coś innego niż liczba całkowita.