Programacao Web Front-End
Programacao Web Front-End
Programacao Web Front-End
INTERNET
1
internet
"A Internet é o maior
espaço público na história
da humanidade."
André Lemos
Professor de comunicação da Universidade
Federal da Bahia (UFBA)
190 milhões
3
horas
de habitantes
81,3
milhões
por dia
de usuários
fontes: Censo 2010 e Ibope Net Rakings
internet no brasil
41%
60%
computador em casa
48h 26m
2º estados unidos 42h 19m
3º reino unido 36h 30m
a Internet nasceu
praticamente sem querer!!!
ARPANET
e durante a guerra fria . . .
hipertexto
Tim Berners Lee
físico britânico world wide web
cientista da computação
professor do MIT
diretor do world wide web consortium (W3C)
o que posso usar na internet?
transferir arquivos
FTP e-mail
serviços
telnet / SSH web
acessar remotamente a
uma máquina ou servidor
como funciona?
como funciona?
protocolos
protocolos são “idiomas” e sinais universais que permitem
aos dispositivos comunicar-se através da rede
IP –> endereçamento; Conjunto de protocolos que
TCP -> transmissão de dados definem como
computadores podem se
comunicar e se conectar
TCP/IP em rede e também para o
roteamento de dados;
protocolos UDP
User Datagram Protocol
SMTP e POP FTP sem controle de fluxo;
HTTP transmissão de audio e vídeo
topologias de rede
A B A B
conexões redundantes
a falha de uma única fornecem rotas
máquina ou conexão alternativas para
pode isolar partes mensagens se alguma
grandes da rede máquina falhar
como funciona?
........
internet
........
a mensagem é quebrada em pacotes menores
sendo cada um deles identificado para entrega;
os pacotes são transmitidos pela rede,
podendo não chegar na mesma ordem
os pacotes são colocados na ordem correta
como funciona?
remetente
destinatário
( )
descubra aqui qual é
o seu endereço ip
http://www.meuip.com.br
como me conectar?
através de repetidoras
quando há difilcudade de
localizadas em pontos
usar cabeamento;
estratégicos;
velocidade de até 11 Mbps
velocidade de até 11 Mbps
( )
qual a velocidade da
sua conexão?
http://www.rjnet.com.br
vejamos . . .
( )
associação brasileira dos
usuários de acesso rápido
http://www.abusar.org
em cartaz
http://www.fh-mainz.de http://picol.org
apresenta...
the history
of the internet
http://www.youtube.com/watch?v=9hIQjrMHTv4
browsers
o que é um browser?
é o navegador, programa que permite o acesso e
interpretação de arquivos HTML, CSS, Javascript,
entre outros.
como é feito um website?
hospedagem e registro...
http://www.registro.br
http://superdownloads.uol.com.br
http://www.baixaki.com.br
que versão baixar?
freeware
programa que disponibilizado para
uso gratuito
shareware
programas que após um determinado tempo
de uso ou número de utilizações, perde
algumas ou todas as suas funcionalidades.
trial
você pode testar o programa em sua totalidade,
com todos os recursos e por quanto tempo
quiser, mas geralmente não poderá salvar ou
exportar os trabalhos feitos.
descompactar e compactar
arquivos
web upload
sites de hopedagem temporária de arquivos na web
reutilização de dados
e serviços usuários gerando
conteúdo
wiki
o que é um wiki?
coleção de páginas interligadas
que podem ser visitadas e editadas
por qualquer pessoa
atualizado instantaneamente
não necessita de conhecimento técnico
para publicar
usuários de qualquer lugar do mundo podem
participar e colaborar no mesmo documento
https://www.blogger.com/start?hl=pt-BR http://pt-br.wordpress.com
monetizar
nuvem de tags
é uma representação visual de tags
geradas por usuários
geralmente listadas
em ordem alfabética
e a frequencia é
sinalizada pelo
tamanho ou cor da
fonte;
facilita ao usuário a
encontrar palavras-
chave e a navegar
em um site ou blog;
* Clique aqui e veja como criar sua própria Núvem de Tags...
redes sociais
meio online
o que é twitter?
#hashtags
compartilhar informações Veja hashtags.org e
rápidas: trânsito, eventos, Trending Topics!
palestras e etc.
( )
uma rede social que reúne
pessoas a seus amigos e àqueles
com quem trabalham, estudam e
convivem
“YouTube e Facebook no trabalho
melhoram produtividade, diz estudo”
Saiba mais!
http://www.facebook.com
vejamos . . .
( )
compatilhe e encontre
fotografias e imagens
http://www.flickr.com
vejamos . . .
( )
livros e textos digitalizados
para download
http://www.scribd.com
vejamos . . .
( )
compartilhe suas
apresentações feitas no
Powerpoint ou Openoffice.org
http://www.slideshare.net
em cartaz
http://www.tv1.com.br
apresenta...
Rafinha 2.0
http://www.youtube.com/watch?v=JMRF_ZXms9E
Programação para Internet I
1
HTML
• HTML (HyperText Markup Language):
linguagem de marcação de hipertexto
• Linguagem:
– Bastante utilizada para exibir informações na Web.
– É interpretada pelo navegador
– Descende da linguagem SGML e hoje é derivada da
XML à XHTML
– É uma linguagem declarativa: não há comandos de
decisão, de repetição, declaração de variáveis e de
tipos...
– A finalidade é definir a estrutura de um arquivo (texto)
2
HTML
• Marcação:
Imagens
Cores de fonte
Título destacado
4
HTML
• Marcação (cont.):
– Tags duplas apresentam abertura e fechamento:
<tag>Texto a ser formatado</tag>
– Tags simples apresentam apenas uma tag:
<tag/>
– Tags podem ter ainda outros elementos chamados
atributos:
<tag atributo1="valor1" atributo2= "valor2" ... >Texto a
ser formatado</tag>
<tag atributo1="valor1" atributo2= "valor2" ... />
5
HTML
• Hipertexto:
– é um tipo de texto que possui ligações/referências entre si
7
Passos para criar uma página
1. Abra o editor Notepad++
2. Vá ao menu linguagem e selecione a opção
HTML
3. Na página digite o texto:
Meu nome <br/>
<b> Meu nome</b>
4. Salve o arquivo como meunome.html (na pasta
meus documentos)
5. Visualise-a no browser:
– Abra o arquivo salvo pelo windows explorer
– Ou use as teclas de atalho do Notepad++: Ctrl + Alt
+Shift + x 8
Estrutura básica HTML
• A página HTML anterior está
estruturalmente errada, pois não obedece à
estrutura básica definida no HTML
• Estrutura básica de uma página:
– html: informa que a página contém
código da linguagem html
– head: cabeçalho que contém
identificações de uma página
– title: título da página, aparece na barra
de títulos e nas abas do navegador
– body: contém corpo da página. Nele
aparece todo o conteúdo como texto,
links, imagens, etc
9
Prática 00: “Alô mundo”
<html>
<head> Tags iniciais
<title>
Página do Alô
</title> Tags duplas
11
Dicas
• Ao abrir uma tag dupla, feche-a, assim haverá menos
risco de esquecer-la aberta
• Salve sempre seu trabalho, no Notepad++ há os atalhos:
– Ctrl + s: salva o arquivo na aba principal
– Ctrl + shift + s: salva todos os arquivos abertos no editor
• Antes de usar a complementação do editor ou recursos
avançados de um editor, procure aprender e memorizar
as principais tags
• Faça backup seu trabalho sempre, pois o mesmo pode
ser apagado
• Tenha, sempre que possível, modelos para não começar
o trabalho do zero
• Sempre repita os exercícios que não ficaram bem fixados
12
Prática 01
• Construa uma página HTML com as instruções abaixo:
– Nome do arquivo: dados.html
– Título: Dados pessoais
– No corpo, deve haver as seguintes informações:
Nome: _________________________
Data de nascimento: ______________
Cidade natal: ____________________
Estado: ________________________
E-mail: _________________________
Outras informações: ______________
15
Algumas tags
• <h1></h1> , <h2></h2> , ... , <h6></h6>: cabeçalho (heading).
– Dão destaque aos textos com fontes maiores.
– Quanto maior o número, menor o tamanho do texto
– Usadas tipicamente em títulos.
• <p></p>: parágrafo (paragraph).
– Usado para demarcar um parágrafos em um texto.
• Notas sobre as tags <hn>e <p>:
– A quebra de linha dessas tags são maiores que a da tag <br/>
– O uso dessas tags é aconselhado para títulos e parágrafos, mas não há
regras rígidas de quando usá-las.
Ex: (estrutura básica omitida)
<h2>Dados pessoais</h2>
<p>Nome:</p>
<p>Endereço:</p>
<p>Fone:</p>
16
Prática 02
h1
hr
h2
h3
h4 Nome: exame.html
Título: Exame de vista
h5
h6 17
Tags aninhadas
• Podemos ter mais de uma tag formatando um mesmo objeto:
<p><b>U2</b> - <i>Famosa banda irlandesa</i></p>
• Os blocos de texto em HTML podem conter outros blocos. O
bloco mais interno deverá ser fechado antes do bloco externo:
<h1>Texto <b>muito <i>importante</i></b> para todos</h1>
– De forma bem popular, dizemos que fechamos as tags “de dentro pra
fora”
• Nunca use construções como esta:
18
Prática 03
Nome: dicionario.html
Título: Dicionário de informática 19
Atributos
• Atributos fornecem mais opções de formatação a algumas
tags
• As tags podem ter um ou mais atributos que modificam
alguma propriedade do texto marcado:
<h1 align="center">Texto Centralizado</h1>
• Os atributos são pares do tipo:
propriedade="valor"
• A ordem deles não faz diferença, mas sempre estão na
tag de inicial ou de abertura
• Se um atributo não for reconhecido pelo browser, será
ignorado
20
Alguns atributos
• <hr/>
– width: comprimento. Pode ser um valor numérico ou %
– size: espessura. Pode ser um valor numérico ou %
– color: cor. Valores RGB (Red Gren Blue)
– align: alinhamento. Valores center, left, e right
Ex: <hr width=“50%” color=“#0000ff” align=“right”/>
<hr width=“250” color=“blue” align=“center”/>
• <body></body>
– bgcolor: cor do fundo da página. Valores RGB (acima)
– text: cor do texto da página. Valores RGB (acima)
Ex: <body bgcolor=“darkgray” text=“white”>…</body>
• <p></p>, <hn></hn>
– align: alinhamento. Valores: center, left, right e justify
21
Cores
• Em HTML usamos uma combinação numérica hexadecimal para
expressar as cores: “#rrggbb”
– Usa-se um sustenido (sharp #) antes dos 3 pares de números
– O primeiro par é pra cor vermelha, em seguida outro para a cor
verde e um último para a cor azul
– Para exibir uma cor, deve-se atribuir um valor diferente de 00
– O máximo de uma cor é definido atibuindo-se o valor ff (15)
– Tons intermediários são obtidos combinando-se os valores dos 3
pares de cores
Ex:
– cor azul - cores vermelha e verde “zeradas” e azul no máximo (ff):
<hr color=“#0000ff”/>
– Cor acinzentada:
<hr color=“#808080”/>
22
Cores
• Algumas cores possuem constantes para facilitar o uso:
aqua, black, blue, fuchsia, gray, green, lime, maroon,
navy, olive, purple, red, silver, teal, white, yellow ...
• Link com a listagem de cores no site do W3C:
http://www.w3schools.com/html/html_colors.asp
• Cores por nome: há uma limitação na quantidade de
nomes
• Cores por número: mais difícil de lembrar, porém com
mais opções
23
Prática 04
• Altere as práticas 02 e 03 da seguinte forma:
– Cor do texto: darkblue
– Cor do fundo: #dddddd
– Cor das réguas horizontais: darkblue
• Obs:
– Salve os arquivos alterados com outro nome
– Após completar atividade, verifique outras opções de
valores dos atributos
24
Prática 05
• Crie uma página que simule uma enquete
semelhante à ilustração abaixo:
– Notas:
• O título é uma tag <h3></h3> centralizada
• a barra das opções são tags <hr/> com os atributos de cor,
comprimento e espessura alterados.
• Nome do arquivo e título livres
25
Programação para Internet I
1
Listas
• Há 3 tipos de listas em HTML:
2
Listas
• Listas são blocos em que podemos exibir itens
agrupados
• Os itens podem ser textos, parágrafos, imagens,
outras listas...
• <ul>...</ul>: listas não ordenadas (unordered list):
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
...
</ul>
• Atributo type especifica o formato do marcador.
3
Valores: “circle”, “square”, “disc”
Listas
• <ol>...</ol>: listas ordenadas (ordered list):
<ol>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
...
</ol>
• Atributo type: indica o tipo de ordenação. Valores:
– 1: número arábico
– a: letras minúsculas,
A: letras maiúsculas,
– i: números romanos minúsculos
I: números romanos maiúsculos
• Atributo start: indica o “número inicial” 4
Listas
• Exemplos:
5
Listas
• <dl>...</dl>: lista de definição (definition list)
<dl>
definition term
<dt>Termo 1</dt>
<dd>Definição do termo 1</dd> definition
“description”
<dt>Termo 2</dt>
<dd>Definição do termo 2</dd>
<dt>Termo 3</dt>
<dd>Definição do termo 3</dd>
...
</dl>
6
Prática
1. Modifique a página da Prática (pizza.html)
para utilizar listas não ordenadas nos nomes
das pizzas e listas ordenadas nos 3 links
finais.
8
Fontes
• <font>: permite formatar o tipo, tamanho e a cor
da fonte
• Atributos:
– face: tipo da fonte. Mais comuns: arial, heveltica,
verdana, times, serif, sans-serif , futura, cursive,
fantasy, monospace, georgia.
– size: tamanho. Varia de 1 a 7 ou de –3 a 3
– color: cor definida em hexadecimal no padrão rgb
(vermelho, verde e azul: #2233ff) ou definida pelo
nome (red, blue, navy)
Nota: formatar texto bem como outras
formatações via atributos está em desuso com o
uso de folhas de estilo (CSS)
9
Fontes
• Ex:
<font face = “verdana, arial” size = “5” color =
“#ff0080”> Texto a ser formatado </font>
11
Prática
h2 e fonte arial Todas as fontes e <hr/> da página
com cor marrom
h3 e fonte arial
15
Imagens
Na página index.html:
...
<img src=“quadrado_verde.jpg”/>
...
<img src=“imagens/quadrado_vermelho.jpg”/>
...
<img src=“../quadrado_azul.jpg”/>
...
16
Imagens
• Atributos:
– align: alinhamento
• top, middle e bottom: alinha o texto em relação à imagem
• left, right: alinha a imagem em relação ao que estiver em
volta
– alt: exibe um texto de descrição ou alternativo para a imagem.
É uma recomendação XHTML sempre usá-lo
– border: especifica a largura da borda da imagem em pixels
– height e width : altura e largura. Podem ser valores numéricos
ou %
– vspace e hspace: espaçamento em pixels na vertical e
horizontal que separam a figura do resto do conteúdo
• Ex:
17
<img src=“peixe.png” align=“middle” alt=“Peixe azul” border=“1”/>
Imagens
• Dicas de uso:
– Crie sempre um diretório para suas imagens
– Não perca tempo à toa, observe o nome das imagens:
dog.jpg <> dog.JPG <> dog.png <> dogs.jpg <> dogs.gif
– Não use imagens muito grandes/pesadas
– Caso seja necessário mostrar várias imagens em uma
página, mostre miniaturas das originais como links para as
imagens maiores
– Verifique se a qualidade (quantidade de cores) da imagem
é a ideal. Se for o caso, dê preferência a imagens com 256
cores
– Gifs animados são legais, mas muitos tornam o visual da
página trash
– Quando optar em substituir um texto por uma imagem (ex:
botão de voltar) use uma imagem intuitiva e leve
– Se sua página tem um visual simples com poucas cores
prefira as imagens que tem poucas cores também. 18
Prática
icone_pizza.gif topo.png, largura 100%, altura 5%
19
Prática
• Refaça a atividade da enquete usando imagens
alterando a altura e largura das figuras de 1 píxel
passadas (azul.png, vermelho.png e verde.png).
20
Caracteres de Escape
• Os caracteres "<" e ">", por definirem o início e
final dos descritores, não podem ser impressos
na tela.
• Quando é necessário exibi-los, deve-se usar uma
seqüência de escape.
• Esta seqüência é iniciada por um "&" seguido de
uma abreviação e um ponto-e-vírgula, que indica
o final da seqüência.
• Como o "&" também é caractere especial, há
também uma seqüência para exibi-lo.
21
Caracteres de Escape
Fonte: http://www.icmc.usp.br/ensino/material/html/especiais.html
24
Elementos do head
• Contém informações sobre o conteúdo do documento
para fins de indexação e organização.
• Não contém informação que será exibida na página.
• Title
– <title> é o único elemento obrigatório do bloco do cabeçalho.
– Deve conter o título do documento que aparece fora da página, na
barra de título do browser.
– É o que aparece também nos favoritos.
– O título deve conter informações que descrevam o documento.
<title>HTML e CSS: Introdução</title>
25
Elementos do head
• meta
– <meta> é usado para incluir meta-informação como palavras-chave,
descrições, etc. que podem ser usadas por mecanismos de busca,
softwares de pesquisa e catalogação.
– A informação adicional deve vir nos atributos:
• name - descreve o tipo de meta-informação, por exemplo Keywords.
• content - descreve o conteúdo da meta-informação, por exemplo, uma
lista de palavras-chave separadas por vírgula.
• http-equiv - usado para adicionar ou redefinir cabeçalhos HTTP. Neste
caso, o content deve conter o conteúdo do cabeçalho.
– Exemplos:
<meta http-equiv="set-cookie" content="pag=12"/>
<meta name="keywords" content="html, css, folhas de
estilo, estilo"/>
<meta name="description" content="esta página explica os
fundamentos básicos de html e folhas de estilo usando a
linguagem css."/>
<meta http-equiv="refresh"
content="10;url=pagina.html"/>
26
<meta http-equiv="content-type" content="text/html;
charset=iso-8859-1"/>
Elementos do head
• Link e Script:
– São usadas para vincular uma página a outro recurso.
Ex1: Ligando a um arquivo CSS
28
Linguagens de Marcação
GML (1969)
SGML (1985)
XHTML(1999)
29
Linguagens de Marcação
• GML: Generalized Markup Language.
• SGML: Standard Generalized Markup
Language
• HTML: HyperText Markup Language
• XML: eXtensible Markup Language
• XHTML: eXtensible HyperText Markup
Language
<Descricao>arroz integral</Descricao>
<Marca>Cristal</Marca> Atributos
Atributos
Elemento raiz
<Preco>2,30</Preco>
</Produto>
Elemento
<Descricao>Vinho</Descricao>
<Marca>São Braz</Marca>
<Preco>1,60</Preco>
</Produto>
</Estoque> 31
XML e XHTML
• SGML é muito complexa, então criou-se o XML
com o objetivo de simplificá-la
– XML permite que você crie suas próprias tags e
atributos sujeitas a regras de criação e validação.
• Ex: uma tag dupla deve ter sempre <tag>...</tag>
– XML como metalinguagem define e padroniza
domínios e outras linguagens
• Para padronizar o HTML, criou-se uma nova
especificação chamada XHTML
• Digamos que foi uma mudança de linguagem
silenciosa, pois o conhecimento prévio foi apenas
melhorado e aperfeiçoamento
32
XHTML
• O XHTML, ou eXtensible Hypertext Markup Language, é uma
reformulação da linguagem de marcação HTML 4.01 baseada
em XML
• Objetivos do uso do XHTML: padronizar o HTML tornando-o
“puro”, “claro” e “limpo”
– Com isso, minimizam-se incompatibilidades entre as
implementações
• Para manter compatibilidade, há 3 “níveis” de XHTML:
strict, transitional e frameset
• Seu uso é recomendado como um “Web Standart” da W3C
desde janeiro de 2000
35
XHTML – Algumas convenções
• Tags simples (ou elementos vazios) devem ser
fechados:
– Errado:
<br> <hr> <img src=“carro.gif” alt=“meu carro”>
– Certo:
<br/> <hr/> <img src=“carro.gif” alt=“meu carro”/>
• Atributos devem ser escritos em minúsculo e seus
valores entres aspas (duplas):
– Errado:
<h1 ALIGN=CENTER>...</h1>
– Certo:
<h1 align=“center”>...</h1>
36
XHTML - DOCTYPE
• Os documentos XHTML são iniciados com uma declaração
DOCTYPE (Tipo de Documento)
• Essa declaração especifica que tipo de XHTML está sendo
usando: com ou sem compatibilidade com documentos HTML
antigos
• Há 3 tipos de declaração DOCTYPE:
– strict:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-Strict.dtd">
– transitional:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
– frameset:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 37
XHTML - DOCTYPE
• TRANSITIONAL:
– Mais flexível.
– Indicada para documentos utilizem elementos em desuso,
formatação via atributos e para serem exibidos em browsers
antigos.
– Não admite qualquer tipo de marcação para frames.
• FRAMESET
– Esta declaração permite tudo da declaração transitional e ainda
elementos específicos para frames.
• STRICT:
– Mais rígida.
– Não admite qualquer item de formatação dentro dos elementos e
nem elementos em desuso ("deprecated“).
– São indicados para uso com CSS 38
XHTML - Exemplo
• Abaixo segue um exemplo de como declarar um
XHTML usando o tipo transitional:
1
Links
• Hyperlinks ou simplesmente links conectam /
vinculam / ligam / apontam páginas e outros
recursos na WEB
• São a razão de ser do hipertexto, pois nos
permitem “navegar” pela WEB
• Para criar links em HTML são necessárias 3
coisas:
– O endereço ou referência para onde o link deve
“apontar”
– Algum texto ou imagem que descreva o link
– O uso da tag <a>...</a> (anchor) que cria uma ligação e
pode ser “clicada”
2
Links
Navegação horizontal: entre páginas
Página11
Página Página22
Página
páginas e/ou entre outros objetos Link Link
Link Link
(arquivos texto, imagens, etc).
Página33
Página
Link Link1
Link1
Link Link2
Link2
#destino
#destino
Navegação vertical:
Página22
Página vínculo dentro de uma
Página11 página (não necessariamente
Página
Link
Link a mesma).
#destino
#destino 3
Links
• <a href=“url”> Descrição do link </a>
– <a>..</a> cria uma ligação e pode ser “clicada”
– href é o endereço, caminho ou referência para onde o link
deve “apontar”
– href semelhante ao atributo src da tag <img/>. Caso o
endereço seja absoluto, lembre-se de usar sempre o
http://
– Entre as duas tags temos um texto de descrição. Pode ser
outra construção HTML
• Ex. de links usando endereços absolutos:
– <a href=“http://www.greenpeace.org.br/ ”>Green Peace</a>
Endereço absoluto para uma página na WEB
8
Prática
• Crie uma página chamada cursos.html semelhante à
página abaixo usando links com navegação vertical para
navegar pelos 4 cursos e subir a página para o topo
9
Prática
• Modifique a página pizza.html para utilizar links:
– Na seção: fontes, transforme os links enumerados em
links normais
– Na seção de tipos, faça com que cada um dos tipos seja
um link para a imagem ampliada da pizza (presentes no
diretório indicado).
– Transforme em link também o endereço na parte inferior
da página (http://www.pizzaonline.com.br)
– Modifique as cores dos links (normal, visitado e ativado)
para a cor marrom
11
Tabelas
• Tabelas definindo o layout:
cabeçalho
conteúdo
rodapé
<html>
....
<table border = "1">
<tr>
<td>linha 1, coluna 1</td>
<td>linha 1, coluna 2</td>
</tr>
<tr>
<td>linha 2, coluna 1</td>
<td>linha 2, coluna 2</td>
</tr>
</table>
....
</html>
14
Tabelas
• <table>: tag dupla que define a tabela. Principais
atributos:
– bgcolor: cor de fundo da tabela
– border: largura da borda em pixels.
– width e height: largura e altura da tabela em pixels ou %.
– align: alinha a tabela em relação ao navegador. Valores:
“center”, “left”, “right”
– background: imagem como “preenchimento” da tabela.
– cellspacing: distância em pixels entre a borda e o conteúdo
– cellpadding: distância em pixels entre as borda de células
adjacentes
15
Tabelas
• <tr>: tag dupla que define uma linha dentro de
<table>.
• Principais atributos:
– valign: alinhamento vertical. Valores: “top”, “middle”,
“bottom”
– align, bgcolor, width, height, background: mesmos
valores de <table>
• <td>: tag dupla que define uma coluna dentro de
<tr>. Podem–se ter várias colunas dentro de uma
linha.
• Principais atributos:
– align, valign, bgcolor, width, height, background: os
16
mesmos valores da tag <table>
Tabelas
• Exemplo:
17
Prática
• Altere a página pizza.html trocando as listas dos
sabores por uma tabela com as seguintes
formatações:
– Duas linhas e quatro colunas
– Cellspacing e cellpadding: 10 pixels
– Alinhamento centralizado
18
Prática
• Altere a página pizza.html para que seu conteúdo esteja
envolvido em uma tabela com:
– 3 linhas
– Alinhamento centralizado
– Largura de 80%
– Cellspacing e cellpadding de 10 pixels
– Cor de fundo branca
• A imagem do topo deve ficar em uma célula (sugestão:
mude a imagem para a imagem topo1.jpg)
• O conteúdo deve ficar na linha do meio
• A última linha deve conter o rodapé (www.pizzao
nline.com.br)
• Coloque como fundo do body a imagem fundo_listras.jpg
Linha 2,
coluna 1 fundo_listras.jpg
(corpo)
Linha 3,
coluna 1
20
(rodapé)
Tabelas
• Pode ser necessário expandir uma célula ocupando o
local de outras
• Essa combinação, expansão ou mesclagem de células é
obtida usando-se os atributos colspan e rowspan da tag
<td>
Ex:
21
Tabelas
• colspan (column span): faz com que uma célula ocupe o
um número de células especificado. As células que forem
ocupadas pela expansão devem ser retiradas.
22
Tabelas
• rowspan: faz com que uma célula se expanda por linhas
ao invés de colunas.
23
Tabelas
• Crie um arquivo chamado automoveis.html e nele crie
uma tabela semelhante à tabela abaixo com células
mescladas:
24
Formulários
25
Formulários
• Metáforas baseadas nos formulários de papel para
preenchimento de inscrições, pedidos, cadastros
• São responsáveis pela interação entre um usuário e o
servidor
• O resultado do preenchimento de um formulário é o
envio dos dados para um servidor que suporte
programação para a web dinâmica
[email protected]
senha=drr&822K
Loginok!
Login ok!
26
servidor
Formulários
• Alguns campos/componentes de formulários são:
– Texto (text):
– Senha (password):
– Texto longo (textarea):
– Botões (buttons):
– Campos ocultos 27
Formulários
• Criando formulários
<html>
....
<form action = “http://...” method = “post”>
Campos
ou componentes
</form>
....
</html> 28
Formulários
• <form>: tag dupla que deve “envolver” todos os
campos. Principais atributos:
– action: URL da página do script que executará a “ação”
• Ex: www.teste.com.br/cadastro.php
– method: especifica como os dados dos formulários são
passados para a página de scripts. Valores:
• get : dados são concatenados com a url.
Ex:
www.teste.com.br/cadastro.php?nome=ely&cod=
3rt55W
• post: dados são enviados no corpo do formulário na
mensagem HTTP
29
Formulários - Texto e de senha
• <input/>: tag simples que define uma entrada de
dados. Principais atributos:
– name: nome da caixa de texto
– type: identifica o tipo de entrada. Valores: text para texto
simples e password para campos de senha
– maxlength: número máximo de caracteres possíveis do
campo
– value: valor inicial (opcional)
• Ex:
<form>
Nome: <input type= “text” name = “txt_nome” maxlength=
“20” value= “Digite seu nome aqui”/> <br/>
Senha: <input type= “password” name = “pwd_senha”
maxlength= “10”/> 30
</form>
Formulários - Múltipla escolha
• <input/>: novamente uma tag input. Atributos:
– name: nome do campo
– type: deve ser checkbox
– value: Valor do campo (obrigatório)
– checked: define se o checkbox está marcada
• Ex:
<form ...>
<input type = “checkbox” name = “ckb_hobbies” value =
“pescar” />Pescar <br/>
…
<input type = “checkbox” name = “ckb_hobbies” value =
“dancar” checked = “checked”/>Dançar
</form> 31
Formulários - Escolha única
• <input/>: novamente uma tag input. Atributos:
Marcando um,
– name: nome do campo o outro é desmarcado
– type: deve ser radio
– value: valor do campo (obrigatório)
– checked: define se a seleção está marcada
• Ex: Funcionam em conjunto
se tiverem o mesmo valor
<form action = “” method = “post”> para o atributo name
<input type= “radio” name= “rdb_sexo” value=
“m”/>Masculino<br/>
<input type= “radio” name= “rdb_sexo” value=
“f”/>Feminino<br/>
</form> 32
Formulários – Texto longo
• Texto longo ou com várias linhas
• <textarea>: Tag dupla. Atributos:
– name: nome do campo
– rows: número de linhas
– cols: número de colunas (caracteres por linha)
• Ex:
<form action = “” method = “post”>
<textarea cols = “100” rows = “5” name = “txt_comentarios”>
Digite aqui seu comentário
</textarea>
</form> 33
Formulários - Caixas de seleção
• <select> : tag dupla que representa um contêiner de opções. Seu
padrão é no formato combo-box. Atributos:
– name: nome do campo
– size: caso seja maior que 1 o componente será exibido em forma
de lista
• <option/> : tag simples que representa cada item.
– selected: define se a “seleção está selecionada”
– value: o valor de cada option.
• Ex: (tag form omitida)
<select name = “slt_estado”>
<option value = “ce”> Ceará </option>
…
<option value = “pi” selected = “selected”> Piauí</option>
</select>
34
Formulários – Botões de ação
• <input> novamente uma tag input. Atributos:
– name: nome do campo
– type: deve ser submit para enviar ou reset para restaurar
o estado original dos campos do formulário
– value: Texto que é exibido no botão
• Ex:
<form action = “” method = “post”>
<input type= “submit” name = “btn_entrar” value =
“Entrar”/>
<input type= “reset” name = “btn_limpar” value =
“Limpar”/>
</form>
35
Formulários: id x name
• O atributo name dos campos de formulário está
em desuso
• Atualmente usa-se um atributo id com valor igual
ao do atributo name sob a recomendação
XHTML
• O atributo id é muito utilizado como identificador
único e é usado em outros WebStandards
• Por motivos didáticos, foi omitido o uso do id,
mas quando estivermos utilizando JavaScript
faremos um uso mais intenso desse atributo
36
Prática
• Crie uma página para cadastros de leitores do
Pizza On Line conforme a ilustração abaixo e
coloque um link para a mesma na página
pizza.html
• Use o layout em tabelas e a figura de fundo da
página fundo_listras.jpg
• Atente aos outros detalhes como cores e figuras e
demais imagens
• Seja criativo, ouse!!!
38
Prática
• Ilustração sem bordas:
39
Prática
• Crie uma página chamada busca.html e nela crie um
formulário para realizar uma busca no Google.
• Configuração do formulário(valores que o google exige):
– action = "http://www.google.com/search"
– method = "get"
– Caixa de texto com o nome: “q”
– Atributos do Input Pesquisar na WEB: id="all", name="lr"
– Atributos do Input Pesquisar Páginas em Português: id="il",
name="lr", value="lang_pt"
• Os demais detalhes podem ser personalizados
• Ilustração no próximo slide
40
Prática
41
HTML 5
• Transição do XHTML
• A semelhança entre o HTML 5 e seus antecessores,
HTML 4.01 e XHTML 1.0, é muito grande.
Introdução ao CSS
1
Estrutura de páginas
• O código em uma página pode ser concebido em
três visões/camadas distintas:
– Estrutura e conteúdo: HTML
– Formatação/Apresentação: CSS
– Comportamento: JavaScript
2
Estrutura de páginas
3
CSS
• Cascading Style Sheets (folhas de estilos em cascata)
• Padronizado pelo W3C (World Wide Web Consortium)
• Permitem formatação “fora” do HTML: muda-se o estilo da
página, porém o HTML fica o mesmo
• Principais vantagens:
– páginas mais flexíveis
– mais leves
– maior controle do seu aspecto gráfico com maior
precisão
– melhor manutenção
– maior facilidade na correção de erros
• Um ótimo site sobre CSS:
– http://www.maujor.com/index.php
4
Dois arquivos separados
• Usaremos dois arquivos texto:
– Um com HTML com extensão .html
– Outro com CSS com extensão .css
• Haverá ainda uma tag HTML que “unirá” os
arquivos
.css .html
<link..../>
formatação estrutura 5
Juntando HTML + CSS
• <link/> : tag simples que fica dentro da seção
<head></head> que “unirá” um arquivo CSS a
um arquivo HTML. Atributos:
– rel : diz a que conteúdo a tag é relativa. No nosso caso
será sempre o valor stylesheet
– type : define o tipo de conteúdo. No nosso caso será
sempre o valor text/css
– href : define a URL onde está o CSS. A grosso modo é
o nome do arquivo CSS. No nosso caso,
padronizaremos que o nome do arquivo CSS vai ser o
mesmo do arquivo HTML.
• Ex: Página teste.html à teste.css 6
Juntando HTML + CSS
• Ligação com o arquivo HTML através de uma tag
<link/> supondo que uma página com o nome
teste.html:
...
<head>
<title>teste de uso de css</title>
<link rel="stylesheet" type="text/css”
href=“teste.css"/>
</head>
...
7
Sintaxe CSS
• A sintaxe das definições CSS é composta por três partes:
seletor, uma declaração e valor
• Sintaxe básica: seletor { propriedade: valor; }
– Seletor: inicialmente, é o elemento HTML identificado por sua tag.
Posteriormente veremos que o seletor pode ser uma classe ou um ID
– Propriedade: é um atributo do elemento HTML ao qual será aplicada
a regra (ex: font, color, background, etc...)
• Nota: dificilmente o atributo em CSS terá o mesmo nome do atributo no
HTML
– Valor: é a formatação específica a da propriedade (ex: fonte arial, cor
azul, alinhamento ao centro, etc...)
Ex: formatar as tags <h1> com cor verde, alinhadas ao centro, fonte de
12 píxels e família verdana
h1 {color: green;}
teste.css h1 {font-size: 12px;}
h1 {text-align: center;} 8
h1 {font-family: verdana;}
Sintaxe CSS
• Escreve-se o seletor e, entre chaves { }, a propriedade e
valor separados por dois pontos e entre chaves.
• Quando mais de uma propriedade for definida na regra,
podemos compactá-la usando ponto-e-vírgula para
separá-las.
h1 {
h1 {color: green;} color: green;
h1 {font-size: 12px;} font-size: 12px ;
h1 {text-align: center;} text-align: center;
h1 {font-family: verdana;} font-family: verdana;
}
9
Prática
• Altere o arquivo exame.html para usar CSS tendo com
características:
– Todas as tags <hn></hn> tenham fonte arial
– O título esteja centralizado
– As tags <h3></h3> até <h6></h6> tenha uma cor distinta
10
Definindo classes
• Podemos definir classes diferentes para um determinado
elemento/seletor HTML
• Podemos criar um nome e com ele criar uma classe a
qual definirá as regras CSS
Ex:
p.titulo {font-size: 20px; text-align: center; font-family: arial;} CSS
p.subtitulo {font-size: 12px; font-family: verdana;}
<p class=“verde”>...</p>
<h3 class=“verde”>...</h3>
<table class=“verde”>...</table>, etc.
p { font-family: arial; }
h1 { font-family: arial; }
h2 { font-family: arial; }
h3 { font-family: arial; } p,h1,h2,h3,h4,h5,h6 { font-family: arial; }
h4 { font-family: arial; }
h5 { font-family: arial; }
h6 { font-family: arial; }
13
Herança com tags aninhadas
• Quando uma tag superior possui uma formatação
CSS, as tags de “dentro” herdam as definições:
<body>
<p>…</p>
<h1>…</h1>
</body>
14
Estilos em “cascata”
15
Seletor ID
• Um seletor ID só deve ser aplicado a uma única tag HTML
dentro do documento
• Seu uso assemelha-se ao uso de classes
• Sintaxe: #nomeID { propriedade: valor; }
• Ex:
#titulo {font-size: 20px; text-align: center; font-family: arial}
CSS
#subtitulo {font-size: 10px; font-family: verdana}
17
Prática
• Crie uma página chamada imagine.html e use CSS para deixá-
la conforme a figura abaixo e as instruções do próximo slide:
1
2
6
18
Prática
1: h2 com fonte arial, cor maroon e tamanho padrão (ou
seja, não modifique)
2, 3, 4, 5 e 6: são parágrafos
2. e 3. possuem a mesma formatação: fonte arial, cor
maroon e tamanho 12px
4. e 6. possuem formatação dos itens 2. e 3. e
alinhamento centralizado
5. Mesma formatação dos itens 2. e 3. e alinhamento à
direita
Note que todos os itens tem a mesma cor de fonte e tipo
de fonte (arial) e alguns possuem poucas diferenças...
19
Prática
1
3 2
5 20
Prática
1: h3 com fonte arial e cor #007e7e
2: tags hr
3: h4 com fonte arial e cor #007e7e
4: parágrafos com fonte arial e cores: verde, azul,
roxo (purple) e marron (maroon)
5: parágrafo com cor cinza, fonte arial e
centralizado
Introdução ao CSS
1
Span
• <span>...</span> : é uma tag “neutra” e que não
adiciona qualquer tipo de semântica ao documento
– deve ser usada com blocos de texto quando não for
necessária a quebra de linha
– é considerada “inline” pois não possui quebras de linhas.
– pode usada dentro de outras tags para obter efeitos
específicos.
• Ex:
Esta frase se contradiz...não, na verdade, ela não o faz...
3
Formatação de textos e fontes
• font-size: já conhecido
• color: já conhecido
• text-align: left | center | right | justify
– Define o alinhamento do texto
Texto justificado
• text-indent: número | porcentagem
– Quando usado em parágrafos, realiza a
indentação da primeira linha pra direita.
• font-style: italic
– Texto exibido em itálico
• font-weight: bold
– Texto exibido em negrito
4
Formatação de textos e fontes
• text-transform: capitalize | uppercase | lowercase
– capitalize: coloca em maiúsculo a 1ª letra de cada
palavra
– uppercase: todas as letras em maiúsculo
– lowercase: todas as letras em minúsculo
• text-decoration: underline | overline | blink | line-
through
– underline: texto sublinhado
– overline: linha sobre o texto (sobrelinhado?)
– line-through: texto tachado
5
Formatação de textos e fontes
• Ex: Arquivo CSS
6
Formatação de textos e fontes
• Ex: Arquivo HTML
7
Prática
• Altere a página imagine.html para que fique
semelhante à figura abaixo:
9
Listas com imagens
• list-style-image: url(url_da_imagem)
– Coloca uma imagem como marcador da lista
– Ex:
Supondo que a imagem seta_azul.gif esteja em um
diretório relativo imagens
list-style-image: url(imagens/seta_azul.gif)
10
Listas
11
Listas
12
Formatação de fundos
• background-color: define a cor de fundo de uma tag
– Valores: nome da cor | #cor_hexadecimal | rgb(%, %, %) |
rgb(0-255, 0-255, 0-255)
• Ex. no css: Variação de 0 a 255
.fundo_azul {background-color: dodgerblue;}
.fundo_cinza {background-color: #808080;}
.fundo_vermelho {background-color: rgb(100%, 0%, 0%);}
.fundo_teal {background-color: rgb(0, 128, 128);}
• Ex. no HTML:
...
<body class="fundo_azul">
<p class="fundo_vermelho">Fundo vermelho</p>
<h4 class="fundo_cinza">Fundo cinza</h4>
<i class="fundo_teal">Fundo teal</i>
</body> 13
...
Formatação de fundos
• background-image: define imagens de fundo para um
elemento
– Valor: url(“URL_da_imagem”)
• background-repeat: define como uma imagem carregada
vai se repetir. Valores:
• repeat-x: repete a imagem nos eixos x
• repeat-y: repete a imagem nos eixos y
• repeat: repete a imagem nos eixos x e y (padrão)
• no-repeat: não repete a imagem
• background-attachment: define se o fundo irá ou não se
mover com o texto ou ficar fixo na tela
– Valores: fixed e scroll
14
Formatação de fundos
• background-position: define a posição da imagem de
fundo
• Os valores são fornecidos aos pares com para x e y
separados por espaço
• Valores:
– background-position: porc_horizontal% porc_vertical%
background-position: comprimento comprimento
– background-position: posição_horizontal posição_vertical
posição_horizontal : left, center, right
posição_vertical: top, bottom, center
body {
padding: 0;
Margem interna
margin: 0; Margem externa
Altura
height: 100%;
}
16
Prática
3.
1. 2.
4.
5.
Nota: toda a página possui fonte do tipo arial
1. Imagem simples com a figura ff.jpg (nada no CSS, apenas HTML)
2. Fundo com a figura fundo_final.jpg
3. h1 com as formatações: alinhado à direita, e cor de fundo #ccbb99
4. Parágrafo: cor do texto ccbb99, alinhamento justificado, negrito e endentação
de 5% 17
5. h6 com as formatações: fonte em itálico e cor de fundo #ccbb99
Prática
Final Fantasy: The Spirits Within
Final Fantasy: The Spirits Within conta a história de uma
Terra infestada de alienígenas no ano de 2065. Os
humanos vivem em "cidades barreira", todos numa
tentativa de livrar o planeta dos Phantoms (que significa
Fantasmas), uma misteriosa raça alienígena. A única
esperança vem da cientista Aki Ross e de seu mentor, Dr.
Sid, que tem um plano de destruir os Phantoms sem
causar danos ao planeta, mas um general chamado
Hein está determinado à usar o canhão espacial "Zeus"
para destruir os Phantoms - mesmo que isso cause danos
à Terra no processo.
Copyright 2007 SQUARE ENIX CO., LTD. All Rights
Reserved.
18
Prática
1.
2.
3.
1. Corpo da página:
· fundo preto;
· imagem de fundo: fundo_neo.jpg;
· repetição do fundo: somente no eixo y;
· posição do fundo: na horizontal temos alinhamento à direita, na vertical pode
ficar vazio;
2. Tabelas com as 4 fotos: largura de 100% ( a tabela de baixo tem20as
imagens em outras posições);
Prática
3. h2 contendo o texto “What is the Matrix?”:
· fonte arial, cor branca e em itálico;
· fundo com a figura fundo_matrix.jpg;
· largura de 88%;
· o h2 da parte de baixo possui alinhamento à direita;
4 Parágrafos com o texto:
· fonte verdana, tamanho 12px e cor lightgreen;
· endentação de 50px;
· alinhamento justificado;
· largura de 88%;
• Nota: use a declaração width no CSS para dar a largura
especificada nas construções dos parágrafos, tabela e
h2 acima:
Ex:
h6 {... ; width = “88%”; ... ; } 21
Prática
What is the Matrix?
Matrix tem como tema a luta do ser humano, por volta do ano de 2200, para se
livrar do domínio das máquinas que evoluíram após o advento da inteligência
artificial. A humanidade cobriu a luz do sol para cortar o suprimento de
energia das máquinas, mas elas perceberam que cada ser humano produz,
em média, 120 volts de energia elétrica, e começaram a cultivá-los como
fonte de energia. Para que o cultivo fosse eficiente, os seres humanos
passaram a receber programas de realidade virtual, enquanto seus corpos
reais permaneciam mergulhados em habitáculos nos campos de cultivo. Essa
realidade virtual, que é um programa de computador ao qual todos são
conectados, chama-se matrix e simula a humanidade do final do Século XX.
Há, porém, perto do calor do centro da terra, uma última cidade de seres
humanos livres, que mandam missões em naves para combater as máquinas.
O líder de uma dessas missões é Morpheus, um visionário que vislumbra em
um dos habitantes da matrix o "escolhido", que vem a ser Neo, vivido por
Keanu Reeves.
Neo é resgatado de seu casulo, sacado da ilusão da realidade virtual e passa
a ser treinado por Morpheus. Em sua saga, Neo atinge o status de escolhido,
no sentido messiânico da palavra, ao ressuscitar e conseguir, dentro da
própria matrix, controlar o programa e derrotar os mecanismos anti-virus,
personalizados por agentes vestidos de terno e óculos escuros. Do ponto de
vista do programa, os humanos livres são os vírus do planeta terra.
What is the Matrix?
22
Programação para Internet I
Introdução ao JavaScript
1
Introdução
• O código em uma página pode ser concebido em
três visões distintas:
– Estrutura e conteúdo: HTML
– Apresentação: CSS
– Comportamento: JavaScript
• Vantagens:
– Reuso de partes do projeto
– Modularidade
– Flexibilidade e facilidade de manutenção
– Legibilidade
– ….
2
Introdução
• As 3 visões de concepção de uma página nos
dão a visão em camadas, em vez de um código
“macarronado” ou “remendado”
3
Características
• É uma linguagem poderosa, com sua utilização
do lado cliente (browser)
• É uma linguagem de scripts que permite
interatividade nas páginas web
• É incluída na página HTML e interpretada pelo
navegador
• É simples, porém pode-se criar construções
complexas e criativas
• JavaScript não é Java. São linguagens com
aplicações e recursos totalmente distintos
4
Algumas coisas que se pode fazer com JS
• Validar entrada de dados em formulários: campos
não preenchidos ou preenchidos incorretamente
poderão ser verificados
• Realizar operações matemáticas e computação
• Abrir janelas do navegador, trocar informações
entre janelas, manipular com propriedades como
histórico, barra de status, plug-ins, applets e
outros objetos
• Interagir com o conteúdo do documento tratando
toda a página como uma estrutura de objetos
• Interagir com o usuário através do tratamento de
eventos
5
Algumas bibliotecas
• Prototype: http://www.prototypejs.org/
• script.aculo.us: http://script.aculo.us/
• Yahoo! User Interface Library (YUI):
http://developer.yahoo.com/yui/
• Dojo: http://dojotoolkit.org/
• jQuery: http://jquery.com/
• MooTools: http://mootools.net/
6
Formas de uso
• Dentro próprio código HTML:
<a href="#" onclick="alert('alo mundo!')">Diga alô</a>
• Separado em uma tag de script (preferencialmente
dentro da tag <head></head>):
<script type="text/javascript">
alert("alow mundo");
</script>
• Mais separado ainda dentro de um arquivo “texto”
com extensão .js sendo chamado por uma tag
script:
<script type="text/javascript" src="script.js"></script>
7
Dois arquivos separados?
• Usaremos dois arquivos texto:
– Um com HTML com extensão .html
– Outro com JavaScript com extensão .js
– Haverá ainda uma tag HTML que “unirá” os arquivos
.js .html
<script>..</script>
comportamento estrutura 8
Alô mundo - versão 1
<html>
<head>
<title>Alo mundo!</title>
<script type="text/javascript” >
alert("Alo mundo!");
</script>
</head>
<body>
...
</body>
</html> 9
Alô mundo – versão 2
...
<head>
<title>Alo!</title>
<script type="text/javascript” src = “alomundo.js”>
</script>
</head>
...
alomundo.html
alert("alo mundo");
alomundo.js
10
Sintaxe
• Tudo é case-sensitive, ou seja: teste é diferente
de Teste
• Construções simples: após cada instrução,
finaliza-se utilizando um ponto-e-vírgula:
Instrução1;
Instrução2;
• Ex:
alert("alo");
alert("mundo");
11
Sintaxe
• Comentários de uma linha:
alert("teste"); // comentário de uma linha
var cidades = [ ];
cidades[0] = "Parnaíba";
cidades[1] = "Teresina";
cidades[2] = "LC";
alert("A capital do Piauí é " + cidades[1]); 15
Alguns tipos
• Tamanho de um array: usamos a propriedade
length do próprio array
alert(cidades.lenght);
• Último item de um array:
alert(cidades[cidades.lenght-1]);
16
Alguns tipos
• Arrays associativos:
– baseados também na idéia array[indice] = valor
– O índice/chave de um array associativo é geralmente
uma string
var idades = [];
idades["ely"] = 29;
idades["jose"] = 48;
idades["maria"] = 20;
alert("Minha idade é: " + idades["ely"]);
17
Alguns tipos
• Lógico: tipo que pode ter os valores true ou false
var aprovado = true;
alert(aprovado);
18
Operador de tipos
• typeof: inspecionar o tipo de uma variável ou
valor:
var a = "teste";
alert( typeof a); // string
alert( typeof 95.8); // number
alert( typeof 5); // number
alert( typeof false); // boolean
alert( typeof true); // boolean
alert( typeof null); // object
var b;
alert( typeof b); // undefined
19
Operador de tipos
• Utilizando typeof podemos ter os seguintes
resultados:
– undefined: se o tipo for indefinido.
– boolean: se o tipo for lógico
– number: se for um tipo numérico (inteiro ou ponto
flutuante)
– string: se for uma string
– object: se for uma referência de tipos (objeto) ou tipo
nulo
20
Estruturas de decisão – if e else
• Sintaxe:
if (condição) {
código da condição verdadeira;
}
else {
código da condição falsa;
}
simboliza um início/begin
representa um fim/end 21
Operadores condicionais e lógicos
A é igual a B
A é diferente
de B
• && : and
• || : or var idade = 17;
if (idade >= 16 && idade < 18) {
• ! : not alert("voto facultativo");
} 22
Estruturas de decisão – if e else
if (navigator.cookieEnabled) {
alert("Seu navegador suporta cookies");
} else {
alert("Seu navegador não suporta cookies");
}
23
Estruturas de decisão – Switch
switch (expressão) {
case valor 1:
//código a ser executado se a expressão = valor 1;
break;
case valor 2:
//código a ser executado se a expressão = valor 2;
break;
...
case valor n:
//código a ser executado se a expressão = valor n;
break;
default:
//executado caso a expressão não seja nenhum dos valores;
}
24
Estruturas de decisão – Switch
var idade = 20;
switch (idade) {
case 29:
alert("Você está no auge.");
break;
case (40) :
alert("A vida começa aqui.");
break;
case (60) :
alert("Iniciando a melhor idade.");
break;
default:
alert("A vida merece ser vivida, não importa a idade.");
break;
} 25
Janelas de diálogo - Confirmação
• Nos permite exibir uma janela pop up com dois botões: ok
e cancel
• Funciona como uma função:
– Se o usuário clicar em ok, ela retorna true; em cancel retorna
false
• Ex:
var vegetariano = confirm("Você é vegetariano?");
if (vegetariano == true) {
alert("Coma mais proteínas");
}
else {
alert("Coma menos gordura");
}
26
Janelas de diálogo - Prompt
• Nos permite exibir uma janela pop up com dois botões (ok
e cancel) e uma caixa de texto
• Funciona como uma função: se o usuário clicar em ok e
prencher a caixa de texto, ela retorna o valor do texto;
em cancel retorna null
• O segundo parâmetro pode ser preenchido como uma
sugestão
• Ex:
var email = prompt("Digite seu e-mail","");
alert("O email " + email + " será usado para spam.");
27
Janelas de diálogo - Prompt
• O que lemos da janela prompt é uma string
• Podemos converter strings para inteiro utilizando
as funções pré-definida parseInt e parseFloat
• parseInt(valor, base): converte uma string para
inteiro.
– O valor será convertido para inteiro e base é o número
da base (2,10,16…)
• parseFloat(valor): converte uma string para um
valor real/ponto flutuante
28
Janelas de diálogo - Prompt
• Ex:
var notaStr = prompt("Qual a sua nota?","");
var trabStr = prompt("Qual o valor do trabalho?","");
var nota = parseFloat(notaStr,10);
var trab = parseFloat(trabStr,10);
nota = nota + trab;
29
Estruturas de repetição - for
• Executa um trecho de código por uma quantidade
específica de vezes
• Sintaxe:
for (inicio; condicao; incremento/decremento) {
//código a ser executado.
}
• Ex:
var numeros = [1, 2, 3, 4, 5];
for (var i = 0; i < numeros.length; i++) {
numeros[i] = numeros[i]* 2;
document.write(numeros[i] + "<br/>");
} 30
Expressões compactadas
• Em JS podemos utilizar formas “compactada”
instruções:
numero = numero + 1 equivale a numero++
numero = numero - 1 equivale a numero--
numero = numero + 1 equivale a numero += 1
numero = numero - 1 equivale a numero -= 1
numero = numero * 2 equivale a numero *= 2
numero = numero / 2 equivale a numero /= 2
31
Exercícios
• Elabore scripts usando a função prompt que:
– Leia um valor e imprima os resultados: “É maior que
10” ou “Não é maior que 10” ou ainda “É igual a 10”
– Some dois valores lidos e imprima o resultado
– Leia 2 valores e a operação a ser realizada (+, -, * ou /)
e imprima o resultado (use um switch)
– Leia um nome e um valor n e imprima o nome n vezes
usando o laço for
32
Estruturas de repetição - while
• Executa um trecho de código enquanto uma
condição for verdadeira
• Sintaxe:
while (condicao) {
//código a ser executado
}
Ex:
var numero = 1;
while (numero <= 5) {
alert("O número atual é: " + numero);
numero = numero + 1;
}
33
Estruturas de repetição – do…while
• Executa um trecho de código enquanto uma condição for
verdadeira
• Mesmo que a condição seja falsa, o código é executado
pelo menos uma vez
• Sintaxe:
do {
//código a ser executado.
} while (numero <= 5) ;
Ex:
var numero = 1;
do {
alert("O número atual é: " + numero);
numero = numero + 1;
} while (numero <= 5) ;
34
Funções
• Funções são blocos de código reutilizáveis.
• Elas não são executadas até que sejam chamadas
• Podem ter parâmetros de entrada e de saída
• Podemos ter vários parâmetros de entrada separados por
vírgulas
• Podemos retornar um valor através da instrucao return
35
Funções
• Sintaxe:
function nomeDaFuncao() {
//códigos referentes à função.
…
}
function nomeDaFuncao(p1, p2, p3, ...) {
//códigos referentes à função.
…
}
function nomeDaFuncao(p1, p2, p3, ...) {
…
return p1+p2-p3;
…
}
36
Funções
• Ex. 1:
...
<a href = "#" onclick = "alo();">Chamar a função</a>
…
alomundo.html
function alo() {
alert("Link clicado!"); alomundo.js
}
37
Funções
• Ex. 2:
...
<form>
<input type = “button" value = "Chamar função" onclick = "alo();"/>
</form>
…
alomundo.html
function alo() {
alert("Link clicado!");
} alomundo.js
38
Funções
...
<form>
<input type = “button" value = "Chamar função"
onclick = “saudacao('jose');"/>
</form>
…
saudacao.html
function saudacao(nome) {
alert("Olá, " + nome); saudacao.js
}
39
Funções
...
<form>
<input type="text" name="txtNome" id = "txtNome"/>
<input type="button" name="btn_saudacao"
onclick = “saudacao(document.getElementById('txtNome').value);"
</form>
…
...
<form name = "frm">
<input type="text" name="txtNome"/>
<input type="button" name="btn_saudacao"
onclick = “saudacao(frm.txtNome.value);"/>
</form>
… 40
Funções
soma.js
function soma(v1, v2) {
document.write(v1 + v2);
}
41
Eventos
• São reações a ações do usuário ou da própria
página
ou:
• São ocorrências ou acontecimentos dentro de
uma página. Ex:
– Carregar uma página;
– Clicar em um botão;
– Modificar o texto de uma caixa de texto;
– Sair de um campo texto;
– etc;
42
Eventos
• onclick: ocorre quando o usuário clica sobre
algum elemento da página
...
<a href = "#" onclick = "alo();">Chamar a função</a>
…
...
<body onload = "bemvindo();" onunload = "adeus();">
…
43
Eventos
function bemvindo() {
alert("Seja bem vindo.");
}
function adeus() {
alert("Obrigado pela visita.");
}
44
Eventos
• onmouseover: é acionado quando o mouse se
localiza na área de um elemento
• onmouseout: ocorre quando o mouse sai da
área de um elemento
...
<a href = "#" onmouseover = "mouseSobre();"
onmouseout = “mouseFora();">
Passe o mouse
</a>
…
45
Eventos
function mouseSobre() {
var divResultado = document.getElementById("resultado");
divResultado.innerHTML = divResultado.innerHTML +
"mouse sobre.<br/>";
}
function mouseFora() {
var divResultado = document.getElementById("resultado");
divResultado.innerHTML = divResultado.innerHTML +
"mouse fora.<br/>";
}
46
Eventos
• onsubmit: usado para chamar a validação de um
formulário (ao enviar os dados)
• Para validar um formulário, chamamos uma função por
nós definida:
– Ao chamar a função, usamos a palavra reservada return
• A função, por sua vez, deve retornar true ou false,
representando se os dados devem ou não serem
enviados. Ex:
<form name="frmBusca"
action="http://www.google.com/search"
method="get" onsubmit = "return validaCampo()">
Termo: <input type="text" name="q" id = "q" />
<input type="submit" name="btnBuscar" value="Buscar"/>
</form> 47
Eventos
function validaCampo() {
var valor = document.getElementById("q").value;
48
Eventos
• onfocus: ocorre quando um controle recebe o
foco através do mouse ou do teclado
• onblur: ocorre quando um controle perde o foco
…
<input type="text" name="txt1" id = "txt1"
onfocus = "trataEntrada('txt1')"
onblur = "trataSaida('txt1')"/>
<input type="text" name="txt2" id = "txt2"
onfocus = "trataEntrada('txt2')"
onblur = "trataSaida('txt2')"/>
…
49
Eventos
function trataEntrada(id) {
var div = document.getElementById("resultado");
div.innerHTML = div.innerHTML + id +" ganhou o
foco.<br/>";
}
function trataSaida(id) {
var div = document.getElementById("resultado");
div.innerHTML = div.innerHTML + id +" perdeu o
foco.<br/>";
}
50
Eventos
• onkeydown e onkeypress: são semelhantes e
ocorrem quando uma tecla é pressionada pelo
usuário em seu teclado.
• onkeyup: é executado quando a tecla é liberada,
ou seja, ela foi pressionada e em seguida liberada.
...
<input type="text" name="txtOrigem" id = "txtOrigem"
onkeydown = "copiaTexto('txtOrigem','txtDestino')"/>
<input type="text" name="txtDestino" id = "txtDestino" />
…
51
Eventos
function copiaTexto(idOrigem,idDestino) {
var txtOrigem = document.getElementById(idOrigem);
document.getElementById(idDestino).value =
txtOrigem.value;
}
52
Prática
• Cria uma página semelhante à figura abaixo e implemente
em JS uma calculadora com as 4 operações fundamentais
53
Prática
1. Elabore um formulário HTML que tenha como
entrada 3 valores para lados de um triângulo e
screva uma função de nome tipoTriangulo que
receba 3 parâmetros esses lados de um
triângulo e imprima o tipo dele em uma div
(equilátero, isósceles ou escaleno).
A passagem dos parâmetros deve ser feita de
forma simplificada dentro do HTML no evento
onclick de um botão ou link da seguinte forma:
<.... onclick = “tipoTriangulo(txtLado1.value, txtLado2.value,
txtLado2.value)”...>
54
Prática
2. Deseja-se calcular a conta de consumo de energia
elétrica de uma casa. Para isso, elabore um formulário
em HTML que leia a quantidade de Kwh consumidos e o
valor unitário do Kwh.
Escreva uma função em JavaScript que faça o cálculo
(valor = quantidade x valor unitário) e, caso a quantidade
de Kwh ultrapasse 100, o valor do Kwh deve ser
acrescido em 25%. Caso ultrapasse 200, o mesmo valor
deve ser acrescido em 50%.
Os valores devem ser repassados para para uma função
em JavaScript conforme o exemplo anterior
55
Validações de formulários
• Os dados de um formulário devem ser enviados
para um servidor.
• Pode-se suavizar o trabalho de um servidor
efetuando-se algumas validações no próprio
cliente (navegador) com JavaScript
– Nota:
É importante também haver a validação no
servidor.
A validação com JavaScript serve apenas para
amenizar o tráfego de rede com validações simples
como campos não preenchidos, caixas não marcadas
e etc.
56
Validações de formulários
• Algumas dicas:
– Ao se validar um campo, procure sempre obtê-los pelo
atributo id
– Quase todos os elementos do formulário possuem
sempre um atributo value, que pode ser acessado
como uma String
– Para verificar um caractere em especial dentro de um
valor, use [ ], pois as Strings são arrays de caracteres
– As Strings também possuem um atributo length que
assim como os arrays, representam o tamanho
57
Validações de formulários
• Alguns exemplos de validação:
– Campos de texto não preenchidos
– Campo de texto com tamanho mínimo e máximo
– Validação de campo de e-mail
– Campos com apenas números em seu conteúdo
– Seleção obrigatória de radio buttons, checkboxes e
caixas de seleção
58
Validações de formulários
• Validação de campo de texto com preenchimento
obrigatório:
– Deve-se validar se:
• O valor é nulo
• O valor é uma String vazia
• O valor é formado apenas por espaço
– A validação feita para um campo do tipo text serve
também para um textarea e para um password
– Validar espaços pode ser feito usando expressões
regulares
59
Validações de formulários
• Validação de campo de texto com preenchimento
obrigatório:
function validaCampoTexto(id) {
var valor = document.getElementById(id).value;
//testa se o valor é nulo, vazio ou formado por apenas espaços
em branco
if ( (valor == null) || (valor == "") || (/^\s+$/.test(valor)) ) {
return false;
}
return true;
}
60
Validações de formulários
• Validação de tamanho em campos de texto:
– É importante validar primeiramente se o campo tem
algo preenchido (validação anterior)
– Pode-se limitar o campo a um tamanho mínimo ou
máximo
– Usa-se o atributo length para se checar o tamanho do
campo valor do componente do formulário
61
Validações de formulários
• Validação de tamanho em campos de texto:
63
Validações de formulários
• Validar para que um campo tenha apenas
números:
function validaCampoNumerico(id) {
var valor = document.getElementById(id).value;
if (isNaN(valor) ) {
return false;
}
return true;
}
64
Validações de formulários
• Validar se um item foi selecionado numa caixa de
seleção ou combo box:
– Deve-se obter o índice do elemento selecionado
através do atributo selectedIndex
– selectedIndex: começa do 0 e tem o valor -1 se não
houver seleção
– O índice pode ser nulo se o componente não for do tipo
select
65
Validações de formulários
• Validar se um item foi selecionado numa caixa de
seleção ou combo box
function validaCampoSelect(id) {
var indice = document.getElementById(id).selectedIndex;
if ( (indice == null) || (indice < 0) ) {
return false;
}
return true;
}
66
Validações de formulários
• Validar se uma caixa de checagem (checkbox) está
marcada:
– Deve-se consultar o atributo checked do componente
function validaCampoCheckbox(id) {
var elemento = document.getElementById(id);
if (!elemento.checked) {
return false;
}
return true;
}
67
Validações de formulários
• Validar se pelo menos um botão de radio de um
conjunto foi selecionado:
– Os campos radio funcionam em conjunto desde que
possuam o mesmo atributo name, portanto não se
deve consultar pelo id e sim pelo nome pelo método:
document.getElementsByName(nome);
– getElementsByName(nome) retorna um array de
elementos com o mesmo nome.
– Esse array deve ser percorrido verificando-se no
atributo checked se pelo menos um dos botões de
radio foram marcados
68
Validações de formulários
• Validar se pelo menos um botão de radio de um conjunto foi
selecionado:
function validaCamposRadio(nome) {
var opcoes = document.getElementsByName(nome);
var selecionado = false;
for(var i = 0; i < opcoes.length; i++) {
if(opcoes[i].checked) {
selecionado = true;
break;
}
}
if(!selecionado) {
return false;
}
return true;
} 69
Prática
• Nas atividades seguintes:
– Use uma página HTML e um arquivo de scripts
– Use o evento onsubmit do formulário e uma
função de validação que retorne true ou false
– Utilize uma página qualquer como action do
formulário.
70
Prática
• Copie o valor de um campo texto para outro caso o campo
de origem não esteja vazio. Use o evento on blur do
campo de origem
• Valide um campo senha de acordo com seu tamanho:
– < 3: segurança fraca
– Entre 3 e 5: segurança média
– >= 6: segurança forte
• Valide se dois campos do tipo password são idênticos
• Valide 3 campos texto que representem dia, mês e ano:
– Dia: entre 1 e 31
– Mês: entre 1 e 12
– Ano: > 1949
71
Programação para a Internet I
CSS: Links, tags div, box, model e layout
1
Links
• É possível criar formatações específicas para
cada estado dos links:
– a:link : estado inicial (não visitado)
– a:visited : visitado
– a:hover : com o mouse sobre o link
– a:active : link ativo ("clicado").
• Ex:
a:link {text-decoration: none; color: blue;}
a:visited {text-decoration: none; color: blue;}
a:hover {text-decoration: underline;}
a:active {text-decoration: none; color: green;}
2
Prática
• Crie uma página com links para pelo menos 3 de
suas atividades.
• Os links devem ter as configurações:
– a:link: sem decoração e cor azul {text-decoration: none;
color: blue}
– a:visited: sem decoração e cor azul
– a:hover : cor de fundo azul e cor do texto branca
– a:active : cor de fundo verde e cor do texto branca
3
Blocos
• Tags de blocos são: h1, p, div, table, ul, etc
• Podemos imaginar algumas tags de blocos envolvidas em
caixas
• A caixa de uma tag possui os seguintes itens:
– A tag (elemento) em si (texto, imagem, etc)
– As bordas em torno das margens internas (border)
– As margens externas em torno da borda (margin)
– As margens internas do elemento (padding)
4
border margin padding
Blocos
6
Blocos
7
Bordas
• border-width: espessura da borda.
8
Bordas
• Valores individuais
– border-top-width
– border-left-style • Ex: border-top-color: blue;
border-bottom-color: red;
– border-right-color
– border-bottom-style
– etc...
• Forma reduzida:
– border: espessura estilo cor
– border-top: espessura estilo cor
– border-left: espessura estilo cor
– etc...
• Ex: border: 10px dotted #0000ff;
border-right: 5px double black; 9
Margens externas
• margin: define as margens externas. Os valores
podem ser numéricos ou em %
• margin-top, margin-bottom, margin-right e
margin-left: definem individualmente as margens
externas.
• Ex:
margin: 10px;
margin: 20%;
margin-left: 10%;
margin-right: 10%;
1.
2. 12
Instruções
1. Div envolvendo o conteúdo de body:
– borda sólida, espessura de um pixel, cor marrom
– margens externa da esquerda e da direita com 15%
2. Parágrafo com margens externa da esquerda e
da direita com 15 pixels
13
Prática
• Altere a página sobre o filme Final Fantasy de acordo
com as instruções:
1.
3.
2.
14
Instruções
1. Div envolvendo o conteúdo de body:
– borda pontilhada, espessura de um pixel, cor #ccbb99
– margens externa da esquerda e da direita com 15%
2. Parágrafo com margens externa da esquerda e
da direita com 10 pixels
3. Span com texto em itálico
15
Layout em CSS
• Tipicamente se usam para layout tags
<div></div> com CSS
• Tables continuam como opções válidas para
dados tabulares
• Div x table:
– Renderização:
• Divs possuem renderização mais rápida
• Tables somente são exibidas após a análise de toda a tabela, o
que pode tornar lenta a exibição
– Precisão: com divs a precisão ainda não é tão forte e
temos que recorrer a truques para conseguir um layout
e deixá-lo compatível com os navegadores
16
Layout com Divs
• Alguns desafios a superar:
– Alinhamentos
– Precisão com medidas relativas %
– Divs que não acompanham o “esticamento” da página
• Esses desafios muitas vezes são superados com
“truques” ou códigos hack.
• Ferramentas como DreamWeaver/Fireworks
ajudam, mas ainda não chegaram ao nível de
interação e fidelidade de visualização das tabelas
17
Layouts com Divs
• Tipicamente, um layout com divs inclui:
– Uma tag div geral envolvendo todo o conteúdo
– Outras tags div “fatiando” as outras seções
– Tamanho fixo de colunas e demais divisões
18
Alguns layouts
• O site http://blog.html.it/layoutgala/ possui vários
modelos de layouts que podem ser baixados e
usados.
• Alguns exemplos clássicos:
– 1 coluna: cabeçalho, conteúdo e rodapé
20
Layout simples com 1 coluna
21
Layout com 2 colunas
22
Layout com 2 colunas
23
Layout 3 colunas
24
Layout 3 colunas
25
Ainda sobre layouts
• Caso haja propriedades padding, border e margin deve-se
considerar eventuais desajustes nas divs e corrigir as
propriedades width
• Pode-se também utilizar a propriedade height fixas para
padronizar o tamanho das divs
• Há ainda uma técnica chamada Faux Collums que
consiste em colocar uma imagem “por trás” das divs que
devem ser prolongadas
• Sobre os nomes esquerda, direita...:
– Devem ser usados nomes que representem mais fielmente os
trechos do layout, pois um dia pode-se pensar em mudar a ordem
das divisórias e os nomes esquerda e direita estariam inválidados
semanticamente
26
Links sobre layout
• www.alvoconhecimento.com.br - Diferença Div x Table
• www.tableless.com.br - layout 3 colunas
• www.maujor.com – Seção layout: Raciocinando com
DIVs, Construindo um layout sem tabelas, Layout CSS de
2 colunas com faux column, Layout de 3 colunas em
qualquer ordem, Layout 3 colunas e Layout 2 colunas
• http://www.infinitywebdesign.com/research/cssverticalcent
ereddiv.htm: divs centralizadas
• http://forum.imasters.uol.com.br/index.php?showtopic=222
275: layout 3 colunas fixas
• http://www.tableless.com.br/layout-fixo-fluido-de-
3-colunas-em-8-minutos
27
Programação para Internet I
Introdução ao JavaScript
1
Introdução
• O código em uma página pode ser concebido em
três visões distintas:
– Estrutura e conteúdo: HTML
– Apresentação: CSS
– Comportamento: JavaScript
• Vantagens:
– Reuso de partes do projeto
– Modularidade
– Flexibilidade e facilidade de manutenção
– Legibilidade
– ….
2
Introdução
• As 3 visões de concepção de uma página nos
dão a visão em camadas, em vez de um código
“macarronado” ou “remendado”
3
Características
• É uma linguagem poderosa, com sua utilização
do lado cliente (browser)
• É uma linguagem de scripts que permite
interatividade nas páginas web
• É incluída na página HTML e interpretada pelo
navegador
• É simples, porém pode-se criar construções
complexas e criativas
• JavaScript não é Java. São linguagens com
aplicações e recursos totalmente distintos
4
Algumas coisas que se pode fazer com JS
• Validar entrada de dados em formulários: campos
não preenchidos ou preenchidos incorretamente
poderão ser verificados
• Realizar operações matemáticas e computação
• Abrir janelas do navegador, trocar informações
entre janelas, manipular com propriedades como
histórico, barra de status, plug-ins, applets e
outros objetos
• Interagir com o conteúdo do documento tratando
toda a página como uma estrutura de objetos
• Interagir com o usuário através do tratamento de
eventos
5
Algumas bibliotecas
• Prototype: http://www.prototypejs.org/
• script.aculo.us: http://script.aculo.us/
• Yahoo! User Interface Library (YUI):
http://developer.yahoo.com/yui/
• Dojo: http://dojotoolkit.org/
• jQuery: http://jquery.com/
• MooTools: http://mootools.net/
• Node.js : https://nodejs.org
• Angular.js : https://angularjs.org
6
Formas de uso
• Dentro próprio código HTML:
<a href="#" onclick="alert('alo mundo!')">Diga alô</a>
• Separado em uma tag de script (preferencialmente
dentro da tag <head></head>):
<script type="text/javascript">
alert("alo mundo");
</script>
• Mais separado ainda dentro de um arquivo “texto”
com extensão .js sendo chamado por uma tag
script:
<script type="text/javascript" src="script.js"></script>
7
Dois arquivos separados?
• Usaremos dois arquivos texto:
– Um com HTML com extensão .html
– Outro com JavaScript com extensão .js
– Haverá ainda uma tag HTML que “unirá” os arquivos
.js .html
<script>..</script>
comportamento estrutura 8
Alô mundo - versão 1
<html>
<head>
<title>Alo mundo!</title>
<script type="text/javascript” >
alert("Alo mundo!");
</script>
</head>
<body>
...
</body>
</html> 9
Alô mundo – versão 2
...
<head>
<title>Alo!</title>
<script type="text/javascript” src = “alomundo.js”>
</script>
</head>
...
alomundo.html
alert("alo mundo");
alomundo.js
10
Sintaxe
• Tudo é case-sensitive, ou seja: teste é diferente
de Teste
• Construções simples: após cada instrução,
finaliza-se utilizando um ponto-e-vírgula:
Instrução1;
Instrução2;
• Ex:
alert("alo");
alert("mundo");
11
Sintaxe
• Comentários de uma linha:
alert("teste"); // comentário de uma linha
var cidades = [ ];
cidades[0] = "Parnaíba";
cidades[1] = "Teresina";
cidades[2] = "LC";
alert("A capital do Piauí é " + cidades[1]); 15
Alguns tipos
• Tamanho de um array: usamos a propriedade
length do próprio array
alert(cidades.lenght);
• Último item de um array:
alert(cidades[cidades.lenght-1]);
16
Alguns tipos
• Arrays associativos:
– baseados também na idéia array[indice] = valor
– O índice/chave de um array associativo é geralmente
uma string
var idades = [];
idades["ely"] = 29;
idades["jose"] = 48;
idades["maria"] = 20;
alert("Minha idade é: " + idades["ely"]);
17
Alguns tipos
• Lógico: tipo que pode ter os valores true ou false
var aprovado = true;
alert(aprovado);
18
Operador de tipos
• typeof: inspecionar o tipo de uma variável ou
valor:
var a = "teste";
alert( typeof a); // string
alert( typeof 95.8); // number
alert( typeof 5); // number
alert( typeof false); // boolean
alert( typeof true); // boolean
alert( typeof null); // object
var b;
alert( typeof b); // undefined
19
Operador de tipos
• Utilizando typeof podemos ter os seguintes
resultados:
– undefined: se o tipo for indefinido.
– boolean: se o tipo for lógico
– number: se for um tipo numérico (inteiro ou ponto
flutuante)
– string: se for uma string
– object: se for uma referência de tipos (objeto) ou tipo
nulo
20
Estruturas de decisão – if e else
• Sintaxe:
if (condição) {
código da condição verdadeira;
}
else {
código da condição falsa;
}
simboliza um início/begin
representa um fim/end 21
Operadores condicionais e lógicos
A é igual a B
A é diferente
de B
• && : and
• || : or var idade = 17;
if (idade >= 16 && idade < 18) {
• ! : not alert("voto facultativo");
} 22
Estruturas de decisão – if e else
if (navigator.cookieEnabled) {
alert("Seu navegador suporta cookies");
} else {
alert("Seu navegador não suporta cookies");
}
23
Estruturas de decisão – Switch
switch (expressão) {
case valor 1:
//código a ser executado se a expressão = valor 1;
break;
case valor 2:
//código a ser executado se a expressão = valor 2;
break;
...
case valor n:
//código a ser executado se a expressão = valor n;
break;
default:
//executado caso a expressão não seja nenhum dos valores;
}
24
Estruturas de decisão – Switch
var idade = 20;
switch (idade) {
case 29:
alert("Você está no auge.");
break;
case (40) :
alert("A vida começa aqui.");
break;
case (60) :
alert("Iniciando a melhor idade.");
break;
default:
alert("A vida merece ser vivida, não importa a idade.");
break;
} 25
Janelas de diálogo - Confirmação
• Nos permite exibir uma janela pop up com dois botões: ok
e cancel
• Funciona como uma função:
– Se o usuário clicar em ok, ela retorna true; em cancel retorna
false
• Ex:
var vegetariano = confirm("Você é vegetariano?");
if (vegetariano == true) {
alert("Coma mais proteínas");
}
else {
alert("Coma menos gordura");
}
26
Janelas de diálogo - Prompt
• Nos permite exibir uma janela pop up com dois botões (ok
e cancel) e uma caixa de texto
• Funciona como uma função: se o usuário clicar em ok e
prencher a caixa de texto, ela retorna o valor do texto;
em cancel retorna null
• O segundo parâmetro pode ser preenchido como uma
sugestão
• Ex:
var email = prompt("Digite seu e-mail","");
alert("O email " + email + " será usado para spam.");
27
Janelas de diálogo - Prompt
• O que lemos da janela prompt é uma string
• Podemos converter strings para inteiro utilizando
as funções pré-definida parseInt e parseFloat
• parseInt(valor, base): converte uma string para
inteiro.
– O valor será convertido para inteiro e base é o número
da base (2,10,16…)
• parseFloat(valor): converte uma string para um
valor real/ponto flutuante
28
Janelas de diálogo - Prompt
• Ex:
var notaStr = prompt("Qual a sua nota?","");
var trabStr = prompt("Qual o valor do trabalho?","");
var nota = parseFloat(notaStr,10);
var trab = parseFloat(trabStr,10);
nota = nota + trab;
29
Estruturas de repetição - for
• Executa um trecho de código por uma quantidade
específica de vezes
• Sintaxe:
for (inicio; condicao; incremento/decremento) {
//código a ser executado.
}
• Ex:
var numeros = [1, 2, 3, 4, 5];
for (var i = 0; i < numeros.length; i++) {
numeros[i] = numeros[i]* 2;
document.write(numeros[i] + "<br/>");
} 30
Expressões compactadas
• Em JS podemos utilizar formas “compactada”
instruções:
numero = numero + 1 equivale a numero++
numero = numero - 1 equivale a numero--
numero = numero + 1 equivale a numero += 1
numero = numero - 1 equivale a numero -= 1
numero = numero * 2 equivale a numero *= 2
numero = numero / 2 equivale a numero /= 2
31
Exercícios
• Elabore scripts usando a função prompt que:
– Leia um valor e imprima os resultados: “É maior que
10” ou “Não é maior que 10” ou ainda “É igual a 10”
– Some dois valores lidos e imprima o resultado
– Leia 2 valores e a operação a ser realizada (+, -, * ou /)
e imprima o resultado (use um switch)
– Leia um nome e um valor n e imprima o nome n vezes
usando o laço for
32
Estruturas de repetição - while
• Executa um trecho de código enquanto uma
condição for verdadeira
• Sintaxe:
while (condicao) {
//código a ser executado
}
Ex:
var numero = 1;
while (numero <= 5) {
alert("O número atual é: " + numero);
numero = numero + 1;
}
33
Estruturas de repetição – do…while
• Executa um trecho de código enquanto uma condição for
verdadeira
• Mesmo que a condição seja falsa, o código é executado
pelo menos uma vez
• Sintaxe:
do {
//código a ser executado.
} while (numero <= 5) ;
Ex:
var numero = 1;
do {
alert("O número atual é: " + numero);
numero = numero + 1;
} while (numero <= 5) ;
34
Funções
• Funções são blocos de código reutilizáveis.
• Elas não são executadas até que sejam chamadas
• Podem ter parâmetros de entrada e de saída
• Podemos ter vários parâmetros de entrada separados por
vírgulas
• Podemos retornar um valor através da instrucao return
35
Funções
• Sintaxe:
function nomeDaFuncao() {
//códigos referentes à função.
…
}
function nomeDaFuncao(p1, p2, p3, ...) {
//códigos referentes à função.
…
}
function nomeDaFuncao(p1, p2, p3, ...) {
…
return p1+p2-p3;
…
}
36
Funções
• Ex. 1:
...
<a href = "#" onclick = "alo();">Chamar a função</a>
…
alomundo.html
function alo() {
alert("Link clicado!"); alomundo.js
}
37
Funções
• Ex. 2:
...
<form>
<input type = “button" value = "Chamar função" onclick = "alo();"/>
</form>
…
alomundo.html
function alo() {
alert("Link clicado!"); alomundo.js
}
38
Funções
...
<form>
<input type = “button" value = "Chamar função"
onclick = “saudacao('jose');"/>
</form>
…
saudacao.html
function saudacao(nome) {
alert("Olá, " + nome); saudacao.js
}
39
Funções
...
<form>
<input type="text" name="txtNome" id = "txtNome"/>
<input type="button" name="btn_saudacao"
onclick = “saudacao(document.getElementById('txtNome').value);"/>
</form>
…
...
<form name = "frm">
<input type="text" name="txtNome"/>
<input type="button" name="btn_saudacao"
onclick = “saudacao(frm.txtNome.value);"/>
</form>
… 40
Funções
soma.js
function soma(v1, v2) {
document.write(v1 + v2);
}
41
Eventos
• São reações a ações do usuário ou da própria
página
ou:
• São ocorrências ou acontecimentos dentro de
uma página. Ex:
– Carregar uma página;
– Clicar em um botão;
– Modificar o texto de uma caixa de texto;
– Sair de um campo texto;
– etc;
42
Eventos
• onclick: ocorre quando o usuário clica sobre
algum elemento da página
...
<a href = "#" onclick = "alo();">Chamar a função</a>
…
...
<body onload = "bemvindo();" onunload = "adeus();">
…
43
Eventos
function bemvindo() {
alert("Seja bem vindo.");
}
function adeus() {
alert("Obrigado pela visita.");
}
44
Eventos
• onmouseover: é acionado quando o mouse se
localiza na área de um elemento
• onmouseout: ocorre quando o mouse sai da
área de um elemento
...
<a href = "#" onmouseover = "mouseSobre();"
onmouseout = “mouseFora();">
Passe o mouse
</a>
… 45
Eventos
function mouseSobre() {
var divResultado = document.getElementById("resultado");
divResultado.innerHTML = divResultado.innerHTML +
"mouse sobre.<br/>";
}
function mouseFora() {
var divResultado = document.getElementById("resultado");
divResultado.innerHTML = divResultado.innerHTML +
"mouse fora.<br/>";
}
46
Eventos
• onsubmit: usado para chamar a validação de um
formulário (ao enviar os dados)
• Para validar um formulário, chamamos uma função por
nós definida:
– Ao chamar a função, usamos a palavra reservada return
• A função, por sua vez, deve retornar true ou false,
representando se os dados devem ou não serem
enviados. Ex:
<form name="frmBusca"
action="http://www.google.com/search"
method="get" onsubmit = "return validaCampo()">
Termo: <input type="text" name="q" id = "q" />
<input type="submit" name="btnBuscar" value="Buscar"/>
</form> 47
Eventos
function validaCampo() {
var valor = document.getElementById("q").value;
48
Eventos
• onfocus: ocorre quando um controle recebe o
foco através do mouse ou do teclado
• onblur: ocorre quando um controle perde o foco
…
<input type="text" name="txt1" id = "txt1"
onfocus = "trataEntrada('txt1')"
onblur = "trataSaida('txt1')"/>
<input type="text" name="txt2" id = "txt2"
onfocus = "trataEntrada('txt2')"
onblur = "trataSaida('txt2')"/>
…
49
Eventos
function trataEntrada(id) {
var div = document.getElementById("resultado");
div.innerHTML = div.innerHTML + id +" ganhou o
foco.<br/>";
}
function trataSaida(id) {
var div = document.getElementById("resultado");
div.innerHTML = div.innerHTML + id +" perdeu o
foco.<br/>";
}
50
Eventos
• onkeydown e onkeypress: são semelhantes e
ocorrem quando uma tecla é pressionada pelo
usuário em seu teclado.
• onkeyup: é executado quando a tecla é liberada,
ou seja, ela foi pressionada e em seguida liberada.
...
<input type="text" name="txtOrigem" id = "txtOrigem"
onkeydown = "copiaTexto('txtOrigem','txtDestino')"/>
<input type="text" name="txtDestino" id = "txtDestino" />
…
51
Eventos
function copiaTexto(idOrigem,idDestino) {
var txtOrigem = document.getElementById(idOrigem);
document.getElementById(idDestino).value =
txtOrigem.value;
}
52
Prática
• Cria uma página semelhante à figura abaixo e implemente
em JS uma calculadora com as 4 operações fundamentais
53
Prática
1. Elabore um formulário HTML que tenha como
entrada 3 valores para lados de um triângulo e
escreva uma função de nome tipoTriangulo
que receba 3 parâmetros esses lados de um
triângulo e imprima o tipo dele em uma div
(equilátero, isósceles ou escaleno).
A passagem dos parâmetros deve ser feita de
forma simplificada dentro do HTML no evento
onclick de um botão ou link da seguinte forma:
<.... onclick = “tipoTriangulo(txtLado1.value, txtLado2.value,
txtLado2.value)”...>
54
Prática
2. Deseja-se calcular a conta de consumo de energia
elétrica de uma casa. Para isso, elabore um formulário
em HTML que leia a quantidade de Kwh consumidos e o
valor unitário do Kwh.
Escreva uma função em JavaScript que faça o cálculo
(valor = quantidade x valor unitário) e, caso a quantidade
de Kwh ultrapasse 100, o valor do Kwh deve ser
acrescido em 25%. Caso ultrapasse 200, o mesmo valor
deve ser acrescido em 50%.
Os valores devem ser repassados para para uma função
em JavaScript conforme o exemplo anterior
55
Validações de formulários
• Os dados de um formulário devem ser enviados
para um servidor.
• Pode-se suavizar o trabalho de um servidor
efetuando-se algumas validações no próprio
cliente (navegador) com JavaScript
– Nota:
É importante também haver a validação no
servidor.
A validação com JavaScript serve apenas para
amenizar o tráfego de rede com validações simples
como campos não preenchidos, caixas não marcadas
e etc.
56
Validações de formulários
• Algumas dicas:
– Ao se validar um campo, procure sempre obtê-los pelo
atributo id
– Quase todos os elementos do formulário possuem
sempre um atributo value, que pode ser acessado
como uma String
– Para verificar um caractere em especial dentro de um
valor, use [ ], pois as Strings são arrays de caracteres
– As Strings também possuem um atributo length que
assim como os arrays, representam o tamanho
57
Validações de formulários
• Alguns exemplos de validação:
– Campos de texto não preenchidos
– Campo de texto com tamanho mínimo e máximo
– Validação de campo de e-mail
– Campos com apenas números em seu conteúdo
– Seleção obrigatória de radio buttons, checkboxes e
caixas de seleção
58
Validações de formulários
• Validação de campo de texto com preenchimento
obrigatório:
– Deve-se validar se:
• O valor é nulo
• O valor é uma String vazia
• O valor é formado apenas por espaço
– A validação feita para um campo do tipo text serve
também para um textarea e para um password
– Validar espaços pode ser feito usando expressões
regulares
59
Validações de formulários
• Validação de campo de texto com preenchimento
obrigatório:
function validaCampoTexto(id) {
var valor = document.getElementById(id).value;
//testa se o valor é nulo, vazio ou formado por apenas espaços
em branco
if ( (valor == null) || (valor == "") || (/^\s+$/.test(valor)) ) {
return false;
}
return true;
}
60
Validações de formulários
• Validação de tamanho em campos de texto:
– É importante validar primeiramente se o campo tem
algo preenchido (validação anterior)
– Pode-se limitar o campo a um tamanho mínimo ou
máximo
– Usa-se o atributo length para se checar o tamanho do
campo valor do componente do formulário
61
Validações de formulários
• Validação de tamanho em campos de texto:
63
Validações de formulários
• Validar para que um campo tenha apenas
números:
function validaCampoNumerico(id) {
var valor = document.getElementById(id).value;
if (isNaN(valor) ) {
return false;
}
return true;
}
64
Validações de formulários
• Validar se um item foi selecionado numa caixa de
seleção ou combo box:
– Deve-se obter o índice do elemento selecionado
através do atributo selectedIndex
– selectedIndex: começa do 0 e tem o valor -1 se não
houver seleção
– O índice pode ser nulo se o componente não for do tipo
select
65
Validações de formulários
• Validar se um item foi selecionado numa caixa de
seleção ou combo box
function validaCampoSelect(id) {
var indice = document.getElementById(id).selectedIndex;
if ( (indice == null) || (indice < 0) ) {
return false;
}
return true;
}
66
Validações de formulários
• Validar se uma caixa de checagem (checkbox) está
marcada:
– Deve-se consultar o atributo checked do componente
function validaCampoCheckbox(id) {
var elemento = document.getElementById(id);
if (!elemento.checked) {
return false;
}
return true;
}
67
Validações de formulários
• Validar se pelo menos um botão de radio de um
conjunto foi selecionado:
– Os campos radio funcionam em conjunto desde que
possuam o mesmo atributo name, portanto não se
deve consultar pelo id e sim pelo nome pelo método:
document.getElementsByName(nome);
– getElementsByName(nome) retorna um array de
elementos com o mesmo nome.
– Esse array deve ser percorrido verificando-se no
atributo checked se pelo menos um dos botões de
radio foram marcados
68
Validações de formulários
• Validar se pelo menos um botão de radio de um conjunto foi
selecionado:
function validaCamposRadio(nome) {
var opcoes = document.getElementsByName(nome);
var selecionado = false;
for(var i = 0; i < opcoes.length; i++) {
if(opcoes[i].checked) {
selecionado = true;
break;
}
}
if(!selecionado) {
return false;
}
return true;
} 69
Prática
• Nas atividades seguintes:
– Use uma página HTML e um arquivo de scripts
– Use o evento onsubmit do formulário e uma
função de validação que retorne true ou false
– Utilize uma página qualquer como action do
formulário.
70
Prática
• Copie o valor de um campo texto para outro caso o campo
de origem não esteja vazio. Use o evento on blur do
campo de origem
• Valide um campo senha de acordo com seu tamanho:
– < 3: segurança fraca
– Entre 3 e 5: segurança média
– >= 6: segurança forte
• Valide se dois campos do tipo password são idênticos
• Valide 3 campos texto que representem dia, mês e ano:
– Dia: entre 1 e 31
– Mês: entre 1 e 12
– Ano: > 1949
71