Escolar Documentos
Profissional Documentos
Cultura Documentos
(Versão para Impressão) Linguagem de Programação e Ferramentas
(Versão para Impressão) Linguagem de Programação e Ferramentas
EMENTA
Linguagens de Programação. (PHP, Python e Java). Desenvolvimento de aplicações corporativas.
Desenvolvimento de aplicações para pequenos dispositivos. Desenvolvimento de Aplicações para Web.
Desenvolvimento de Portais. Boas práticas. Ferramentas de desenvolvimento.
OBJETIVOS
Geral
Conhecer e compreender as principais linguagens de programação baseadas em software livre, bem como
os principais conceitos e ferramentas.
Específicos
escrever pequenos programas em PHP, Python e Java;
conhecer e utilizar as principais ferramentas de desenvolvimento livres;
aplicar os principais conceitos na prática.
CONTEXTUALIZAÇÃO
Atualmente, existem várias formas de escrever programas de computadores. Para este curso, escolhemos
três das principais linguagens disponíveis para programação com software livre. Estas linguagens permitem
que se escrevam aplicações para os mais diferentes cenários.
Parte 01 - PHP
1 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Tudo ia bem, até que surgiu o CGI (Common Gateway Interface), programa executado no servidor web que
gera dinamicamente uma página HTML, normalmente escrito em C ou PERL. Uma página dinâmica não tem
um arquivo gravado no servidor web, com o exato conteúdo apresentado; o conteúdo é produzido pela
execução de um programa. A figura abaixo apresenta a nova configuração.
Na realidade, o CGI fica dentro do servidor web, mas foi colocado fora apenas para facilitar a visualização.
Acompanhando a figura, vemos que o visitante requisita uma página ao servidor web que identifica esta
página como dinâmica e solicita a execução de um programa CGI. O CGI “imprime” uma página HTML no
servidor web, que retorna exatamente o mesmo conteúdo para o visitante. O CGI literalmente imprime a
página através de comandos de saída como printf do C; como sua execução foi solicitada pelo servidor web,
a saída não é impressa na tela, mas entregue ao servidor.
O CGI reinava absoluto até que, no final dos anos de 1990, surgiu a idéia de inserir os comandos da
linguagem de programação dentro da página HTML, deixando a cargo do servidor web a execução dos
comandos, retirando uma peça dessa configuração e, com isso, ganhando em performance. Nasceram então
as linguagens de programação de script do lado do servidor.
O PHP é conhecido como a linguagem de programação para Internet mais utilizada. É praticamente a
linguagem de programação mais utilizada na Internet. Contudo, sempre que formos enaltecer o PHP, é
importante destacar que é a linguagem de programação para Internet, do lado do servidor, mais utilizada.
Isso porque, se fôssemos incluir também a linguagem do lado do cliente, a mais utilizada, sem dúvida
alguma, seria o JavaScript.
2 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
E por que utilizar PHP e não outra linguagem de programação para web, do lado do servidor? Ao optar por
uma das mais utilizadas linguagens, você estará nadando a favor da correnteza e, com isso, contará com
tutoriais, exemplos, scripts (código/programa livre para ser copiado e utilizado), fóruns de discussão e
outras pessoas com as quais pode trocar experiências e tirar dúvidas. Ainda não está convencido? Então,
saiba que tudo isso é de graça, uma linguagem de programação de código aberto.
Ainda não está completamente convencido? Vamos recorrer a dados técnicos. Veja os suportes da
linguagem PHP:
Bancos de dados – Adabas, dBase, Direct MS-SQL, Empress, FilePro, FrontBase, Hyperwave, IBM
DB2, Informix, Ingres, InterBase, mSQL, MySQL, Oracle, Ovrimos, PostgreSQL, Solid, SQLite,
Sybase, Unix dbm e Velocis, além de suporte a ODBC (Open Database Connection).
Protocolos como – LDAP, IMAP, SNMP, NNTP, POP3, HTTP e COM, além do suporte a sockets.
Processa XML suportando os padrões SAX, DOM e extensão XSL.
Sistemas operacionais – Windows, Linux, FreeBSD, Mac OS, OS/2, AS/400, Novell Netware,
RISC OS, IRIX e Solaris.
1.2 História
A linguagem PHP (Personal Home Page) foi criada por Rasmus Lerdorf, em 1994, para que ele pudesse ter
informações sobre as visitas feitas ao seu currículo em sua página pessoal. Em 1995, foi liberada a
primeira versão ao público, conhecida como PHP Tools, basicamente um conjunto de utilitários simples:
livro de visitas, contador de visitas e alguns outros.
Em 1997, o interpretador foi reescrito e rebatizado como PHP/FI (PHP Form Interpreter). Essa versão
incorpora a interpretação a dados de formulários HTML e suporte a mSQL. Seu uso cresceu e muitos
passaram a contribuir com o projeto; estima-se que esse uso tenha subido de 15 mil para mais de 50 mil
sites nesse ano.
Com a explosão do uso, o projeto deixou de ser executado por Rasmus com contribuições de outras
pessoas para ter uma equipe de desenvolvimento. O interpretador foi novamente reescrito por Zeev Suraski
e utilizado como base para a versão 3 do PHP, que introduzia recursos ainda tímidos de orientação a
objetos. Pouco depois, Zeev e Andi Gutmans escreveram o PHP 4 a partir do zero. Esta versão ampliava a
orientação a objetos.
O nome da linguagem sempre se manteve PHP, mas, com o crescimento da linguagem, seu significado
3 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
passou do modesto Personal Home Page para Hypertext Preprocessor, nome democraticamente escolhido
por votação na comunidade que o mantém.
Em junho de 2004, foi lançada oficialmente a versão 5 do PHP, trazendo tantas modificações em relação à
versão 4 que fez com que muitos programas deixassem de funcionar, o que causou atraso em sua adoção.
Somente em julho de 2007 foi anunciada, oficialmente, no site do PHP, a descontinuidade da versão 4 e a
recomendação de que, até o final do ano, as aplicações fossem adaptadas para a versão 5. Mesmo assim
ainda há muitos programas rodando na versão 4.
Apesar de a versão 4 já ser muito poderosa, infelizmente, criou o mito de que qualquer pessoa poderia
programar em PHP. Mas isso não é verdade! Talvez seja fácil para um leigo escrever um programa, mas,
com certeza, não será fácil programar. Contudo, essa imagem vem mudando e, cada vez mais, o PHP é
visto como uma linguagem de programação para ser explorada em grandes projetos.
Na versão 5, o PHP finalmente chegou à idade adulta. Seu mecanismo interno foi novamente reescrito, por
completo, para operar com o Zend Engine 2.0, o que proporcionou significativo aumento na velocidade de
execução e performance na programação orientada a objeto. O Zend Engine é a junção dos nomes do Zeev
Suraski e Andi Gutmans.
A promessa de que a versão 6 retirará muitas características do PHP, para torná-lo mais prático, já está
gerando muitas discussões em listas de desenvolvedores sobre o problema do legado (programas escritos
na versão 5 que podem deixar de funcionar).
1.3 Instalação
1.3.1 EasyPHP
Temos vários e ótimos servidores web que dão suporte para PHP. De fato, o EasyPHP não é um servidor
web, mas um pacote de instalação que contém o servidor web Apache com: o módulo de interpretação do
PHP; o banco de dados MySQL; o PHPMyAdmin, que é um módulo de administração do MySQL e o SQLite,
uma ferramenta de administração de bancos de dados SQL.
O EasyPHP é muito simples de ser instalado e é compatível com Windows e Linux. Atualmente, está na
versão 2.0 beta1, que, apesar de beta, é a que recomendamos que você instale.
Para instalar o EasyPHP 2.0 beta1 no windows você deve seguir os passos abaixo:
http://www.easyphp.org;
http://superdownloads.uol.com.br/download/105/easyphp/;
http://baixaki.ig.com.br/download/EasyPHP.htm.
4 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Caso ocorra algum erro durante a instalação, é possível que você já tenha um servidor Web ou MySQL
iniciado. Nesse caso, abra o “painel de controle”, acesse “ferramentas administrativas”, clique duas vezes
sobre o ícone “serviços”, localize e pare os serviços conflitantes. Outra possível causa de erro é algum
programa que utiliza a porta 80, como o Skype, por exemplo. Nesse caso, feche o programa para utilizar o
EasyPHP.
Recomendamos o EasyPHP na versão windows, por acreditar que será mais simples para a maioria dos
alunos, mas nada impede que você utilize outro pacote ou servidor web.
O PHP Editor é um editor leve, que possui recursos avançados e ainda tem como diferenciais o fato de ter
sido desenvolvido em terras tupiniquins, por Diogo Edegar Mafra; logo, está disponível em português do
Brasil, possuindo licença Freeware. Sua desvantagem é rodar apenas no ambiente windows. A versão 2.22
pode ser baixada de um dos sites abaixo.
http://paginas.terra.com.br/informatica/php_editor/index.html;
http://superdownloads.uol.com.br/download/65/php-editor/;
http://baixaki.ig.com.br/download/PHP-Editor.htm.
Nesta aula, discutimos o que é o PHP, com suas principais características, mas sem entrar na programação,
e falamos sobre onde rodar e editar o PHP. Na próxima aula, começaremos a programar em PHP. Até lá!
2.1 HTML
Vamos dar uma “passada relâmpago” por HTML. O que vemos, abaixo, é uma página HTML bastante
simples, mas que contêm todas as tags que utilizaremos em nosso curso.
5 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
arquivo.html
1. <html>
2. <head>
3. <title>Titulo da pagina</title>
4. </head>
5. <body bgcolor="#FFFFC0">
6. Texto do corpo da pagina.<p>
7. Primeira linha
8. Segunda linha<br>
9. Terceira linha
10. <hr>
11. <b>Quarta linha</b><br>
12. <i>Quinta linha</b>
13. <!- Comentario em HTML >
14. <table border=1>
15. <tr>
16. <td>Elemento 1</td>
17. <td>Elemento 2</td>
18. </tr>
19. <tr>
20. <td>Elemento 3</td>
21. <td>Elemento 4</td>
22. </tr>
23. </table>
24. <a href="http://www.ucb.br">UCB</a>
25. </body>
26. </html>
Para ver o resultado, salve o conteúdo do quadro acima em um arquivo texto com as extensões “.html” ou
“.htm”. Pode utilizar o PHP Editor, que irá reconhecer a sintaxe HTML. Em seguida, abra o arquivo em
qualquer navegador Internet (menu “Arquivo” e opção “Abrir...”).
Algumas considerações:
6 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
As tags (marcações do HTML) consistem no sinal “<” (menor que), seguido pelo nome da tag e
fechada por “>” (maior que).
A página deve ser identificada como HTML (<html></html>) e ter duas seções: cabeçalho
(<head></head>) e corpo (<body></body>). No cabeçalho, temos o título da página
(<title></title>), que aparece na barra de título da janela do navegador e no corpo; temos todas
as tags com o conteúdo da página.
HTML não é case sensitive (faz distinção entre maiúsculas e minúsculas); então, não há diferença
entre escrever <html> ou <HTML> ou <HtMl>.
Geralmente, as tags aparecem em pares, como vemos na linha 11 (<b>Quarta linha</b>), onde
a tag é aberta e fechada. A tag de fechamento é a mesma tag de abertura, com a inclusão de uma
barra “/”. Contudo, algumas tags, como <p>, <br> e <hr>, não necessitam ser fechadas.
O parâmetro “bgcolor”, da tag <body>, define a cor de fundo da página; o valor desse parâmetro
deve ser um número hexadecimal correspondente à cor desejada.
Para formatar estilo no texto, pode-se utilizar a tag <b> para negrito e <i>, para itálico.
A tag <hr> produz uma linha horizontal.
As tags de tabela <table>, <tr> e <td> marcam o início e fim de tabela, linha e coluna,
respectivamente. Observe que são criadas as várias colunas dentro de cada linha.
A tag <a> é utilizada para criar um link, seu parâmetro “href” define o endereço do link.
hello.php
1. <html>
2. <head><title>Hello World!</title></head>
3. <body>
4. <?php
5. echo "Hello world!<p>";
6. ?>
7. </body>
8. </html>
O fato é que o Hello world! nos permite duas coisas bastante interessantes em qualquer linguagem:
verificar se o compilador/interpretador está funcionando e conhecer a estrutura básica da linguagem. Nós
faremos ambas. Primeiramente, vamos visualizar essa página; para isso, siga os passos abaixo:
7 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
4. Dê um clique duplo sobre o ícone do EasyPHP, a fim de abrir sua janela. Garanta que o Apache
esteja iniciado (com a luz verde do semáforo).
Cuidado: Minimize esta janela, mas não a feche, para que o EasyPHP possa, utilizando o Apache, servir
sua página (ou programa PHP).
5. Abra um navegador Internet e digite o endereço “http://localhost/”. Se tudo der certo, será
apresentada a seguinte página:
6. Esta não é ainda a sua página, mas uma página padrão que o EasyPHP mostra com todas as
páginas que estão no diretório “www”. Clique em “hello.php” e verá sua página. Se houver nesse
diretório um arquivo chamado “index.html”, este será apresentado no lugar da página padrão.
Parabéns! Você acaba de se tornar um programador PHP e agora já faz parte da comunidade de
programadores da linguagem de programação para Internet mais popular do mundo!
Respire fundo e continue. O Hello world! também é muito útil para apresentar a estrutura básica da
linguagem, o que será bastante simples, pois temos apenas 1 linha de código PHP nesse programa
(poderíamos também chamá-lo de página ou script, mas vamos convencionar chamar de programa), que
está na linha 5.
O nosso programa é basicamente uma página HTML; é isso que significa, na prática, uma linguagem de
programação de script embutida no HTML. Veja que, no meio do HTML, há a tag <?php ... ?>, que
delimita o código PHP. A função dessa tag é dizer ao servidor web que seu conteúdo deve ser interpretado
(executado) pelo PHP.
A linha 5 é bastante simples, apenas executa o comando echo, utilizado como um comando de saída pelo
PHP, equivalente ao “System.print” do Java e ao “printf” do C. Como o PHP está sendo executado pelo
servidor web, sua saída será “impressa” em uma página HTML.
Observe que colocamos as tags <head>, <title> e seus fechamentos na mesma linha, embora isso não
seja muito bonito, fizemos para economizar linhas em nossos exemplos.
8 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Agora veja como a página ficou. Veja as tags HTML dessa página. Independentemente do navegador
(Firefox ou Internet Explorer), vá ao menu “Exibir” e escolha “Código fonte”.
HTML puro! O servidor web executa os comandos PHP e gera uma página HTML apenas com as saídas
produzidas pelo PHP; com isso, seu código está seguro dos copiadores de plantão.
Contudo, vale destacar que o indicado é você utilizar a forma como fizemos no primeiro programa. As
demais formas podem necessitar da configuração do interpretador PHP para serem aceitas.
2.3.3 Comentários
PHP permite comentários de linha e de bloco. Para fazer comentários de linha, você pode utilizar o
tradicional barra-barra, “//” ou o cerquilha “#”. Para comentários de bloco, foi mantido apenas o
tradicional barra-asterisco “/* ... */”.
2.3.4 Atribuição
Em PHP, como na imensa maioria das linguagens de programação, o igual “=” é utilizado para atribuição de
valores. Mesmo que os matemáticos odeiem!
2.3.5 Operadores
Os operadores aritméticos, relacionais e lógicos do PHP estão listados abaixo.
- Subtração != Diferente || or Ou
9 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Além dos operadores acima, PHP ainda possui o operador de concatenação de string, o ponto final “.” e a
possibilidade de escrever operadores abreviados, como em C (+=, -+, *=, /=, %=, .=) e os operadores
de incremento (++) e de decremento (--). O exemplo abaixo mostra o uso desses operadores. No próximo
item, falaremos mais sobre variáveis, mas adiantaremos que, em PHP, toda variável deve iniciar com cifrão
“$”.
Os parênteses “(...)” são utilizados como operador de precedência, como vimos nos dois últimos exemplos
acima. Em PHP, toda condição deve, obrigatoriamente, estar entre parênteses.
2.4 Variáveis
O PHP utiliza tipagem fraca de variável com checagem dinâmica; isso significa que as variáveis não
precisam ser declaradas e podem conter valores de diferentes tipos ao longo da execução do programa.
Apesar disso, podemos afirmar que PHP suporta os seguintes tipos de dados (veja que utilizamos a palavra
“dados” e não “variáveis”):
10 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
caracteres (string);
vetor (array);
objeto (object).
O tipo objeto é utilizado para programação orientada a objetos, que não exploraremos por não ser o foco
de nosso estudo do PHP. Vamos nos concentrar então na programação web.
O PHP possui uma particularidade, com relação ao delimitador de valores string, que pode ser aspas
simples ( ' ) ou dupla ( " ). Utilizando aspas simples, o PHP entenderá o valor exatamente como está
(exceto os caracteres especiais); utilizando aspas duplas, o PHP interpretará as variáveis contidas. O
exemplo seguinte deixa claro o que isso significa.
variavel.php
1. <html>
2. <head><title>Variavel</title></head>
3. <body>
4. <?php
5. $a=1;
6. echo "A variavel vale ==> $a<br>";
7. echo 'A variavel vale ==> $a<br>';
8. $a="PHP"; // Note que a mesma variável recebe um valor string.
9. echo "A variavel vale ==> $a<br>";
10. $a=2.3; // E agora ponto-flutuante.
11. echo "A variavel vale ==> $a<p>";
12. echo "A variavel \"a\" esta valendo $a";
13. ?>
14. </body>
15. </html>
Para testá-lo, siga os passos que utilizamos em nosso primeiro programa. Teste o programa observando o
que será impresso pelas linhas 6 e 7, devido ao uso das aspas simples e duplas.
Você notou que a linha 12 possui barras “\” que não são impressas? Isso porque, assim como C, PHP
possui uma série de caracteres especiais que garantem a impressão de caracteres que não poderiam ser
impressos, porque têm função especial dentro da string. O quadro a seguir apresenta os principais
caracteres especiais.
\\ \
\$ $
\’ ’
\” ”
O PHP não possui um tipo booleano (verdadeiro ou falso), mas é capaz de avaliar expressões lógicas. A
maneira escolhida foi a mesma que a linguagem C, através de um valor inteiro: 0 (zero), para falso, e
qualquer valor diferente de zero (geralmente 1), para verdadeiro.
11 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
vetor.php
1. <html>
2. <head><title>vetor</title></head>
3. <body>
4. <?php
5. $fruta[1] = "abacaxi";
6. $fruta[2] = "banana";
7. $fruta[3] = "caju";
8. $fruta["qtd"] = 3;
9. echo "Temos ".$fruta["qtd"]." frutas: ";
10. echo "$fruta[1], $fruta[2] e $fruta[3]";
11. ?>
12. </body>
13. </html>
Curioso, não é?! Observe a afirmação acima, onde se diz que “índices podem ser de qualquer tipo”. No
exemplo, temos 3 índices do tipo inteiro (linhas 5, 6 e 7) e um índice do tipo string (linha 8). Veja que o
índice está entre aspas ( “ ). Isso faz sentido quando lembramos que a checagem de tipos em PHP é
dinâmica; com isso, valores de tipos diferentes podem ser usados como índices de vetores, assim como os
valores mapeados (conteúdo do vetor) também podem ser de diversos tipos. Outra forma de fazer a
mesma atribuição das linhas de 5 a 8 seria utilizar a função “array()”. As quatro linhas seriam substituídas
pela linha abaixo:
$fruta = array(1 => "abacaxi", 2 => "banana", 3 => "caju", "qtd" => 3);
(string) Caracteres
(array) Vetor
(object) Objeto
12 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
$a = 1; // $a é inteiro e vale 1
Outra maneira de converter variáveis, é utilizando a função “settype()”, onde deve ser informado como
parâmetros o nome da variável, a ser convertida e um valor string com o tipo (typecasts) desejado. Por
exemplo:
$a = 1.5; // $a é ponto-flutuante
2.4.3 Constantes
Certa vez, um aluno definiu constante da seguinte forma: “constante é uma variável que tem um valor que
não varia”. Pode parecer engraçado, mas é exatamente isso; afinal, uma vez associado um valor, este não
pode mais ser alterado.
Para definir constantes em PHP, deve-se utilizar a função define(). O exemplo abaixo define e utiliza a
constante pi:
define("pi", 3.1415926536);
echo "O valor de pi é ".pi;
Nome Descrição
Cuidado: No exemplo acima, a variável de ambiente é um vetor chamado “$_SERVER”, cifrão + underline
+ “SERVER”. Não se esqueça do underline.
13 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Nesta aula, revisamos rapidamente HTML e fizemos nosso primeiro programa em PHP. Em seguida,
começaremos a explorar a estrutura da linguagem, em nossa próxima aula. Até lá!
3.1.2 IF
Não conhecemos uma linguagem de programação que não tenha o bom comando “if”. Em PHP, o “if”
funciona com o conceito de blocos de comando. Isso significa que, se a condição for válida, será executado
o próximo comando. Se você necessitar que o “if” execute mais de um comando, basta colocá-los dentro
de um bloco. Veja o exemplo:
$a=1;
if ($a == 1)
echo "um";
else {
echo "outro valor que não um";
echo "<br>";
}
$a=1;
if ($a == 1):
echo "um";
else:
echo "outro valor que não um";
echo "<br>";
endif;
14 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Observe os dois pontos “ : ” colocados após o “if” e o “else”. Outra flexibilização que existe no comando
“if” é o “elseif”, para possibilitar ao comando “if” avaliar várias condições, funcionando de forma similar
ao comando “switch” (que veremos em breve). Veja o exemplo abaixo:
$a=1;
if ($a == 1)
echo "um";
elseif ($a == 2)
echo "dois";
else {
echo "outro valor que não um ou dois";
echo "<br>";
}
O “else” e o “elseif” são opcionais dentro do “if”, podendo não ser utilizados. O “elseif” pode ser
utilizado mais de uma vez dentro do “if”.
3.1.3 SWITCH
Como dissemos, o comando “switch” e “elseif” podem ser utilizados para resolver o mesmo problema,
mas, nesses casos, o “switch” é mais recomendado, por questões de performance e higiene de
programação (código limpo e de fácil leitura). Basicamente, o “switch” avalia vários valores de uma
mesma variável; já o “elseif” pode avaliar qualquer condição. O exemplo seguinte faz o mesmo do
exemplo anterior, porém, utilizando “switch”.
$a=1;
switch ($a) {
case 1:
echo "um";
break;
case 2:
echo "dois";
break;
default:
echo "outro valor que não um ou dois";
echo "<br>";
}
Assim como o “else” do comando “if”, o “default” do “switch” é opcional; caso exista, será executado
nas situações onde nenhum “case” seja avaliado como igual. Outro ponto é o comando “break” (veremos
melhor abaixo), que interrompe a seqüência de execução do “switch”. Isso normalmente é necessário,
porque o comando “switch” foi desenhado para, ao avaliar um “case” como igual, executar todos os
comandos abaixo, até o final do “switch”, mesmo que estes estejam em outro “case”. É como no dito
popular: “Em porteira que passa um boi, passa uma boiada”.
Uma particularidade do comando “switch” do PHP é a possibilidade de avaliar valores do tipo caracter.
15 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
3.2.1 WHILE
O comando de repetição “while” é o mais simples dos comandos de repetição. Ele avalia a condição e
executa o(s) comando(s) até que a condição retorne falso. Assim como o “if”, também permite a utilização
de blocos de comandos e marcador de término. Abaixo são mostradas as duas maneiras:
$a = 1; $a = 1;
while ($a <= 10) { while ($a <= 10):
echo "$a<br>"; echo "$a<br>";
$a++; $a++;
} endwhile;
O while executa no mínimo zero e no máximo N vezes. Zero porque, ao chegar no “while”, a condição pode
ser avaliada como falsa e não chegará a executar a primeira vez, N porque pode entrar em um “loop
infinito”, repetindo eternamente, caso em que a condição nunca seria avaliada como falsa. Isso ocorreria
no exemplo acima se testássemos ($a > 0).
3.2.2 DO..WHILE
O comando de repetição “do..while” funciona de maneira semelhante ao “while”, a diferença é que a
condição é avaliada após a primeira execução, com isto ele executa no mínimo uma vez e no máximo N
vezes. O exemplo abaixo mostra um uso do “do..while”:
$a = 1;
do {
echo "$a<br>";
$a++;
} while ($a <= 10);
Em C, o comando “do..while” já opera apenas com marcador de término, o PHP manteve apenas essa
forma de escrita do comando. Os comandos “while” e “do..while” são conhecidos como repetição
condicional, onde a repetição depende da satisfação de uma condição.
3.2.3 FOR
O comando de repetição “for” excuta repetição controlada, em que o programador define o número de
vezes que irá repetir, mesmo que esse número seja o valor de uma variável. A sintaxe C, adotada pelo PHP,
coloca uma condição dentro do “for”, o que não altera sua característica de repetição controlada.
Inicialização – Executada apenas a primeira vez, antes da execução do(s) comando(s) e serve
para definir o valor da variável de controle.
Condição – Executada todas as vezes, a primeira vez é antes da execução do(s) comando(s) e
serve para interromper a repetição; na realidade, o “for” tem funcionamento bastante similar ao
“while”, executando enquanto essa condição for avaliada como verdadeira.
Incremento – Ou decremento, é executado a partir da segunda vez, antes da segunda execução
do(s) comando(s) e serve para alterar o valor da variável de controle. Normalmente utiliza um
16 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Abaixo é mostrada a sintaxe do “for”, com blocos de comandos. O “for” também pode ser escrito com
marcador de término.
Esse exemplo apresenta o for escrito, com marcador de término. A execução do exemplo produzirá o
mesmo resultado dos exemplos de “while” e “do..while”, como segue;
Utilizamos o mesmo exemplo apenas para demonstrar a sintaxe dos comandos, mas claro que você sabe a
diferença conceitual entre comandos de repetição condicionais que são executados de 0..N, de 1..N e
comandos de repetição controlado. Caso você não se sinta totalmente confortável nesse assunto,
recomendamos a leitura de livros de lógica de programação e de algoritmo de programação.
O comando “continue” é irmão gêmeo bivitelino do comando “break”, que, no lugar de parar a repetição,
como faz seu irmão, desvia o fluxo de execução para a condição do comando de repetição. Veja o exemplo
abaixo, aparentemente muito parecido, mas com comportamento bastante diferente.
Ao encontrar um múltiplo de 7, o comando “continue” irá desviar o fluxo de execução para a condição,
fazendo com que o comando “echo” não seja executado; com isso, o resultado final desse programa será a
impressão dos números de 10 a 100, com exceção dos múltiplos de 7.
3.3 Subprogramas
17 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Para o PHP, todo subprograma (procedimento ou função) é escrito como função. Uma vez que a checagem
de tipos em PHP é dinâmica, o tipo de retorno não necessita ser declarado; com isso, a única diferença na
escrita de um procedimento ou função é a presença do comando de retorno no corpo da função. Devido a
essa ausência de tipos, é recomendável que o programador documente suas funções para facilitar a
compreensão do código. O exemplo abaixo mostra a declaração de uma função e uma forma eficiente de
documentá-la. Você verá que é bastante semelhante à declaração de uma função em Pascal.
O comando “return” é utilizado para retornar o valor da função, mas é opcional; se o retirarmos, essa
função passa a ser um procedimento. Você lembra qual é a diferença conceitual entre eles? Função executa
comando(s) e retorna 1 valor. Procedimento executa comando(s) e não retorna valor. Ambos podem
receber parâmetros.
18 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
O exemplo da esquerda realiza a passagem de parâmetro por valor, onde é passado 5 como parâmetro,
alterado o valor da variável $numero para 6, mas o valor da variável $a permanece 5. O exemplo da
direita realiza a passagem de parâmetro por referência, ao alterar o valor da variável $numero para 6, o
valor da variável $a também é alterado para 6, isso porque, de verdade, a variável $numero não existe,
sendo uma referência (espécie de link) para a variável $a.
Observe que a indicação de que a passagem de valor será por referência é feita através da inclusão do
modificar e comercial (“&”) na declaração da função.
Na seqüência dos parâmetros, o parâmetro com valor padrão deve ser sempre o último.
Nesta aula, concluímos a exploração da linguagem PHP. Agora podemos nos dedicar à programação para
Internet, assunto de nossa próxima aula.
Até lá!
Aula 04 – Formulários
Na aula anterior, concluímos nosso passeio pela linguagem PHP. Mas você deve ter sentido falta dos
comandos de entrada para possibilitar ao usuário digitar seu nome, sua idade e outros dados necessários.
Como estamos olhando PHP sob a ótica de uma linguagem de programação web, toda entrada de dados se
dará através de um formulário HTML.
19 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Abaixo, apresentamos uma página HTML que contém um formulário com os mais comuns e importantes
campos, sendo eles:
formulario.html
1. <html>
2. <head>
3. <title>Formulario</title>
4. </head>
5. <body>
6. <form method="post" action="http://localhost/formulario.php">
7. Nome:<br>
8. <input type="text" name="nome"><p>
9. Idade:<br>
10. <input type="text" name="idade"><p>
11. Senha:<br>
12. <input type="password" name="senha"><p>
13. Estado Civil:<br>
14. <select name="estadoCivil">
15. <option value="S">Soltero(a)
16. <option value="C">Casado(a)
17. <option value="O">Outro(a)
18. </select><p>
19. Gênero Musical:<br>
20. <select name="generoMusical[]" multiple size="5">
21. <option>MPB
22. <option>Pop/Rock
23. <option>Outros
24. </select><br>
25. Para selecionar mais que um mantenha o ctrl pressionado.<p>
26. Particularidades:<br>
27. <input type="checkbox" name="fumante" value="s">Fumante.<br>
28. <input type="checkbox" name="doador" value="s">Doador de orgaos
29. <p>Sexo:<br>
30. <input type="radio" name="sexo" value="M" checked>Masculino
20 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Teste para ver como vai ficar, observe cuidadosamente cada detalhe. Vamos agora destacar alguns pontos
importantes:
O parâmetro “method” é utilizado na tag “<form>” para indicar como será o envio das
informações do formulário para o servidor. Existem dois métodos: GET e POST. Utilizando o
método “get”, o formulário envia todos os campos ao final da URL, enquanto que, utilizando o
método “post”, o formulário transmite todos os campos via formulário, imediatamente após a URL.
O melhor e mais seguro método é o “post”.
O parâmetro “action” é utilizado na tag “<form>” para indicar o endereço para onde serão
enviados os valores dos campos do formulário. Nós enviaremos estes valores para um programa
PHP; no exemplo acima, foi endereçado o programa “formulario.php” (que veremos mais adiante)
em “http://localhost”.
Os campos do formulário possuem o parâmetro “name” para possibilitar a identificação dos
valores dos campos no programa PHP. Cuidado para garantir que todos os campos possuam nomes
diferentes.
O valor 5 do parâmetro “size” do campo “select size” (size="5") indica que deve ser apresentado
um campo com 5 linhas para escolha. Este valor não tem nenhuma relação com a quantidade
máxima de valores que poderão ser selecionados.
O campo de entrada por botões de seleção “radio” é utilizado para forçar o usuário a escolher
apenas um valor. Para que HTML agrupe os botões “radio” estes devem possuir o mesmo valor
para o parâmetro “name”. No exemplo temos dois botões “radio” pertencentes ao grupo “sexo”.
O campo de entrada oculta “hidden” é utilizado para ocultar (esconder) do usuário informações
passadas pelo formulário. Esse campo não é exibido ao usuário. O parâmetro “value” é obrigatório
e é utilizado para especificar o valor oculto a ser enviado.
O botão de submissão “submit” é utilizando para enviar os valores dos campos para o endereço
definido em “action”, utilizando método definido em “method”.
Se tudo correu bem, você verá uma página com um monte de informações. Essas informações foram
impressas pela função “phpinfo()”, que fornece detalhes sobre o ambiente do cliente e do servidor, mas o
que realmente queremos que você observe é o tópico “PHP Variables”, que contém uma lista de variáveis
do PHP. Localize a variável “$_POST["nome"]” – pelo que já vimos até agora, podemos afirmar que se
trata de um vetor.
21 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
O vetor “$_POST” é uma variável de ambiente que contém todos os campos passados pelo formulário. O
índice “nome” foi definido no parâmetro “name” do campo que enviou esse valor (veja em nosso
formulário). Vamos agora ver se, na prática, conseguimos mesmo pegar um valor. Altere o programa
“formulario.php”, conforme o exemplo abaixo. Lembre-se de que esse programa não deve ser executado
diretamente, devendo ser chamado a partir da página “formulario.html”, para que possa capturar os
valores passados. Veja o exemplo:
formulario.php
1. <html>
2. <head><title>Formulario</title></head>
3. <body>
4. Você digitou os seguintes valores:<p>
5. <table border=1>
6. <?php
7. echo "<tr><td>Nome:</td><td>".$_POST["nome"]."</td></tr>";
8. echo "<tr><td>Idade:</td><td>".$_POST["idade"]."</td></tr>";
9. echo "<tr><td>Senha:</td><td>".$_POST["senha"]."</td></tr>";
10. echo "<tr><td>Estado Civil:</td><td>";
11. switch ($_POST["estadoCivil"]) {
12. case "S": echo "Soltero(a)"; break;
13. case "C": echo "Casado(a)"; break;
14. case "O": echo "Outro(a)"; break;
15. }
16. echo "</td></tr>";
17. echo "<tr><td>Genero Musical:</td><td>";
18. if (!isset($_POST["generoMusical"]))
19. echo "-";
20. else {
21. for ($i=0; $i < count($_POST["generoMusical"]); $i++)
22. echo $_POST["generoMusical"][$i]."<br>";
23. }
24. echo "</td></tr>";
25. echo "<tr><td>Fumante:</td><td>";
26. if (isset($_POST["fumante"]))
27. echo "Sim";
28. else
29. echo "Nao";
30. echo "</td></tr>";
31. echo "<tr><td>Doador de orgaos:</td><td>";
32. if (isset($_POST["doador"]))
33. echo "Sim";
34. else
35. echo "Nao";
36. echo "</td></tr>";
37. echo "<tr><td>Sexo:</td><td>";
38. if ($_POST["sexo"] == "M")
39. echo "Masculino";
40. else
41. echo "Feminino";
42. echo "</td></tr>";
43. echo "<tr><td>Observacao:</td><td>"
44. echo $_POST["observacao"]."</td></tr>";
22 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Em uma primeira análise, o código pode parecer assustador, mas não o é; com calma, é bem simples
identificar tudo o que está acontecendo. Incluímos uma tabela onde os campos do formulário ocupam as
linhas e as duas colunas são ocupadas por descrição e valor do campo, mas a principal razão de
colocarmos a tabela é misturar um pouco mais de HTML ao nosso programa, a fim de nos aproximarmos da
realidade dos programas que você vai utilizar no mundo real.
Como prometemos, vamos explorar o exemplo acima com calma, um passo de cada vez:
1. Na linha 5, fora da tag “<?php ... ?>”, é feita a identificação do início da tabela e, na linha 49, o
fechamento.
2. A linha 7 é um bom exemplo de como todos os campos serão apresentados dentro da tabela:
“<tr>” marca o início da linha; “</tr>” marca o final da linha; “<td>Nome:</td><td>” marca
o início da primeira coluna (<td>), informa a descrição do campo (Nome:), marca o final da
primeira coluna (</td>) e início da segunda coluna (<td>). O mais importante é o conteúdo da
segunda coluna “$_POST["nome"]”, que é concatenado utilizando o operador de concatenação
ponto-final “ . ”.
3. Da linha 10 a 16 é apresentado o campo “estado civil”, que segue o modelo do item acima com a
particularidade de um “switch”, para apresentar por extenso o valor escolhido no “select”.
Observe que não foi enviado exatamente o valor escolhido, mas uma letra (S, C ou O) definida no
parâmetro “value” para cada opção (option) do “select”;
4. Da linha 25 a 30, é apresentado o campo “fumante”, que utiliza um “if” para imprimir “sim” ou
“não”. A particularidade é que, quando o “checkbox” não é marcado, ele não passa valor, não
gerando uma variável para o programa PHP. A solução então é testar se a variável foi definida; isso
pode ser feito através da função “isset()”, que retorna verdadeiro se a variável estiver definida,
mesmo que com uma string vazia ou com valor zero.
5. Da linha 37 a 43 é apresentado o campo “sexo”, que também utiliza um “if” para imprimir por
extenso “masculino” ou “feminino”, a partir da letra (M ou F), também definida no parâmetro
“value” de cada “radio”. Se nenhum dos botões de radio for selecionado, também não será
passado valor; para resolver este problema, colocamos o parâmetro “checked” para o sexo
masculino, fazendo com que esse botão já seja apresentado marcado na página HTML;
6. Nas linhas 46 e 47 é feita a captura do valor do campo “oculto” da mesma forma que qualquer
outro comando. O PHP não distingue se o valor vem de um campo “hidden”, “text”, “password”
ou outro, apenas cria um índice para o vetor “$_POST”, com o rótulo definido no parâmetro
“name” do campo e atribui a essa posição do vetor o valor informado pelo usuário (digitado ou
escolhido, dependendo do campo) ou, no caso do campo “hidden”, definido pelo programador.
7. E, por fim, nas linhas 17 a 24, o campo do tipo “select size”, que consideramos o mais
interessante. Observe que, na definição do nome do campo no formulário HTML (parâmetro
“name”), colocamos colchetes “[]” (name="generoMusical[]") que já sabemos indicar que o
campo será um vetor. Então, o índice “generoMusical” do vetor “$_POST”, também é um vetor.
Como esse vetor é criado automaticamente pelo PHP, seus índices seguem a seqüência numérica
iniciando com 0 (zero). Então, se o usuário selecionou “MPB” e “Pop/Rock” no campo, teremos
dois valores que podem ser acessados por “$_POST["generoMusical"][0]” e
“$_POST["generoMusical"][1]”. Para saber quantos valores o usuário selecionou, utilizamos a
função “count()”, que retorna o tamanho (quantidade de elementos) do vetor; daí ficou fácil: foi
só fazer um “for” para percorrer todas as posições do vetor. Uma última observação é que o campo
23 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
“select size” também não passará valor se não houver seleção, nos obrigando novamente a
utilizar a função “isset()”, dessa vez, com o operador de negação “ ! ” para entrar no “if” quando a
variável não existir.
get.php
1. <html>
2. <head><title>Valores pelo Endereço</title></head>
3. <body>
4. <?php
5. if (!isset($_GET["nome"]))
6. echo "Variavel \"nome\" nao passada.<p>";
7. else
8. echo "_GET[\"nome\"] = ". $_GET["nome"] ."<p>";
9. if (!isset($_GET["idade"]))
10. echo "Variavel \"idade\" nao passada.<p>";
11. else
12. echo "_GET[\"idade\"] = ". $_GET["idade"] ."<p>";
13. ?>
14. </body>
15. </html>
Teste e veja o resultado. Imagine que o programa tenha informado que as variáveis “nome” e “idade” não
foram passadas. Agora, tente executar novamente digitando o seguinte endereço “http://localhost
/get.php?nome=maria&idade=18”.
Dessa vez, deve ter informado que o nome é maria e a idade é 18. Observe o endereço digitado:
A interrogação “?” após o nome do programa indica o início das variáveis passadas pelo método
GET.
O igual “=” separa o nome da variável do seu valor.
O e comercial “&” separa as variáveis.
Para recuperarmos esses valores em PHP basta utilizar o vetor “$_GET” de forma semelhante ao vetor
“$_POST”, que vimos há pouco.
24 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Todo e-mail deve ter algum(s) caracter(es), seguido por arroba “@”, seguido por mais algum(s)
caracter(es), seguido por ponto-final “ . ” e seguido por mais algum(s) caracter(es).
Todo nome completo deve ter, no mínimo, 2 caracteres, seguido por espaço e mais 2 caracteres.
Todo CPF deve ter seu dígito verificador válido. Fazendo-se um cálculo sobre os 9 primeiros
números o resultado deve ser os 2 últimos números.
O interessante é onde colocar essa validação. Se colocarmos no programa PHP, toda a vez que um valor
inválido for digitado deverá ser feita uma requisição ao servidor, executado o programa e devolvida uma
página de erro. Esse procedimento irá onerar o tráfego de rede e o processamento de nosso servidor, sem
contar que irá demorar um pouco mais, deixando o usuário insatisfeito. Mas como contornar essa situação
se o programa PHP é serve-side (roda no servidor)?
Simples: utilizando programação client-side (roda no navegador do cliente). Mas PHP faz isso? Não!
Teremos de utilizar outra linguagem de programação, como JavaScript, por exemplo, que foi a utilizada no
exemplo abaixo. Veja que isso extrapola o PHP e pode ser utilizado na página HTML para enviar dados para
scripts (programas) PHP, ASP, CGIs (programas) PERL, C etc.
Para testar, substitua a linha 6 (tag de abertura do formulário “<form>”) da nossa página HTML
(formulário.html) pela primeira linha 6 apresentada abaixo. Em seguida, inclua da linha 4 à linha 32, a
partir da linha 4 (depois da definição de título “<title>”) da nossa página, como segue:
formulario.html
6. <form method="post" name="formulario" action="http://localhost/formulario.php"
onsubmit="return validarIdade()">
3. <title>Formulario</title>
4. <script language="javascript">
5. <!--
6. function verificarValor(valor, valoresValidos) {
7. for (var i=0; i<valor.length; i++)
8. if (valoresValidos.indexOf(valor.substr(i,1)) < 0)
9. return false;
10. return true;
11. }
12. function validarIdade() {
13. var idade=document.formulario.idade.value;
14. if (idade=="") {
15. window.alert("Digite a sua idade.");
16. document.formulario.idade.focus();
17. return false;
18. }
19. if (!verificarValor(idade, '0123456789')) {
20. window.alert("A idade deve ser um numero inteiro.");
25 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
21. document.formulario.idade.focus();
22. return false;
23. }
24. if (idade>120) {
25. window.alert("Somente são permitidas idades entre 0 e 120.");
26. document.formulario.idade.focus();
27. return false;
28. }
29. return true;
30. }
31. //-->
32. </script>
Agora, tente informar uma idade inválida. Lembre-se de atualizar a página (F5), a cada alteração.
Nesta aula, fizemos uma revisão de formulário HTML e, em seguida, vimos como receber dados do
formulário em PHP. Também vimos como receber valores passados na string do endereço da página.
Por fim, fugimos um pouco de PHP para discutimos a validação de dados de formulários. Espero que tenha
conseguido perceber a importância de fazer a validação dos campos no lado do cliente, conforme as
melhores práticas de mercado. Na próxima aula, lidaremos com banco de dados.
5.1 PhpMyAdmin
O PhpMyAdmin é um ambiente web para administração do banco de dados MySQL, fornecido com o
EasyPHP. Uma opção ao seu uso seria fazer administração do MySQL, via console, utilizando sentenças SQL
em linhas de comando, mas alguns acham mais simples utilizar um ambiente.
Agora, vamos ver o passo a passo para executar o PhpMyAdmin e criar um banco de dados e uma tabela:
26 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
27 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
6. Informe “teste” como nome do novo banco de dados no campo texto “Criar novo Banco de
Dados” e clique no botão “Criar”:
7. Será criado o banco “teste” e apresentada a página de administração desse banco. Informe
“pessoa” como nome da nova tabela no campo texto “Nome:”, “3” no campo texto “Número de
arquivos:” e clique no botão “Executar”. O que foi traduzido como arquivos se refere a campos,
atributos ou colunas da tabela, e chamaremos de campo:
8. Será apresentada a página de definição dos campos. Informe apenas os valores de acordo com o
quadro abaixo e clique no botão “Salvar”.
nome VARCHAR 50 ( )
28 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Pronto! Já temos um banco de dados (teste), com uma tabela (pessoa) com 3 campos (idPessoa, nome e
idade). Agora você pode fechar as janelas do navegador.
No MySQL, assim como em quaisquer servidores de bancos de dados, há procedimentos e regras para
acessar os dados. Vamos relembrá-los:
Conectar ao servidor.
Abrir banco de dados.
Executar comandos SQL.
Fechar o banco de dados.
Desconectar do servidor.
Geralmente, os dois últimos não precisam ser executados, pois, quando o programa termina, o banco é
fechado e a conexão encerrada automaticamente.
Veja que estamos testando o retorno da função para somente prosseguir quando a conexão e abertura do
banco forem bem sucedidas.
29 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Novamente, estamos testando o retorno da função, para somente prosseguir quando a execução do
comando SQL for bem sucedida.
A partir desse ponto, utilizaremos alguns comandos SQL. Caso não se sinta totalmente confortável com o
tema, recomendamos a leitura de livros sobre banco de dados. O assunto será mais bem explorado na
disciplina “Banco de Dados”.
Um comando SELECT pode retornar vários registros (linhas ou tuplas), no exemplo da tabela “pessoa”
poderia retornar (Ana, Maria etc.), estando cada valor em um registro. Isso significa que, para um
resultado com vários registros, é preciso controlar o número do registro para tratá-lo. Para sabermos
quantos registros foram retornados, podemos utilizar a função “mysql_num_rows()”, que tem como
parâmetro o identificador do comando SQL (retorno da função “mysql_query()”). A numeração dos
registros inicia-se por 0 (zero); assim, se a função “mysql_num_rows()” retornar 2, significa que foram
retornados 2 registros, sendo o primeiro o número 0 e o segundo o número 1. O número do último será
sempre o valor retornado pela função menos 1.
No exemplo abaixo, imprimimos todos os campos (idPessoa, nome e idade) de todos os registros da tabela
“pessoa”, ordenando o resultado pelo campo “idPessoa”. Para percorrer todos os registros retornados
utilizaremos um “for”.
30 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Criamos um exemplo que apresenta uma manutenção completa para pessoa. Por manutenção, vamos
considerar as operações de inclusão, consulta (listagem), alteração e exclusão. Procurou-se equilibrar a
didática com a prática de mercado, tentando gerar um exemplo que seja fácil de entender e, ao mesmo
tempo, robusto e similar ao que é praticado no mercado. Para tanto, fez-se a divisão em três programas,
que se relacionam para executar as operações citadas. A figura abaixo apresenta a integração entre esses
programas.
A entrada é pelo programa "banco.php", que irá consultar e listar todos os registros da tabela "pessoa".
Nessa página, o usuário terá três possibilidades:
1. Clicar no link "Editar" de algum registro. Fazendo isso, será enviado ao programa
"banco_edita.php", que apresenta um formulário com os dados a serem editados, após a edição,
ao clicar no botão "Salvar" e será enviado para o programa "banco_executa.php", que fará a
gravação do registro e apresentará uma mensagem informando que foi editado com sucesso e um
link para voltar ao programa "banco.php".
2. Clicar no link "Excluir" de algum registro. Fazendo isso, será enviado ao programa
"banco_executa.php", que fará a exclusão do registro e apresentará uma mensagem informando
que foi excluído com sucesso e um link para voltar ao programa "banco.php".
3. Digitar valores no formulário de inserção de nova pessoa e clicar no botão "Inserir". Fazendo isso,
será enviado ao programa "banco_executa.php", que fará a inclusão do novo registro e
apresentará uma mensagem informando que foi incluído com sucesso e um link para voltar ao
programa "banco.php".
banco.php
31 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
<html>
<head><title>Banco</title></head>
<body>
Manutencao de Pessoa:<p>
<table border=1>
<tr bgcolor="#909090">
<td>Codigo</td>
<td>Nome</td>
<td>Idade</td>
<td>Editar</td>
<td>Excluir</td>
</tr>
<?php
// Conecta no banco
$conexao = mysql_connect("localhost", "root", "");
$resultado = mysql_select_db("teste", $conexao);
if ($resultado == 0)
echo "ERRO DE CONEXAO AO BANCO DE DADOS.";
else {
$SQL = "SELECT idPessoa, nome, idade FROM pessoa ORDER BY idPessoa";
$resultado = mysql_query($SQL, $conexao);
for ($i=1; $i<= mysql_num_rows($resultado); $i++) {
if (($i%2) == 1)
echo "<tr bgcolor='#FFFFFF'>";
else
echo "<tr bgcolor='#C0FFC0'>";
echo "<td>". mysql_result($resultado,$i-1,"idPessoa") ."</td>";
echo "<td>". mysql_result($resultado,$i-1,"nome") ."</td>";
echo "<td>". mysql_result($resultado,$i-1,"idade") ."</td>";
echo "<td><a href='http://localhost/banco_edita.php?op=ED&idPessoa=". mysql_result($resulta
echo "<td><a href='http://localhost/banco_executa.php?op=EX&idPessoa=". mysql_result($resul
echo "</tr>";
}
}
?>
</table>
<p>
Inserir nova pessoa:<br>
<form method="post" action="http://localhost/banco_executa.php">
<input type="hidden" name="op" value="IN">
Nome:<br>
<input type="text" name="nome"><p>
Idade:<br>
<input type="text" name="idade" value=""><p>
<input type="submit" value="Inserir">
</form>
</body>
</html>
32 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
1. O uso do índice “op”, nos vetores “$_GET” e “$_POST”, para indicar a operação a ser realizada
(IN=Inclusão, ED=Edição, EX=Exclusão).
2. A passagem do valor de “idPessoa” entre os programas, para identificar o registro a ser operado.
Nesta aula, vimos como criar um banco e uma tabela com o phpMyAdmin e como trabalhar com banco no
PHP. Por fim, colocamos a “mão na massa” com um exemplo simples, mas completo. Agora, você já é
praticamente um programador PHP. Na próxima aula, falaremos sobre sessões e cookies.
Bom proveito!
6.1 Sessão
Qual é o correto: sessão ou seção?
Você acertou se respondeu sessão. O termo em inglês é session e o significado encontrado no dicionário
Aurélio é: “Espaço de tempo durante o qual se realiza um trabalho ou parte dele”. No conceito de web, as
sessões são usadas para armazenar dados enquanto o navegador estiver aberto. Normalmente, dados
importantes como nome e tipo de usuário, mas, por questão de segurança, não é recomendável armazenar
senha.
No exemplo abaixo, realizamos as três operações em programas diferentes. Teste o exemplo iniciando a
sessão, depois, manipulando várias vezes e, finalmente, encerrando. Depois de encerrar, tente manipular
novamente para ver o que ocorre.
sessao_iniciar.php
1. <html>
2. <head><title>Sessao</title></head>
3. <body>
4. <?php
5. session_start();
6. $_SESSION["nome"] = "Maria";
7. $_SESSION["idade"] = 18;
8. echo "Sessao iniciada.<p>";
9. ?>
33 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
10. <p>
11. <a href="sessao_manipular.php">Manipular Sessao</a><br>
12. <a href="sessao_encerrar.php">Encerrar Sessao</a><br>
13. </body>
14. </html>
Observe que a sessão deve ser iniciada em todos os programas pela função “session_start()”, mesmo
para ser encerrada. Isso porque a função de iniciação também tem o papel de se ligar (recuperar) a uma
sessão criada.
6.2 Cookie
Cookies são variáveis gravadas no navegador do visitante, podendo ser recuperadas apenas pelo site que
gravou. Os cookies foram inicialmente idealizados para permitir que o visitante pudesse acessar várias
vezes uma página sem ter que fornecer as mesmas informações a cada acesso.
Você nunca deve armazenar dados sigilosos em um cookie, por eles não oferecerem segurança. Se for
armazenada em um cookie a identificação de acesso de um usuário e alguém capturar essa informação, por
exemplo, poderá acessar o site como sendo o usuário.
Existem dois tipos de cookies: os gravados e os de sessão. O cookie gravado é armazenado em arquivo
texto no computador do visitante e não é excluído quando o navegador é encerrado, possuindo data e hora
de expiração. O cookie de sessão é armazenado em memória e permanece ativo apenas enquanto o
navegador estiver aberto.
O segundo tipo é responsável pela criação das sessões que vimos há pouco. Muitos consideram que cookie
é apenas o primeiro tipo apresentado, então, quando estiver pesquisando o assunto, deverá encontrá-los,
na maioria das vezes, em partes diferentes: sessão e cookie.
Como já falamos sobre sessão, ou cookie de sessão, só nos falta tratar do segundo tipo; o PHP tem uma
série de funções para tratá-los. No entanto, nos restringiremos ao básico de seu funcionamento.
Assim como em sessão temos três operações básicas que podem ser realizadas sobre um cookie: criação,
manipulação e exclusão.
A criação de cookies é feita através da função “setcookie()”, que tem como parâmetros: nome do cookie,
valor, data de expiração, caminho da página que gravou o cookie, domínio do site e segurança (1 indica
que só pode operar em conexão segura - https). O único parâmetro obrigatório é o nome do cookie.
A manipulação de cookie é dividida entre leitura e gravação. A leitura é feita através do vetor “$_COOKIE”
e a gravação através da função “setcookie()”, assim como na criação.
A exclusão de cookies é também feita através da função “setcookie()”, redefinindo seu valor como uma
string vazia, com o cuidado de que todos os parâmetros (exceto valor e data de expiração) sejam idênticos
a sua criação.
O exemplo abaixo faz exatamente o mesmo que o anterior, mas, agora, utilizando cookie. Para testar
completamente o exemplo, crie um cookie e espere mais que 5 minutos para tentar manipulá-lo; crie
novamente o cookie, feche o navegador e tente manipulá-lo em menos de 5 minutos, como no exemplo:
34 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
cookie_criacao.php
1. <html>
2. <head><title>Cookie</title></head>
3. <body>
4. <?php
5. setcookie("nome", "Maria", time()+30);
6. setcookie("idade", 18, time()+300);
7. //Expiram em 5 minutos
8. echo "Cookies criado.<p>";
9. ?>
10. <a href="cookie_manipulacao.php">Manipular</a><br>
11. <a href="cookie_exclusao.php">Excluir</a><br>
12. </body>
13. </html>
No exemplo, foi utilizada a função “time()” para pegar a data e hora do sistema. Tudo muito comum,
exceto pelo fato de essa função retornar a data e hora no formato “timestamp Unix”, que é o número de
segundos desde a era Unix (00:00:00 GMT de 1º de janeiro de 1970). Por isso que, para que o cookie
expirasse em 5 minutos, utilizamos “time()+300” (300 = 60 (segundos por minuto) * 5 (minutos).
Uma última observação: o cookie só estará disponível para ser lido no acesso seguinte a sua criação.
Nesta aula, falamos sobre seções e cookies. Fizemos um sobrevôo em PHP, vendo e explorando os
principais pontos da linguagem. O PHP é muito popular, então, será fácil você continuar sua jornada por si
só. Vão aqui três sugestões de sites onde pode encontrar diversos programas prontos para estudar:
PHP Mania
Script Brasil
WebMasters On-Line
Parte 02 - Python
A documentação da linguagem pode ser obtida no site oficial da linguagem ou no site da comunidade
brasileira.
Python é uma linguagem multiplataforma, podendo ser instalada em: UNIX, Linux, Windows e MacOS X. Nas
35 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
diversas distribuições Linux, geralmente, o Python já é instalado por padrão. Em Python, tanto podemos
programar orientados a objetos como na forma estrutural.
$ python
No IDE Python, o prompt apresentado é “>>>”. Na frente desse prompt, pode ser digitado qualquer
comando Python, com a possibilidade até de escrevermos pequenos scripts. Os scripts (programas) em
Python têm a extensão “.py”.
Há vários ambientes de desenvolvimento destinados ao Python, entre eles, podemos destacar o IDLE, um
IDE em que podemos desenvolver e testar scripts python. O Eclipse também possui uma extensão para o
desenvolvimento Python, o PyDev.
Para mantermos a tradição dos cursos de linguagem de programação, faremos nosso primeiro Hello World:
#!/usr/bin/python
#-*- coding: utf-8 -*-
# pequeno script que imprime a mensagem Hello World
print 'Hello World'
A primeira linha desse script, que começa com #!, é útil caso você o torne um arquivo executável. O
Unix/Linux usará esse interpretador /usr/bin/python para executar o script.
A segunda linha é uma definição da codificação do editor do script python, conforme proposto pela
PEP-0263. Essa codificação pode ser utf-8, iso-8859-1, ascii etc., dependendo do editor que você usar.
Essa linha só será necessária se você usar caracteres especiais como, por exemplo, acentuação nas strings.
Na segunda linha, temos um comentário iniciado por '#'. Tudo o que estiver à direita de #, até o final da
linha, é considerado comentário. Outra forma de colocar um comentário é com aspas triplas ( ' ' ' ) ou ( "
" " ); nesse caso, um bloco inteiro será comentado (comentário de uma ou mais linhas); o final do
comentário também é indicado por aspas triplas.
Na terceira linha, temos o script propriamente dito. O comando print mostra a string Hello World na saída
padrão. Aqui, valem dois comentários: Python não faz distinção entre aspas simples ou aspas duplas para
delimitar a string e as linhas do script, ao contrário de muitas linguagens de programação, como C e Java.
Se uma instrução é muito comprida ou se, para fins de clareza, fica melhor em várias linhas, podemos
quebrar uma instrução colocando uma contra-barra no final da linha:
36 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
print \
'Uma string muito longa......'
Em um terminal do sistema operacional (DOS ou shell), podemos executar o script passando o nome do
script para o interpretador:
$ python script.py
1.2.1 Números
Variáveis numéricas, em Python, podem ser inteiros (simples ou longo), pontos flutuantes ou números
complexos. A tabela a seguir mostra a especificação desses tipos:
Não é necessário declarar uma variável em Python; antes de usá-la, ela será criada no momento da
primeira atribuição, assim:
>>> x = 1
Uma particularidade de Python é que duas ou mais variáveis podem ser atribuídas, com uma única
instrução:
>>> x, y, z = 1, 2.0, 3
>>> print x, y, z
1 2.0 3
>>> x, z = z+1, x
>>> print x, y, z
3 2.0 1
No exemplo anterior, a variável x é um número inteiro; se atribuirmos a ela um valor em ponto flutuante,
ou qualquer outro tipo, x passará a ser uma variável em ponto flutuante, ou de outro tipo que tenha sido
atribuído. No exemplo a seguir, usamos a função type( ) para determinar o tipo da variável:
37 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
>>> type ( x )
<type 'int'>
>>> x = x + y
>>> print x
3.0
>>> type ( x )
<type 'float'>
Essa característica do Python ocorre pela forma como essas variáveis são atribuídas. Vamos pegar a
segunda atribuição de x, do exemplo anterior: x = x + y. O Python realizará os seguintes passos:
Um objeto é criado na memória com o valor da atribuição e um tipo associado ao objeto. Nesse
caso, o objeto será 3.0 e o tipo será 'float', pois, quando somamos um 'int' com um 'float', o
resultado necessariamente será 'float'.
Vincular o objeto 3.0 à variável x.
Se criarmos agora uma nova variável com o mesmo valor, não será criado um novo objeto, apenas será
criado um vínculo entre a nova variável com o objeto já existente. Por exemplo:
>>> w = 3.0
Nesse caso, tanto x quanto w farão referências ao mesmo objeto (3.0), como indicado na Figura 1.1:
Os principais operadores lógicos e aritméticos que manipulam números em Python são, de acordo com a
tabela:
/ Divisão | OR lógico
38 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Além dessas operações, o Python, assim como outras linguagens, permite também o incremento ou
decremento de um valor a uma variável, de forma direta:
x = x + y equivale a x += y
x = x - y equivale a x -= y
1.2.2 Strings
A variável string é uma seqüência imutável de caracteres, ou seja, o objeto string não pode ser alterado.
Caso uma nova atribuição já iniciada ocorra a uma string, esse novo valor será outro objeto, ao qual a
variável string fará referência, tal como vimos com os números na seção anterior. Veja o código abaixo:
>>> x = ”Python"
A variável x, que referenciava um valor float, agora referencia uma string, conforme a figura:
Uma string pode ser composta por um bloco de texto, limitando-o com aspas triplas '''...''':
Strings podem ser concatenadas e multiplicadas através dos operadores "+" e "*", respectivamente.
Os caracteres de uma string podem ser acessados individualmente, assim como trechos da string
(substring).
39 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Os índices da string podem ser positivos, quando especificam a posição do caractere a partir do início da
string, ou negativos, quando especificam o caractere a partir do final da string. Considere a variável
s='Python', temos as seguintes posições de índices dentro da string:
P y t h o n
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
Os índices [:fim] e [inicio:] especificam, respectivamente, uma substring do início da string até certa
posição, e de certa posição até o final da string:
Método Significado
40 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
1.2.3 Listas
A lista é uma das principais estruturas do Python, devido à sua grande flexibilidade. As principais
características de uma lista são:
Listas são especificadas entre colchetes e os objetos da lista são separados por vírgula, como no exemplo:
É possível alterar um objeto de uma lista simplesmente fazendo uma atribuição a um índice da lista. Note
que, diferentemente de strings e números, não é criado um novo objeto para o novo valor; o objeto lista
original é alterado.
41 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
>>> Lista1[0]='zero'
>>> print Lista1
[ 'zero', 1, 'dois', 3.0, [ 4, 'cinco' ] ]
Método Significado
L.pop([i]) Exclui e retorna o último objeto da lista L. Se i for passado, exclui e retorna o
objeto de índice i da lista L
1.2.4 Dicionários
Dicionários são tabelas mutáveis, assim como as listas, mas não são acessados por índices e sim por
chaves. Os objetos de dicionários são armazenados em uma ordem aleatória e implementados como uma
tabela de hashing. Um dicionário é delimitado por chaves "{}" e as entradas no dicionário são separadas
por vírgula, sendo cada entrada formada pelo par: chave:valor.
Note que a ordem em que aparecem as entradas no dicionário não é a mesma que foi digitada. Isso não
importa, pois a recuperação dos dados se dará pela chave e não pelo índice:
42 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Método Significado
d.items( ) Retorna uma lista de tuplas (*) com os pares (chave,valor) do dicionário
d
43 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
1.2.5 Tuplas
Tuplas são seqüências de objetos como as listas, mas que diferem destas por serem imutáveis e de
tamanhos fixos. Tuplas são delimitadas por parênteses e seus objetos são separados por vírgulas:
Tuplas não têm métodos, mas, assim como as outras estruturas de dados do Python, permitem alguns
comandos e funções de manipulação como, por exemplo:
O que aconteceria se você convertesse novamente a string seq em uma tupla? Faça o teste e tente entender
o que aconteceu.
Sobre a utilização da "\", para quebrar uma instrução em várias linhas: quando colocamos delimitadores
44 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
de seqüências { }, [ ] e ( ), não precisamos da "\", uma vez que o Python entende que a instrução só
acaba quando encontrar o delimitador apropriado. Veja o exemplo:
if import in is lambda
Além disso, os nomes em Python devem começar, necessariamente, com uma letra ou uma sublinha ( _ ).
Nomes que começam e terminam com duas sublinhas ( _ _ ) são nomes com significados especiais no
Python, por isso, devem ser evitados.
45 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Já vimos o comando de saída, print, mas ainda temos de falar sobre a formatação da saída. Uma forma de
impressão é através da concatenação de string:
Nesta aula, estudamos os conceitos iniciais da linguagem, alguns comandos básicos e os tipos de dados
utilizados pelo Python. Esses tipos de dados serão utilizados nas próximas aulas.
Até lá!
Aula 02 – Programação
Python é uma linguagem de programação orientada a objetos e programação estruturada, ou seja, você
pode escrever programas em Python sem, necessariamente, trabalhar com orientação a objetos. Veremos,
nesta aula, alguns conceitos iniciais que permitem à linguagem ser tratada, exclusivamente, como
estruturada.
A instrução (if) testa uma condição e executa um bloco de instruções caso a condição retorne verdadeiro. É
possível fazer vários testes condicionais aninhados (elif), a fim de executar um bloco de instruções
específico, correspondente a certa condição. Por fim, é possível executar um bloco de instruções caso todas
as condições anteriores tenham retornado falso (else). A forma geral da instrução if é:
Qualquer script Python pode ser implementado no ambiente de desenvolvimento, mas, para comodidade de
algumas explicações e para exercitarmos o manuseio de scripts, passaremos a usar também scripts a partir
de agora.
Para carregar os scripts a partir do ambiente Python, você deve declarar a variável de ambiente
$PYTHONPATH com o caminho do seu diretório de scripts. Acrescente a seguinte linha no arquivo
/etc/profile:
46 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
PYTHONPATH="seu/caminho/para/os/scripts/python"
Para facilitar o acompanhamento, todos os scripts constarão em uma numeração de linhas à esquerda,
mas esses números não fazem parte do script. Então, vamos ao nosso primeiro script teste2_01.py.
teste2_01.py:
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. x = 1
4. if x == 1:
5. print 'Igual'
As duas primeiras linhas desse script nós já conhecemos. Na linha 4, temos a instrução if, que testa se x
igual a 1. Note o sinal de ":" - toda estrutura de controle no Python tem esses dois pontos. Note também
que, em Python, não existem delimitadores de blocos de instruções como as chaves "{ }" em Linguagem C
ou Java ou o "Begin/End" no Pascal. Então, como o Python sabe onde começa e onde termina um bloco de
instruções? Resposta: "Aninhamento". Isso mesmo: note que a instrução print, na linha 5, está deslocada
com relação à instrução if. Essa característica vale para todas as delimitações de bloco de instruções,
como funções, repetições, classes etc. Esse deslocamento tanto pode ser de espaços quanto de tabulações.
Mais uma dica: se usar espaços, use sempre espaços; se usar tabulação, use sempre tabulação. Misturar os
dois pode gerar erros difíceis de serem identificados.
Para executar o script, temos duas opções: ou pela linha de comando ou pelo ambiente interativo Python.
$ python teste2_01.py
Igual
Note que, se o script já foi importado uma vez, não surtirá nenhum resultado nas próximas importações.
Se quiser re-executar o script, use a função reload( ), que tem como objetivo recarregar o módulo já
importado:
teste2_02.py
4. if x == 1:
47 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
5. print 'Igual'
6. else:
7. print 'Diferente'
8. print 'Fim do script'
O último print, da linha 8, será executado independentemente do resultado da condição. Cuidado, pois, se
você colocar as instruções print, alinhadas assim:
4. if x == 1:
5. print 'Igual'
6. else:
7. print 'Diferente'
8. print 'Fim do script'
A tabela a seguir mostra os vários tipos de operadores condicionais que podem ser usados em
comparações.
Operações condicionais podem ser combinadas com operadores lógicos do tipo "and", "or", "not". Assim:
>>> i, j, x, y = 1, 1, 1, 1
>>> j != 1 and i == 1 or not x != y
True
>>> j != 1 and (i == 1 or not x != y)
False
Veja que a ordem de avaliação da expressão pode ser diferente, quando se usam parênteses. Na primeira
avaliação, a operação "and" foi feita antes da "or". No segundo caso, a operação "or" foi avaliada antes do
"and", o que produziu um efeito diferente.
48 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
while <condição>:
<bloco a ser executado repetidamente enquanto a condição for verdadeira>
teste2_03.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. i = -1
4. while i <> 0:
5. i=input ( 'Digite o Expoente ou 0 para sair: ' )
6. print ' 2 ^ %s = %s' % ( i , 2 ** i )
7. print 'Fim'
teste2_04.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. r = [1, 2, 3, 4, 5]
4. for i in r:
5. print '2^%s = %s' % (i, 2**i)
6. print 'Fim'
Na linha 4, a variável i receberá cada um dos valores da lista r e executará o comando da linha 5. A lista r,
como é formada por uma seqüência crescente de números de 1 a 5, poderia muito bem ser substituída pela
função range( ), ficando assim:
teste2_05.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. for i in range(1,6):
4. print '2^%s = %s' % (i, 2**i) ,
5. print 'Fim'
A função range( ) recebe como parâmetros o início e o final (não inclusive) da seqüência. Outr elemento
que acrescentamos a esse script foi uma vírgula no final da instrução print (linha 4); essa vírgula serve
para manter a impressão do comando print sempre na mesma linha.
49 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
teste2_06.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. disciplinas=[ { 'nome':'Português' , 'nota':4.0 },
4. { 'nome' : 'Matemática' , 'nota' : 6.0 },
5. { 'nome' : 'Fisica' , 'nota' : 10.0 } ]
6. rep=0
7. estado="Aprovado"
8. for i in disciplinas:
9. if i['nota'] <= 5.0:
10. rep+=1
11. if rep==2:
12. estado='Reprovado'
13. break
14. estado='Recuperação'
15. print estado
teste2_07.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. i=0
4. string="Teste do comando continue"
5. for x in string:
6. if x == ' ':
7. i+=1
8. continue
9. print x,
10. print
11. print str(i+1) + ' Palavra(s)'
Python tem as constantes booleanas True e False, que podem ser tratadas também como 1 ou 0,
respectivamente. Se quisermos um laço infinito, podemos fazer:
while True:
...
Além dessas constantes, Python tem outra constante especial (None) que tem um valor nulo, ou nenhum
valor. Esse valor é útil, por exemplo, quando não queremos associar nenhum valor a uma variável.
50 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
A instrução else pode ser usada também junto com as instruções for e while. A cláusula else será
executada se, e somente se, um 'break' não for executado para sair do for ou while. Caso o break seja
executado, a cláusula else será ignorada e a execução salta para a primeira instrução depois do escopo do
else. Veja o exemplo:
teste2_08.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. disciplinas=[{'nome':'Portugues','nota':3.0},
4. {'nome':'Matematica','nota':6.0},
5. {'nome':'Fisica','nota':10.0}]
6. rep=0
7. estado="Aprovado"
8. for i in disciplinas:
9. if i['nota'] <= 5.0:
10. rep+=1
11. if rep==2:
12. estado='Reprovado'
13. break
14. estado='Recuperação'
15. else:
16. print 'O aluno continuará conosco!'
17. print '%s' % estado
while True:
pass
Perceba que a estrutura while, necessariamente, exige, no mínimo, uma instrução no seu escopo.
2.4 Funções
Função é um objeto, assim como praticamente tudo em Python, que tem um nome associado. O formato de
uma função em Python é:
Def nome(arg1, arg2,..., argN): # uma função pode ter 0, 1 ou vários argumentos
<bloco de instruções>
return <valor> # geralmente uma instrução return retorna um valor
51 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
... x, y = y, x
... return ( x, y )
...
>>> a, b = 0, 1
>>> print a, b
0 1
>>> a, b = swap( a, b )
>>> print a, b
1 0
Como uma função é associada a um objeto, podemos fazer uma atribuição desse objeto a outro nome:
Note pelo exemplo acima que, como o Python tem tipagem de objetos dinâmica, os argumentos x e y da
função troca podem receber objetos de qualquer tipo.
As variáveis x e y da função swap são variáveis locais, pois só são acessíveis no escopo da função.
Vejamos outra função:
No exemplo acima o objeto media no escopo da função é um objeto global. Um objeto declarado no
escopo da função pode ser forçosamente declarado como global:
teste2_09.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. i=0
4. def inc(x):
5. global i
6. i+=x
7. inc(3)
8. print i
A instrução global da linha 5 força a utilização da variável i global que foi declarada na linha 3 com o valor
0 inicial. Execute este programa e veja o resultado, depois altere a linha 5 para:
52 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
5. i = 0
2.5 Módulos
A linguagem Python contém uma série de funções não built-in que podem ser importadas de arquivos
especiais quando forem necessárias; esses arquivos são os módulos. Vários módulos podem ser
estruturados na forma de pacotes (packages). Nesse caso, os nomes dos níveis de módulos são separados
por ".".
Exemplo:
Caso não queira importar todo o conteúdo de um módulo, pode importar objetos específicos de um módulo
com a instrução from:
Com a instrução from, os nomes importados podem ser usados sem a necessidade da especificação do
módulo:
Você pode criar seus próprios módulos, por exemplo, um módulo chamado utils.py:
utils.py
1. #-*- coding: utf-8 -*-
2. ''' módulo utils '''
3. def swap(x, y):
4. ''' retorna os valores
53 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Declaramos aqui dois objetos: a função "swap( )" e o nome "autor". Este nome poderá ser usado mais
tarde na implementação de algum módulo.
As linhas 2, 4 e 5 contêm comentários de blocos (aspas tríplices), esses comentários servirão como
documentação do módulo e da função e poderão ser averiguados pela função help( ) do Python:
teste2_10.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. def teste(m):
4. print m
5. return
6. print '__name__ = ' + __name__
7. if __name__ == '__main__':
8. teste('Você está executando o script fora do Python')
9. else:
54 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Após digitar esse script, teste-o tanto no ambiente Python quanto na linha de comando e veja a diferença.
2.7 Arquivos
Python permite a manipulação de arquivos através de uma série de funções. As principais estão listadas na
tabela abaixo:
Função Significado
a = open( arquivo, modo ) Abre o arquivo no modo especificado ('r'=leitura de arquivo texto,
'rb'=leitura de arquivo binário, 'w'=escrita de arquivo texto,
'wb'=escrita de arquivo binário). Se o modo é omitido subentende-se
o modo 'r'.
Além destas funções, a instrução for pode usar diretamente o descritor do arquivo para acessar cada linha
do arquivo individualmente assim:
A seguir é mostrado um script que captura os usuários Linux que tem seu home no diretório '/home':
teste2_11.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. from sys import platform
4. if platform != 'linux2':
5. print 'Sistema Incompatível...'
6. else:
55 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
7. arq='/etc/passwd'
8. usuarios = open(arq, 'r')
9. for linha in usuarios:
10. if linha.find ( 'home' ) != -1:
11. print 'Usuário: ' + linha [ : linha.find ( ':' ) ]
Na linha 3 é importado o nome 'platform' do módulo sys, para verificar se o sistema operacional em
execução é o Linux (if da linha 4). Nas linhas 7 e 8 o arquivo /etc/passwd, que contém os dados dos
usuários Linux, é aberto para leitura. O for da linha 9 lê uma linha do arquivo a cada interação. Na linha
10, verificamos se a substring 'home' está na linha. Na linha 11, é mostrado apenas o login do usuário,
que vai do começo da linha até o caractere ":".
Nesta aula, vimos os mecanismos de controle de fluxo da linguagem Python, bem como a utilização de
funções e o agregamento de rotinas em um único arquivo para uso posterior em outras aplicações.
Um objeto (ou instância) é criado a partir de uma classe que define as características desse objeto. A rigor,
todos os elementos na linguagem Python são objetos.
class nome_classe:
nome_atributo=valor
(...)
def nome_metodo(self, [arg1 [, arg2 [, ... ] ] ):
corpo do método
(...)
Temos que: 'nome' é um atributo da classe Pessoa. A classe tem dois métodos: set_nome e get_nome.
56 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
self.nome = nome
Quer dizer que o atributo nome da instância recebe o valor nome local.
Métodos também podem receber parâmetros com valores default; aliás, esta é uma característica de
qualquer função em Python, por exemplo:
Note que, na chamada do método cadastra do cliente1 foi passado o saldo, enquanto na chamada do
mesmo método do cliente2 foi omitido o saldo.
Outra característica da chamada de um método, que vale também para qualquer função, é a passagem de
parâmetros fora de ordem, especificando o nome do parâmetro na chamada, veja o exemplo:
3.3 Construtor
Uma classe pode ter um método construtor, que será chamado no momento da instanciação do objeto. O
construtor é um método especial, seu formato é:
Por exemplo:
57 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
>>> class A:
... q=0
... def __init__( self ):
... self.q = 1
... def inc( self, q ):
... A.q += q
... print A.q
...
>>> a1 = A( )
>>> a2 = A( )
>>> a1.inc(10)
10
>>> a2.inc(15)
25
>>> print a1.q, a2.q, A.q
1 1 25
Atributos de classes são interessantes quando um atributo deve ser compartilhado por todos os objetos de
certa classe.
>>> class A:
58 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
>>> a.z = 30
>>> print a.z
30
Essa característica pode parecer prejudicial à integridade da classe, mas isso dá muita flexibilidade à
linguagem. Caso você queira evitar essa situação, deverá mudar o tipo de classe para o chamado “estilo
novo”. Esse estilo novo é possível desde a versão 2.2 do Python, e seu formato é:
A superclasse 'object', passada como parâmetro para a classe, é a superclasse de todas as outras classes.
Além disso, é necessária a especificação de uma seqüência especial chamada __slots__, cujo conteúdo
são os nomes das variáveis que poderão ser atribuídas na classe. Exemplo:
59 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
3.6 Herança
Uma classe pode herdar as características de outra(s) classe(s), chamamos isso de herança. Para uma
classe herdar de outra(s) classe(s), basta passar o nome da(s) classe(s) herdada(s) (superclasse) como
parâmetro da classe herdeira:
Se a classe B não tivesse o construtor __init__, o construtor da classe A seria chamado na instanciação
do objeto b.
Outro exemplo:
teste03_01.py
1. class Poligono:
2. def __init__(self, area, perimetro):
3. self.area = area
4. self.perimetro = perimetro
5. class Retangulo(Poligono):
6. def __init__(self, altura, largura):
7. self.altura = altura
8. self.largura = largura
9. area = altura * largura
10. perimetro = (altura + largura) * 2
11. Poligono.__init__(self, area, perimetro)
12. def area(self):
13. return self.area
14. def perimetro(self):
15. return self.perimetro
16. class Circulo(Poligono):
17. def __init__(self, raio):
18. self.raio = raio
19. area = raio ** 2 * pi
20. perimetro = 2 * pi * raio
60 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Uma classe pode herdar de mais de uma classe (heranças múltiplas); para tanto, basta passar os nomes
das classes herdadas como parâmetros para a nova classe. Vejamos um exemplo:
teste3_02.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. class Animal( object ):
4. def __init__( self, tipo ):
5. self.tipo = tipo
6. class Aquatico( Animal ):
7. def __init__( self ):
8. self.ambiente = 'Água'
9. Animal.__init__( self, 'Aquático' )
10. def habilidades(self):
11. return ( 'nadar', "respirar em baixo d'agua" )
12. class Terrestre( Animal ):
13. def __init__( self ):
14. self.ambiente = 'Terra'
15. Animal.__init__( self, 'Terrestre' )
16. def habilidades( self ):
17. return ('mover-se sobre a terra','respirar na atmosfera')
18. class Anfibio( Aquatico, Terrestre ):
19. def __init__( self ):
20. Aquatico.__init__( self )
21. Terrestre.__init__( self )
22. self.ambiente = ( 'Água', 'Terra' )
23. self.tipo = 'Anfíbio'
24. def habilidades(self):
25. return ( Aquatico.habilidades( self ), Terrestre.habilidades( self ) )
26. if __name__ == '__main__':
27. sapo=Anfibio()
28. print 'Ambiente onde vive: ', sapo.ambiente
29. print 'Tipo: ', sapo.tipo
30. print 'Habilidades: ', sapo.habilidades( )
O construtor da classe Anfibio chama os dois construtores das superclasses. Se as linhas 22 e 23 forem
omitidas, os atributos 'ambiente' e tipo ficarão com o valor 'Terra' e 'Terrestre', respectivamente,
atribuídos pelo construtor da superclasse 'Terrestre', chamado por último. Note na linha 25 que o método
'habilidades( )' do objeto Anfibio retorna os dois métodos habilidades das superclasses Aquatico e
Terrestre.
3.7 Polimorfismo
61 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
O Python permite o polimorfismo, não como em outras linguagens como java, por exemplo, onde vários
métodos com o mesmo nome são definidos para uma certa classe, mas através de um recurso próprio.
Antes, analise a seguinte declaração de uma classe:
>>> class A:
... def __init__( self ):
... self.x = 0
... def __init__( self, x ):
... self.x = x
Esse tipo de declaração não gera nenhum erro de sintaxe, mas não surte o efeito de polimorfismo. O que
acontece, nesse caso, é a substituição do método __init__( self ) pelo segundo __init__( self, x );
então, este passa a ser o construtor da classe.
Para implementar o polimorfismo, em Python, usamos argumentos arbitrários através do operador “*”.
Vejamos um exemplo:
>>> class A:
... def __init__(self, *pars): # pars é uma tupla de parâmetros
... if len(pars) == 0: # testa se o tamanho da tupla pars é zero (vazia)
... self.x = 0 # atribui 0 a self.x
... elif len(pars) == 1: # testa se o tamanho da tupla pars é um (um parâmetro)
... self.x = pars[0] # atribui o primeiro parâmetro (pars[0]) a self.x
>>> a=A()
>>> b=A(1)
>>> a.x
0
>>> b.x
1
3.8.1 Try/Except
A instrução try/except tem a seguinte sintaxe:
try:
<instruções que podem gerar um erro>
expect <nome1>, [<var1>]:
<instruções que serão executadas se ocorrer o erro nome1>
<var1 contem a mensagem do erro>
except <nome2>, [<var2>]:
<instruções que serão executadas se ocorrer o erro nome1>
<var2 contem a mensagem do erro>
...
62 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
else:
<instruções que serão executadas se não ocorrer nenhum erro>
finally:
<instruções que serão executadas independentemente de ocorrer algum erro>
O número de except pode ser um ou mais e a cláusulas else e finally são opcionais.
Exemplo:
>>> lista=[0,1,2,'tres']
>>> resultado=[ ]
>>> for x in lista:
... y = ' '
... try:
... y = 1.0/x
... except ZeroDivisionError:
... print 'Divisão por Zero'
... except TypeError:
... print 'Erro: Tipo Inválido'
... else:
... print '1/%s = %s' % ( x, y )
... finally:
... resultado.append( y )
...
Divisão por Zero
1/1 = 1.0
1/2 = 0.5
Erro: Tipo Inválido
>>> print resultado
[ ' ', 1.0, 0.5, ' ' ]
Exceção Significado
63 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
>>> class A:
... def __init__(self):
... self.x = 0
...
>>> a=A()
>>> print a.x
0
>>> print a.y
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AttributeError: A instance has no attribute 'y'
Isso quer dizer que houve um erro de AttributeError. Então, podemos usar essa exceção para controlar o
script da seguinte forma:
>>> try:
... print a.y
... except AttributeError, e:
... print 'Ocorreu um erro: ', e
...
Ocorreu um erro: A instance has no attribute 'y'
Quando você não souber o tipo de exceção gerado, poderá fazer um teste como este, forçando a ocorrência
64 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Vimos, nesta aula, conceitos de orientação a objetos em Python, bem como a interceptação de eventos que
geram erros na execução dos scripts. Na próxima aula, colocaremos em prática essas características com
outras abordagens da linguagem.
$ /etc/init.d/mysql restart
Após esse comando, podemos criar a base de dados. Você precisará ter um usuário válido no mysql,
provavelmente 'root', assim:
Após executado o comando acima, o banco de dados exemplo estará criado e povoado. O banco de dados
chama-se 'db_curso_python' e a tabela 'py_conta'. Os campos da tabela são: nc: número da conta;
titular: nome do titular da conta; saldo: saldo corrente na conta.
Para trabalhar com o MySQL, será necessário instalar o pacote “python-mysqldb”, caso já não esteja
instalado.
Comentando os comentários:
65 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Após a execução dos comandos acima, o objeto cursor tem o resultado da operação SQL. Podemos acessar
esse resultado por meio de duas funções:
classes_banco.py
1. #-*- coding: utf-8
2. class Conta(object):
3. __slots__ = [ 'nc', 'titular', 'saldo' ]
4. def __init__(self, registro):
5. self.nc = registro [ 0 ]
6. self.titular = registro [ 1 ]
7. self.saldo = registro [ 2 ]
8. def mostra(self):
9. print 'Conta: ', self.nc
10. print 'Titular: ', self.titular
11. print 'Saldo: R$ ', self.saldo
12. def deposito(self, valor):
13. self.saldo += valor
14. print self.saldo, ' Operação Bem Sucedida'
66 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Esse módulo possui a definição da classe Conta, da linha 2 a 22, e da classe Menu da linha 23 a 35.
A classe Conta contém três métodos além do construtor – mostra, deposito e saque – sendo que o
método saque verifica a possibilidade de efetuar a operação; se for efetivado, o saque retorna True, do
contrário, retorna False.
A classe Menu recebe como parâmetro uma tupla de opções do menu, da linha 25 a 28 são mostradas as
opções do menu, e da linha 29 a 35 é feita uma escolha.
teste4_01.py
1. #!/usr/bin/python
2. #-*- coding: utf-8 -*-
3. from classes_banco import *
4. from MySQLdb import *
5. try:
6. conexao = connect('localhost', 'root', 'admmysql')
7. conexao.select_db('db_curso_python')
8. cursor=conexao.cursor()
9. except:
10. print 'Erro de Conexão com o Banco de Dados'
11. else:
12. while True:
13. op = Menu( ('Finaliza','Consulta','Deposito','Saque') )
14. if op.escolha == 'Finaliza':
15. break
16. conta = raw_input('>> Numero da Conta: ')
17. sql1 = 'SELECT * FROM py_conta WHERE nc = %s' % conta
67 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
O script teste4_01.py tenta abrir a conexão com o banco de dados (linhas 5 a 8); se a conexão estiver
OK, o script entra em um laço até que a opção de abandonar o script seja selecionada.
Concluímos, assim, nosso curso de linguagem de programação com a linguagem Python. Há muitas outras
possibilidades para a utilização de Python. Mostramos aqui apenas a base para o desenvolvimento de
quaisquer dessas aplicações.
Parte 03 - JAVA
Em 1993, os primeiros dispositivos móveis PDAs (Personal Digital Assitant), produzidos por esse projeto e
68 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Uma das marcas registradas de Java é o seu mascote, Duke, criado ainda no projeto Green por Joe
Palrang. O Duke (Figura 1.2) pode ser visto e transformado em um conjunto de fotos que explica que sua
utilização e transformação são livres.
Java é também:
Uma linguagem de programação simples – Possui sintaxe muito semelhante à linguagem “C”,
porém com algumas responsabilidades controladas pelo compilador, tais como o controle de índice
69 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
dos limites de arrays, além da verificação dos tipos, também chamada de fortemente tipada, em
que todos atributos devem ser de um único tipo (primitivo ou objeto).
Uma linguagem de programação orientada a objetos – Possui embutidas na própria
linguagem suporte as boas práticas da orientação a objetos, tais como: identificador único,
composição, encapsulamento, herança e polimorfismo. Tais conceitos serão abordados com mais
profundidade na Aula 2.
Portável – Portabilidade é a possibilidade de um programa ser escrito para uma plataforma (e.g.,
para o sistema operacional Windows) e poder ser utilizado em outro ambiente (e.g., no Linux)
normalmente, por meio da compilação para cada sistema operacional. Java extrapola o conceito de
portabilidade, pois por meio do “Byte Code” e do conceito da máquina virtual Java, não é
necessário a re-compilação do “byte code” podendo o mesmo ser reutilizado em qualquer ambiente
que possua uma máquina virtual java. O portabilidade de java é observada numa das frases mais
utilizadas para definir as características de java o WORA (Write Once Run Anywhere), ou seja,
“escreva uma única vez e rode em qualquer lugar”.
Uma linguagem de programação robusta – a robustez de Java pode ser observada pelo
controle e tratamento de exceção.
Concorrente – java possui suporte nativo a Threads, RMI (Remote Method Invocation) acrônito e
CORBA (Common Object Requeste Broker Architeture), essas tecnologias dão suporte a aplicações
distribuídas.
Segura – Java possui segurança em diversos níveis: através da verificação do código
originalmente compilado e, ainda, uma API (Aplication Program Interface) própria para criptografia
e segurança.
A Figura 1.3 descreve o funcionamento desde o código fonte até a execução em cada máquina
heterogênea.
70 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
A primeira linha “public class OiMundo identifica o nome do programa e da classe com nome “OiMundo”
que também dá origem ao nome do programa OiMundo.java. Assim, temos, na primeira linha:
Dica: o nome do arquivo fonte deve ser o mesmo nome da definição do public class com a extenção
.java.
É importante perceber também o bloco que começa com o abre chaves { da primeira linha e termina com }
da última linha do programa. Tudo que está escrito entre esse abre e fecha chaves determina o escopo
desse programa (classe).
71 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Perceba que a segunda linha “public static void main(String args[])“ define um método muito
importante, o método main(). A assinatura desse método recebe como parâmetros um array de strings,
nesse exemplo nomeado de args. Por meio desse array é que são passados os parâmetros para dentro do
programa Java. Na segunda linha, então:
public: e um qualificador do método que indica que este é acessível externamente à própria
classe. Não se preocupe com essas definições agora, apenas vamos seguir a “receita de bolo”
declarando todos os métodos como public.
static: é outra palavra reservada, que indica que o método deve ser utilizado com um método da
classe e não do objeto. Veremos isso com mais profundidade na próxima aula.
void: é um tipo primitivo do Java; é o valor de retorno do método main(). Quando o método não
retorna nenhum valor, ele retorna void, uma espécie de valor vazio que deve ser especificado.
main: é um nome particular de método que indica para o compilador o início do programa.
(String args[]): É através desse parâmetro que o método main (por conseqüência, o programa
todo) recebe argumentos da linha de comando. Esse parâmetro é um array de Strings que é
inicializado quando os argumentos são passados por meio da invocação do nome do programa na
linha de comando do sistema operacional, por exemplo: java OiMundo arg1 arg2. Nesse caso, o
array args será inicializado com args[0] com valor arg1 e args[1] com valor arg2. Em Java, os
arrays começam na posição 0.
Na terceira linha deste programa “ System.out.println(“Oi Mundo”);”, temos uma instrução para
escrever na saída padrão a String passada como parâmetro para o método println, ou seja, a frase “Oi
Mundo”.
Todo programa fonte em Java é um arquivo texto simples, mas existem diversos editores que podem
facilitar as tarefas de edição e compilação de programas Java.
Java SE (Standart Edition) – É o core da linguagem Java. Ou seja, é onde são descritos os
principais componentes da linguagem Java, operadores, tipos primitivos, principais objetos, String,
array, classes utilitárias, dentre outras.
72 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
73 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Podemos escrever aplicações corporativas em Java utilizando o conjunto de classes APIs disponíveis na
plataforma J EE. Para escrever as aplicações para Web com Java temos disponíveis as seguintes
tecnologias: Servlets, JSPs (JavaServer Pages), JSTL (Java Standart Tal Libs) e diversos frameworks para
aplicações Web, dos quais merecem destaque o Struts, o Spring e o Hibernate.
As principais ferramentas utilizadas atualmente para codificação dos programas escritos em Java são o
Eclipse, que é um projeto de software livre liderado inicialmente pela IBM, e mantido pela comunidade, e
que tem uma aceitação muito boa pelos programadores, e o NetBeans.
Finalizamos nossa pimeira aula. Nela tivemos o primeiro contato com a linguagem de programação Java,
conhecemos um pouco da sua história e suas principais características, vimos também o primeiro programa
e alguns ambientes de desenvolvimento. Nas próximas aulas veremos como aplicar os conceitos da
orientação a objetos em nossos programas.
74 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
como criar as nossas próprias classes e como gerar os nossos objetos a partir dessas classes.
2.2 Classes
Como já vimos em aulas anteriores, a linguagem Java é orientada a objetos, isto é, todos os elementos do
mundo real são modelados como objetos. Os objetos são criados a partir das classes.
Uma classe define a estrutura de um objeto. Uma classe especifica todos os atributos (propriedades) e
métodos (comportamento) que um objeto daquela classe pode ter. Na Figura 2.1, a seguir, tem-se uma
classe automóvel e três objetos que foram gerados a partir dessa classe automóvel.
A classe automóvel tem como atributos: cor, ano, modelo. Os métodos são: desligar, acelerar, e ligar. A
Figura 2.2 apresenta o objeto gerado por essa classe, que tem a cor laranja, ano: 2007, modelo: Punto.
Uma classe é um protótipo que define os atributos e os métodos comuns a todos os objetos de um
determinado tipo e da própria classe, com a finalidade de servir como molde para a criação de objetos.
Dessa forma, uma classe é um template, um modelo para gerar objetos. Em uma classe, os atributos
representam o estado do objeto, os métodos e a sua interação com o mundo externo. Um objeto é gerado
(instanciado) por meio de uma classe.
75 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
implementação de todos os métodos e atributos necessários na criação dos objetos relacionados com essa
classe.
class MinhaClasse {
// todo o código que envolve a classe, seus atributos e métodos
}
Qualificador de Acesso – Determina o acesso a essa classe por outras classes. Iremos falar sobre
os possíveis modificadores mais tarde. Por enquanto, deixaremos sem qualificador de acesso a
nossa classe.
Class – A palavra class informa que essa declaração refere-se a uma classe.
Nome da Classe – Em Java, por padronização, todas as classes começam com letra maiúscula.
class Automovel {
// código da classe Automóvel
}
Os colchetes indicam que as palavras reservadas de visibilidade, static, final e atribuição do valor são
opcionais, ou seja, podem ou não ser utilizadas.
Visibilidade: limita o acesso ao atributo de uma determinada classe. Os níveis de visibilidade são:
private, protected, <default> e public.
private é mais restritivo; o atributo ou método só pode ser visto dentro da própria classe;
protected pode ser visto na classe, na hierarquia (herança) e no pacote;
<default> quando não atribuímos nenhum modificador de visibilidade o valor default
(padrão) é assumido;
public é o mais liberal; o atributo ou método pode ser acessado em por todo mundo
(qualquer classe).
Static – Nesse contexto, a palavra reservada static significa que o atributo pertence à classe e não
ao objeto.
Final – Na declaração de um atributo, final indica que este é uma constante, ou seja, só pode
receber uma única atribuição.
Tipo do Atributo – Os atributos de uma classe podem ser do tipo primitivo (int, double, float,
etc.) ou ser uma outra classe (String, Pessoa etc.).
Nome do atributo – Define o nome do atributo. Por questão de padronização, todos os atributos
em Java começam com letra minúscula. Quando a palavra é composta, as iniciais das próximas
76 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Agora vamos escrever os atributos da classe Automóvel. Como pode ser observado a seguir, a classe
Automóvel tem um atributo do tipo primitivo int (ano), dois atributos do tipo da classe String, (cor,
modelo), além do atributo do tipo da classe Pneu (pneu).
Modificador de acesso – Define quem pode ter acesso ao método. Até esse momento,
conhecemos os modificadores public e private.
TipoDeRetorno – É o tipo do dado que o método irá retornar. Se o método não retorna nenhum
valor, deve-se utilizar a palavra void. Um retorno de um método pode ser do tipo primitivo ou do
tipo de uma classe.
Lista de parâmetros – Um método pode não receber parâmetros, ou receber um ou mais
parâmetros. Para receber mais de um parâmetro é necessário separá-los por vírgula. Para cada
parâmetro é necessário definir o seu tipo.
Return – É uma palavra reservada no Java que define o retorno de um método. Quando o método
não retorna nada (tipo de retorno void), o return não deve ser utilizado no método.
Agora que sabemos o que são os métodos, vamos escrever alguns métodos da classe Automóvel. Os
métodos implementados são: o ligaMotor que tem como objetivo colocar o motor no estado ligado; o
getModelo que retorna o modelo do automóvel, e o setAno que atribui um ano para o automóvel.
class Automovel {
String cor;
77 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
int ano;
String modelo;
Pneu pneu;
public void ligamotor(){ //Método público que não retorna nenhum valor e não recebe parâmetros
estadoMotor= true;
}
public String getModelo(){ //Método público que retorna uma String e não recebe parâmetros
return modelo;
}
public void setAno (int novoAno){ //Método público que não retorna nenhum valor e recebe um par
ano = novoAno;
}
O método construtor é utilizado para definir o estado inicial de um objeto. Por meio do método construtor
o objeto de uma classe é instanciado (criado). Como sabemos, a classe é utilizada para criar objetos, e o
como deve ser criado esse objeto é definido no método construtor.
Uma classe pode ter vários métodos construtores. Quando não é definido um método construtor, o
compilador Java cria um automaticamente sem receber nenhum parâmetro.
A seguir, é apresentada a classe Automóvel com dois métodos construtores, um sem receber nenhum
parâmetro, o outro recebendo os valores iniciais dos atributos da classe Automóvel.
class Automovel {
String cor;
int ano;
boolean estadoMotor;
String modelo;
Pneu pneu;
public Automovel(){
}
public Automovel(String cor, int ano, String modelo){
this.cor = cor;
this.ano = ano;
this.modelo = modelo;
}
public void ligaMotor(){
estadoMotor= true;
}
78 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Quando um método construtor for vazio, os objetos criados a partir desse método terão seus valores
iniciais correspondentes aos valores padrões do tipo da variável. Por exemplo, na classe Automóvel, o ano
que é do tipo int terá o valor inicial 0, estadoMotor que é boolean terá o valor false, e as variáveis cor e
Pneu que são do tipo de classes terão seus valores iniciais null.
No exemplo anterior, foi apresentada a palavra this no método construtor do Automóvel. A palavra this é
utilizada para fazer referência ao atributo do objeto. É utilizada para tirar ambigüidade entre os nomes das
variáveis recebida como parâmetro e o atributo da classe. Exemplo: this.ano refere-se ao atributo ano da
classe Automóvel, a variável ano (sem a palavra this) refere-se ao parâmetro passado para o método.
Em uma classe Java podemos ter mais de um método com o mesmo nome, com argumentos diferentes e
talvez tipo de retorno diferente, isso se chama sobrecarga de método.
A sobrecarga é utilizada quando é necessário que o mesmo método tenha comportamento diferente de
acordo com os seus parâmetros de entrada. Suponha uma classe chamada Triângulo que tenha um método
específico para cálculo de área. Existem diferentes formas de se calcular a área de um triângulo: tem-se,
por exemplo, o cálculo do tamanho dos seus lados ou o cálculo de sua base e altura. No exemplo
apresentado a seguir, a classe Triângulo tem dois métodos para o cálculo da área do triângulo. Esse é um
exemplo de sobrecarga, em que um mesmo método (mesmo nome, calculaSalario) recebe diferentes
parâmetros de entrada, retornando à área do triângulo.
79 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Resumo de sobrecarga:
dois ou mais métodos na mesma classe (incluindo métodos herdados de uma superclasse) com o
mesmo nome, porém com lista de argumentos diferentes, são ditos sobrecarregados;
métodos com o nome sobrecarregados são métodos independentes;
métodos sobrecarregados são chamados da mesma maneira, e a definição do método a ser
executado será de acordo com a lista de parâmetros utilizados na chamada do método.
2.2 Objetos
Um objeto é uma representação abstrata de uma entidade do mundo real que tem um identificador único,
propriedades embutidas e a habilidade de interagir com outros objetos e consigo mesmo.
As classes são utilizadas para criar objetos. As classes definem os atributos e o comportamento dos
objetos. Depois de aprendermos a criar as nossas classes, vamos aprender a escrever os nossos objetos.
Objetos são criados por meio da palavra reservada new seguida do método construtor da classe referente
ao objeto. Dessa forma, sempre que encontrarmos a palavra new, isso significará que um objeto está
sendo criado e que o método construtor da classe relacionada a esse objeto será executado.
Todo objeto do tipo Automóvel terá os atributos cor, ano, estadoMotor e Pneu. Para acessar algum desses
atributos, a sintaxe será a variável de referência ao objeto “.” (ponto) e nome do atributo.
<variável de referência>.<atributo>
A seguir, é apresentado um exemplo, em que a variável gol referencia um objeto do tipo Automóvel. O
atributo ano do objeto referenciado pela variável gol é 2005 e a cor é Branca.
80 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Para acessar os métodos, é necessário utilizar a variável de referência ao objeto “.” (ponto) e o nome do
método.
<variável de referência>.<método>
Lembre-se de que os métodos de um objeto podem retornar ou não algum valor. Dessa forma, os valores
de retorno podem ser recibos em uma variável. No exemplo apresentado a seguir, a variável modelo recebe
o valor do modelo que está no objeto gol.
Nessa aula estudamos o que são classes e objetos, como são estruturados e como criá-los e utilizá-los. A
partir da próxima aula estaremos nos aprofundando nas características específicas que essas classes e
objetos podem ter.
3.1 Comentários
Existem três formas de fazer comentários em Java, descritas a seguir:
Uma ferramenta importante para documentação de programas Java é o javadoc. Para aprender a utilizar o
javadoc e aprofundar os conhecimentos, veja os descritores no site da Sun.
81 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
sinal de $, sendo que esse último não é recomendado por ser comumente utilizado para questões internas
da linguagem com o sistema operacional seguido por outros dígitos.
2o_nome, 1segredo, !teste, @case etc... (pois não começam com letra, $ ou _ )
Entretanto, algumas palavras não podem ser utilizadas; na verdade, já são ou foram utilizadas pela
linguagem Java e ficaram reservadas. A Figura 3.1, abaixo, mostra exemplos de palavras reservadas:
A Tabela 3.1, abaixo, apresenta os tipos primitivos, o respectivo tamanho em bits, os números mínimos e
máximos, além da classe Wrapper correspondente.
82 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
boolean 1 - - Boolean
char 16 Character
short 16 Short
float * 32 Float
double * 64 Double
void - - - Void
83 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
3.3 Operadores
Dividimos os operadores em aritméticos, relacionais e lógicos.
84 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
+ Soma p1 + p2
- Subtração x-y
* Multiplicação a*b
/ Divisão z/x
85 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
X += 4; equivale a x = x + 4;
!= Desigualdade (x!= y)
86 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Operador Operação
! ou ~ Negação
& E (lógico)
| Ou (lógico)
&& E exclusivo
|| ou ^ Ou exclusivo
Espaços em branco, tabulação e quebras de linha são considerados espaços em branco e não são
considerados pelo compilador Java. Veja o exemplo abaixo e reflita:
{
int x = 10;
if (x > 20)
x = 30;
x++;
}
x é igual a 11, porque, independente do alinhamento (dos espaços em branco), o programa não passa pelo
if, que não tem início e fim de bloco, e executa a próxima instrução, que é x++, atribuindo a x (que
inicialmente estava com 10) o valor final 11.
Sintaxe:
if (expressão booleana)
comando ou bloco
87 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
else (opcional)
comando ou bloco
Exemplo:
Acertou quem respondeu x igual a 25, pois, avaliando a expressão x > y na linha 5, o resultado é false,
portanto, não executa a linha 6; e, como existe o else na linha 7, o próximo comando ou bloco é a
execução da linha 8, ou seja: atribui-se ao valor de x (10) + o valor de y (15) armazenando o resultado no
próprio x.
Observação importante: diferente de outras linguagens com C e C++, Java não permite a substituição da
expressão booleana (true ou false) por um inteiro (0 ou 1).
Outra estrutura de controle é o switch que tem a sintaxe e o exemplo descrito abaixo:
switch (expressão)
{
case expressão1:
comando ou bloco
break;
case expressãon:
comando ou bloco
break;
default:
comando ou bloco
}
Exemplo:
88 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
break;
case 3 : System.out.println("Numero TRES");
break;
default : System.out.println("Numero INVÄLIDO");
}
}
}
}
Numero UM
Numero DOIS
Numero TRES
Numero INVALIDO
while (expressão) comando ou bloco – nesse caso, o comando ou bloco só será executado se a
expressão for verdadeira (true) e irá executar-se até que a expressão se torne falsa (false).
do comando ou bloco while (expressão) – nesse caso, o comando ou bloco executará pelo menos
uma vez e depois será avaliada a expressão.
Veja os exemplos de uso das estruturas de repetição do tipo: while, do while e for abaixo:
Exemplo while:
Quantas vezes apareceu na tela a frase “O valor da soma de y e x = “ com o resultado de x + y =25?
Acertou quem respondeu três vezes. No primeiro teste while (x < y), o valor de x=10 e y=15, no segundo
x=11 e y=14 e no terceiro e último o x=12 e y=13, a partir daí o x passa a ser maior que y e não entra
mais na estrutura de repetição.
89 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
A estrutura do tipo for é também conhecida como laço (repetição); é uma estrutura bem genérica que
suporta iterações. Sua sintaxe é apresentada a seguir.
Onde:
O parâmetro é executado antes de o loop começar. Sempre sendo utilizado para condições iniciais.
Pode conter declarações.
A condição é verificada no início do loop. O bloco será repetido até que a condição torne-se falsa.
A expressão é executada depois do bloco do loop.
Na primeira parte da instrução for, int i = 1 é feita a definição de i e o seu valor inicial (é possível definir o
tipo de i fora do for e somente utilizá-lo com um valor inicial), a segunda parte é a condição de teste (i <
10), e a terceira e última parte (i++) representa a alteração do contador. Abaixo, temos um exemplo de
uso do for junto com o exemplo do switch.
Nessa aula, conhecemos, com um pouco mais de detalhe, a sintaxe da linguagem Java. Vimos os tipos
primitivos e arrays e o como utilizar os operadores, suas estruturas de controle e repetição.
90 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
o desenvolvimento de aplicações corporativas. Já tivemos o primeiro contato com essa arquitetura; nesta
aula, vamos detalhar e aprofundar um pouco mais esses conhecimentos. Quando falamos de aplicações
corporativas, estamos pensando em aplicações complexas com requisitos de segurança, escalabilidade,
portabilidade, alta disponibilidade e com baixo custo de manutenção, nesse cenário surgiram várias
arquiteturas de software e frameworks que implementam tais funcionalidades e com essas características
desejáveis. Agora, vamos detalhar a arquitetura J EE proposta pela Sun Microsystems (www.java.sun.com)
como solução para aplicações corporativas.
A figura abaixo, retirada do tutorial da Sun, sobre J EE, exemplifica melhor essa dinâmica.
Do lado do cliente, podemos ter aplicações Desktop (Swing), ou uma aplicação Web através de um
navegador acessando um servidor J EE; percebam que a comunicação pode ser feita tanto através de um
container Web, no caso de usar as tecnologias Servlet ou JSP, quanto através de um container EJB
(Enterprise JavaBean), para posterior comunicação com o mecanismo de persistência, nesse exemplo um
banco de dados.
Nesta aula, não iremos tratar em detalhes dos componentes EJBs,; partiremos para explorar as aplicações
Java para Web e suas tecnologias.
91 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
áurea no final dos anos de 1990, quando surgiram as primeiras especificações de aplicações para Web e,
atualmente, não estão sendo utilizados na mesma intensidade. Hoje, as tecnolgias mais utilizadas são:
Servlets, JSPs, JSTLs, JSF e Struts. Para entender melhor o cenário que estamos descrevendo, observe a
figura a seguir.
Percebam que os Servlets são a base das aplicações Java para Web, seguidos do JSP (JavaServer Pages) e
das bibliotecas de marcadores (Tag Libs) por fim, temos o JSF (JavaServer Faces) e o Struts, que são
frameworks para o desenvolvimento de aplicações Java para Web.
Os Servlets são programas escritos em Java baseados no protocolo HTTP (HiperText Transfer Protocol).
Para suportar as requisições http, os Servlets enviam suas respostas para os navegadores através de págias
HTML. Na verdade, os servlets estão fundamentados em dois objetos-chave: o HTTPServletRequest eo
HTTPServletResponse; o primeiro encapsula o pedido do cliente e o segundo encapsula a resposta enviada
ao navegador.
Veja abaixo o código do programa FirstServlet.java e perceba algumas classes/bibliotecas necessárias que
fazem parte da API dos Servlets.
92 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Inúmeros elementos foram introduzidos como novidade nesse exemplo: os objetos HttpServletRequest e
HttpServletResponse, na linha 6, além da exceção ServletException, na linha 7; esse exemplo serve ainda
para mostrar a flexibilidade da tecnologia Java, mas também a sua complexidade. Por exemplo: podemos
perceber que, para que esse código seja compilado, necessitamos de uma API específica (nesse exemplo,
um arquivo Servlet.jar) que vem junto com o servidor (Tomcat). Para aprofundar os conhecimentos sobre
essa tecnologia, indicamos o Tutorial de Servlets da Sun.
Os JSPs surgiram para facilitar a vida de quem já programava usando os Servlets e, também, como
resposta da Sun para simplicidade na construção de aplicações Java dos concorrentes ASP (Active Server
Pages) da Microsoft e PHP (Personal Home Page). Os JSPs, ao contrário dos Servlets, são arquivos-texto
comuns (semelhante a uma página HTML); pode-se inserir código Java dentro dessas páginas. No final das
contas, todos os JSPs se tornarão Servlets, para serem executados no servidor Web, mas grande parte do
“trabalho pesado” fica sob a responsabilidade do container Web. Por exemplo: quem compila e publica o
servlet gerado por uma página JSP é o próprio container. Essas facilidades popularizaram o uso de JSPs nas
organizações.
As páginas JSPs podem conter uma séria de elementos, dos quais merecem destaque:
93 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Precisamos ter em mente que todas as páginas JSPs, na verdade, serão transformadas em Servlets para
serem executadas; com isso, alguns elementos aparecem nessa página independentemente da vontade do
usuário. Esses elementos são chamados de objetos implícitos, pois constam em todas as páginas JSPs.
Veja as características de cada um no quadro abaixo:
No futuro, as aplicações Java (ou não), Web (ou não), serão semelhantes a componentes de prateleira
(Figura 4.4), ou seja, a tendência é que utilizemos softwares e padrões de projetos e desenvolvimento
compatíveis e reutilizáveis.
94 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Existem diversas outras tecnologias Java que podem ser estudadas, mas, para aprofundar os
conhecimentos em aplicações corporativas e aplicações para Web, recomendamos as leituras abaixo, sobre
J EE, JSF e Struts.
J EE Tutorial da Sun
JSF (Site da Sun)
Struts2 (Roseindia.net)
Quem arrisca um palpite sobre as tecnologias que estarão presentes no futuro de nossas aplicações? (Web?
Celulares? Pequenos dispositivos (sistemas embarcados)?, dispositivos móveis? TV Digital?...)
Até aqui, tivemos o primeiro contato com a linguagem de programação Java, conhecemos um
pouco da sua história e suas principais características e vimos também o primeiro programa e
alguns ambientes de desenvolvimento.
Referencias
ACHOUR, Mehdi; BETZ, Friedhelm; DOVGAL, Antony; LOPES, Nuno; OLSON, Philip; RICHTER, Georg;
SEGUY, Damien; VRANA, Jakub. Manual do PHP. PHP Documentation Group, 2007. Disponível em:
<http://www.itmnetworks.com.br/suporte/manuais/php/index.html>. Acesso em: 31 de março de
2008.
BARRETO, Maurício V. de S. Tutorial da linguagem PHP. Sergipe: DCCE, CCET, Universidade Federal de
Sergipe, s.d. Disponível em: <http://br.geocities.com/trabalho_na_rede/tutorial_php.rtf>.
Acesso em: 31 de março de 2008.
JÚNIOR, Fred Cox. Programando para Web com PHP/MySQL. Livro Eletrônico, 2ª edição, 2001.
Disponível em: <http://www.scriptbrasil.com.br/download/apostila/804/>.
LUTZ, Mark & ASCHER, David. Aprendendo Python. 2ª ed. Porto Alegre: Bookman, 2007.
LUTZ, Mark. Python – guia de bolso. Rio de Janeiro: Alta Books, 2006.
ROSSUM, Guido van. Python Tutorial - Release 2.5.2. Disponível em: <http://docs.python.org
95 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
RNP – Rede Nacional de Pesquisa, Centro Regional de Brasília CR/DF. Tutorial - Autoria em World Wide
Web. Brasília: RNP, 1995.
Glossário
/etc/profile – Arquivo de configuração onde são especificadas algumas variáveis de ambiente.
/home – Diretório onde geralmente são criados os subdiretórios dos usuários do sistema Linux.
A
API (Application Program Interface) – É um conjunto de bibliotecas de classes reutilizáveis.
Arquivo Fonte – É o arquivo texto, de alto nível, onde se escrevem os comandos da linguagem Java.
B
Bivitelinos – Irmãos gêmeos não idênticos, oriundos de óvulos diferentes.
Built-in – Função ou nome embutidos na própria linguagem que não precisam ser importados de nenhum
módulo (http://docs.python.org/lib/builtin.html).
Byte Code – É o código Java compilado e que pode ser executado em qualquer ambiente que tenha uma
máquina virtual Java.
C
C – Linguagem de programação mais popular, sua sintaxe serviu de inspiração para diversas outras
linguagens de programação, como PHP, Java e PERL.
Classe – Em orientação a objetos são modelos que determinam as características e comportamentos dos
objetos (instâncias) criados.
Compilador – Ferramenta utilizada para transformar código fonte em código compilado, no caso de
Java, para transformar em byte code.
Constantes Booleanas – Em computação, são nomes que se associam aos valores Verdadeiro (1) ou
96 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Falso (0).
CORBA (Common Object Request Broker Archtecture) – É uma arquitetura para objetos distribuída e
suportada pela linguagem Java.
D
Download – Processo de baixar programas, normalmente da Web.
H
HTML (Hypertext Markup Language) – Linguagem de Marcação de Hipertexto, é um conjunto de tags
utilizadas para formatação de texto e hipertexto (link), para ser visualizado na Internet.
I
Instância – Objeto criado a partir de uma Classe da qual recebe suas características.
J
Java – Linguagem de programação muito popular, orientada a objetos, desenvolvida pela Sun
Microsystems.
JavaScript – Linguagem de programação do lado do cliente. É executada localmente pelo navegador após
a página ser descarregada. Nada tem a ver com a linguagem Java; seu nome foi escolhido apenas para
aproveitar a popularidade do Java.
L
Linguagem C – Linguagem de programação estruturada criada por Dennis Ritchie e Ken Thompson no
AT&T Bell Labs.
M
Máquina Virtual Java – É uma máquina imaginária implementada por software que simula uma máquina
real, tornando possível a portabilidade de programas Java. É responsável pelo tratamento de
heterogeneidade entre plataformas.
Método Construtor – É um método especial em Java que serve para inicializar os valores de um objeto.
Tem o mesmo nome da classe e não possui tipo de retorno. Toda classe possui um construtor; se não
escrevemos um, o compilador o gera automaticamente.
N
Navegador Internet – Software utilizado para exibir páginas HTML e navegar pela Internet. Exemplo de
navegadores: Netscape Navigator, Internet Explorer e FireFox.
97 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
Número Complexo – Número que pertence a um conjunto que estende o conjunto de números reais (R).
Seu formato é: x + yi, onde x e y são números reais e i é um número imaginário, sendo (i^2 = -1).
O
Oak (carvalho) – Em função de uma árvore que existia em frente ao escritório de James Gosling.
Primeiro nome da linguagem Java.
Objeto Global – Elemento que pode ter seu valor acessado em qualquer ponto de um programa,
independentemente de onde foi declarado.
P
Pascal – Linguagem de programação estruturada criada em 1970 por Klaus Wirth. Era uma linguagem
muito popular para fins acadêmicos.
PERL (Pratical Extraction and Report Language) – É a mais utilizada linguagem de programação para
implementação de programas CGI.
Ponto Flutuante – Tipo numérico usado para representar tanto números fracionários quanto números
muito grandes usando a notação científica ( M x B ^ e ).
Programação Estruturada – Paradigma de programação em que os programas são escritos numa forma
estruturada em funções e procedimentos.
R
RMI (Remote Method Invocation) – É uma API de Java que dá suporte à programação distribuída, ou
seja, a invocação de métodos remotos como se fossem locais.
S
Servidor Web – Software utilizado para servir páginas HTML. Para informar o endereço de um site, ao
navegar, é necessário que haja um servidor web instalado nesse endereço, para fornecer as páginas HTML.
T
Tags HTML – Marcação utilizada na escrita de páginas HTML.
Threads – API de Java que permite rodar os programas em mais de uma linha de execução.
Tipada – Uma linguagem de programação é tipada quanto existe a verificação dos tipos de dados das
98 de 99 2/8/2011 14:23
(Versão para impressão) Linguagem de Programação e Ferramentas http://www.catolicavirtual.br/conteudos/pos_graduacao/desenv_software...
variáveis.
Tipo Primitivo – É um tipo de variável nativa da linguagem Java. Por exemplo: int, float, double, void,
char e boolean.
V
Variável de Ambiente – Variável usada tanto pelo sistema operacional quanto por algumas aplicações
para obter valores de configuração pré-determinados.
W
Wrapper – É uma classe mapeadora, ou seja, representa um tipo primitivo, como se fosse uma classe.
WWW (World Wide Web) – Rede de alcance mundial, é serviço oferecido na Internet que apresenta texto
com formatação e hiperlink (páginas HTML).
99 de 99 2/8/2011 14:23