JAVASCRIPT: FUNDAMENTOS DA LINGUAGEM

Vimos que no Samalltalk "tudo é objeto". No JavaScript podemos ter dados que são objetos ou não. Por exemplo, se você declara:

x = "Peter";
você não tem um objeto. Mas se for:
x = new String("Peter");
teremos "x" como um objeto da Classe String que tem seus métodos etc. O mesmo ocorre para números e booleanos (true, false).

Na maioria das vezes, conversões são feitas automaticamente. Por exemplo, para:

x = "12";
y = 10;
z = '7';
 

total = 8 + x;
teremos em "total" : 20.

Um nada é assinalado com a palavra: null.

Os operadores matemáticos são:

 
+    Adição
-    Subtração
*    Multiplicação
/    Divisão
O operador Modulus : % é o de resto. Se temos:
x = 10 % 3; 
o valor de "x" é: 1 porque o que temos é o resto da divisão.

Os operadores booleanos são:

==    is equal to
!=    is not equal to
>     is greater than
>=    is greater than or equal
<     is less than
<=    is less than or equal

Os parêntesis definem precedência. Por exemplo:

 
x = (4 >= 5);
O valor de "x" é: false.

Um erro usual é usar o operador de assinalamento:"=" no lugar do operador booleano:"==".

É comum usar operadores lógicos em operações booleanas:

&&    é o AND
||    é o OR

Vamos a um teste. Qual o valor de "x" em:

  x = (4>=5) && (2==2);

A resposta é: false. AMBOS precisam ser verdade para termos true.

E qual o valor de "y" em:

y = (4>=5) || (2==2);

A resposta é: true. Apenas UM precisa ser verdade para termos true

Você já deve ter percebido que uma linha de código termina com "ponto-e-vírgula".

Para comentários temos o operador: "//" numa linha de código. Exemplo:

 

x = 10 % 3; //Teremos x=1 porque 10=3+3+3+1
Podemos usar: /* ... */ para um comentário em várias linhas. Exemplo:
/* This program was created by XYZ Company
   Version : 1.43
   Contact for help: John Doe - ramal 678
*/

Para concatenação de strings, veja o exemplo:

x = 'ABC' + 'DEF';
Teremos "x" com: ABCDEF.

É usual, se temos um contador, usar a expressão:

i = i + 1;
mas é mais simples usar:
i++;

Há um operador para decrementos:

 
i--;

Uma coleção de elementos é um array. Podemos criar um e enchê-lo de elementos assim:

weapons = new Array('Pistol','Rifle','Lance');
Podemos ler um elemento do array usando seu índice (o primeiro é ZERO!). Então, complementando o exemplo acima, se tivermos::
myWeaponNow =  weapons[1];
em myWeaponNow teremos um: Rifle.

Podemos criar um array vazio e enchê-lo depois. Exemplo de um array de 100 elementos:

myClients = new Array(100);
myClients[0] = 'ADOBE';
myClients[7] = 'Microsoft';

Falando de funções. Uma função é um grupo de statements (linhas de código) criado para definir uma ação. Ela é criada para facilitar a lógica do programa ou se um mesmo grupo de statements é usado muitas vezes.

Uma função pode ou não ter parâmetros e pode ou não retornar um valor. Vejamos um exemplo de uma função que tem como parâmetro a temperatura em Fahrenheit e retorna um valor: a temperatura em Celsius .

 
 convertFC=function (fdegrees){ 
  cdegrees = (fdegrees - 32) * 5 / 9; 
 return  cdegrees; 
}

Usaremos essa função com, por exemplo: ConvertFC(76).

O clássico IF THEN ELSE é usado assim:

if(1st condition){
 //faz alguma coisa 
}
else if(2nd condition){
 //faz alguma coisa 
}
else{
 // se todas as condições são falsas
}

Para um LOOP FOR temos

for(initializer; test; update){
 //código 
 //código
}

Exemplo:

for(i = 0; i< 10; i++){

//fazer alguma coisa

}

Temos também o LOOP WHILE:

while(condition){
 //fazer alguma coisa
}

E o LOOP DO WHILE:

do{
 //alguma coisa
} while (condition);

Na arquitetura de ALPHACity temos um outro loop que chamamos de TIME STEP LOOP. Ele varia com a framerate

O que é framerate?

Um lote de ALPHACity tem figuras (o avatar, por exemplo) que precisam ser redesenhadas muitas vezes (para simular o avatar andando). O intervalo desses redesenhamentos (re-renderings) depende da velocidade da CPU do usuário. Será maior em computadores mais rápidos. O mesmo para esses loops.

Vamos ver várias vezes, nos exercícios das lições, as linhas básicas de código:

...
function init(){
  ...
  Gl_hook("timestep()");	 
  Gl_start();	 
}
function timestep(){
  //to do something at each timestep
}
...

Você vai entender isso melhor proximamente.


              LIÇÃO ANTERIOR       PRÓXIMA LIÇÃO             
ÍNDICE HOMEPAGE