Um momento
Aula 39
Cursos / Aprenda Go / Golang (Curso de Programação)
Percorrendo Todos os Elementos de uma Matrix de Slices na Linguagem Golang

Summary

Resumo da Aula

Na aula de hoje, estamos explorando o conceito de percorrer um "slice de slices" mais detalhadamente. Anteriormente, aprendemos a percorrer apenas as linhas, mas agora vamos focar em acessar cada elemento específico dentro dessas linhas usando loops aninhados.

Conceitos e Estruturas

Loops Aninhados

  • Usaremos dois loops for: um para percorrer as linhas (usando a variável i) e outro para percorrer os elementos de cada linha (usando a variável j).
  • A notação habitual é for i := 0; i < comprimento; i++ para o loop externo e for j := 0; j < comprimento; j++ para o loop interno.

Exemplo de Implementação

  1. Criar um arquivo chamado matriz_slice.go.
  2. Definir um "tabuleiro" como um slice de slice de strings.
  3. Percorrer cada linha utilizando um loop.
  4. Dentro de cada linha, percorrer cada elemento usando um segundo loop.

Código de Exemplo

package main

import "fmt"

func main() {
    tabuleiro := [][]string{
        {"x", "o", "x"},
        {"o", "x", "o"},
        {"x", "o", "x"},
    }

    for i := 0; i < len(tabuleiro); i++ {
        for j := 0; j < len(tabuleiro[i]); j++ {
            fmt.Println(tabuleiro[i][j])
        }
    }
}

Resultados

Ao executar o código, cada elemento do "tabuleiro" é impresso na ordem de cima para baixo e da esquerda para a direita.

Desafio

O professor propõe um exercício: alterar a abordagem para percorrer as colunas primeiro, ou seja, iterar sobre as colunas antes de passar para a próxima linha. Isso implica inverter a ordem dos loops, onde o primeiro loop percorre as colunas (variável j) e o segundo percorre as linhas (variável i).


A aula conclui-se com a esperança de que os alunos experimentem essa nova abordagem e a pratiquem para solidificar seu entendimento sobre loops aninhados.

Video Transcript

