Övning – Använda kontrollflöden i Go

Slutförd

Öva på det du har lärt dig i den här modulen genom att slutföra några kodningsövningar. De här övningarna är inte komplicerade och du hittar lösningar i nästa lektion.

Försök att lösa övningarna på egen hand först. Jämför sedan dina resultat med lösningarna. Du kan alltid granska modulen om du inte kommer ihåg någon viktig information.

Skriva ett FizzBuzz-program

Skriv först ett program som skriver ut nummer 1 till 100, med följande ändringar:

  • Skriv ut Fizz om talet är delbart med 3.
  • Skriv ut Buzz om talet är delbart med 5.
  • Skriv ut FizzBuzz om talet är delbart med både 3 och 5.
  • Skriv ut talet om inget av de tidigare fallen matchar.

Försök att använda -instruktionen switch .

Hitta primtalen

Skriv ett program för att hitta alla primtal som är mindre än 20. Ett primtal är ett tal som är större än 1 och som bara kan delas jämnt med sig själv och 1. För att vara "jämnt uppdelad" innebär det att det inte finns någon rest efter divisionsåtgärden. Precis som de flesta programmeringsspråk är Go ett sätt att kontrollera om en divisionsåtgärd genererar en rest. Vi kan använda operatorn modulus % (procenttecken).

I den här övningen uppdaterar du en funktion med namnet findprimes för att kontrollera om ett tal är primärt. Funktionen har ett heltalsargument och returnerar ett booleskt värde. Funktionen testar om indatanumret är ett primtal genom att söka efter en rest. Om talet är ett primtal returnerar funktionen sant.

Använd följande kodfragment som utgångspunkt och ersätt alla instanser av ?? med rätt 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)
        }
    }
}

Det här programmet kontrollerar nummer 1 till och med 20 och skriver ut talet om det är primtal. Ändra exemplet enligt beskrivningen.

  • main I funktionen loopar du igenom alla tal som ska kontrolleras. Avsluta loopen när du har kontrollerat det sista talet.
  • findprimes Anropa funktionen för att kontrollera numret. Om funktionen returnerar sant skriver du ut primtalen.
  • I loopen findprimes startar du från 2 och upprepar tills räknaren är mer än eller lika med number värdet.
  • Kontrollera om det number aktuella räknarvärdet är jämnt delbart. I så fall avslutar du loopen.
  • number När är prime, returnera sant; annars returnera falskt.
  • Tips: Se till att hantera fallet där indatanumret är 1 på rätt sätt.

Fråga ett tal, panik om det är negativt

Skriv ett program som ber en användare om ett tal. Använd följande kodfragment som utgångspunkt:

package main

import "fmt"

func main() {
    val := 0
    fmt.Print("Enter number: ")
    fmt.Scanf("%d", &val)
    fmt.Println("You entered:", val)
}

Det här programmet ber om ett tal och skriver ut det. Ändra exempelkoden till:

  • Fråga kontinuerligt efter ett heltalsnummer. Avslutningsvillkoret för loopen ska vara en användarpost som är ett negativt tal.
  • Krascha programmet när användaren anger ett negativt tal. Skriv sedan ut stackspårningsfelet.
  • När talet är 0 skriver du ut 0 is neither negative nor positive. Fortsätt fråga efter ett nummer.
  • När talet är positivt skriver du ut You entered: X (där X är det angivna talet). Fortsätt fråga efter ett nummer.

Ignorera för tillfället möjligheten att användaren kan ange något annat än ett heltalsnummer.