Упражнение. Использование потоков управления в языке 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 — это введенное число). А затем продолжал запрашивать числа.

Давайте пока исключим возможность того, что пользователь может вводить что-то помимо целых чисел.