Pelo lado pessoal estamos de volta. Só para terminar aqui, na esta aula nós vamos falar mais de pedaços de pedaços, mas vamos aprender como percorrer pedaços de pedaços de novo, mas de maneira mais específica. No passado nós aprendemos a percorrer um slice de slices, mas a gente só percorreu as linhas, a gente não realmente percorreu, vamos dizer, percorreu os elementos específicos de cada linha. Então como é que a gente vai fazer isso? A gente vai usar um loop aninhado, o nested loop, para poder percorrer cada elemento de cada linha. Isso vai envolver um loop dentro de outro loop. Então vamos ter, por exemplo, a gente vai usar o for, uma variável de repetição i, mas também vai ter outro for dentro do for, uma variável de repetição j. Normalmente a gente usa as variáveis com a letra i e a letra j, quando a gente demonstra esses tipos de loops. Então vamos começar aqui. Eu vou criar um novo arquivo, vou dizer matriz slice.go, eu vou só copiar esse código aqui do tabuleiro, vou remover as coisas, eu só copio o código que a gente tinha antes do tabuleiro e vou pacote main, portando fment. Então vamos precisar de strings, eu vou remover strings, vamos tirar esse cara daqui, começar de novo, temos o tabuleiro definindo aqui, pedaço de string, slice de slice. Então a gente vai percorrer agora em vez de cada linha, a gente vai percorrer cada elemento de cada linha individualmente. Então a gente vai começar primeiro, vamos na hora de seguinte, primeiro você vai na primeira linha e depois da primeira linha você vai percorrer primeiro elemento, segundo e terceiro, depois está indo na primeira linha, vai para a segunda linha, percorre primeiro, segundo e terceiro, depois que isso vai para a terceira linha, percorre primeiro elemento da terceira linha, o segundo e terceiro. Vamos fazer isso, então a gente vai fazer primeiro, vai percorrer as linhas, como a gente percorre as linhas, a gente já aprendeu isso, vai dar o for e dois pontos igual, zero, então we vai ser variável de repetição, vai corresponder a cada linha, então we menor que o comprimento do tabuleiro, então we mais mais, com isso a gente vai poder acessar o i de zero, um, dois, então se você quiser acessar a linha vai dizer tabuleiro, coxete i, essa é a linha. Legal, deixa aqui como comentário, barra a barra, só para a gente ter como referência se lembrar que para acessar a linha a gente usa tabuleiro, coxete i, subi. Legal, mas agora a gente está por exemplo com o tabuleiro no i, está no zero, a gente tem esse cara aqui, como é que a gente percorre um pedaço, vetor, usando um loop, então a gente vai fazer outro loop, a gente já tem esse cara, agora vamos fazer loop para pegar esse elemento e esse elemento, for a variável que a gente usa normalmente quando a gente tem um loop aninhado, nestred for loop, é o j para se referir a coluna, nesse caso primeiro, segundo e terceiro, então vai começar do zero, porque é do zero também, vai até onde? Bem, vai de zero até o comprimento desse pedaço de swing, nesse caso comprimento desse cara vamos fazer quanto? Cota i, um, dois, três, bem, j menor que o link, de quem? Como é que a gente se refere a essa linha aqui? Tabuleiro, subi, então não se esqueça do coxete i, que essa é a linha, pense nisso como a, b e c, você tem capturando por exemplo, se o i for um, vai capturar o b, tá, a gente quer saber o comprimento do b, pronto, agora já está mais e mais, ele vai de zero, um, dois, e quando bater no três, vai, condição vira falsa e não vai mais recortar o corpo do loop, tá, legal, então temos a linha, mas como acessar o elemento de cada, o elemento da linha? Bem, se eu tivesse a variável chamada linha, eu acessaria o elemento usando quem? O coxete j, dessa maneira aqui, se eu tivesse linha, esse cara dentro da variável chamada linha, a gente só acessaria o coxete j, legal, você pode fazer isso se você quiser, deixa como é exercício, mas, vê de fazer isso, eu vou só falar o seguinte, mas eu bem que eu sei que linha é, é o que? Tabuleiro, coxete i, então esse cara aqui que é a linha, então para poder pegar, a, o elemento da linha é só se referir tabuleiro, coxete i, coxete j, tá, dessa maneira, e com isso vamos dar o print, leão aqui para ver se realmente funciona o negócio, se a gente percorrer o cada elemento da ordem, de cima, da esquerda, de cima para baixo, esquerda direita, né? Vamos lá, terminal, limpar, go run, matriz, reboteir, escrevi matriz em inglês, matrix, ah, certo, vamos ver, então um elemento por linha, começando aqui da primeira linha, primeira coluna, x, certo, segundo elemento da primeira linha, trás, terceiro, traz, legal, segunda linha, primeiro elemento bola, x, bola, legal, terceiro, linha, primeiro coluna, trás, segunda coluna, bola, terceira, coluna, x, bom, legal, então deu tudo certo, a gente aprendeu como percorrer, estabeleir, de cima para baixo, esquerda para direita, legal, mas agora te pergunto, será que dá para fazer isso e percorrer as, por exemplo, eu quero percorrer as colunas primeiro, por exemplo, e ver de ser assim, assim e assim, eu queria fazer percorrer assim, assim, assim, depois eu vou seguir no coluna, assim, assim, assim, depois do terceiro, como é que faz isso? É um desafio para você, tá? Eu deixo o meu exercício, depois você vai fazer isso, você poderia inverter as variáveis, porque se você pensar no i como a linha e o j como coluna, você tem que começar a dar onde? Você tem que começar a dar coluna para a primeira coluna, onde o j é zero, você tem que percorrer para todo i, i zero, i um e dois, depois disso incrementa o j, o j vai ser um, fixa o j do um e percorre i zero, i um e dois e finalmente fixa o j para dois e percorre o zero, i um e dois, tá? Então por essa aula é só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: