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”.
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”.