Java Script - Aula Faculdade
Java Script - Aula Faculdade
Conteudista
Prof. Me. Marco Antonio Sanches Anastacio
Revisão Textual
Prof.ª Dra. Selma Aparecida Cesarin
OBJETIVOS DA UNIDADE
• Entender as regras, a função e a importância da Linguagem de Progra-
mação Javascript na construção de páginas web;
Este arquivo PDF contém o mesmo conteúdo visto on-line. Sua dis-
ponibilização é para consulta off-line e possibilidade de impressão.
No entanto, recomendamos que acesse o conteúdo on-line para
melhor aproveitamento.
2
Introdução ao Javascript
Em maio de 2022, uma pesquisa realizada pelo StackOverFlow com mais de
70.000 desenvolvedores revelou como aprendem e sobem de nível, quais ferra-
mentas estão usando e o que desejam. No topo das Linguagens de Programação
mais utilizadas, encontramos o JavaScript, com mais de 65% de preferência, o
que mostra o porquê de ser considerada a linguagem mais popular entre os
desenvolvedores.
Site
Visite a página do StackOverFlow e conheça
mais detalhes dessa pesquisa.
Site
Visite a página do Apache Cordova para saber
mais sobre desenvolvimento mobile multipla-
taforma com o HTML, CSS e JS.
3
Todo o Código JavaScript é executado somente quando o evento ao qual está as-
sociado é acionado e, por esse motivo, o JS usa o chamado “modelo de execução
controlado por eventos”. Porém, em alguns casos, podemos inserir o Código sem
a associação a eventos e, dessa forma, a instrução ou o comando será executado
conforme o navegador interpreta a página web.
4
um evento. Os eventos serão vistos mais adiante. Por enquanto, faremos um
exemplo simples com o evento onclick, que é acionado quando o usuário clica
no elemento:
<html>
<head>
<title>Exemplo JavaScript</title>
</head>
<body>
<input type=”button” value=”Clique aqui” onclick=”alert(‘Olá Mundo
JS’)”>
</body>
</html>
Importante
Fique atento(a) ao uso de aspas duplas (“...”) e simples (‘...’) e,
sempre que possível, evite o uso de eventos direto em tags
HTML.
Se fizermos uma comparação com CSS, esse modo de inserir JavaScript em uma
página seria o modo incorporado. Seja dentro do body ou do head, sempre deve-
mos utilizar a tag <script>...<\script>, para demarcar o início e o fim do script JS.
Note que os comandos podem ser executados sem a necessidade de eventos.
Isso não é o mais comum, mas é um recurso que usaremos em nossos estudos.
5
<html>
<head>
<title>Exemplo JavaScript</title>
<script>
alert(“Eu estou no cabeçalho.”);
</script>
</head>
<body>
<script>
document.write(“<b class= ‘teste’>Eu estou no corpo do documen-
to.</b>”);
</script>
</body>
</html>
JavaScript Externo
Assim como em CSS, também podemos criar um arquivo separado do HTML com
nossos códigos em JavaScript. Esse arquivo deve ser salvo com a extensão .js e é
chamado no cabeçalho da página com a tag <script>.
<!--arquivo exemplo3.html-->
<html>
<head>
<title>Exemplo JavaScript</title>
<script src=”script3.js”></script>
</head>
<body>
Conteúdo da página. Também podemos fazer aqui chamadas para
blocos de códigos do arquivo .js.
</body>
</html>
6
//arquivo script3.js
alert(“Estou em um arquivo .js”);
Importante
Perceba que no arquivo .js não utilizamos as tags <script>...
<\script> para demarcar o código JS.
O que é um Evento?
Sempre que ocorre uma interação com um documento ou página, um evento é
disparado. Um evento pode ser qualquer interatividade do usuário com um ele-
mento HTML e alguns eventos também podem ser disparados pelo navegador.
7
Quadro 1 – Alguns eventos HTML
Evento Descrição
Saiba Mais
Os manipuladores de evento (event handler) são funções a se-
rem executadas quando um evento é acionado ou ocorre uma
ação do navegador. E o disparador de evento é o elemento
HTML em que o manipulador de evento foi adicionado.
<html>
<body>
<button onclick = “document.querySelector(‘#data’).innerHTML =
Date()”> Exibir data </button>
<p id=”data”></p>
</body>
</html>
8
Site
O método querySelector(‘#data’) retorna o
primeiro elemento filho que corresponda ao
id = “data”.
Leitura
O innerHTML é uma propriedade do Element
que define ou retorna o conteúdo HTML de
um elemento.
9
• Não deve conter espaço em branco ou caracteres especiais;
• quantidade;
• QUANTIDADE;
• Quantidade;
• QuAnTidAdE.
Existem duas palavras-chave para criarmos variáveis: var (antigo) ou let (moder-
no). Até a especificação ECMAScript 2015 (ES6), a palavra-chave var era utilizada
para declarar uma variável. Entretanto, era possível declararmos duas variáveis
com o mesmo nome, o que, às vezes, poderia levar a um resultado imprevisível
e incorreto.
Nesse exemplo, temos duas variáveis com o nome framework e a saída é Angular,
que foi a última declaração da variável.
10
const pi = 3.14;
pi = 3.14; // provocará erro
pi = 2 * pi; //também errado
let ang = 2 * pi; //permitido porque ang é uma variável
1. let x = 10;
2. let y = x; // y = 10
3. x = 15; // agora x = 15
4. let soma = x + y; // soma armazena o valor 25
Linha(s) Descrição
11
Nesse exemplo, você deve ter percebido que utilizamos o operador de adição (+).
No Quadro 3, temos os demais operadores aritméticos. Para fins de exemplo,
considere a variável x declarada anteriormente, que armazena o valor 15.
+ Adição z = x + 10 z = 25
- Subtração z = x - 10 z= 5
* Multiplicação z = x * 10 z = 150
Módulo (resto
% da operação z=x%7 z=1
de divisão)
++ Incremento z = x++ z = 16
-- Decremento z = x-- z = 14
Não há diferença entre as aspas duplas e simples, mas há diferença com o acen-
to grave, pois ele permite as chamadas templates String.
12
Leitura
Os templates String ou templates literais
constituem um recurso interessante, em
substituição à concatenação de valores.
Quando trabalhamos com texto, o operador de adição (+) é utilizado para conca-
tenar Strings.
let x = “Bom”;
let y = “dia”;
let z = x + y; // o resultado será: z=Bom dia
alert(z);
Tenha cuidado ao utilizar o operador de adição (+) com números e textos, pois o
resultado será sempre um texto:
let x = 4;
let y = “a”;
let z = x + y; // o resultado será z=”4a”
let x = “4”;
let y = “4”;
let z = x + y; // o resultado será z=”44”
Conversão de Tipos
Como vimos, não é necessário declarar os tipos das variáveis, pois, o JavaScript
faz a tipagem dinâmica do dado que está trabalhando. Entretanto, toda a entra-
da de dados feita pelo usuário é sempre considerada uma String (texto), mesmo
que a entrada sejam algarismos, como as notas de um aluno, por exemplo.
13
Isso pode gerar um resultado incorreto ou indesejado, se considerarmos, por
exemplo, que o operador de adição (+) tem comportamentos diferentes quando
utilizado em texto e ou número. Numa operação na qual exista um número e um
texto, o número sempre será convertido para texto e a operação ocorre como se
todos os dados fossem String.
Dessa forma, caso seja necessário realizar alguma operação matemática com os
valores lidos por meio de uma caixa de diálogo prompt ou um formulário com
campos de input, precisamos, inicialmente, convertê-los em números. Para isso,
temos duas funções em JavaScript que convertem para número inteiro (int) ou
decimal (float).
variável = parseInt(valor);
variável = parseFloat(valor);
No próximo exemplo, vamos solicitar ao usuário que digite dois números, por
meio de uma caixa de diálogo prompt, e exibimos a soma desses dois números:
Antes de finalizarmos este capítulo, você percebeu que, nos exemplos, utiliza-
mos comentários para destacar alguma informação importante do código? Pois
14
bem. Sempre é uma boa prática inserirmos comentários em nossos códigos e,
em JavaScript, podemos fazer isso de duas formas:
Comandos e Funções
Em JavaScript, uma função é um bloco de códigos destinado a realizar alguma
tarefa específica. Uma função pode ser executada por meio de uma chamada
direta ou por meio de um evento.
15
Figura 1 – Sintaxe de uma função
Fonte: Acervo do Conteudista
#ParaTodosVerem: imagem que descreve a sintaxe de uma função JavaScript. No centro, há um retângulo
com fundo cinza e, em seu interior, a definição da função. Acima desse retângulo, há três retângulos menores
e abaixo outros dois, todos contendo a descrição de cada um dos itens dessa sintaxe. Fim da descrição.
Uma função pode ou não retornar uma resposta para o ponto de chamada. Caso
necessite de retorno, utilizaremos o comando return. Quando não retorna re-
sultado, a função tem comportamento de procedimento e, nesse caso, não utili-
zaremos o comando return (ao encerrar, a função retornará o valor undefined).
O exemplo a seguir define uma função simples chamada soma, que recebe dois
números e retorna a soma deles:
16
A partir da versão ES6, foi introduzido o formato arrow function para criar funções
mais otimizadas. A sintaxe de uma arrow function contém a seguinte definição:
Leitura
Explore como as arrow functions permitem
uma sintaxe reduzida, mais curta, para fun-
ções.
Introdução às Decisões em
JavaScript
As decisões são importantes em programação, pois permitem executar diferen-
tes ações com base em alguma expressão condicional. A Figura 2 mostra o flu-
xograma de um programa que lê a média de um aluno e imprime o resultado
(“Aprovado” ou “Reprovado”), a partir de uma tomada de decisão (media >= 6.0).
17
Figura 2 – Tomada de decisões em programação
Fonte: Acervo do Conteudista
#ParaTodosVerem: imagem do fluxograma de uma estrutura de decisão. O fluxograma é composto por
figuras geométricas, que são utilizadas para definir os passos e a sequência da estrutura. Nessa Figura, o
losango é utilizado para representar a tomada de decisão quanto à média de um aluno ser maior ou igual
a seis. Fim da descrição.
18
Quadro 4 – Operadores relacionais
19
Quadro 5 – Operadores lógicos
E lógico: retorna
verdadeiro se ambas a==3 && b<10 //retorna True
&& as expressões são
verdadeira e falso nos a!=3 && b==5 //retorna False
demais casos.
Ou lógico: retorna
verdadeiro se pelo menos a==3 || b<10 //retorna True
|| uma das expressões é a!=3 || b==5 //retorna True
verdadeira e falso se a==1 || b==3 //retorna False
todas são falsas.
Estruturas de Decisão
São blocos de código executados somente se uma dada condição for satisfei-
ta, utilizados para controlar o fluxo de execução dos programas. Em JavaScript,
temos as seguintes estruturas de decisões:
20
if (condição){
//bloco de instruções caso a condição seja verdadeira
}
A decisão composta (if... else) avalia uma expressão lógica e, caso o resultado
seja verdadeiro (true), executa o primeiro bloco de Códigos. Caso contrário, exe-
cuta o segundo bloco de comandos (else).
if (condição){
//bloco de instruções caso a condição seja verdadeira
}
else {
//bloco de instruções caso a condição seja falsa
}
21
let data_hora = new Date();
let hora = data_hora.getHours();
if(hora < 12){
alert(“Bom dia!!!”);
}
else{
alert(“Tenha uma ótima tarde/noite”);
}
A estrutura encadeada (if... else if... else...) é utilizada quando temos várias con-
dições que devem ser testadas. Sua sintaxe é exibida a seguir:
if(condição 1){
//bloco de instruções 1
}
else {
if(condição 2){
//bloco de instruções 2
}
else {
//bloco de instruções 3
}
}
22
let data_hora = new Date();
let hora = data_hora.getHours();
if (hora < 12){
alert(“Bom dia!!!”);
}
else {
if(hora >= 12 && hora < 18){
alert(“Tenha uma ótima tarde”);
}
else {
alert(“Tenha uma ótima noite”);
}
}
switch (valor) {
case valor1:
//instruções 1
break;
case valor2:
//instruções 2
break;
case valor3:
//instruções 3
break;
default:
//instruções padrão
}
23
Observações importantes quanto ao uso dessa estrutura:
• Para cada caso, devemos colocar o comando break, que irá finalizar o
caso e evitar que o caso posterior seja executado;
Repetindo Códigos
Muitas vezes, precisamos concluir de modo rápido e eficiente tarefas repetitivas,
como uma tabuada, por exemplo. Para isso, as Linguagens de Programação têm
as estruturas de repetição ou laços de repetição (loop).
24
Estrutura de Repetição for
É compacta, pois inicialização, condição e atualização estão reunidas na declara-
ção do laço. Utilizamos essa estrutura quando sabemos exatamente o número
de repetições que serão feitas.
Sua sintaxe é:
Vejamos um exemplo que conta de 0 até 9 e exibe um alert na tela com o valor
da variável cont:
let cont;
for (cont = 0; cont < 10 ; cont++){
alert(“Número: “ + cont + “<br />”);
}
Sua sintaxe é:
25
//inicialização da variável de controle
while(condição){
//bloco de instruções
//atualização da variável de controle
}
O exemplo a seguir conta de 0 até 9 e exibe um alert na tela com o valor da va-
riável cont:
let cont = 0;
while(cont < 10){
alert(“Número: “ + cont + “<br />”);
cont = cont + 1; //ou cont++;
}
Parando um Laço
Podemos usar comando break para parar um determinado laço de repetição
conforme alguma condição no nosso Código. No exemplo a seguir, vamos somar
uma quantidade indeterminada de valores digitados pelo usuário. Como não sa-
bemos exatamente a quantidade, utilizamos uma condição if para parar o laço.
Assim, quando o usuário pressionar a tecla enter sem digitar um valor, vamos
encerrar o laço e exibir o resultado da soma:
26
let soma = 0;
while (true){
let num = Number(prompt(“Enter a number”, ‘’));
if(!num)
break;
soma += num;
}
alert(“Soma = “ + soma);
Continuando um Laço
O comando continue interrompe a iteração atual e força o laço a continuar para
a próxima iteração. No exemplo a seguir, desejamos imprimir somente os núme-
ros ímpares de 0 até 10. Portanto, sempre que o número for par, o condicional
if executa o comando continue e pula para a próxima iteração, ignorando a im-
pressão do número par:
Vetores
Vetores podem ser definidos como uma coleção de elementos ou itens que res-
pondem a um mesmo nome e que podem ser acessados segundo a posição (ín-
dice) que ocupam dentro do vetor.
27
Figura 3 – Representação gráfica de um vetor
Fonte: Acervo do Conteudista
#ParaTodosVerem: imagem da representação gráfica de um vetor. No centro, há um retângulo dividido
em 10 partes iguais, contendo números. Acima desse retângulo, há o título “Índices para acessar os valores
do vetor”. Abaixo do retângulo, há um texto “Valores armazenados em cada posição do vetor” e na parte
inferior da imagem, uma observação em destaque: “o primeiro índice de um vetor começa sempre em zero”.
Fim da descrição.
Para criar um vetor em JavaScript, utilizamos o objeto Array. Esse objeto, além de
criar um vetor em memória, também nos fornece diversos métodos para mani-
pular o vetor criado.
Perceba que, em todos os casos anteriores, podemos inserir mais posições sem-
pre que necessário. O Vetor não tem um tamanho fixo.
28
Podemos visualizar ou atribuir um valor para um vetor, acessando cada posição
por meio do índice, que deve ficar entre colchetes [...].
29
//Vetor com o uso de repetições
let i;
let frutas = [ ];
frutas[0]=”maçã”;
frutas[1]=”banana”;
frutas[2]=”morango”;
for (i=0; i<=2; i++){
alert(frutas[i]);
}
É importante notar como o uso correto da estrutura de repetição torna mais fácil
percorrer um vetor para consultas ou atualizações. Porém, o exemplo acima fun-
ciona muito bem para um vetor de somente três elementos! Na prática, é comum
que o tamanho do vetor seja desconhecido do programador!
Para finalizarmos esta Unidade, vamos lembrar-nos de que nosso vetor é dinâmi-
co e, portanto, permite que alteremos um valor ou até mesmo façamos a inclu-
são de um novo elemento. No último caso, estamos falando do método push(),
utilizado para adicionar um novo item ao final do vetor.
30
let carros = [“Honda”, “Fiat”, “Hundai”];
carros[2] = “Hyundai”; //Substitui o valor do elemento na posição 2
let c = prompt(“Digite um fabricante: “);
carros.push(c); //Adiciona um novo elemento ao final do vetor
Veja, a seguir, no Quadro 6 alguns dos principais métodos utilizados com vetores
em JavaScript.
31
Leitura
Visite a referência completa sobre vetores,
propriedades e métodos em JavaScript.
32
MATERIAL COMPLEMENTAR
Sites
Codepen
Ferramenta on-line para testar e exibir trechos de código HTML, CSS
e JavaScript que funciona como um editor on-line e ambiente de
aprendizagem.
https://bit.ly/3re2C3R
JSFiddle
Plataforma on-line que permite criar, testar e exibir trechos de códigos
em HTML, CSS e JS.
https://bit.ly/3rcmtAz
Leituras
W3school
Site voltado à aprendizagem de conteúdos de Tecnologias como HTML,
CSS, Javascript e Python, entre outros. Visite o tutorial de JavaScript.
https://bit.ly/3EwRF0z
30 Dias de JavaScript
A matéria apresenta uma série de desafios para melhorar as habilidades
de codificação por meio de mini projetos diários, utilizando programação
Web.
https://bit.ly/3PB1IYR
REFERÊNCIAS BIBLIOGRÁFICAS
CLARK, R. et al. Introdução ao HTML5 e CSS3: a evolução da web. Rio de Janeiro: Alta
Books, 2014.
SILVA, M. S. Construindo sites com CSS e (X) HTML: sites controlados por folhas de
estilo em cascata. São Paulo: Novatec, 2008.
SILVA, M. S. CSS3: Desenvolva aplicações web profissionais com uso dos poderosos
recursos de estilização das CSS3. São Paulo: Novatec, 2012.