Oefening: besturingsstromen gebruiken in Go
Oefen wat u in deze module hebt geleerd door enkele coderingsoefeningen uit te voeren. Deze oefeningen zijn niet ingewikkeld en u vindt oplossingen in de volgende les.
Probeer eerst de oefeningen zelf op te lossen. Vergelijk vervolgens uw resultaten met de oplossingen. U kunt de module altijd bekijken als u een belangrijk detail niet meer weet.
Een FizzBuzz-programma schrijven
Schrijf eerst een programma waarmee getallen 1 tot en met 100 worden afgedrukt, met de volgende wijzigingen:
- Afdrukken
Fizz
als het getal deelbaar is door 3. - Druk af
Buzz
als het getal deelbaar is door 5. - Druk af
FizzBuzz
als het getal deelbaar is door zowel 3 als 5. - Druk het nummer af als geen van de vorige gevallen overeenkomt.
Probeer de switch
instructie te gebruiken.
De priemgetallen zoeken
Schrijf een programma om alle priemgetallen te vinden die kleiner zijn dan 20. Een priemgetall is een getal dat groter is dan 1 dat alleen gelijkmatig kan worden gedeeld door zichzelf en 1. Als u 'gelijkmatig verdeeld' wilt zijn, is er geen rest na de verdelingsbewerking. Net als de meeste programmeertalen biedt Go een manier om te controleren of een delingbewerking een rest produceert. We kunnen de modulus-operator %
(procentteken) gebruiken.
In deze oefening werkt u een functie met de naam findprimes
bij om te controleren of een getal priem is. De functie heeft één geheel getalargument en retourneert een Booleaanse waarde. De functie test of het invoernummer een prime is door te controleren op een restgetal. Als het getal een priem is, retourneert de functie waar.
Gebruik het volgende codefragment als uitgangspunt en vervang alle exemplaren van ??
de juiste syntaxis:
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)
}
}
}
Dit programma controleert de getallen 1 tot en met 20 en drukt het getal af als het priem is. Wijzig het voorbeeld zoals beschreven.
- Voer in de
main
functie alle getallen door die u wilt controleren. Sluit de lus af nadat u het laatste nummer hebt gecontroleerd. - Roep de
findprimes
functie aan om het nummer te controleren. Als de functie waar retourneert, drukt u de prime af. - Begin in de
findprimes
lus vanaf 2 en herhaal totdat de teller groter is dan of gelijk is aan denumber
waarde. - Controleer of de
number
waarde gelijkmatig deelbaar is door de huidige tellerwaarde. Als dat het is, sluit u de lus af. - Als de
number
prime is, retourneer dan waar; retourneer anders onwaar. - Hint: zorg ervoor dat u de case correct afhandelt waarbij het invoernummer 1 is.
Vraag een getal, paniek als negatief
Schrijf een programma waarmee een gebruiker om een nummer wordt gevraagd. Gebruik het volgende codefragment als uitgangspunt:
package main
import "fmt"
func main() {
val := 0
fmt.Print("Enter number: ")
fmt.Scanf("%d", &val)
fmt.Println("You entered:", val)
}
Dit programma vraagt om een nummer en drukt het af. Wijzig de voorbeeldcode in:
- Vraag voortdurend om een geheel getal. De afsluitvoorwaarde voor de lus moet een gebruikersvermelding zijn die een negatief getal is.
- Crash het programma wanneer de gebruiker een negatief getal invoert. Druk vervolgens de stacktraceringsfout af.
- Wanneer het getal 0 is, drukt u af
0 is neither negative nor positive
. Blijf vragen om een nummer. - Wanneer het getal positief is, drukt u af
You entered: X
(waarbijX
het ingevoerde getal is). Blijf vragen om een nummer.
Negeer voorlopig de mogelijkheid dat de gebruiker iets anders kan invoeren dan een geheel getal.