Ciclo annidato
Fa parte della sezione Fondamenti del percorso GDScript di Coddy. Lezione 49 di 92.
Un ciclo annidato è un ciclo all'interno di un altro ciclo. Per ogni iterazione del ciclo esterno, il ciclo interno esegue tutte le sue iterazioni:
var rows := 3
var cols := 2
for i in range(rows):
print("Outer: ", i)
for j in range(cols):
print(" Inner: ", j)Outer: 0
Inner: 0
Inner: 1
Outer: 1
Inner: 0
Inner: 1
Outer: 2
Inner: 0
Inner: 1Il blocco interno è rientrato di due livelli. Viene eseguito rows x cols = 3 x 2 = 6 volte in totale. j riparte da 0 ogni volta che viene eseguito il ciclo esterno, mentre rows e cols rimangono uguali e indicano solo ai cicli quando fermarsi.
I due cicli hanno bisogno di nomi di variabili diversi. Scrivere for i dentro un altro for i è un errore, segnalato prima che il programma venga eseguito.
I cicli annidati sono utili per righe e colonne. print() termina sempre la riga, quindi, per stampare una riga di asterischi, costruiscila prima in una stringa e stampala una volta terminato il ciclo interno:
for row in range(2):
var line := ""
for col in range(3):
line += "*"
print(line)***
***Il ciclo esterno viene eseguito una volta per riga e il ciclo interno aggiunge una stella per colonna. Un break all'interno del ciclo interno interrompe solo il ciclo interno: il ciclo esterno prosegue con l'iterazione successiva.
Sfida
FacileIl programma legge due numeri interi: rows e cols.
Usa cicli annidati per stampare un rettangolo di asterischi (*) con rows righe e cols asterischi su ogni riga.
Per gli input 3 e 4, l'output è:
****
****
****Usa un nuovo contatore per ogni ciclo (per esempio row per le righe e col per gli asterischi in una riga) e confrontalo con rows o cols. Non modificare rows e cols: ogni riga ha bisogno di cols di nuovo.
Provalo tu
extends Node
func _ready():
var rows := int(OS.read_string_from_stdin())
var cols := int(OS.read_string_from_stdin())
# Ciclo esterno: un'iterazione per riga
# Ciclo interno: aggiungi una stella per colonna
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
4Operatori Parte 1
Operatori aritmeticiDivisione interaOperatore moduloScorciatoie aritmeticheRipasso - Matematica sempliceOperatori di confronto7Input/Output di base
OutputOutput con variabiliFormattazione delle stringheInputConversione di tipoRiepilogo - Fino a 120Riepilogo - Vero o falso10Funzioni
Dichiarare una funzioneArgomentiRestituzioneTipi di ritornoRiepilogo - Funzione SigmaRiepilogo - Funzione di convalidaValori predefiniti5Operatori - Parte 2
Operatori logici - Parte 1Operatori logici - Parte 2Riepilogo - Logica sempliceOperatori logici - Parte 3Operatore ternario8Calcolatore per dividere il conto
Messaggio di benvenutoInserimento dei dati11FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz3Variabili Parte 2
Dichiarazione del tipoInferenza del tipoCostantiRipasso - Inizializzare le variabiliConversione di tipo6Strutture decisionali
Istruzione ifIf - ElseRipasso - Calcolatrice sempliceIf - Else annidatiIstruzione match9Cicli
Ciclo forCiclo whilebreakcontinueRipasso - FattorialeLa funzione rangeCiclo annidatoRipasso - Input dinamicoEsercitati da solo: Compilatore GDScript online