Aula 2 - Introdução à Linguagem Java

Propaganda
Curso: Técnico em Informática
Campus: Ipanguaçu
José Maria Monteiro
Pontifícia Universidade Católica do Rio de Janeiro – PUC
PUC--Rio
Departamento
de Informática
Clayton Maciel
Costa
[email protected]
[email protected]
[email protected]
“Nada existe no mundo tão poderoso
quanto uma idéia cujo tempo chegou”.
Victor Hugo
1
Unidade II: Introdução à
Linguagem Java
Introdução à Linguagem Java
O nome “java” é usado para referir-se a:
– Uma linguagem de programação orientada a
objetos;
– Uma coleção de APIs (classes, componentes,
frameworks) para o desenvolvimento de aplicações
multiplataforma;
– Um ambiente de execução presente em browsers,
eletrodomésticos, mainframes, SOs, celulares,
palmtops, cartões inteligentes, …
James Gosling, sun microsystems, 1995;
– Linguagem projetada para eletrodomésticos
2
Introdução à Linguagem Java
Origem e Evolução
– 1991 (Green Project/Oak) - SW p/ dispositivos
de eletrônicos em rede. Requisitos:
• suporte a diferentes plataformas
• distribuição de software via rede
• garantia de confiabilidade de código
• baixos requisitos de memória
• código pequeno
– 1994 - HotJava - browser 100% Java
– 1995 - lançada no SunWorld (voltada à Web)
A Linguagem Java
Origem e Evolução
– Ideal para a Internet;
• Os applets são colocados em páginas html
• Servlets/JSP
– Independente da Internet;
• Pode ser usada para o desenvolvimento de
aplicações standalone
– Aplicações de Console (DOS)
– Aplicações Desktop (Windows Forms)
• E muito mais …
3
A Linguagem Java
Tecnologia e Conceitos
– A evolução da linguagem é controlada pelo
Java
Community
Process
(www.jcp.org)
formado pela Sun e usuários Java;
– Ambientes
de
execução
(JRE)
e
desenvolvimento (SDK) são fornecidos
fabricantes de hardware e software;
de
por
– Java possui uma coleção de APIs (bibliotecas)
padrão que podem ser usadas para construir
aplicações
• Organizadas em pacotes (java.*. Javax.* e extensões);
• Usadas pelos ambientes JRE e SDK;
A Linguagem Java
Terminologia
– JDK - Java Development Kit: Terminoligia utilizada
até a versão 1.1 para identificar a plataforma Java.
– Java 2: Terminologia utilizada a partir da versão 1.2
da plataforma Java, atualmente na versão 1.4.
– J2SDK – Java 2 Software Development Kit: Ambiente
completo para o desenvolvedor Java. Inclui
compilador e a Virtual Machine.
– J2RE – Java 2 Runtime Environment: Ambiente
apenas para execução de aplicações Java,
utilizada em ambientes de produção. Não contém
o compilador.
– JVM – Máquina Virtual Java. Máquina imaginária
implementada como uma aplicação de software
em uma máquina real.
4
A Linguagem Java
Plataformas Java
AWT
Threads
Swing
Collections
Applets
Files
Java Development Kit
(JDK)
Enterprise
APIs
A Linguagem Java
Plataformas
Java
5
A Linguagem Java
Plataformas Java
Source: Sun Microsystems, Inc.
A Linguagem Java
Plataformas Java
6
A Linguagem Java
Orientada a Objetos;
Segura;
Orientada a Eventos;
Portável;
C++ like (sem ponteiros
explícitos)
Código Móvel;
Distribuída;
Compilada/Interpretada;
Robusta;
Multi-Threaded;
Garbage Collected;
Case Sensitive;
Trat. de Exceções;
A Linguagem Java
Linguagem Concorrente;
Ambientes Visuais;
Programação com Componentes;
Java é um padrão suportado por várias indústrias;
7
A Linguagem Java
Orientada a Objetos
Objetos;
Classes (abstratas e concretas);
Encapsulamento;
Proteção (public, private, protected, default);
Herança (simples e “quase múltipla”);
Polimorfismo;
A Linguagem Java
C++ Like
class Complex
{
float real, imag;
boolean isReal ()
(
return (imag==0);
}
}
8
A Linguagem Java
Distribuída
Pacote de classes para programação em rede
(java.Net): sockets, urls, http, datagrama, etc;
Rmi;
Integração com Corba (Objetos Distribuídos);
Excelente para o desenvolvimento de aplicações
Cliente/Servidor;
A Linguagem Java
Compilada/Interpretada
Compilada (bytecodes)
Interpretação (máquina virtual, jvm)
Portável - “write once run anywhere”
AloMundo.java
compilador (javac)
AloMundo.class
interpretador (JVM)
Execução
9
A Linguagem Java
Compilada/Interpretada
HelloWorldApp.class
A Linguagem Java
Compilada/Interpretada
HelloWorldApp.java
10
A Linguagem Java
Compilada/Interpretada
Bytecode / API
Interpretador
Java Virtual Machine
bytecodes
Browser
Servidor HTTP
Obs: 5% de C compilado (Desempenho)
A Linguagem Java
Código Nativo
JIT Compiler
Bytecode / API
Java Virtual Machine
bytecodes
Browser
Servidor HTTP
Obs: JIT (Just-in-Time compiler, 50% de C compilado (Desempenho)
11
A Linguagem Java
Compilada/Interpretada
Código Nativo
Compilador Convencional
Código Fonte
Bibliotecas/API
Ex: Excelsior JET (http://www.excelsior-usa.com/products.html)
“Excelsion JET: Transforms Java applications into native Win32
executables that run ate the speed of C++ applications”
Obs: Ganha desempenho, mas, perde portabilidade. Desempenho similar a C++.
A Linguagem Java
Portável
Planejada
para
sistemas
hardware muito heterogêneo;
embutidos:
Bytecode portável;
“Escreva uma vez e rode em qualquer lugar”;
Bytescodes (.class)
JavaVM
JavaVM
JavaVM
IBM / Aix
PC / Windows
Sun / Solaris
12
A Linguagem Java
Portável
HelloWorldApp.class
(JVM)
(JVM)
(JVM)
A JVM é específica
para cada SO e
Hardware.
A Linguagem Java
Robusta
Não permite acesso direto à memória;
– (não utiliza ponteiros explícitos);
Possui coletor de lixo (garbagge collector);
Possui tratamento de exceções;
Fortemente tipada;
Implementa o conceito de cast’s;
Verificações obrigatórias (ex: arrays);
13
A Linguagem Java
Segura
Não possui ponteiros explícitos;
Acesso controlado aos recursos do sistema
– ram, sistema de arquivos;
Gerenciador de segurança
– classe securitymanager ;
Verificação dos bytecodes que trafegam na rede;
Existem ferramentas para encriptação de applets;
Obs: os applets podem ser interceptados através da rede e decompilados com ferramentas
de engenharia reversa, como o mocha.
A Linguagem Java
Multi-Threaded
Implementa threads de forma bastante simples
e segura;
O suporte é dado pela própria linguagem, faz
parte do pacote padrão de java (pacote
java.Lang);
É portável, até mesmo em plataformas sem
threads;
14
A Linguagem Java
Tratamento de Exceções
Permite o tratamento de situações excepcionais;
Sintaxe apropriada:
– try, catch, finally, throw, throws;
Exceções embutidas;
Permite a criação de novas exceções
– definição de situações excepcionais;
A Linguagem Java
Estrutura de um Programa Java
class <nome_da_classe> {
public static void main ( < parâmetros > ) {
< declarações >
< comandos >
}
}
main: método por onde se inicia a execução do programa.
public: é o qualificador do método, indica que este método é acessível a objetos de
classes externas.
static: qualificador, os métodos statics podem ser invocados mesmo sem existir um
objeto instanciado da classe.
void: indica que o método não tem valor de retorno.
15
A Linguagem Java
O Primeiro Programa Java
public class HelloWorld {
public static void main ( String args[ ] ) {
System.out.println(“Hello World!”);
}
}
Salvar o arquivo com o nome da classe: HelloWorld.java
Para Compilar: javac HelloWorld.java
Para Executar: java HelloWorld
A Linguagem Java
Literais e Tipos
Tipos representam um valor, uma coleção de
valores ou coleção de outros tipos. Podem ser:
– Tipos básicos, ou primitivos: quando representam
unidades indivisíveis de informação (de tamanho
fixo).
– Tipos complexos: quando representam informações
que podem ser decompostas em tipos “menores”
(primitivos ou outros tipos complexos).
16
A Linguagem Java
Literais e Tipos
Literais: São valores representáveis literalmente:
– Números: 1, 2.14, 1.6e-23, etc
Unidimensionais
– Valores booleanos: true e false
– Caracteres individuais: ‘a’, ‘u0041’,’\n’, etc
– Seqüências de caracteres: “aaa”, “Java”
– Vetores de números, booleanos ou strings: {”a”,”b”}
Compostos
A Linguagem Java
Tipos Primitivos
Têm tamanho fixo.
Têm sempre um valor default.
Armazenados na pilha (acesso rápido).
Não são objetos.
17
A Linguagem Java
Tipos Primitivos
boolean
true ou false
char
caracteres ( Unicode )
byte
inteiro ( 8 bits )
short
inteiro (16 bits)
int
inteiro ( 32 bits )
long
inteiro ( 64 bits)
float
ponto flutuante ( 32 bits )
double
ponto flutuante (64 bits )
A Linguagem Java
Operadores
Operadores Relacionais:
> >= < <= == !=
Operadores Lógicos:
&& ( and) || (or) ! ( not )
Precedência:
Unários, aritméticos, relacionais, lógicos
( primeiro && e depois ||)
18
A Linguagem Java
Strings
“String” não é um tipo primitivo e sim uma classe;
Literais: “”, “Hello”, “World”;
Concatenação: “Hello” + “World” = “HelloWorld”;
Conversão Implícita:
“Hello2001”;
“Hello”
+
2001
=
Comparação de Strings: a.equals(b) ;
Tamanho de uma String: a.length() ;
A Linguagem Java
Atribuição
< IDENTIFICADOR> = < EXPRESSÃO>
Ex: idade = 23; sexo = “M”; tem_filhos = false;
Incremento e Decremento
idade = idade + 1; ou idade + = 1; ou idade ++;
idade = idade - 1; ou idade - = 1; ou idade --;
19
A Linguagem Java
Estrutura Condicional
FORMA GERAL:
if ( < EXPRESSÃO > ) {
< BLOCO DE COMANDOS >
}
else {
< BLOCO DE COMANDOS >
}
Onde: <bloco-de-comandos> é uma seqüência de comandos entre { e }.
A Linguagem Java
Estrutura Condicional
EXEMPLO:
...
int x = 5;
int y = 10;
if (x == y) {
System.out.println( “x = y” );
}
else {
System.out.println( “x != y”);
}
...
20
A Linguagem Java
Estrutura Condicional
...
Exemplo:
int x, y;
maior entre dois números
Scanner s = new Scanner(System.in);
x = s.nextInt ();
y = s.nextInt ();
if (x > y )
System.out.println (x);
else
if (y > x)
System.out.println (y);
else
System.out.println (“x = y”);
...
A Linguagem Java
Estrutura Condicional
...
if (x > y )
System.out.println (x);
else
if (y > x)
System.out.println (y);
else
System.out.println (“x = y”);
...
...
if (x > y )
{
System.out.println (x);
}
else
{
if (y > x)
{
System.out.println (y);
}
else
{
System.out.println (“x = y”);
}
}
...
PS: Escreva com clareza!!!
21
A Linguagem Java
Estrutura Condicional
Exemplo:
maior entre três números
...
if ((x > y) && (x > z))
System.out.println (x);
else if ((y > x) && (y > z))
System.out.println (y);
else
System.out.println (z);
...
A Linguagem Java
Estrutura de Repetição: While
FORMA GERAL:
while ( < EXPRESSÃO > ) {
< BLOCO DE COMANDOS >
}
22
A Linguagem Java
Estrutura de Repetição: While
EXEMPLO:
Soma de 1 a N
...
Scanner s1 = new Scanner(System.in);
int i, n, s;
n = s1.nextInt ();
i = 1; s = 0;
while (i < = n) {
s = s + i;
i = i + 1;
}
System.out.println(s);
...
A Linguagem Java
Estrutura de Repetição: Do…While
FORMA GERAL:
do {
< BLOCO DE COMANDOS >
}
while ( < EXPRESSÃO > );
23
A Linguagem Java
Estrutura de Repetição: Do…While
EXEMPLO:
Soma de 1 a N
...
int i, n, s;
n = Util.readInt ();
i = 1; s = 0;
do {
s = s + i;
i = i + 1;
}
while (i < = n);
System.out.println(s);
...
A Linguagem Java
Estrutura de Repetição: For
FORMA GERAL:
for ( < INICIALIZAÇÃO >; < TESTE >; < ATUALIZAÇÃO >; ) {
< BLOCO DE COMANDOS >
}
24
A Linguagem Java
Estrutura de Repetição: For
EXEMPLO:
…
int soma = 0 ;
for ( int i =1 ; i <= 100 ; i ++ ) {
soma = soma + i ;
}
...
A Linguagem Java
Estrutura de Repetição: For
EXEMPLO:
…
int soma = 0 ;
for ( int i =1 , j =2; i <= 100 ; i ++, j ++ ) {
soma = soma + i + j ;
}
...
25
A Linguagem Java
Estrutura de Repetição: For
EXEMPLO:
…
Erro de compilação.
Código feio.
int soma = 0 ;
for ( int i =1 , j =2, System.out.println(i); i <= 100 ; i ++, j ++ ) {
soma = soma + i + j ;
}
...
A Linguagem Java
Estrutura de Repetição: For
EXEMPLO:
Código feio.
…
int soma = 0 ;
int i, j;
for ( i =1 , j =2, System.out.println(i); i <= 100 ; i ++, j ++ ) {
soma = soma + i + j ;
}
...
26
A Linguagem Java
Estrutura de Repetição: For
EXEMPLO:
…
int soma = 0 ;
int i = 1;
for (;;) {
soma = soma + i ;
System.out.println(soma);
i++;
}
...
A Linguagem Java
Estrutura Case
FORMA GERAL:
switch ( < EXPRESSÃO > ) {
case x:
< BLOCO DE COMANDOS >
break ;
case y: case z: case w :
< BLOCO DE COMANDOS >
break ;
default:
< BLOCO DE COMANDOS >
break ;
}
27
A Linguagem Java
Estrutura Case
char, byte,
short ou int.
switch ( i % 35 ) {
case 0:
< BLOCO DE COMANDOS 1 >
Constant
break ;
Expression.
case 5: case 10: case 15 :
< BLOCO DE COMANDOS 2 >
break ;
Opcional.
default:
< BLOCO DE COMANDOS 3 >
break ;
}
Onde: % operador resto da divisão.
A Linguagem Java
Estrutura Case
int i = 0;
switch (i)
{
case 0:
System.out.println("Case 0");
break ;
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
break ;
default:
System.out.println("Case Default");
break ;
}
Saída: “Case 0”.
28
A Linguagem Java
Estrutura Case
int i = 10;
switch (i)
{
case 0:
System.out.println("Case 0");
break ;
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
break ;
default:
System.out.println("Case Default");
break ;
}
Saída: “Case 5, 10 ou 15”.
A Linguagem Java
Estrutura Case
Saída: “Case Default”.
int i = 1;
switch (i)
{
case 0:
System.out.println("Case 0");
break ;
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
break ;
default:
System.out.println("Case Default");
break ;
}
29
A Linguagem Java
Estrutura Case
int i = 0;
switch (i)
{
case 0:
System.out.println("Case 0");
break ;
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
break ;
}
Saída: “Case 0”.
A Linguagem Java
Estrutura Case
int i = 1;
switch (i)
{
case 0:
System.out.println("Case 0");
break ;
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
break ;
}
Saída:
30
A Linguagem Java
Estrutura Case
int i = 5;
switch (i)
{
case 0:
System.out.println("Case 0");
break ;
default:
System.out.println("Case Default");
break ;
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
break ;
}
Saída: “Case 5, 10 ou 15”.
A Linguagem Java
Estrutura Case
int i = 0;
switch (i)
{
case 0:
System.out.println("Case 0");
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
default:
System.out.println("Case Default");
}
Saída: “Case 0” “Case 5, 10 ou 15” “Case Default”.
31
A Linguagem Java
Estrutura Case
int i = 0;
switch (i)
{
case 0:
System.out.println("Case 0");
default:
System.out.println("Case Default");
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
}
Saída: “Case 0” “Case Default” “Case 5, 10 ou 15”.
A Linguagem Java
Estrutura Case
int i = 5;
switch (i)
{
case 0:
System.out.println("Case 0");
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
default:
System.out.println("Case Default");
}
Saída: “Case 5, 10 ou 15” “Case Default”.
32
A Linguagem Java
Estrutura Case
int i = 5;
switch (i)
{
case 0:
System.out.println("Case 0");
default:
System.out.println("Case Default");
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
}
Saída: “Case 5, 10 ou 15”.
A Linguagem Java
Estrutura Case
int i = 0;
switch (i)
{
case 0:
System.out.println("Case 0");
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
break;
default:
System.out.println("Case Default");
}
Saída: “Case 0” “Case 5, 10 ou 15”.
33
A Linguagem Java
Estrutura Case
int i = 0;
switch (i)
{
default:
System.out.println("Case Default");
break;
case 0:
System.out.println("Case 0");
case 5: case 10: case 15 :
System.out.println("Case 5, 10 ou 15");
break;
}
Saída: “Case 0” “Case 5, 10 ou 15”.
Estudo de Caso
34
“A diferença entre problemas e
dificuldades é que os primeiros
têm solução.”
Roberto Civita
A Linguagem Java
Exercícios
A série de fibonacci é formada pela seqüência:
1, 1, 2, 3, 5, 8, 13, … etc.
Escreva um programa que gera a série de fibonacci até o
vigésimo termo.
Faça um programa para calcular o fatorial de um número
lido do teclado.
Faça um programa que recebe uma frase (várias strings)
como parâmetro e a imprime no vídeo.
35
A Linguagem Java
Desafio
Escreva um programa que faça o seguinte teste para os
números entre 1 e 100:
– Se for múltiplo de 5 imprima: “fizz”;
– Se for múltiplo de 7 imprima: “buzz”;
– Se múltiplo de ambos imprima: “fizzbuzz”;
Use:
• args[ i ] , para se referir a um valor passado como parâmetro.
• BufferedReader in = new BufferedReader (new
InputStreamReader (System.in)); e
String line = in.readLine( ); para ler uma string do teclado.
A Linguagem Java
Exemplo
public class Fibonacci
{
public static void main(String[] args)
{
int current, prev = 1, prevprev = 0;
System.out.print(prev + " ");
for(int i = 0; i < 19; i++)
{
current = prev + prevprev;
System.out.print(current + " ");
prevprev = prev;
prev = current;
}
}
}
36
A Linguagem Java
Exemplo
public class Factorial
{
public static void main(String args[])
{
int fact = 1;
int numero;
System.out.println("Digite um numero: ");
numero = Util.readInt();
for(int i = 2; i <= numero; i++)
fact *= i;
System.out.println("O fatorial de " + numero + " e " + fact);
}
}
37
Download