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ãoO 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+1Podemos 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