VisuAlg Web

Matrizes no Visual Cobra: listas de listas e linhas independentes

Alterar uma célula sem modificar outra linha em Visual Cobra. Execute o exemplo, confira o resultado e pratique os casos de limite no VisuAlg Web.

Matrizes no Visual Cobra são listas de listas. O acesso é feito com dois índices, como m[l][c].

Exemplo de códigoVisual Cobra
# Matriz 2x2 em Python (lista de listas)
mat = [
    [10, 20],
    [30, 40]
]

# Em Python, índices começam em 0
escreva("O valor na linha 2, coluna 1 é:", mat[1][0])
Exemplo de códigoVisual Cobra


# Cria uma matriz 3x3 inicializada com zeros
m = [[0] * 3 para _ em intervalo(3)]

# Preenchendo a matriz com números baseados nas posições
def exibir_matriz():
    para l em intervalo(3):
        para c em intervalo(3):
            m[l][c] = l + c
            escreva(f"[{m[l][c]:2}]", end=" ")
        escreva()

exibir_matriz()

Alterar uma célula sem modificar outra linha

Uma matriz pode ser representada por uma lista de linhas, cada uma sendo outra lista. Primeiro você escolhe a linha, depois a coluna; as duas contagens começam em zero. No exemplo, a posição de linha 1 e coluna 0 recebe nove. As linhas foram construídas como listas independentes. Repetir a mesma lista interna pode compartilhar uma única linha entre posições e produzir alterações inesperadas em várias linhas ao mesmo tempo.

Preserve a indentação dos blocos ao modificar este exemplo em Visual Cobra.

Exemplo de códigoVisual Cobra
matriz = [[1, 2], [3, 4]]
matriz[1][0] = 9
para linha em matriz:
    escreva(linha[0], linha[1])

Resultado esperado e testes

Execute o exemplo sem fornecer entradas. A saída deve ser:

1 2
9 4

A primeira linha deve continuar 1 2 depois da alteração. Em uma matriz de duas linhas e duas colunas, os índices válidos são 0 e 1. O índice 2 fica fora do limite. Como exercício, some apenas a diagonal principal e compare com a soma de todos os elementos. Explique qual par de índices pertence à diagonal.

Depois, compare o raciocínio com a versão do mesmo assunto nas outras linguagens do menu.