Cvičení – použití toků řízení v Go
Procvičte si, co jste se v tomto modulu naučili, a to dokončením některých programovacích cvičení. Tato cvičení nejsou složitá a v další lekci najdete řešení.
Zkuste nejprve vyřešit cvičení na vlastní pěst. Pak porovnejte výsledky s řešeními. Modul si můžete kdykoli prohlédnout, pokud si nepamatujete důležité podrobnosti.
Napsání programu FizzBuzz
Nejprve napište program, který vytiskne čísla 1 až 100, s následujícími změnami:
- Pokud je číslo dělitelné číslem 3, vytiskněte
Fizz
ho. - Pokud je číslo dělitelné číslem 5, vytiskněte
Buzz
ho. - Pokud je číslo dělitelné 3 i 5, vytiskněte
FizzBuzz
ho. - Pokud se žádná z předchozích případů neshoduje, vytiskněte číslo.
Zkuste použít switch
příkaz.
Vyhledání nábídek
Napište program, který najde všechna prime čísla menší než 20. První číslo je libovolné číslo větší než 1, které lze rovnoměrně rozdělit pouze sám o sobě a 1. "Rovnoměrně rozdělené" znamená, že po operaci dělení neexistuje žádný zbytek. Stejně jako většina programovacích jazyků nabízí Go způsob, jak zkontrolovat, jestli operace dělení vytvoří zbytek. Můžeme použít operátor modulu ( %
znak procenta).
V tomto cvičení aktualizujete funkci s názvem findprimes
, abyste zkontrolovali, jestli je číslo prime. Funkce má jeden celočíselnou hodnotu a vrátí logickou hodnotu. Funkce testuje, jestli je vstupní číslo základní kontrolou zbytku. Pokud je číslo první, vrátí funkce hodnotu true.
Jako výchozí bod použijte následující fragment kódu a nahraďte všechny instance ??
správnou 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)
}
}
}
Tento program zkontroluje čísla 1 až 20 a vytiskne číslo, pokud je první. Upravte příklad podle popisu.
-
main
Ve funkci projděte všechna čísla, která chcete zkontrolovat. Ukončete smyčku po kontrole posledního čísla. - Voláním
findprimes
funkce zkontrolujte číslo. Pokud funkce vrátí hodnotu true, vytiskněte prime. -
findprimes
Ve smyčce začněte od 2 a opakujte, dokud čítač není větší nebo roven hodnotěnumber
. - Zkontrolujte, jestli
number
je rovnoměrně dělitelná aktuální hodnotou čítače. Pokud ano, ukončete smyčku. - Pokud je první,
number
vraťte hodnotu true, jinak vrátí hodnotu false. - Tip: Nezapomeňte správně zpracovat případ, kdy je vstupní číslo 1.
Zeptejte se čísla, panice, pokud je negativní
Napište program, který uživatele požádá o číslo. Jako výchozí bod použijte následující fragment kódu:
package main
import "fmt"
func main() {
val := 0
fmt.Print("Enter number: ")
fmt.Scanf("%d", &val)
fmt.Println("You entered:", val)
}
Tento program požádá o číslo a vytiskne ho. Upravte ukázkový kód tak, aby:
- Požádejte průběžně o celé číslo. Výstupní podmínkou smyčky by měla být položka uživatele, která je záporné číslo.
- Program se chybově ukončí, když uživatel zadá záporné číslo. Pak vytiskněte chybu trasování zásobníku.
- Pokud je číslo 0, vytiskněte
0 is neither negative nor positive
ho . Pokračujte v žádosti o číslo. - Pokud je číslo kladné, vytiskněte
You entered: X
(kdeX
je zadané číslo). Pokračujte v žádosti o číslo.
Prozatím ignorujte možnost, že uživatel může zadat něco jiného než celé číslo.