Guia
JavaScript do Zero
Índice
Introdução ao JavaScript .................................................3
Meu 1º JavaScript........................................................... 8
Calculando com JavaScript............................................. 13
Manipulando texto.........................................................18
Condicionais.................................................................22
Operadores Lógicos........................................................ 31
Loops............................................................................38
Arrays...........................................................................45
Capítulo 1
Introdução ao JavaScript
Quando construímos um site ou software,
geralmente temos dois tipos de trabalho:
construir a interface* da aplicação (o visual) e
o seu comportamento.
Para fazer nossa aplicação se comportar
como queremos, precisamos aprender a
dar instruções para o computador criar
sequências de passos informando
exatamente o que queremos que aconteça em
cada funcionalidade do nosso programa. O
nome que damos a essa sequência de passos
é algoritmo.
Exemplo: Algoritmo CalculadoraDeMedia (recebe nota1,
nota2 e nota3)
Imagina que você queira fazer um programa
- multiplica nota1 por peso 3
que ajuda seu professor a calcular a média de - multiplica nota2 por peso 3
um aluno. Supondo que a média é dada por - multiplica nota3 por peso 4
- a média é a soma de todas as notas em
3 notas com os pesos 3, 3 e 4, você terá uma seguida dividida por 10
sequência de passos mais ou menos assim: - responde essa média
Executar Algoritmo CalculadoraDeMedia (recebe
Depois de criar essa lógica, bastaria agora notas 5, 5 e 10) => responderá 7
executar esse algoritmo enviando para ele as
notas do aluno:
Para criar esses algoritmos, usaremos uma das linguagens mais utilizadas atualmente no mundo, o
JavaScript.
Capítulo 2
Meu 1º JavaScript
Algoritmo Somar (recebe num1 e num2)
Nosso próximo passo é aprender a criar - soma num1 com num2
algoritmos utilizando JavaScript. Para isso, - retorna essa soma
primeiro precisamos saber onde o escrevemos
e executamos. Existem várias ferramentas que
nos permitem escrever JavaScript, uma delas
é o REPL, um editor online muito prático. Para representar o algoritmo acima em
JavaScript, podemos escrever:
Para simplificar, antes de fazer nossa
calculadora de médias, vamos implementar function somar(num1, num2) {
um algoritmo simples que soma apenas dois let soma = num1 + num2;
números: return soma;
}
Observe alguns conceitos no algoritmo
anterior:
• function somar(...) { ... } é a estrutura • Em seguida, em let soma = ...; estamos
básica de criação de funções em JavaScript. colocando o resultado dessa soma em
Uma função é a forma mais simples de uma variável chamada soma. Variáveis são
representarmos um algoritmo. Dentro dela caixinhas em que podemos colocar valores
é que vamos colocar nossa sequência de dentro, nesse caso estamos guardando na
passos; caixinha soma o resultado da operação num1 +
num2;
• Dentro dos parênteses (num1, num2)
especificamos os parâmetros do nosso • Por fim, em return soma; estamos retornando
algoritmo, que são as entradas, os dados que pra quem tiver chamado essa nossa função
ele precisa pra funcionar; o resultado final da operação, que estava
guardado na variável soma;
• A operação num1 + num2 é o que está de fato
fazendo a soma. Repare que somar em JS é • Repare também que ao final de cada passo
bem simples, é só usar o sinal de + mesmo; do meu algoritmo, tem um ponto-e-vírgula.
Ele diz pro JS que terminamos aquele passo.
Execute o algoritmo somar com os valores 2 e 3
Agora que criamos o algoritmo, o próximo passo
é executá-lo. Queremos portanto fazer em Pra fazer isso em JavaScript, basta:
JavaScript algo como:
somar(2, 3);
Exercício:
Abaixo estão alguns exercícios para você
praticar o que aprendemos até aqui.
1) Crie uma função com nome. A função deve
estar vazia, sem nenhum parâmetro nem
código dentro.
Capítulo 3
Calculando com JavaScript
Agora que já sabemos criar nossas funções
em JavaScript, vamos explorar algumas outras
operações matemáticas além da soma. let soma = 10 + 2; // Resultado: 12
let subtracao = 10 - 2; // Resultado: 8
let multiplicacao = 10 * 2; // Resultado: 20
let divisao = 10 / 2; // Resultado: 5
Primeiramente, realizamos as 4 operações
básicas da matemática dessa forma:
Repare que utilizamos o // ... para inserir comentários em JavaScript. Comentários são trechos de código
que não serão executados e servem só para adicionar alguma anotação útil ao código
Você pode fazer várias operações de uma vez, let media = (10 + 2) / 2; // Resultado: 6
por exemplo:
Observe que utilizamos parênteses para mudar
a precedência de operações (a soma acontecer
antes da divisão). Precisamos disso, porque o let media = 10 + 2 / 2; // Sem os parênteses
daria 11
JavaScript respeita a ordem de precedência da
matemática. Por padrão, multiplicação e divisão
acontecem antes de soma e subtração.
Para representar números decimais em let decimal = 2.5;
JavaScript, utilizamos o separador ponto:
Uma divisão em JavaScript pode resultar em let resto = 10 % 3; // Resultado: 1,
pois o resto de 10 dividido por 3 é 1.
valores decimais, por exemplo:
Dica: isso é muito útil pra saber se um número é par ou ímpar. Basta olhar o resto da divisão dele por 2. Se
for 0, é par. Se for 1 é ímpar.
Exercício:
Abaixo estão alguns exercícios para você
praticar o que aprendemos até aqui.
1) Implemente a função, que calcula a média
simples entre 2 números.
2) Implemente a função, que retorna o resto da
divisão entre 2 números.
Capítulo 4
Manipulando texto
Até agora manipulamos números com
JavaScript, mas muitas vezes precisamos let texto = “Esse é meu primeiro texto”;
também manipular textos, que na computação return texto;
chamamos de strings.
Primeiramente, para criar um texto em
Repare que o texto obrigatoriamente deve ser
JavaScript, podemos fazer:
envolvido por aspas.
let introducao = “Meu nome é”;
Para juntar duas strings podemos utilizar o let nome = “Pedro”;
operador de soma +: let mensagem = introducao + nome; //
Resultado: “Meu nome é Pedro”;
Essa operação é chamada de concatenação
(juntar strings). let media = 7;
let mensagem = “Sua média foi:” + media; //
Podemos juntar strings com números, da Resultado: “Sua média foi: 7”
mesma forma:
Exercício:
Abaixo estão alguns exercícios para você
praticar o que aprendemos até aqui.
1) Implemente a função, que retorna a string
“Hello World”.
2) Implemente a função, que retorna a
concatenação dos dois parâmetros que ela
recebe.
3) Implemente a função, que soma dois
números e retorna o texto A soma deu: x,
sendo x o resultado da soma.
Capítulo 5
Condicionais
Quando precisamos desenvolver uma
aplicação, muitas vezes o comportamento das
funcionalidades muda dependendo de alguma
condição. se alguma_condicao
fazer tal coisa
Por exemplo: se um site é proibido para senão
fazer outra coisa
menores de idade, devemos ou não permitir o
acesso da pessoa, conforme sua idade.
O algoritmo que queremos então é algo como:
Para implementar esse algoritmo em function verificar(idade) {
if(idade < 18) {
JavaScript é bem parecido, basta usar a return “É menor de idade”;
sintaxe do if/else. Por exemplo, se quisermos } else {
responder se alguém é maior ou menor de return “É maior de idade”;
}
idade, poderíamos fazer: }
O if (“se” em inglês) serve para, dada alguma if(...) {
// esse código só será executado caso a
condição, executar ou não o código dentro condição seja VERDADEIRA
dele: }
if(...) {
Já o else (“senão em inglês”), pode ser ...
usado logo após o if, para executar algum } else {
// esse código só será executado caso a
outro código caso a condição dele não seja condição do if seja FALSA
verdadeira. }
Nem todo if precisa ter um else. Se você não function verificarMedia(media) {
quiser executar nada no caso contrário, basta if(media >= 7) {
return “Aprovado”;
utilizar somente o if, sem o else { ... }. } else if(media >= 5) {
return “Prova final”;
} else {
return “Reprovado”;
Se quiser checar várias condições de uma vez, }
você pode encadear mais ifs dessa forma: }
Repare que a construção do meio emenda um else e um if. Isso significa que ele só vai verificar a
condição do meio (maior ou igual a 5) se a primeira tiver sido falsa (a nota não foi maior ou igual a 7).
media > 7 // Maior que 7
media >= 7 // Maior ou igual a 7
Falando agora das condições que você pode media < 7 // Menor que 7
media <= 7 // Menor ou igual a 7
verificar dentro de um if, as mais comuns são: media == 7 // Igual a 7 (ATENÇÃO, SÃO DOIS
IGUAIS!)
media != 7 // Diferente de 7
Quando fazemos comparações em geral, isso nos dá um valor que pode ser verdadeiro ou falso. Por
exemplo, se a nota for 8, a comparação nota > 7 nos dará verdadeiro e o código de dentro do if será
executado**.** Porém se a nota for 5, a comparação nota > 7 dará falso e o código do if não será
executado.
Como na computação precisamos o tempo todo
fazer comparações e tomar decisões, esses
valores de verdadeiro ou falso tem até um if(true) {
nome especial: são chamados de booleanos. // sempre executará, pois true é sempre
verdadeiro
E você pode representá-los em JavaScript }
usando as palavras true (verdadeiro) ou false
(falso). if(false) {
// nunca executará, pois false é sempre falso
}
Por exemplo, se passarmos true para o if, ele
sempre executará (ou se passar false, nunca
executará):
let minhaVariavel = true;
Você também pode armazenar esses valores
em variáveis, por exemplo: if(minhaVariavel) { ... }
function verificarAprovacao(nota1, nota2, nota3)
{
Atenção: não faz muito sentido armazenar um let media = (nota1 + nota2 + nota3) / 3;
booleano dessa forma, afinal se você já sabe
let passou = (media > 7); // Vai armazenar
que ele vai ser true, não tem nem porque true ou false na variável “passou”, dependendo
colocar um if. do resultado da comparação
if(passou) {
return “Aprovado”;
Mas passa fazer sentido quando armazenamos } else {
o resultado de uma comparação em uma return “Reprovado”;
}
variável, por exemplo: }
Exercício:
Abaixo estão alguns exercícios para você
praticar o que aprendemos até aqui.
1) Implemente a função, que retorna “Maior de
idade caso a idade passada seja maior que 17
ou “Menor de idade caso contrário.
2) Implemente a função, que retorna
“Aprovado” caso a nota passada seja, “Prova
Final caso seja maior ou igual a 5 porém
menor que 7 ou “Reprovado” caso contrário.
3) Implemente a função, que recebe 3 notas e
retorna os booleanos ou, indicando se a média
simples entre as 3 notas (somar e dividir por 3)
é maior ou igual a 7.
Capítulo 6
Operadores Lógicos
Vimos no último capítulo que dentro do if
podemos fazer comparações para o código
ser executado. Por exemplo, uma comparação
pode ser nota >= 7. Algoritmo aprovacao(recebe nota1, nota2, nota3 e
faltas)
- calcular media usando as notas
Quando trabalhamos com condicionais e - se a media for pelo menos 7 E TAMBÉM as
booleanos, uma situação muito comum é faltas forem menores que 10
- responder aprovado
querer levar mais de uma comparação em - senao (caso qualquer uma das comparações
consideração ao mesmo tempo. Por exemplo, acima forem falsas)
se a regra para alguém ser aprovado for: ficar - responder reprovado
com pelo menos 7 de média e ter menos
de 10 faltas. Teríamos um algoritmo mais ou
menos assim:
function aprovacao(nota1, nota2, nota3, faltas)
Fazer cada uma das comparação já sabemos. {
let media = (nota1 + nota2 + nota3) / 3;
A primeira é media >= 7 e a segunda é faltas
< 10. Mas como fazer aquele “e também” ali if(media >= 7 && faltas < 10) {
return “Aprovado”;
do meio? É simples, podemos usar o operador } else {
do JavaScript: && (dois “e-comerciais” juntos), return “Reprovado”;
chamamos esse operador de AND. }
}
function aprovacao(nota1, nota2, nota3, faltas)
{
let media = (nota1 + nota2 + nota3) / 3;
let aprovadoPorMedia = (media >= 7); //
Vai armazenar true ou false
Podemos usar a técnica de armazenar o let aprovadoPorPresenca = (faltas < 10); //
Vai armazenar true ou false
resultado das comparações em variáveis e
deixar nosso código mais legível: if(aprovadoPorMedia && aprovadoPorPresenca) {
// Um pouco mais fácil de ler a regra :)
return “Aprovado”;
} else {
return “Reprovado”;
}
}
Repare que o operador && nos dá verdadeiro somente se ambas as condições forem verdadeiras. Se uma
delas ou ambas forem falsas, ele dará falso.
Existe também um outro operador para function classificado(notaVestibular, notaEnem) {
um caso muito comum: quando você está
let classificadoVestibular = (notaVestibular >=
interessado(a) em que pelo menos uma 8);
condição seja verdadeira. let classificadoEnem = (notaEnem >= 700);
if(classificadoVestibular || classificadoEnem) {
Por exemplo, imagina que o aluno pode ser return “Classificado”;
classificado pra uma faculdade em duas } else {
return “Desclassificado”;
situações: caso tire pelo menos 8 no vestibular }
da faculdade ou pelo menos de 700 no ENEM: }
Esse operador || (duas barras verticais coladas), chamado de OR, retorna verdadeiro quando pelo menos
1 das comparações forem verdadeiras. Ele só dará falso se ambas derem falso, ou seja, se o aluno não
passou nem pelo vestibular nem pelo ENEM.
function aprovado(nota1, nota2, faltas) {
let media = (nota1 + nota2) / 2;
let aprovadoPresenca = (faltas < 10);
Por fim, um último operador booleano muito útil
é quando precisamos inverter um booleano, ou if(!aprovadoPresenca) { //
Leia como: “se NÃO aprovado por presença”. Ou
seja, transformar true em false ou vice-versa. seja, se aprovadoPresenca for false, vira true e
O operador que faz isso em JavaScript é a entra no if e vice-versa
return “Reprovado por presença”;
exclamação !, chamado de NOT. }
...
}
Exercício:
Abaixo estão alguns exercícios para você praticar
o que aprendemos até aqui.
1) Implemente a função, que recebe um preço e
um booleano indicando se já está com desconto
ou não. Se o preço for maior que 100 e não
estiver com desconto, a função deve retornar
“Quero pechinchar”. Caso contrário, deve retornar
“Negócio fechado”.
2) Implemente a função, que recebe uma nota e
um número de faltas e retorna “Aprovado” caso
a média seja maior ou igual a 7 e o número
de faltas menor que 10, ou “Reprovado” caso
contrário.
3) Implemente a função, que recebe 3 números e
retorna Têm negativo caso pelo menos 1 deles
seja menor que 0. Caso contrário, ela deve
retornar Tudo positivo.
Capítulo 7
Loops
Quando implementamos algoritmos, em geral
queremos economizar nosso tempo de trabalho
manual. E isso é particularmente útil quando
alguma coisa precisa ser feita várias vezes.
Por exemplo, digamos que você queira repetir
alguma ação 100 vezes (calcular a média de
100 alunos de uma vez).
Quando trazemos isso para programação, while(alguma_condicao) {
podemos usar um recurso presente na maioria // esse código será repetido sem parar, até
que a condição acima dê falso
das linguagens chamado loop. Um loop é uma }
forma de você dizer pro computador: enquanto
uma determinada condição for verdadeira,
repita esse código de novo e de novo e de
novo.
Assim como em outras linguagens, em
JavaScript é possível criar loops de várias
formas diferentes. Veremos duas delas aqui. A
primeira é usando o recurso while:
Atenção: enquanto a condição for verdadeira,
o código ficará repetindo. Isso significa que while(true) {
se a condição for sempre verdadeira e nunca // isso é um loop infinito, não faça isso hahah
}
mudar, você terá criado um loop infinito e irá
travar seu programa.
Ou seja, se quisermos controlar a quantidade
de vezes que o loop acontece, precisamos let contador = 0;
que a condição de alguma forma passe a dar
while(contador < 100) {
false depois da quantidade de vezes que nos // algum código que quero repetir 100 vezes
interessa. Um jeito de fazer isso é usar alguma contador = contador + 1;
}
variável para armazenar quantas vezes o loop
rodou. Por exemplo:
Repare que agora, a cada loop, somamos 1 ao
contador. Assim, quando ele chegar a 100, a
condição vai passar a dar falso, e o loop será
encerrado.
Repare também que agora estamos alterando
contador = contador + 1
a variável contador. Quando queremos alterar // é o mesmo que:
uma variável, não deve-se colocar o let contador++;
na frente. Ele deve ser usado somente no
momento que criamos a variável.
Uma observação, sempre que você quiser
aumentar um número em 1 unidade, tem um
jeito mais prático que é usar o operador ++:
function umbridgeGenerator() {
let contador = 0;
let frase = “”;
while(contador < 100) {
Por exemplo, podemos usar loops para gerar frase = frase + “Não devo contar mentiras”;
uma string com a frase “Não devo contar contador++;
}
mentiras” 100 vezes:
return frase; // retornará “Não devo contar
mentirasNão devo contar mentirasNão devo contar
mentiras...” (100 vezes)
}
Essa construção do while (de criar uma let contador = 0;
variável, uma condição e um incremento) é tão
while(contador < 100) {
comum, que existe uma outra forma de criar // ...
um loop usando menos linhas. Observe os contador++;
}
trechos ao lado:
Em vez de while, você pode fazer a mesma for(let contador = 0; contador < 100;
coisa acima usando a segunda forma de se contador++) {
// esse código será executado 100 vezes
criar loops em JavaScript: a construção for. }
Dessa forma:
Exercício:
Abaixo estão alguns exercícios para você
praticar o que aprendemos até aqui.
1) Utilizando loops, implemente a função que
recebe um texto e um número de repetições.
Ela deve retornar uma string com o texto
repetido n vezes, sendo n o número de
repetições.
2) Utilizando loops, implemente a função que
recebe um texto e um número de repetições.
Ela deve retornar uma string com o texto
repetido n vezes, sendo n o número de
repetições.
Capítulo 8
Arrays
let nota1 = 5;
Até então, temos trabalhado com variáveis que let nota2 = 7;
guardam 1 valor cada uma, por exemplo: let nota3 = 10;
Porém, um caso muito comum na computação
é quando precisamos armazenar listas de let aluno1 = “Ana”;
let aluno2 = “Bia”;
valores. Por exemplo, se quisermos guardar os let aluno3 = “Carlos”;
nomes de todos os alunos, teríamos que fazer ...
algo como:
Isso fica pouco prático e dificulta manipularmos
essas informações. Para resolver isso, em
muitas linguagens de programação existe o let alunos = [“Ana”, “Bia”, “Carlos”];
conceito de listas de valores, que chamamos
de arrays. Em JavaScript podemos criar arrays
usando colchetes []:
O mais interessante dessa construção é que
podemos acessar os valores de um array // posições 0 1 2
usando a posição deles (começando em 0). No let alunos = [“Ana”, “Bia”, “Carlos”];
exemplo acima, Ana está na posição 0, Bia na
return alunos[1]; // Retornará “Bia”
posição 1 e Carlos na posição 2. Por exemplo,
podemos retornar a Bia fazendo:
let alunos = [“Ana”, “Bia”, “Carlos”];
Podemos também obter o tamanho de uma
array, usando a propriedade .length: return alunos.length; // Retornará 3 pois a
array tem 3 itens
O mais interessante de usarmos arrays é
que como podemos acessar os valores pelas
posições numéricas, é um prato cheio pra let alunos = [“Ana”, “Bia”, “Carlos”];
usarmos loops.
for(let contador = 0; contador < alunos.length;
contador++) {
Lembrando que nos loops temos um “contador” // esse código repetirá 3 vezes, o número de
que começa como 0 e vai até o número que itens na array
}
quisermos (até o final da array, que tal?). Então
se precisamos fazer alguma coisa para cada
elemento de uma array, poderíamos fazer:
let alunos = [“Ana”, “Bia”, “Carlos”];
Como temos essa variável contador dentro let nomes = “”;
do loop, podemos usar isso para acessar for(let contador = 0; contador < alunos.length;
as posições da array. Por exemplo, para contador++) {
concatenar todos os nomes: nomes = nomes + alunos[contador];
}
let alunos = [“Ana”, “Bia”, “Carlos”];
Uma forma mais comum de nomear essa let nomes = “”;
variável contador é usar a letra i (de índice), for(let contador = 0; contador < alunos.length;
ficando mais curta e legível, mas é só um nome contador++) {
como outro qualquer: nomes = nomes + alunos[contador];
}
function somarTudo(lista) {
let soma = 0;
Dando um outro exemplo, se quiséssemos for(let i = 0; i < lista.length; i++) {
fazer uma função que soma todos os valores soma = soma + lista[i]
}
de um array poderíamos fazer:
return soma;
}
No código acima, se passássemos uma lista [10, 20, 30] por exemplo, ela retornaria a soma: 60.
Exercício:
Abaixo estão alguns exercícios para você praticar o que “Sabado”, pois avançar 5 dias a partir da segunda-feira cai no
aprendemos até aqui. sábado.
Se for passado “Segunda-feira” e 8, a função deve retornar “Terca-
1) Implemente a função que recebe 3 nomes e retorna esses nomes feira”, pois avançar 8 dias a partir da segunda-feira cai na terça-
em uma array. feira da semana seguinte.
2) Implemente função que recebe uma array e retorna a soma de 5) Implemente a função que recebe 3 números como parâmetros.
todos os seus números multiplicados por 2. Os dois primeiros delimitam um intervalo. A função deve retornar
um array contendo os menores números pares dentro do intervalo.
3) Implemente a função que recebe uma array de números positivos A quantidade de elementos nesse array deve ser igual ao 3o
diferentes entre si e retorna o índice do maior número encontrado. parâmetro passado
Exemplo: se a array for [10,50,30], o maior número é o 50, então a Obs:
função deve retornar o índice 1.
O 1o parâmetro sempre será menor que o 2o parâmetro
Lembre-se que os índices das arrays começam em 0.
No intervalo passado sempre haverá números pares suficientes
4) Implemente a função que vai retornar qual o dia da semana vai para a quantidade passada
ser a partir de um dia passado como string e de uma quantidade de
dias a ser avançado. Para isso, a função deve receber uma string e A função deve retornar os menores números pares possíveis
um número como parâmetros e retornar uma string. dentro do intervalo
Obs: os dias devem ser retornados no seguinte formato Exemplo: se for passado os valores “2”, “10”, “3”, a função deve
retornar o array [4,6,8]
“Segunda-feira, Terca-feira, Quarta-feira, Quinta-feira, Sexta-feira,
Sabado, Domingo” Exemplo: se for passado os valores “2”, “10”, “2”, a função deve
retornar o array [4,6]
Se for passado “Segunda-feira” e 5: a função deve retornar