VisuAlg Web

Parâmetros no Visual Cobra: listas mutáveis e reatribuição

Distinguir reatribuição de mutação de uma lista em Visual Cobra. Execute o exemplo, confira o resultado e pratique os casos de limite no VisuAlg Web.

O Visual Cobra não tem passagem por referência com var como no VisuAlg. Para efeito parecido, usamos objetos mutáveis (como lista) e alteramos seu conteúdo.

Exemplo de códigoVisual Cobra
def tenta_aumentar(s):
    s = s + 500  # Reatribui o nome local s; o nome externo continua com o objeto original
    escreva("Salário dentro do procedimento:", s)

salario = 1000.0

tenta_aumentar(salario)
escreva("Salário original fora do procedimento:", salario)  # Continua 1000
Exemplo de códigoVisual Cobra
# Em Python, para mudar “por referência”, usamos um objeto mutável como lista

def realmente_aumentar(s):
    s[0] = s[0] + 500

salario = [1000.0]
realmente_aumentar(salario)
escreva("Salário original agora é:", salario[0])  # Mudou para 1500!

Distinguir reatribuição de mutação de uma lista

A função recebe referências aos objetos usados na chamada. Atribuir outro valor ao nome local não muda o nome da variável de quem chamou. Já alterar um elemento de uma lista modifica o objeto compartilhado. Essa diferença não exige um parâmetro var e não corresponde a copiar automaticamente todo o objeto. Compare as duas operações do exemplo: numero recebe uma nova associação local; valores mantém a lista recebida e modifica sua posição zero.

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

Exemplo de códigoVisual Cobra
def alterar(numero, valores):
    numero = numero + 5
    valores[0] = valores[0] + 5

inicial = 10
lista = [10]
alterar(inicial, lista)
escreva("Inteiro:", inicial)
escreva("Lista:", lista[0])

Resultado esperado e testes

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

Inteiro: 10
Lista: 15

Fora da função, inicial continua dez e o conteúdo da lista passa a quinze. Como exercício, substitua a mudança do elemento por uma reatribuição de valores para uma nova lista. Preveja por que a lista externa deixa de mudar. Quando quiser evitar a alteração de uma lista recebida, construa uma cópia adequada ao tipo de dado antes de modificar seus elementos.

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