Упражнение. Использование потоков управления в языке Go
Закрепите на практике то, что вы изучили в этом модуле, выполнив несколько упражнений по написанию кода. Эти упражнения не сложны. С их решениями вы ознакомитесь в следующем блоке.
Попробуйте сначала выполнить их самостоятельно. Затем сравните свои результаты с решениями. Вы всегда можете вернуться к модулю, если забудете важную информацию.
Написание программы FizzBuzz
Сначала напишите программу, которая выводит числа от 1 до 100, внеся такие изменения:
- Вывод
Fizz
, если число делится на 3. - Вывод
Buzz
, если число делится на 5. - Вывод
FizzBuzz
, если число делится и на 3, и на 5. - Вывод числа, если соответствие условию не будет найдено.
Попробуйте использовать оператор switch
.
Поиск простых чисел
Напишите программу, чтобы найти все простые числа меньше 20. Простое число — это любое число больше 1, которое можно разделить нацело только на себя и 1. “Деление нацело" означает отсутствие остатка после операции деления. Как и большинство языков программирования, язык Go позволяет проверить, получается ли остаток в результате операции деления. Можно использовать оператор модуля %
(знак процента).
В этом упражнении вы обновите функцию с именем findprimes
, чтобы проверить, является ли число простым. Функция содержит один целочисленный аргумент и возвращает логическое значение. Функция проверяет, является ли входное число простым, проверяя остаток. Если число простое, функция возвращает значение true.
Используйте следующий фрагмент кода в качестве отправной точки и замените все экземпляры ??
, используя правильный синтаксис.
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)
}
}
}
Эта программа проверяет числа от 1 до 20 и выводит число, если оно простое. Измените пример, как описано.
- В функции
main
выполните перебор всех чисел для проверки. После проверки последнего числа выйдите из цикла. - Вызовите функцию
findprimes
, чтобы проверить число. Если функция возвращает значение true, распечатайте простое число. - В цикле
findprimes
запустите от 2 до тех пор, пока счетчик не будет больше или равен значениюnumber
. - Проверьте, можно ли
number
разделить нацело на текущее значение счетчика. Если да, завершите цикл. - Если
number
— простое число, возвращается значение true; в противном случае возвращается значение false. - Указание. Убедитесь, что случай, когда входное число равно 1, обрабатывается правильно.
Запрос числа, вывод критической ошибки при отрицательном числе
Напишите программу, которая будет запрашивать у пользователя число. Используйте следующий фрагмент кода в качестве отправной точки:
package main
import "fmt"
func main() {
val := 0
fmt.Print("Enter number: ")
fmt.Scanf("%d", &val)
fmt.Println("You entered:", val)
}
Эта программа запрашивает число и выводит его на экран. Измените пример кода, чтобы он:
- Непрерывно запрашивал целое число. Условием выхода для цикла должно быть введенное пользователем отрицательное число.
- Совершал аварийное завершение программы при вводе пользователем отрицательного числа. Затем выводил ошибку трассировка стека.
- Если число равно 0, выводил
0 is neither negative nor positive
. А затем продолжал запрашивать числа. - Если число положительное, выводил
You entered: X
(гдеX
— это введенное число). А затем продолжал запрашивать числа.
Давайте пока исключим возможность того, что пользователь может вводить что-то помимо целых чисел.