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()
}

После выполнения этого кода мы получим таблицу умножения, в которой каждая строка представляет собой одно значение переменной внешнего цикла (i), умноженное на все значения переменной внутреннего цикла (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"

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

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

i=2, j=1: выводит "2×1=2"
i=2, j=2: выводит "2×2=4"
i=2, j=3: выводит "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

Задание

Новичок

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

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

* * * 
* * * 
* * * 

Шпаргалка

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

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

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

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

package main

import "fmt"

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

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

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