Ćwiczenie — używanie przepływów sterowania w języku Go

Ukończone

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ówny number 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 gdzie X 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.