Aula 31 - Variáveis locais e globais
Essa também é uma das aulas mais importantes do curso. Pois dependendo de como você utilizou as funções e procedimentos aprendidos na aula anterior você pode ter se deparado com um “problema”.
Para entender o que são variáveis locais e globais acho mais fácil trabalharmos com um exemplo.
Exemplo#
Primeiro vamos criar um algoritmo com uma variável chamada minha_variavel
, atribuir um valor a ela e depois imprimir o valor dela na tela.
algoritmo "passo1"
var
minha_variavel: inteiro
inicio
minha_variavel <- 1
escreval(minha_variavel)
fimalgoritmo
Agora vamos criar um procedimento chamado exibir
e internamente vamos criar uma variável variavel_teste
, atribuir um valor a ela e depois imprimir o valor dela na tela.
algoritmo "passo2"
var
minha_variavel: inteiro
inicio
minha_variavel <- 1
escreval(minha_variavel)
procedimento exibir()
var variavel_teste: inteiro
inicio
variavel_teste <- 10
escreval(variavel_teste)
fimprocedimento
fimalgoritmo
Observação
Note que ao executar apenas o valor 1
foi exibido na tela. Isso aconteceu porque nós não chamamos o procedimento exibir
dentro do nosso algoritmo.
Agora vamos chamar o procedimento exibir
dentro do nosso algoritmo.
algoritmo "passo3"
var
minha_variavel: inteiro
inicio
minha_variavel <- 1
escreval(minha_variavel)
procedimento exibir()
var variavel_teste: inteiro
inicio
variavel_teste <- 10
escreval(variavel_teste)
fimprocedimento
exibir()
fimalgoritmo
Vejamos o que acontece se dentro do procedimento exibir
nós tentarmos acessar a variável minha_variavel
.
algoritmo "passo4"
var
minha_variavel: inteiro
inicio
minha_variavel <- 1
escreval(minha_variavel)
procedimento exibir()
var variavel_teste: inteiro
inicio
variavel_teste <- 10
escreval(variavel_teste)
escreval(minha_variavel)
fimprocedimento
exibir()
fimalgoritmo
Nota
Observe que o valor 1
foi exibido duas vezes na tela. Isso aconteceu porque o procedimento exibir
exibiu o valor da variável minha_variavel
que foi declarada no algoritmo.
Mas e se agora a gente tentar acessar a variável variavel_teste
dentro do algoritmo, mas fora do procedimento exibir
?
algoritmo "passo5"
var
minha_variavel: inteiro
inicio
minha_variavel <- 1
escreval(minha_variavel)
procedimento exibir()
var variavel_teste: inteiro
inicio
variavel_teste <- 10
escreval(variavel_teste)
escreval(minha_variavel)
fimprocedimento
exibir()
escreval(variavel_teste)
fimalgoritmo
Aviso
Observe que nesta etapa o programa falhou. Isso aconteceu porque a variável variavel_teste
foi declarada dentro do procedimento exibir
e não pode ser acessada fora dele.
Isso quer dizer que a variável variavel_teste
é uma variável que só pode ser acessada de dentro do local de onde ela foi declarada. E a variável minha_variavel
é uma variável global, pois ela pode ser acessada de qualquer lugar do algoritmo.
Então vamos renomear as variáveis para ficar mais fácil de entender.
algoritmo "passo6"
var
minha_global: inteiro
inicio
minha_global <- 1
escreval(minha_global)
procedimento exibir()
var variavel_local: inteiro
inicio
variavel_local <- 10
escreval(variavel_local)
escreval(minha_global)
fimprocedimento
exibir()
fimalgoritmo
Agora que já passamos pelo exemplo vamos as devidas definições.
Variáveis globais#
Variáveis globais são variáveis que podem ser acessadas de qualquer lugar do algoritmo. Ou seja, elas podem ser acessadas e alteradas tanto dentro de procedimentos quanto dentro do algoritmo.
Aviso
Você precisa tomar muito cuidado ao usar as variáveis globais ou elas podem te tirar noites de sono!
Variáveis locais#
Variáveis locais são variáveis que só podem ser acessadas de dentro do local de onde elas foram declaradas. Ou seja, elas só podem ser acessadas e alteradas dentro do procedimento ou função onde elas foram declaradas.
Analogia com a vida real#
Vamos fazer uma analogia com a vida real para ficar mais fácil de entender. Imagine que existem coisas que estão na rua e outras que estão dentro da sua casa. As coisas que estão na rua qualquer pessoa pode acessar e mexer, por exemplo, se tiver uma sacola na rua qualquer pessoa pode pegar e mexer; o mesmo que ocorre em variáveis globais.
Já as coisas que estão dentro da sua casa somente as pessoas que estiverem dentro da sua casa é que poderão acessar e mexer, por exemplo, se tiver uma sacola dentro da sua casa somente as pessoas que estiverem dentro da sua casa é que poderão pegar e mexer; o mesmo que ocorre em variáveis locais.
Quando usar variáveis globais e quando usar variáveis locais?#
Agora que você já sabe o que são variáveis globais e variáveis locais, vamos ver quando usar cada uma delas. A resposta é simples, use variáveis globais quando você precisar acessar a mesma variável de dentro de vários procedimentos e use variáveis locais quando você precisar acessar a mesma variável de dentro de apenas um procedimento.
Momento reflexão
Já pensou se você estivesse desenvolvendo uma calculadora em grupo e um colega criasse um procedimento para exibir o resultado na tela, mas por um descuido ele alterou o valor da variável que armazena o resultado? Isso poderia gerar um grande problema.
Sugestão do autor
De modo geral é recomendado que você use variáveis locais, pois evita com que outros trechos do seu código alterem o valor da variável sem que você saiba.
Mas em alguns casos elas podem ser úteis. Por exemplo, declarar uma variável global que só será usada para leitura, como por exemplo, o número máximo de tentativas de um jogo.
Por que usar variáveis locais são tão interessantes?#
Com as variáveis locais podemos criar diferentes funções que usam variáveis com o mesmo nome, mas por estarem em diferentes procedimentos não há conflito entre elas.
Vejamos um exemplo. Vamos criar uma função chamada soma
que recebe dois números e retorna a soma deles.
algoritmo "variavel_local"
var
minha_global: inteiro
inicio
minha_global <- 1
escreval(minha_global)
funcao soma(v1, v2: inteiro): inteiro
var resultado: inteiro
inicio
resultado <- v1 + v2
retorne resultado
fimfuncao
escreval(soma(1, 2))
fimalgoritmo
Agora vamos criar uma função chamada subtracao
que recebe dois números e retorna a subtração deles.
algoritmo "variavel_local"
var
minha_global: inteiro
inicio
minha_global <- 1
escreval(minha_global)
funcao soma(v1, v2: inteiro): inteiro
var resultado: inteiro
inicio
resultado <- v1 + v2
retorne resultado
fimfuncao
funcao subtracao(v1, v2: inteiro): inteiro
var resultado: inteiro
inicio
resultado <- v1 - v2
retorne resultado
fimfuncao
escreval(soma(1, 2))
escreval(subtracao(1, 2))
fimalgoritmo
Veja que tudo ocorreu bem, pois as variáveis resultado
da função soma
e resultado
da função subtração
são independentes uma da outra, pois elas estão em diferentes procedimentos.
algoritmo "variavel_local"
var
minha_global: inteiro
inicio
minha_global <- 1
escreval(minha_global)
funcao soma(v1, v2: inteiro): inteiro
var resultado: inteiro
inicio
resultado <- v1 + v2
retorne resultado
fimfuncao
funcao subtracao(v1, v2: inteiro): inteiro
var resultado: inteiro
inicio
resultado <- v1 - v2
retorne resultado
fimfuncao
escreval(soma(1, 2))
escreval(subtracao(1, 2))
fimalgoritmo
Conclusão#
Nesta aula você aprendeu o que são variáveis globais e variáveis locais e como usá-las. Você também viu que podemos criar variáveis locais com o mesmo nome em diferentes procedimentos, mas que elas são independentes uma da outra. Por fim, você viu que é recomendado que utilize variáveis locais, pois evita com que outros trechos do seu código alterem o valor da variável acidentalmente.
Aula em vídeo#
Caso prefira também existe o conteúdo em forma de vídeo