Webly: [Aula 12.1] Anexo - Webly

Ir para

Página 1 de 1

[Aula 12.1] Anexo Escopo de Variáveis

#1 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 12 fevereiro 2007 - 10:11

Escopo de variáveis

Se você reparar bem nos exemplos anteriores, existem variáveis declaradas no corpo principal do algoritmo e variáveis declaradas dentro dos procedimentos ou funções.

É muito importante que se tenha atenção a esse ponto, pois pode ser a origem de muitos problemas futuros.
INICIO
	a : inteiro;
	a := 10;
	ESCREVA(a);
	dobro();
	ESCREVA(a);
FIM
PROCEDIMENTO dobro()
	a : inteiro;
INICIO
	a := 50;
	ESCREVA(a * 2);
FIM

O algoritmo acima exibirá:
10
100
10

Você não esperava esse resultado? Se não estiver atento ao escopo de variáveis, o resultado esperado seria:
10
100
50

Isso não acontece porque a variável a usada dentro do procedimento dobro foi uma variável local (com escopo local) e não uma variável global (com visibilidade em todo o algoritmo).
Para ter o resultado “esperado”, precisaríamos fazer o nosso algoritmo de outra forma:
INICIO
	a : inteiro;
	a := 10;
	ESCREVA(a);
	dobro();
	ESCREVA(a);
FIM
PROCEDIMENTO dobro()
INICIO
	a := 50;
	ESCREVA(a * 2);
FIM

Perceba que dessa vez não declaramos a variável a dentro do procedimento, fazendo com que a variável usada fosse a global.
.:. Thiago Ferreira .:.
0

#2 Membro offline   jaderubini Ícone

  • Agência Interag
  • Ícone
  • Grupo: Membro Amigo
  • Posts: 169
  • Cadastrado: 10-agosto 06
  • Localização:Ipatinga / MG
  • Interesses:CSS, XHTML, semântica, semântica, semântica, Web Standards, Web Standards, Web Standards, PHP, Javascript, AJAX, AJAX e AJAX.

Postou 20 fevereiro 2007 - 08:54

Me corrija se eu estiver errado...
Em algumas linguagens, o processo para usarmos as variáveis globais seria o inverso, não?
Por exemplo, se eu estivesse escrevendo o programa acima em PHP e quisesse usar a variável global dentro do procedimento (pra gerar os resultados 10, 100, 50), eu teria que declará-la dentro do procedimento, porém como global. Por exemplo:
$a = 10;
echo $a;
dobro();
echo $a;

function dobro() {
	global $a;
	$a = 50;
	echo $a * 2;	
}

Isso me retornaria "10, 100 e 50", ao passo que, se eu não declarasse a variável $a dentro da função como global, eu receberia "10, 100 e 10".
www.jaderubini.wordpress.com - Visitem meu blog sobre webstandards

Doido pra aprender Javascript, PHP e AJAX. Será que eu dou conta?!
0

#3 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 21 fevereiro 2007 - 04:13

Exatamente isso, Jader!

Você falou certo: "Em algumas linguagens...".

Em outras, como Javascript, funciona como eu mostrei no exemplo.

O importante é que se atente ao Escopo das Variáveis!!
.:. Thiago Ferreira .:.
0

#4 Membro offline   jaderubini Ícone

  • Agência Interag
  • Ícone
  • Grupo: Membro Amigo
  • Posts: 169
  • Cadastrado: 10-agosto 06
  • Localização:Ipatinga / MG
  • Interesses:CSS, XHTML, semântica, semântica, semântica, Web Standards, Web Standards, Web Standards, PHP, Javascript, AJAX, AJAX e AJAX.

Postou 22 fevereiro 2007 - 07:21

Ok.
Eu apenas chamei atenção pra esse detalhe pq eu acho bom daqui em diante a gente já ficar ligado nas particularidades de cada linguagem.

Sugiro que você indique caso algo que seja passado aqui (por se tratar do aspecto geral da programação) não seja aplicável em todas as linguagens, da mesma forma. ;)
www.jaderubini.wordpress.com - Visitem meu blog sobre webstandards

Doido pra aprender Javascript, PHP e AJAX. Será que eu dou conta?!
0

#5 Membro offline   tmferreira Ícone

  • Ícone
  • Grupo: Membro Amigo
  • Posts: 174
  • Cadastrado: 23-agosto 06
  • Localização:Campos dos Goytacazes - RJ
  • Interesses:Tudo relacionado à tecnologia. Adoro aprender!!!!

Postou 22 fevereiro 2007 - 08:45

Ver postjaderubini, em 22/02/2007 - 20:21, disse:

Ok.
Eu apenas chamei atenção pra esse detalhe pq eu acho bom daqui em diante a gente já ficar ligado nas particularidades de cada linguagem.

Sugiro que você indique caso algo que seja passado aqui (por se tratar do aspecto geral da programação) não seja aplicável em todas as linguagens, da mesma forma. ;)

Obrigado pela sugestão!

Na medida do possível vou fazer, mas não conheço quase nada das linguagens sem ser o PHP e Javascript.
.:. Thiago Ferreira .:.
0

Página 1 de 1


Resposta rápida

  

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)