Professional Documents
Culture Documents
aparelhos.
Sobre Programao
Eu no esclareo aqueles que no tm vontade de aprender, nem
desperto aqueles que no esto ansiosos para dar uma explicao a
si mesmos. Se eu mostrei um lado de um quadrado e eles no
conseguem chegar nos outros trs, eu no deveria passar pelos
mesmos pontos novamente.
Ns encontramos duas maneiras efetivas para aproximar o espao
vazio que existe na comunicao entre ns, organismos biolgicos
com um talento para o raciocnio espacial e social, e os
computadores, que no possuem sentimentos e so apenas
manipuladores de dados. A primeira delas, baseada em usar nosso
senso do mundo fsico e construir interfaces que simulam esse
mundo, permitindo manipular estruturas na tela com os nossos
dedos. Isso funciona muito bem para interaes casuais com a
mquina.
Confcio
Antes de explicar o JavaScript, irei introduzir tambm os princpios
bsicos de programao. Programao de fato difcil. As regras
fundamentais
so
geralmente simples
e claras.
Entretanto,
00000000
00000001
00000001
00001011
00000010
00000001
00000001
00000010
00000000
00000000
00000001
00000010
00000010
00001000
00000000
00000001
00000000
00000000
+ 2 + + 10 = 55.
prpria complexidade.
claro que inserir esses padres "arcanos" de bits (zeros e uns) dava
ao programador a profunda sensao de ser um poderoso mago, e
Cada linha do programa contm uma simples instruo. Isto pode ser
No
escrito assim:
operao console.log
1.
2.
3.
4.
5.
9.
6.
7.
8.
9.
final
do
programa,
depois
aplicada
ao
de while ser
resultado
ordem
a
que
na
definido,
range
(alcance) e sum(soma)
Embora isto seja mais legvel que a sopa de bits, ainda continua
compare
so
fornece
construes
convenientes
de
blocos
(como
O que JavaScript?
count
interatividade e inteligncia.
que
significa "count menor que ou igual a 10". No temos mais que criar
navegador.
Quando ler este livro no seu navegador, voc pode editar (e rodar) os
programas exemplo clicando neles.
explicado.
Entretanto,
voc
pode
verificar
Convenes Tipogrficas
Neste livro, texto escrito em fonte monoespaada deve ser entendido por
representaes de elementos dos programas - algumas vezes so
function fac(n) {
if (n == 0)
return 1;
else
return fac(n - 1) * n;
}
0
128
Valores
0
64
0
32
0
16
1
8
1
4
0
2
1
1
mesma ser escrita abaixo dele, com duas barras e uma seta na
frente:
console.log(fac(8));
// 40320
Boa Sorte!
Valores,
Tipos
Operadores
dado coerente.
Todos
os
nmeros
JavaScript number.
abaixo
Estes
bits
de
18
tambm
quintilhes
cabem
armazenam
no
nmeros
9.81
2.998e8
em cada valor.
Nmeros
13
Aritmtica
parnteses:
(100 + 4) * 11
aspas:
operador /.
vo ser
aplicados
determinada
pela precednciados
Quase tudo pode ser colocado entre aspas, e o JavaScript vai fazer
pode imaginar como colocar aspas entre aspas deve ser difcil. Novas
- 2 + 1),
eles so aplicados da
enter,
tambm
por Y.
% 100
% Y
e diviso. Voc tambm pode ver este operador sendo referido como
"mdulo" (porm tecnicamente "restante" mais preciso).
dentro do texto entre aspas, isto indica que o caracter depois desta
tem um significado especial. Uma aspa precedida de uma barra
invertida no vai findar a string, mas ser parte dela. Quando um
caracter 'n' correr depois de uma barra invertida, ser interpretado
como uma nova linha. Similarmente, um 't' depois da barra invertida
significa o caracter tab. Veja a string seguinte:
"This is the first line\nAnd this is the second"
Nmeros Especiais
O verdadeiro texto contido :
Existem 3 valores especiais no JavaScript que so considerados
continua
written:
"A newline character is written like \"\\n\"."
Infinity
quando declara 0
/ 0
Infinity - Infinity,
ou
ele cola duas strings unindo-as. A linha seguinte vai produzir a
Strings
Operadores Unrios
console.log(typeof 4.5)
// number
console.log(typeof "x")
// string
console.log("Itchy" != "Scratchy")
// true
para rod-lo.
Os outros operadores que vimos sempre operam
com 2
NaN
Operadores Lgicos
Valores Booleanos
valores
booleanos.
JavaScript
suporta
operadores
lgicos: e, ou ou no.
As vezes, voc vai precisar de um valor que simplesmente distingue
entre 2 possibilidades, "sim" ou "no", ou "ligado" e "desligado". Para
Comparaes
Aqui temos uma maneira de produzir valores booleanos:
console.log(3 > 2)
// true
console.log(3 < 2)
// false
Os sinais > e < so tradicionalmente smbolos para " maior que" e "
No escrito com uma exclamao !. um operador unrio que
menor que". Eles so operadores binrios, e o resultado da aplicao
inverte o valor dado a ele - !true produz false e!false produz true.
deles um valor booleano que indica se eles so verdadeiros neste
Quando misturamos estes operadores booleanos com operadores
caso.
aritmticos e outros operadores, no sempre bvio quando o
Strings podem ser comparadas da mesma forma:
parnteses necessrio. Na prtica, voc precisa conhecer sobre os
console.log("Aardvark" < "Zoroaster")
// true
ento "Z"
< "a"
1 + 1 == 2 || 10 * 10 <= 100
Valores Indefinidos
os lados forem
produzir undefined,
null
simplesmente
porque
elas
tem
que
null
ou undefined.
momento).
expresses como 0
== false
e ""
== false
true.
false?
retornam
true.
Para casos
===
e !==. O
=== false
falso como
esperado.
esta expresso:
Usar
console.log(8 * null)
// 0
console.log("5" - 1)
// 4
console.log("5" + 1)
// 51
console.log("five" * 2)
// NaN
console.log(false == 0)
// true
os
operadores
de
comparao
de
trs
caracteres
operadores curtos.
O Curto-Circuito de && e ||
NaN
continuam
valor sua esquerda algo que se torne false, ele retorna o valor, e
operadores para obter novos valores. Criar valores desta forma uma
de expresso.
|| X,
&& X,
Todo
valor
que
escrito
literalmente
Resumo
Expresses podem ser encadeadas de forma semelhante s subNs vimos 4 tipos de valores do JavaScript neste captulo. Nmeros,
um
para
concatenao
de
string
(+),
comparao
(==, !=, ===, !==, <, >, <=, >=) e lgica (&&, ||), como tambm vrios
operadores unrios (- para negativar um nmero, ! para negar uma
lgica, e typeof para encontrar o tipo do valor).
Isto lhe d informao suficiente para usar o JavaScript como uma
calculadora de bolso, mas no muito mais. O prximo captulo vai
de programas bsicos.
para produzir um valor, que pode ento ser usado para fechar a
Estrutura do Programa
de uma forma que vai afetar outras declaraes que iro vir. Estas
mudanas so chamadas efeitos colaterais. As afirmaes nos
exemplos anteriores somente produzem o valor 1 e true e ento
imediatamente os jogam fora novamente. No deixam nenhuma
impresso no mundo. Quando executamos o programa, nada
Ponto e vrgula
Expresses e Afirmaes
mantm tem o poder de ser acessado por ele. Quando voc precisa
Variveis
o valor undefined.
caught
e a usou
lhe deve, voc cria uma varivel. E ento quando ele lhe paga 35
Palavras-chave
Reservadas
Palavras
como
nomes
de
var,
variveis.
Existe
no podem ser
Estas
tambm
so
algumas
break case catch continue debugger default delete do else false finally for f
unction if implements ininstanceof interface let new null package private pro
tected public return static switch throw true trytypeof var void while with y
ou tipos de argumentos.
ield this
A Funo console.log
O Ambiente
os
navegadores
modernos
Node.js),
fornecem
uma
+ option + I.
var x = 30;
console.log("o valor de x ", x);
// o valor de x 30
Funes
envolvido por um valor. Este valor pode ser aplicado a fim de executar
varivel alert detm uma funo que mostra uma pequena caixa de
4.
Retornando Valores
alert("Good morning!");
alert
usou
que significa que chamadas de funo podem ser usadas dentro de
ns
queremos
um
nmero.
Existem
funes
similares
console.log(Math.min(2, 4) + 100);
prompt
e confirm
Ok/Cancel
usando confirm.
Isto
retorna
um
valor
Execuo Condicional
prompt
Fluxo de Controle
funo isNaN
uma
se
funo
o
padro
argumento
do
JavaScript
fornecido
que
for NaN.
funoNumber retorna NaN quando voc fornece a ela uma string que
no representa um nmero vlido. Por isso, a condio se traduz a
"a no ser que theNumber no seja um nmero, faa isso".
Voc frequentemente no ter cdigo que executa apenas quando
uma condio for verdadeira, mas tambm cdigo que lida com o
outro caso. Esse caminho alternativo representado pela segunda
seta no diagrama. A palavra-chave elsepode ser usada, juntamente
com if, para criar dois caminhos distintos de execuo.
var theNumber = Number(prompt("Pick a number", ""));
if (!isNaN(theNumber))
alert("Your number is the square root of " +
theNumber * theNumber);
else
alert("Hey. Why didn't you give me a number?");
Loops While e Do
Considere um programa que imprime todos os nmeros pares de 0 a
console.log(0);
console.log(2);
console.log(4);
console.log(6);
console.log(8);
console.log(10);
console.log(12);
counter = counter + 1;
}
console.log(result);
// 1024
mas por razes que iremos ver no Captulo 4 [TODO:] Adicionar link
correto com
var number = 0;
while (number <= 12) {
console.log(number);
number = number + 2;
}
// 0
// 2
//
etcetera
10,
original:http://eloquentjavascript.net/04_data.html#array_indexing [/T
ODO], uma boa ideia se acostumar a usar a contagem iniciando
com zero.
O loop continua
if.
do {
var name = prompt("Who are you?");
} while (!name);
console.log(name);
vazia. Aplicar o operador ! faz com que o valor seja convertido para
Indentando Cdigo
tipo
Booleano
antes
de
neg-lo,
todas
as
strings
chaves. Eles fazem isso tanto para manter a consistncia quanto para
evitar que seja necessrio adicionar ou remover chaves quando
"tab".
Loops For
pelo fim do loop. Isso significa que o loop no vai parar de executar
coisa ruim.
Se voc criar um loop infinito em algum dos exemplos destas pginas,
for ao invs
var result = 1;
for (var counter = 0; counter < 10; counter = counter + 1)
result = result * 2;
console.log(result);
// 1024
de while:
Um programa, especialmente quando em loop, muita vezes precisa
de atualizar uma varivel para armazenar um valor baseado no valor
continua indentada com dois espaos para deixar claro que ela
counter = counter + 1;
counter += 1;
false
no a nica
-= 1
result *=
em questo.
Esse programa ilustra o uso da declarao
break.
Ele encontra o
Para counter
divisvel por 7.
+=
e counter
-=
1,
de consistncia.
if
continua parecendo
Comentrios
"sunny",
pode ser usado para compartilhar algum cdigo entre os cases (ele
recomenda "ir l fora" para ambos os tempos
tenha cuidado: fcil esquecer de um
break,
sunny
e cloudy). Mas
//
Capitalizao
Um //
comentrio
/*
I first found this number scrawled on the back of one of
my notebooks a few years ago. Since then, it has
occasionally dropped by, showing up in phone numbers and
the serial numbers of products that I bought. It
obviously likes me, so I've decided to keep it.
*/
var theNumber = 11213;
Resumo
conveno.
argument2) {}.
Name (argument1,
= 1).
= "#").
produzir um valor.
do programa.
Exerccios
FizzBuzz
Escreva um programa que imprima usando console.log() todos os
Quando
no esto inclusas neste livro, mas voc pode procurar elas onlines
um deles).
mesmo).
console.log()
para
programa
estiver
funcionando,
modifique-o
para
Dica:
if/else.
Dicas:
Tabuleiro de Xadrez
Escreva um programa que cria uma string que representa uma grade
8x8, usando novas linhas para separar os caracteres. A cada posio
da grade existe um espao ou um caracter "#". Esses caracteres
formam um tabuleiro de xadrez.
Passando esta string para o console.log deve mostrar algo como isto:
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
Dica: