Menu
Coddy logo textTech

Stride

Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 8 de 56.

Um intervalo percorre um passo de cada vez. Quando você quiser um tamanho de passo diferente, ou contar para trás, use stride.

Duas variantes: stride(from:to:by:) para antes do segundo valor (meio-aberto), stride(from:through:by:) pode incluí-lo (fechado):

for n in stride(from: 0, to: 10, by: 2) {
    print(n)
}
// 0, 2, 4, 6, 8
for n in stride(from: 10, through: 0, by: -2) {
    print(n)
}
// 10, 8, 6, 4, 2, 0

O argumento by: deve ter o sinal correto: positivo ao contar para cima, negativo ao contar para baixo. Se houver incompatibilidade, o loop será executado zero vezes.

challenge icon

Desafio

Fácil

Leia três números inteiros (três linhas): start, end, step. O passo pode ser positivo ou negativo. O intervalo é inclusivo em ambas as extremidades (use stride(from:through:by:)).

Imprima:

  1. Os valores no stride, unidos por ,
  2. O número de valores produzidos

Para a entrada 0 / 10 / 3, a saída é:

0,3,6,9
4

Para a entrada 10 / 0 / -2, a saída é:

10,8,6,4,2,0
6

Folha de consulta

Use o stride quando você precisar de um tamanho de passo personalizado ou para fazer uma contagem regressiva.

stride(from:to:by:) — meio-aberto (exclui o valor final):

for n in stride(from: 0, to: 10, by: 2) { }
// 0, 2, 4, 6, 8

stride(from:through:by:) — fechado (inclui o valor final):

for n in stride(from: 10, through: 0, by: -2) { }
// 10, 8, 6, 4, 2, 0

O valor de by: deve corresponder à direção: positivo ao contar para cima, negativo ao contar para baixo. Uma incompatibilidade produz zero iterações.

Experimente você mesmo

let start = Int(readLine()!)!
let end = Int(readLine()!)!
let step = Int(readLine()!)!

// TODO: stride(from:through:by:), unir com vírgula, depois imprimir a contagem
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo