9/24/2011 INTERNET Grande conjunto de redes de computadores interligadas pelo mundo. Começou como uma rede interligando Universidades no E.U.A A partir de 1993 a Internet começou a ser explorada comercialmente. Não existem nenhum gerenciamento centralizado, cada usuário ou empresa administra sua rede e esta se conectada à INTERNET. Comunicação entre as várias redes segue um protocolo padrão(TCP/IP) Backbones dão suporte principal à INTERNET. Backbones são linhas alta capacidade de tráfego de informação. Sustentados por governos e grandes empresas Programação para Internet Flávio de Oliveira Silva, M.Sc. 10 INTERNET – COMO FUNCIONA Cada servidor (Host) possui um endereço único na Internet. Este endereço é conhecido como IP. Ex: 200.17.210.65 Os IP’s são distribuídos pelo Network Information Center (NIC) e no Brasil são repassados pela FAPESP Cada endereço acima pode ser escrito com letras da seguinte forma: www.ufu.br; www.fagen.ufu.br; www.uol.com.br; ftp.microsoft.com.br; www.facic.ufu.br Ao solicitar alguma informação o endereço de destino deve ser informado 200.17.210.65 Programação para Internet Flávio de Oliveira Silva, M.Sc. 11 1 9/24/2011 INTERNET – SERVIÇOS Servidores de INTERNET podem oferecer vários tipos de serviços (Mais utilizados - WEB; E-MAIL; FTP) WEB (WWW – World Wide Web) P i i l serviço. i P lti ídi (Texto; (T t Imagem; I S Principal Possuii recursos multimídia Som e Vídeo) Informações estão contidas em sites Em um site é possível saltar de um ponto para outro utilizando "hiperlinks" Cada site possui seu URL (Uniform Resource Locator, localizador uniforme de recursos) Ex.: http://www.ufu.br; g http://www.fagen.ufu.br; http://ww.uol.com.br; http://facic.ufu.br Endereços (domínios) são criados de acordo com o tipo de utlização: .com (comércio); .gov (governo); .edu (universidades – normalmente as brasileiras não utilizam); .mil (militar); .org (organizações sem fins lucrativos) Endereços terminam com nacionalidade: brasil (br); japão (jp); portugal (pt); E.U.A (não possuem); Programação para Internet Flávio de Oliveira Silva, M.Sc. 12 Internet A Internet não é uma rede Conjunto de diferentes redes interligadas que utilizam um mesmo conjunto de protocolos a fim de oferecer serviços comuns Serviços FTP E-mail WEB Programação para Internet Flávio de Oliveira Silva, M.Sc. 13 2 9/24/2011 Protocolo HTTP Protocolo utilizando na Web Realiza o transporte de conteudo entre o navegador e o servidor Web Protocolo descreve o pedido (request) e a resposta (response) Seu entendimento é um requisito na programação para a Internet Programação para Internet Flávio de Oliveira Silva, M.Sc. 14 HTTP Requests Estrutura Geral Um pedido Http contém a estrutura abaixo ESTRUTURA Metodo URI Versao Header Geral Header Pedido Header Conteudo Conteudo Método – Indica comando a ser enviado para o servidor. Valores possíveis (HTTP 1.1): GET, POST, HEAD, PUT, LINK, UNLINK, DELETE, OPTIONS Nem todos os comandos podem ser respondidos por um servidor web URI (Uniform Resource Indication) – Descrição única do conteúdo na Web Versão – Versão do protocolo utilizada EXEMPLO POST / HTTP/1.1 Connection: Keep-Alive Host: www.site.com.br Content-type: txt/html query=book HTTT/1.1 ou HTTP/1.0 Headers – Informações adicionais que são enviadas após o comando Conteudo – Informação que pode ser enviada pelo cliente e é recebida pelo servidor Programação para Internet 15 Flávio de Oliveira Silva, M.Sc. 3 9/24/2011 HTTP Response Estrutura Geral A resposta contém a estrutura abaixo ESTRUTURA EXEMPLO Versao Status Resposta HTTP/1.1 200 OK H d G l Header Geral Date: Mon, 06 Feb 2010 20:54:26 GMT Server: Apache/1.3.6 (Unix) Content-length: 327 Content-type: text/html <html> <head> <title>Página Hello</title> </head> <body> <h1>Hello Web World!</h1> </body> </html> Header Resposta Header Conteúdo Conteúdo Headers – Informações adicionais enviadas juntamente com a resposta Conteúdo – Informação enviada pelo servidor Programação para Internet Flávio de Oliveira Silva, M.Sc. 16 HTTP Request e Response Exemplos Request GET / HTTP/1.1 Host: www.ufu.br User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Response HTTP/1.1 200 OK Date: Wed, 01 Sep 2010 10:48:25 GMT Server: Apache/2.2.10 (Linux/SUSE) X-Powered-By: PHP/5.2.9 Expires: Sun, 19 Nov 1978 05:00:00 GMT Last-Modified: Wed, 01 Sep 2010 10:48:25 GMT Cache-Control: store, no-cache, must-revalidate, post-check=0, pre-check=0 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html; charset=utf-8 <html> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 17 4 9/24/2011 TELNET Terminal Remoto O protocolo TELNET permite realiza uma conexão baseada em caracteres entre dois computadores Através do TELNET é possível enviar comandos para o servidor e desta forma o protocolo implementa um terminal remoto Utilizando o TELNET é possível enviar comandos HTTP para um servidor WEB Para um servidor WEB geralmente é utilizada a porta 80 Exemplo de uso: telnet [HOST] [PORT] HOST - Hostname ou IP do servidor PORT – Número da um servidor Nú d porta. t Para P id WEB geralmente l t é utilizada tili d a porta t 80 flavio@flavio-ubuntu:~$ telnet www.facom.ufu.br 80 Trying 192.168.3.2... Connected to facom.ufu.br. Escape character is '^]'. Programação para Internet Flávio de Oliveira Silva, M.Sc. 18 Utilizando protocolo HTTP Exemplo flavio@flavio-ubuntu:~$ telnet 192.168.3.2 80 Trying 192.168.3.2... Connected to 192.168.3.2. Escape p character is '^]'. GET /~flavio/ HTTP/1.1 Host: www.facom.ufu.br (pressionando enter para troca de linha e encerramento do comando) HTTP/1.1 200 OK Date: Thu, 03 Mar 2011 17:31:58 GMT Server: Apache/1.3.37 (Unix) mod_ssl/2.8.28 OpenSSL/0.9.8b PHP/4.4.4 g 2010 01:21:19 GMT Last-Modified: Fri, 13 Aug ETag: "2a403f9-1614-4c649e0f" Accept-Ranges: bytes Content-Length: 5652 Content-Type: text/html <html> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 19 5 9/24/2011 HTTP Request Métodos Principais métodos utilizado no protocolo HTTP MÉTODO GET HEAD POST PUT DELETE DESCRIÇÃO Permite obter um conteúdo em um servidor. O conteúdo pode ser um arquivo estático ou um resultado produzido de forma dinâmica Obtém apenas informações (cabeçalho) associada ao conteúdo, sem no entanto, devolver este conteúdo Permite o envio de informações para o servidor, por exemplo, ao preencher um formulário na Web. Permite inserir ou alterar um conteúdo existente em um servidor Utilizado para remover um conteúdo no servidor Programação para Internet Flávio de Oliveira Silva, M.Sc. 20 HTTP Response Server Codes Linha inicial da resposta do servidor contém um código de status com três digitos Alguns códigos são tratados diretamente pelo browser enquanto outros são mostrados no cliente FAIXA DO CÓDIGO 100‐199 200‐299 300‐399 400‐499 500 599 500‐599 SIGNIFICADO Informação Pedido atendido com sucesso Pedido redirecionado Pedido incompleto Erros no servidor no servidor Programação para Internet Flávio de Oliveira Silva, M.Sc. 21 6 9/24/2011 HTTP Headers O headers (cabeçalhos) HTTP permitem a troca de informações entre o cliente e o servidor Possuem o seguinte formato: h d h d l [ other-header-value] th h d l ] header-name: header-value[; Os headers podem ser classificados da seguinte forma: General Headers – Podem ser utilizados tanto em mensagens de pedido (request) ou resposta (response) Request Headers – São específicos para pedidos e consistem de informações que o cliente deseja enviar ao servidor Response Headers – São específicos para respostas e consistem de informações que o servidor deseja comunicar ao cliente Entity Headers – Estão relacionados especificamente com o conteúdo sendo transportado pelo protocolo Programação para Internet Flávio de Oliveira Silva, M.Sc. 22 HTTP Tipos de Conteúdo Como na Web podem existir diferentes tipo de conteúdo é necessário que o protocolo HTTP identifique o tipo do conteúdo sendo transportado Isto é feito utilizando um rótulo chamado MIME (Multipurpose Internet Mail Extensions) Este rótulo é incluído como um header de conteúdo (Content-type) Exemplos: TIPO DOCUMENTO Documento HTML Arquivo texto Imagem JPEG Imagem GIF Arquivo PDF Arquivo Microsoft EXCEL Video no formato QuickTime da Apple Arquivo de aúdio no formato midi Content-type: Content-type: Content-type: Content-type: Content-type: Content-type: Content-type: Content-type: HEADER CONTEÚDO text/html text/plain image/jpeg image/gif application/pdf application/vnd.ms-excel video/quicktime audio/midi Para uma lista completa consulte o w3schools Programação para Internet Flávio de Oliveira Silva, M.Sc. 23 7 9/24/2011 HTML Hypertext Markup Language Draft – 1991; 1.1 – 1992; 2.0 – 1993; 3.0 – 1995; 4.0 – 1997; 4.01 – 1999; 5.0 (2011?) Linguagem de marcação que consiste de elementos g g ç básica utilizada na WEB,, q envolvidos pelos sinais de < e >. O conjunto <elementName> é conhecido como tag O navegador é capaz de ler páginas HMTL e exibir seu conteúdo. O conteúdo é aquele existente entre a tag inicial e a final As tags não são exibidas pelo navegador, mas são utilizadas para interpretar o conteúdo das mesmas Cada elemento possui atributos que o qualificam e cada tag aberta deve ser devidamente fechada. de idamente fechada Exemplo <elementName atributename1="attributeValue1" ... /> <elementName atributename1="attributeValue1" ... > contentAppearAtBrowser </elementName> Programação para Internet Flávio de Oliveira Silva, M.Sc. 24 HTML Tags A linguagem apresenta um conjunto de tags Uma tag não reconhecida pelo navegador é exibida como texto Categorias de Tags Tags básicas de uma página Headings (Cabeçalhos) <html>, <head>, <body> <h1>, <h2>, <h3>, <h4>, <h5>, <h6> Parágrafos <p>, <br> Links (Âncoras) Imagens Comentários <a> <img> <!– This a comment --> Programação para Internet Flávio de Oliveira Silva, M.Sc. 25 8 9/24/2011 HTML Tags Categorias de Tags Formatação de Texto Listas (Numeradas) Listas (Marcadores) Tabelas <b>, <big>, <em>, <i>, <small>, <strong>, <sub>, <sup>,... <ul>, <ol> <ul>, <ol>, <li> <table>, <tbody>, <thead>, <th>, <tr>, td Programação para Internet Flávio de Oliveira Silva, M.Sc. 26 HTML Tags Categorias de Tags <ul>, <ol>, <li> <t bl > <tb d > <th d> <th> > td <table>, <tbody>, <thead>, <th>, <t <tr>, <!– This a comment --> Programação para Internet Flávio de Oliveira Silva, M.Sc. 27 9 9/24/2011 HTML Tags A linguagem apresenta um conjunto de tags Uma tag não reconhecida pelo navegador é exibida como texto Exemplos de tags <html>, <head>, <body> <h1>, <h2>, <h3>, <h4>, <h5>, <h6> <p>, <br> <a> <b>, <big>, <em>, <i>, <small>, <strong>, <sub>, <sup>,... <img> <ul>, <ol>, <li> <table>, <tbody>, <thead>, <th>, <tr>, td <!– This a comment --> Programação para Internet Flávio de Oliveira Silva, M.Sc. 28 Documento HTML <html> <head> <title>Title of the document</title> </head> <body> Este é o conteudo visível da página </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 29 10 9/24/2011 CSS (Cascade Style Sheets) Permite a definição de estilos que definem como os elementos HTML serão mostrados Desta forma é possível aplicar um determinado estilo a vários elementos, simplificando o processo de formatação dos mesmos Originalmente a linguagem HTML não continha atributos para diferentes fontes e cores. A introdução na versão 3.2 trouxe ônus a dificuldade para formatar os elementos. Os estilos foram adicionados na versão 4.0 Normalmente os estilos são definidos em um arquivo à parte (.css) e o mesmo é incluído em um conjunto de páginas Para uma referência na linguagem consulte o endereço abaixo http://www.w3schools.com/css/css_reference.asp Programação para Internet Flávio de Oliveira Silva, M.Sc. 30 CSS (Cascade Style Sheets) Sintaxe Cada estilo é visto como uma regra de formatação A regra contém duas partes: Seletor U i d l õ Uma ou mais declarações A declaração consiste de um par (propriedade:valor) finalizado por “;” O conjunto de declarações deve estar entre chaves É possível quebrar a declaração em várias linhas a fim de facilitar a leitura Exemplo Selector {propertyName1:value1; ...; propertyNameN:valueN;} Programação para Internet Flávio de Oliveira Silva, M.Sc. 31 11 9/24/2011 CSS (Cascade Style Sheets) Sintaxe - Seletor O seletor pode ser utilizado de diferentes formas HtmlTag Neste caso o seletor é igual a alguma tag HTML e neste caso todos os elementos com aquela tag conterão a mesma formatação #selectorName Neste caso o nome do seletor inicia-se pelo caractere “#”. O objetivo é aplicar este estilo a um único elemento. Para selecionar o elemento é é utilizado o atributo id (id="selectorName") em uma tag <p id="selectorName"> .className Neste caso o nome do seletor inicia-se p pelo caractere “.” A classe é aplicada a um grupo de elementos É possível indicar uma classe somente para determinados elementos. Desta forma somente aquelas tags serão afetas pelo estilo. Neste caso o seletor possuirá o seguinte formato: tagname.selectorName Para selecionar o elemento é utilizado o atributo class (class="selectorName") <p class="selectorName"> Programação para Internet Flávio de Oliveira Silva, M.Sc. 32 CSS (Cascade Style Sheets) Aplicar Estilo Existem três formas de aplicar os estilos Arquivo externo com estilos <head> type="text/css" href="mystyle.css" <link rel="stylesheet" rel stylesheet type text/css href mystyle.css /> </head> Declaração interna dos estilos <head> <style type="text/css"> hr {color:green;} p {margin-left:20px;} body {background-image:url("img/logo.gif");} </style> </head> Declaração no atributo “style” <p style="color:sienna;margin-left:20px">This is a paragraph.</p> A primeira forma é a mais eficiente e utilizada pois os estilos poderão ser compartilhados por um grande número de páginas, facilitando manutenções no web site Programação para Internet Flávio de Oliveira Silva, M.Sc. 33 12 9/24/2011 CSS (Cascade Style Sheets) Aplicar Estilo Existem três formas de aplicar os estilos Arquivo externo com estilos <head> type="text/css" href="mystyle.css" <link rel="stylesheet" rel stylesheet type text/css href mystyle.css /> </head> Declaração interna dos estilos <head> <style type="text/css"> hr {color:green;} p {margin-left:20px;} body {background-image:url("img/logo.gif");} </style> </head> Declaração no atributo “style” <p style="color:sienna;margin-left:20px">This is a paragraph.</p> A primeira forma é a mais eficiente e utilizada pois os estilos poderão ser compartilhados por um grande número de páginas, facilitando manutenções no web site Programação para Internet Flávio de Oliveira Silva, M.Sc. 34 CSS (Cascade Style Sheets) Uso dos Estilos Os estilos são aplicados em cascata do mais externo para o mais interno A ordem de aplicação dos estilos é a seguinte: 1. 2. 3. 4. Padrão do Navegador Estilo definido em um arquivo externo Estilo definido na seção <head> Estilo definido dentro do elemento com o atributo "style” Os valores mais internos possuem prioridade, logo o atributo “style” fará a sobreposição nos outros estilos Programação para Internet Flávio de Oliveira Silva, M.Sc. 35 13 9/24/2011 CSS Exemplo Básico <html> <head> <style type="text/css"> p {color:red;text-align:center;} g h1 { color:blue; text-align:center; } </style> </head> <body> <p>Hello World! - Style p</p> <p>This paragraph is styled with CSS - Style p.</p> <h1>Heading - htyle h1 </h1> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 36 CSS Composição de Estilos O termo classe para o seletor pode provocar a visão de que conceitos de programação orientada a objetos estão disponíveis, o que não é fato A linguagem oferece algumas formas de composição de estilos Composição na hieraquia dos elementos Composição no atributo “class” Neste caso as propriedades aplicadas a elementos mais externos sejam propagadas para elementos mais internos Desta forma é possível que elementos mais internos (filhos) herdem as propriedades de elementos mais externos (pai) É possível compor o conteúdo de várias classes e aplicá-las simultaneamente a um elemento. Neste caso as declarações de ambas serão adicionadas Composição na definição da classe Mais de um seletor tipo do class é escolhido para um conjunto de declarações Neste caso todos compartilharão as mesmas propriedades Programação para Internet Flávio de Oliveira Silva, M.Sc. 37 14 9/24/2011 CSS Composição na Hierarquia No exemplo abaixo a composição utilizou a hierarquia entre os elementos <div> e <p> no documento O valor "inherit" para a propriedade color não é obrigatório. Sendo que para a maioria das propriedades este é o padrão utilizado, logo não é necessário repetir a propriedade na declaração da classe <html> <head> <style type="text/css"> .foo {background-color: white; color: blue;} .bar {background-color: yellow; color: inherit; font-weight: bold;} </style> </head> <body> <div class="foo"> <p> Paragraph only with .foo class</p> <p class="bar">Paragraph only with .foo + .bar class</p> <p>Paragraph again only with .foo class<!p> </div> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 38 CSS Composição no atributo “class” No exemplo a composição no elemento <p> a composição de estilos utilizando mais de uma classe no valor do atributo “class”. <html> <head> <style type="text/css"> .foo {background-color:white; color:blue;} .bar {background-color:yellow;font-weight:bold;} </style> </head> <body> <div> <p > Paragraph wiht no css class</p> <p class="foo bar">Paragraph only with .foo + .bar class</p> <p class="foo">Paragraph again only with .foo class<!p> </div> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 39 15 9/24/2011 CSS Composição na definição da classe No exemplo a composição é feita na definição onde mais de uma classe compartilha as mesmas declarações. <html> <head> <style type="text/css"> .foo, .bar {color:blue;} .bar {background-color:yellow;font-weight:bold;} </style> </head> <body> <div> <p > Paragraph wiht no css class</p> <p class="bar">Paragraph with .foo + .bar class</p> <p class="foo">Paragraph again only with .foo class<!p> </div> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 40 JavaScript JavaScript é uma linguagem de programação suportada pelos navegadores. A versão inicial surgiu em 1996 (Netscape) e a última versão é a 1.8.1 (2009) A linguagem é interpretada e o código é embutido diretamente em páginas HTML sendo executado pelo navegador (cliente) (cliente). O navegador possui uma aplicação (javascript engine) responsável pela interpretação e execução do código Permite melhorar a experiência do usuário e incorporar interatividade do lado cliente Utilizada por Webmasters e Web designers Linguagem suporta: Leitura e Escrita de texto em uma página HTML Criar respostas a eventos ocorridos em uma página HTML Validar dados informados em uma página HTML Suporte a cookies Javascript não possui nenhuma relação com a linguagem Java Programação para Internet Flávio de Oliveira Silva, M.Sc. 41 16 9/24/2011 JavaScript Uso Para inserir um código HTML é necessário utilizar a tag <script> Código interno à página <script type="text/javascript"> Códi em arquivo i externo t à página, á i ffacilitando ilit d seu reuso Código <script type="text/javascript" src="xxx.js"></script> O código pode estar presente tanto no elemento <body> quanto no elemento <head> No elemento <body> o código é executado assim que a página é carregada. O código pode estar em qualquer ponto da página, mas o ideal é que o mesmo fique no final da página No elemento <head> o código é executado no momento em que um evento ocorre. Neste elemento normalmente são colocadas todas as funções Programação para Internet Flávio de Oliveira Silva, M.Sc. 42 JavaScript Conceitos Gerais Um código Javascript consiste de uma sequencia de comandos executados pelo navegador A linguagem é “case sensitive” Comando Blocos Um comando pode ser finalizado por um caractere “;” e por uma quebra de linha Uma sequencia de comandos pode ser agrupadas em blocos que neste caso iniciamse pelo caractere “{“ e finalizado pelo caractere “}” O bloco é utilizado em funções ou em estrutura de controle da linguagem Comentários // Comentário em uma linha simples /* Comentário á i Em várias linhas */ Programação para Internet Flávio de Oliveira Silva, M.Sc. 43 17 9/24/2011 JavaScript Variáveis Variáveis A linguagem é fracamente tipada e portando uma varíavel pode conter qualquer tipo de dado O nome de variável de começar ç com uma letra com um um caractere “_” _ Caso a variável seja declarada mais de uma vez seu valor não é alterado. Inicialmente a variável não possui conteúdo Variáveis declaradas dentro de uma função são locais (escopo função) e fora são globais (escopo página) É possível atribuir valor a uma variável ainda não declarada Exemplo var x; //declaração var itemName="Produto"; //declaração e atribuição globalvar; //variável global sem o uso da keyword "var” Programação para Internet 44 Flávio de Oliveira Silva, M.Sc. JavaScript Operadores Aritméticos Atribuição Operador Descrição Exemplo Resultado Contexto + - Adição Subtração x=y+2 x=y-2 x=7 x=3 y=5 y=5 * Multiplicação x=y*2 x=10 y=5 / Divisão x=y/2 x=2.5 y=5 % Módulo (resto da divisão inteira) x=y%2 x=1 y=5 ++ Incremento -- Decremento x=++y x=y++ x=--y x=y-- x=6 x=5 x=4 x=5 y=6 y=4 Operador Exemplo Equivalente Resultado = += x=y y x+=y x=x+y y x=5 x=15 -= x-=y x=x-y x=5 *= x*=y x=x*y x=50 /= x/=y x=x/y x=2 %= x%=y x=x%y x=0 Programação para Internet Flávio de Oliveira Silva, M.Sc. 45 18 9/24/2011 JavaScript Operadores Relacionais É possível concatenar strings Se um número for adicionado a uma string o resultado será uma string Lógicos Operador Descrição Exemplo == igualdade === exatamente igual (valor e tipo) x==8 is false x===5 is true x==="5" is false != Diferente x!=8 is true > Maior x>8 is false < Menor x<8 is true >= Menor ou igual x>=8 is false <= Maior ou igual x<=8 is true Operador Descrição Exemplo && and lógico (x < 10 && y > 1) is true || or lógico (x==5 || y==5) is false ! ? not lógico Operador condicional !(x==y) is true varivalue=(condicao)?value1:value2 Programação para Internet Flávio de Oliveira Silva, M.Sc. 46 JavaScript Objetos A linguagem Javascript é orientada a objetos e a linguagem possui um conjunto de classes pré-definidas com seus métodos Os objetos possuem propriedades é métodos Acesso a uma propriedade p p objectInstance.property Acesso a um método objectInstance.methodName(); Todos os elementos de uma página podem ser modelados como objetos Objeto document Representa uma página carregada no navegador Outras classes String Date Array Boolean Math RegExp Programação para Internet Flávio de Oliveira Silva, M.Sc. 47 19 9/24/2011 Javascript Funções Possui a seguinte sintaxe function nomeFuncao(var1,var2,...,varX) { //codigo da funcao return returnValue; } Uma função pode ou não retornar valores As funções são utilizadas normalmente para responder a eventos Programação para Internet Flávio de Oliveira Silva, M.Sc. 48 Javascript Eventos Os eventos permitem criar páginas ou comportamentos dinâmicos Os eventos são detectados pela linguagem e são disparados pelos elementos de uma página HTML Exemplos de eventos Produzidos pelo mouse (click, movimento, etc) e teclado (pressionar) Carregamento de uma página ou imagem Seleção de um campo em um formulario (<form>) Submissão de uma página (request) Eventos dos elementos onLoad e onUnload onFocus, onBlur e onChange onSubmit onMouseOver Programação para Internet Flávio de Oliveira Silva, M.Sc. 49 20 9/24/2011 Javascript Funções - Exemplo <html> <head> <script type="text/javascript"> function displaymessage(){ alert("Hello World!"); //mostra mensagem alerta } </script> </head> <body> <form> <input type="button" <i t t "b tt " value="Click l "Cli k aqui!" i!" onclick="displaymessage()" /> </form> <p>Ao pressionar o botao a funcao sera invocada</p> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 50 Javascript Funções - Exemplo <html> <head> <script type="text/javascript"> function displaymessage(){ alert("Hello World!"); //mostra mensagem alerta } </script> </head> <body> <form> <input type="button" <i t t "b tt " value="Click l "Cli k aqui!" i!" onclick="displaymessage()" /> </form> <p>Ao pressionar o botao a funcao sera invocada</p> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 51 21 9/24/2011 Javascript Classes e Objetos Javascript é uma linguagem orientada a objetos, porém a abordagem para definir é essencialmente diferente de linguagens como C++ e Java Um objeto em Javascript é visto como um dicionário ou seja, uma coleção de propriedades e métodos onde a chave para acesso é o nome do método ou propriedade A título de comparação um objeto seria semelhante a uma struct da linguagem C, porém é possível associar métodos nesta estrutura Desta forma não existe um sintaxe para definição de uma classe, mas sim a definição de funções e um relacionamento entre as mesmas Na linguagem não existe definição entre funções e objetos. Uma função é um objeto com o código associado ao mesmo Em definição de objetos E JJavascript i tad fi i ã d bj t envolve: l Definição do Construtor Definição de Métodos Criação de objetos Programação para Internet Flávio de Oliveira Silva, M.Sc. 52 Javascript Classes e Objetos - Construtor A definição do construtor consiste na definção de uma função, onde o nome da função equivale ao nome da “classe” que será definida A palavra reservada this é responsável por associar a propriedade ou método à classe É possível realizar a sobrecarga de construtores, porém isto não é realizado de forma direta como em C++ ou Java Exemplo de Construtor function person(name,lastname,age,ecolor) { this.firstname=firstname; this.lastname=lastname; this.eyecolor=ecolor; } Programação para Internet Flávio de Oliveira Silva, M.Sc. 53 22 9/24/2011 Javascript Classes e Objetos - Métodos Um método é uma função que é associada a uma classe Para adicionar o método a uma classe a propriedade recebe o nome da função A função que define o método pode realizar o acesso às propriedades da classe utilizando a palavra reservada this É possível realizar a sobrecarga de métodos, porém isto não é realizado de forma direta como em C++ ou Java Exemplo de Método function showNameMethod(msg){ alert(msg + " “+ this.firstname); } function person(name,lastname,age,eyecolor){ this.firstname=firstname; thi fi t fi t this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; this.showName=showNameMethod //associação do método } Programação para Internet Flávio de Oliveira Silva, M.Sc. 54 Javascript Classes e Objetos - Criação A linguagem oferece algumas forma para a criação de um objeto Criação de uma instancia de objeto Neste não foi definida uma classe de objetos, apenas um objeto personObj=new Object(); personObj.firstname="Flavio"; personObj.lastname="Silva"; document.write(personObj.firstname); //acesso a propriedade Criação literal de um objeto Neste não foi definida uma classe de objetos, apenas um objeto que no fundo é um dicionário pObj1={firstname:"Flavio",lastname:"Silva"}; Criação de um objeto do construtor Ci ã d bj t a partir ti d t t var pObj2= new person("Flavio","Silva","green"); Programação para Internet Flávio de Oliveira Silva, M.Sc. 55 23 9/24/2011 Javascript Classes e Objetos - Exemplo <html> <body> <script type="text/javascript"> //defines a person constructor f ti h N M th d( ){ function showNameMethod(msg){ alert(msg+" "+this.firstname); } function person(fname,lname,ecolor){ this.firstname=fname; this.lastname=lname; this.eyecolor=ecolor; this.showName=showNameMethod; } var pObj= Obj new person("Flavio","Silva","green"); ("Fl i " "Sil " " ") for (x in pObj){ document.write(pObj[x] + " "); } pObj.showName("Name:"); </script> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 56 JavaScript Arrays Criação Construtor new com parâmetros var myCars=new Array("Saab","Volvo","BMW"); Declaração Literal var myCars=["Saab","Volvo","BMW"] Acesso Um array pode ser criado de três formas Construtor new Array(); var myCars=new y y(); // criacao myCars[0]="Saab"; // atribuicao myCars[1]="Volvo"; myCars[2]="BMW"; var element = arrayVarName[arrayIndex]; Modificação arrayVarName[arrayIndex] = newValue; Programação para Internet Flávio de Oliveira Silva, M.Sc. 57 24 9/24/2011 JavaScript Estrutura de Seleção (if-else) O comando if-else possui a seguinte sintaxe if (condicao) { //codigo // g executado se condicao é true } else { //codigo executado se condicao é false Programação para Internet Flávio de Oliveira Silva, M.Sc. 58 JavaScript Estrutura de Seleção (if-else) <html> <body> <script type="text/javascript"> var d = new Date(); ti tH () var time = d d.getHours(); if (time < 10) { document.write("<b>Good morning</b>"); } else { document.write("<b>Good afternoon</b>"); } </script> <p>Demonstracao do comando if-else.</p> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 59 25 9/24/2011 JavaScript Estrutura de Seleção (switch) O comando switch possui a seguinte abaixo e permite a escolhe de um entre vários blocos de código O valor de n é comparado com o valor contido em cada “case” e caso sejam iguais o bloco é executado. switch(n){ case 1: //executa bloco 1 break; case 2: //executa bloco 2 break; default: //codigo executado independente do valor de n } Programação para Internet Flávio de Oliveira Silva, M.Sc. 60 JavaScript Estrutura de Controle(while) While while (condicao) { //código // g excutado } Exemplo var i=0; while (i<=5) { document.write("valor: " + i); document.write("<br />"); i++; } Programação para Internet Flávio de Oliveira Silva, M.Sc. 61 26 9/24/2011 JavaScript Estrutura de Controle(do-while) do-while do { //bloco executado // } while (condicao); Exemplo var i=0; do { document.write(" valor:" + i); document.write( <br />"); /> ); document write("<br i++; } while (i<=5); Programação para Internet Flávio de Oliveira Silva, M.Sc. 62 JavaScript Estrutura de Controle(for) for for (countInit;countComparacao;contIncremento) { //bloco executado // }; Exemplo var i=0; for (i=0;i<=5;i++){ document.write(" valor: " + i); document.write("<br />"); } Programação para Internet Flávio de Oliveira Silva, M.Sc. 63 27 9/24/2011 JavaScript Estrutura de Controle(for..in) Este método interage sobre as propriedades de um objeto ou de um array for (variavel in object) { code to be executed } Exemplo <html> <body> <script type="text/javascript"> var person={fname:"John",lname:"Doe",age:25}; for (x in person){ document.write(person[x] + " "); } </script> </body> </html Programação para Internet Flávio de Oliveira Silva, M.Sc. 64 JavaScript Estruturas de Controle (break e continue) Em todas as estruturas de controle é possível utilizar os comandos: break e continue break Continue for Finaliza a execução do laço independente da condição Encerra a execução de um laço e continua no próximo passo Programação para Internet Flávio de Oliveira Silva, M.Sc. 65 28 9/24/2011 Javascript Exemplos - Eventos <html> <head> <script type="text/javascript"> function displayDate(){ document.getElementById("demo").innerHTML=Date(); } </script> </head> <body> <h1>My First Web Page</h1> <p id="demo">This is a paragraph.</p> < id "d ">Thi i h </ > <button type="button" onclick="displayDate()">Display Date</button> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 66 Javascript Exemplos - Validação <html> <head> <script type="text/javascript"> function validateForm(){ d t f [" F "][" il"] l var x=document.forms["myForm"]["email"].value var atpos=x.indexOf("@"); var dotpos=x.lastIndexOf("."); if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) { alert("Not a valid e-mail address"); return false; } } </script> </head> /h d <body> <form name="myForm" action="x" onsubmit="return validateForm();" method="post"> Email: <input type="text" name="email"> <input type="submit" value="Submit"> </form> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 67 29 9/24/2011 Javascript Exemplos – Objetos <html> <body> <script type="text/javascript"> //defines a person constructor f ti (f l l ){ function person(fname,lname,ecolor){ this.firstname=fname; this.lastname=lname; this.eyecolor=ecolor; } //constructs a new object pObj var pObj= new person("Flavio","Silva","green"); for (x in pObj){ document.write(pObj[x] + " "); } </script> </body> </html> Programação para Internet Flávio de Oliveira Silva, M.Sc. 68 30