Menu
Coddy logo textTech

Вложенные циклы

Часть раздела Основы путешествия по GO на Coddy. Урок 49 из 109.

Вложенные циклы — это циклы, размещённые внутри другого цикла. Внутренний цикл полностью выполняется для каждой итерации внешнего цикла.

Давайте создадим таблицу умножения для чисел 1–3, используя вложенные циклы:

for i := 1; i <= 3; i++ {
    for j := 1; j <= 3; j++ {
        fmt.Printf("%d×%d=%d\t", i, j, i*j)
    }
    fmt.Println()
}

После выполнения этого кода мы получаем таблицу умножения, где each row представляет одно значение переменной outer loop (i), умноженное на все значения переменной inner loop (j). На экране будет показан следующий вывод:

1×1=1   1×2=2   1×3=3   
2×1=2   2×2=4   2×3=6   
3×1=3   3×2=6   3×3=9   

Давайте разберёмся, как это работает, шаг за шагом:

Сначала внешний цикл устанавливает i=1, а внутренний цикл выполняется полностью:

i=1, j=1: prints "1×1=1"
i=1, j=2: prints "1×2=2"
i=1, j=3: prints "1×3=3"

После завершения inner loop мы выводим новую строку с помощью fmt.Println().

Затем внешний цикл устанавливает i=2, и внутренний цикл запускается снова:

i=2, j=1: prints "2×1=2"
i=2, j=2: prints "2×2=4"
i=2, j=3: prints "2×3=6"

Наконец, внешний цикл устанавливает i=3, и внутренний цикл выполняется в последний раз:

i=3, j=1: prints "3×1=3"
i=3, j=2: prints "3×2=6"
i=3, j=3: prints "3×3=9"

Этот шаблон циклов внутри циклов очень полезен для работы с таблицами данных или создания структур, похожих на сетку.

challenge icon

Задание

Новичок

В этом задании ты потренируешься использовать nested loop, чтобы напечатать простой узор. Цикл outer будет iterate through rows, а цикл inner будет iterate through columns, чтобы создать небольшую grid из символов.

Заверши nested loop, чтобы напечатать grid 3x3 из asterisks (*). После каждого asterisk должен стоять пробел, поэтому каждая строка должна выглядеть как * * * (с пробелом в конце). Ожидаемый вывод:

* * * 
* * * 
* * * 

Попробуйте сами

package main

import "fmt"

func main() {
	// Количество строк и столбцов в нашей сетке
	rows := 3
	columns := 3
	
	// TODO: Создайте вложенный цикл для печати сетки из звёздочек (*)
	// Внешний цикл должен проходить по строкам
	// Внутренний цикл должен проходить по столбцам
	for i := 0; i < rows; i++ {
		// Добавьте здесь внутренний цикл для печати звёздочек в каждом столбце
		
		// Это печатает новую строку после каждой строки
		fmt.Println()
	}
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор Go