Compreendendo o escopo no VEXcode Pro V5

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

Bem, você precisa saber sobre a Regra do Escopo - Entendendo as ideias de “escopo” com {... }

Variáveis ​​locais

Observe a saída gerada a partir do código de exemplo. Deve ficar claro sobre a principal diferença. Estas são todas variáveis ​​“locais”, dentro do seu escopo {...}.

int principal() {
int X = 10, Y = 15;
{
  int X = 20;
   {
     int X = 30, Y = 35;
     brain.Screen.printAt(4,30, "3º: %d, %d ", X, Y); 
   }
  	 brain.Screen.printAt(4, 60, "2º: %d, %d", X, Y); 
	}
	brain.Screen.printAt(4, 90, "1º: %d, %d", X, Y);	
	retorna 0;
}

Saída:

3º: 30, 35 
2º: 20, 15 
1º: 10, 15

O exemplo acima é usado para esclarecimento rápido e fácil. Não use variáveis ​​verticais idênticas em escopos aninhados.

Que tal colocar as variáveis ​​fora do bloco “main()”?

Variáveis ​​globais

Colocar variáveis ​​fora do bloco main( ) , mas não dentro de qualquer outra função, tornará as variáveis ​​globalmente utilizáveis ​​por todas as funções do projeto. Elas são chamadas de variáveis ​​globais.

int gValor = 90000; // isso é global para todos os outros escopos
  
int main() {

  Brain.Screen.setFont(fontType::mono30);
  X = 10;
  {
      int X = 20, gValue = 8000;
      {
         int X = 30, gValue= 700;
         Brain.Screen.printAt(4, 30, "3º: %d ", gValue + X); 
      }
      Brain.Screen.printAt(4, 60, " 2º: %d ", gValue + X); 
   }
   Brain.Screen.printAt(4, 90, " 1º: %d ", gValue + X);
}

Saída:

3º: 730
2º: 8020 
1º: 90010

A melhor prática é não usar os mesmos nomes de identificadores para variáveis ​​globais e locais.

Atenção: Observe que mencionei: “projeto”, não “arquivo”. Um projeto pode consistir em mais de um arquivo. Entretanto, dentro de um único projeto, você não pode ter mais de uma função main( ). Isso está fora do escopo deste artigo. Existem algumas regras adicionais, como o uso de “externo” em relação a variáveis ​​globais. Isso será discutido em outra seção sobre vários arquivos em um único projeto na Biblioteca VEX.


O que é “vício de namespace”?

Namespace não necessariamente se enquadra na discussão de variáveis ​​“locais” versus variáveis ​​“globais” em si, uma vez que Namespace não é uma variável. No entanto, “namespace vex” contém seu próprio escopo. Como faz parte da base de código do modelo que você DEVE incluir em todo o seu programa V5, a regra de escopo para namespace deve ser abordada brevemente neste artigo.

Cada namespace é como um espaço onde você pode criar um conjunto de variáveis, funções pertencentes a esse “espaço” individual. Você ganha acesso a todas as variáveis, funções, classes, etc. disponíveis definidas dentro deste “espaço”.

Você pode procurar o namespace online em https://api.vexcode.cloud/v5/html/. Para uma pesquisa rápida, você também pode clicar com o botão direito do mouse em “vex” e clicar em “Ir para definição”. Você encontrará muitas informações sobre o que está disponível no namespace “vex”.

códigosnippet5.png

Você pode acessar qualquer um deles fazendo: vex::

por exemplo, consulte o código do modelo:

usando namespace vex;
vex::cérebro Cérebro;

Além disso, quaisquer nomes incluindo variáveis, funções, etc. declarados dentro deste espaço “vexo” não entrarão em conflito com outro “espaço” no programa.

Por exemplo, você pode decidir criar “myOwnNamespace” e intitular uma variável como “Brain”. Não é recomendado que você faça algo assim, mas o programa permitirá. Isso ocorre porque isso é definido em “myOwnNamespace”.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: