Vous êtes sur la page 1sur 28

APROG

Algoritmia e Programao

Linguagem JAVA
Bsico

Nelson Freire (ISEPDEI-APROG 2011/12)

1/28

Linguagem Java

Sumrio
Operadores Tipos Atribuio Aritmticos Relacionais Lgicos Outros Precedncias Instrues Entrada Sada Atribuio Deciso Repetio Converses entre Tipos Numricos

Estrutura de um Programa Geral Bsica Estruturas de Dados Variveis Constantes Tipos de Dados Primitivos Referncias Interfaces do Utilizador Consola Grfica

Nelson Freire (ISEPDEI-APROG 2011/12)

2/28

Linguagem Java

Estrutura Geral de um Programa

Programa Java Constitudo por uma ou mais classes

Classe 1 Classe constituda por um ou mais mtodos Mtodo 1 Classe n Mtodo 2

Classe 2

Programa

Mtodo m

Mtodo Cdigo que executa uma tarefa Exemplos razquadrada factorial


Nelson Freire (ISEPDEI-APROG 2011/12) 3/28

Linguagem Java

Classe Principal de um Programa

a classe que contm o mtodo main (principal)

Mtodo 1 Classe 1 Mtodo 2

Mtodo m Programa
Mtodo 1 Classe i Mtodo 2 Classe Principal (Main Class)

Mtodo main

Mtodo main 1 mtodo a ser executado Controla a execuo do programa


Nelson Freire (ISEPDEI-APROG 2011/12) 4/28

Linguagem Java

Estrutura Bsica de um Programa

package nome; import nomeCompletoClasse;

public class NomePrograma {


public static void main(String[] args){ // corpo do mtodo
}

// Classe principal
// cabealho do mtodo main ; imutvel

// significa comentrio ( cdigo fonte. No executado )

Java distingue as letras maisculas das minsculas


Declarao package

Especifica o nome da package a que pertencer a nova classe


Packages permitem organizar classes Semelhante s pastas dos sistemas de ficheiros que facilitam a gesto de ficheiros Concretamente, so pastas dos sistemas de ficheiros Declarao import

Permite nova classe usar classes pertencentes a outras packages


Nome completo de uma classe nome da package seguido do nome da classe Exemplo: import java.util.Scanner; // java.util a package da classe Scanner public um modificador de acesso Especifica se a classe/mtodo pode ou no ser usada por outras classes Classes/mtodos pblicos podem ser usados por outras classes
Nelson Freire (ISEPDEI-APROG 2011/12) 5/28

Linguagem Java

Estruturas de Dados : classificao


// valor pode variar durante a execuo do programa
// valor constante durante a execuo do programa

1/3

Classificadas como:

Variveis
Constantes

Nelson Freire (ISEPDEI-APROG 2011/12)

6/28

Linguagem Java

Estruturas de Dados : variveis

2/3

Declarao de Variveis

Sintaxe (para n variveis do mesmo tipo)


Tipo_de_Dado varivel_1[=valor inicial] [ , , varivel_N[=valor inicial] ] ; [...] = opcional

Exemplos
int x; int z=5; int x=5, y, z=1; Localizao // tipo int guarda inteiros; por omisso, variveis numricas inicializadas a 0 // varivel declarada e inicializada; = o operador de atribuio // mltiplas variveis, do mesmo tipo, declaradas na mesma linha

Em qualquer parte do corpo do mtodo


package nome; import nomeCompletoClasse;

// mais perto da sua utilizao

public class NomePrograma {


public static void main(String[] args){ int x; ... int y = 10; ... }

Nelson Freire (ISEPDEI-APROG 2011/12)

7/28

Linguagem Java

Estruturas de Dados : constantes

3/3

Declarao de Constantes

Sintaxe (para n constantes do mesmo tipo)


final Tipo_de_Dado constante_1=valor [ , , constante_N=valor] ; [...] = opcional

Exemplos
final int X=8; final int X=9, FACTOR=20; Localizao Em qualquer parte do corpo do mtodo
package nome; import nomeCompletoClasse; public class NomePrograma { public static void main(String[] args){ final int X=8; ... final int FACTOR = 20; ... } }

// por conveno, nomes em maisculas // mltiplas constantes, do mesmo tipo, declaradas na mesma linha

// mais perto da sua utilizao

Nelson Freire (ISEPDEI-APROG 2011/12)

8/28

Linguagem Java

Tipos de Dados : classificao

1/3

Um Tipo de Dados define:

Conjunto de dados
Conjunto de operaes possveis sobre esses dados Tipos de Dados so classificados como: Primitivos // dados so valores simples // Ex: valores inteiros e valores reais Referncias (ou No-Primitivos) // dados so referncias de memria de objectos // referncia = endereo // definidos por classes // Ex: classe String - guarda texto

Nelson Freire (ISEPDEI-APROG 2011/12)

9/28

Linguagem Java

Tipos de Dados : primitivos


byte short int long float double char boolean 1 byte 2 bytes 4 bytes 8 bytes 4 bytes 8 bytes (-128, 127) (-32 768, 32 767) (-2 147 483 648, 2 147 483 647) (-9x1018, 9x1018) (-/+ 3.4 x 1038) (-/+ 1.7 x 10308 )
Nomes em minsculas

2/3

Categorias Inteiros:

Reais:

Outros:

Exemplos char c = 'R', opcao= 'a'; boolean flag = false; double nota = 18.5; // caracteres so delimitados por pelicas // valores lgicos: false e true // separador decimal o . (ponto)
x

RAM ...
5

Varivel de Tipo Primitivo Guarda um valor simples


Ex: int x = 5;

...
Contedo de uma varivel de tipo primitivo

Nelson Freire (ISEPDEI-APROG 2011/12)

10/28

Linguagem Java

Tipos de Dados : referncias

3/3

Definidos por Classes Exemplos

String
Scanner

// guardar texto; ver slides Java - Classes


// leitura do teclado da consola

Nomes de classes iniciadas com letra maiscula

Formatter

// escrita formatada na consola


RAM ...
ave referncia de objecto

Varivel de Tipo Referncia Exemplos String cidade; String nome = "Nico"; String ave = "guia"; Guarda uma referncia de objecto da classe declarada Referncia = endereo de memria Considerada objecto Exemplos: nome e ave

...
guia

...

Objecto da Classe String Contedo de uma varivel de tipo referncia

Nelson Freire (ISEPDEI-APROG 2011/12)

11/28

Linguagem Java

Interfaces do Utilizador

Tipos Consola

Interface Textual

Interface Grfica

Caixas de Dilogo Entrada

Sada

Nelson Freire (ISEPDEI-APROG 2011/12)

12/28

Linguagem Java

Entrada de Dados - Consola


// classe da package java.util

1/2

Suportada por um objecto da classe Scanner package nome; import java.util.Scanner; public class NomePrograma { public static void main(String[] args){ int n; long y; double x; String nome, nome_composto; Scanner ler = new Scanner(System.in); n = ler.nextInt(); y = ler.nextLong(); x = ler.nextDouble(); nome = ler.next(); nome_composto= ler.nextLine();
}

// importa classe Scanner para usar em main

// declara um objecto Scanner para ler do teclado // l um int do teclado e guarda em n // l um long do teclado e guarda em y // l um double do teclado e guarda em x // l uma string do teclado e guarda em nome // l uma linha e guarda em nome_composto

} Mais pormenores no slide seguinte


Nelson Freire (ISEPDEI-APROG 2011/12) 13/28

Linguagem Java

Entrada de Dados - Consola

2/2

Classe Scanner Serve para ler ficheiros de texto

Consola tratada como um ficheiro de texto


Declarao de um objecto Scanner

Scanner ler = new Scanner(System.in);


Cria um objecto (instncia) da classe Scanner (objecto ler)

O objecto System.in representa o dispositivo de entrada standard (teclado)


System a classe que representa o sistema de computao in o objecto da classe System que representa o dispositivo de entrada standard Por omisso o teclado Leitura preciso invocar um mtodo do objecto Scanner adequado ao tipo de dado a ler Sintaxe: Exemplo: nomeObjectoScanner.nomeMtodo() ler.nextInt()

Exemplos de instrues para ler um dado e guard-lo numa varivel Leitura de inteiro do tipo int: int num = ler.nextInt(); Leitura de float: float num = ler.nextFloat(); Leitura de strings: String s = ler.next(); // ex: nome simples String s = ler.nextLine(); // ex: nomes compostos
14/28

Nelson Freire (ISEPDEI-APROG 2011/12)

Linguagem Java

Entrada de Dados Interface Grfica

Suportada pelo mtodo showInputDialog da classe JOptionPane

package nome;
import javax.swing.JOptionPane; public class NomePrograma { public static void main(String[] args){ // l uma string e guarda em nome String nome = JOptionPane.showInputDialog("Insira um nome:"); ... // l um int e guarda em i int i = Integer.parseInt(JOptionPane.showInputDialog("Insira um inteiro:")); // l um long e guarda em l long l = Long.parseLong(JOptionPane.showInputDialog("Insira um inteiro:")); ... // l um double e guarda em d double d = Double.parseDouble(JOptionPane.showInputDialog("Insira um real:")); // l um float e guarda em f float f = Float.parseFloat(JOptionPane.showInputDialog("Insira um real:"));
}

// importa classe JOptionPane

}
Nelson Freire (ISEPDEI-APROG 2011/12) 15/28

Linguagem Java

Sada - Consola

Suportada pelos mtodos print, println e printf do objecto System.out System a classe que representa o sistema de computao out objecto da classe System que representa o dispositivo standard de sada Por omisso o ecr Mtodos de escrita System.out.print("mensagem"); printf - consultar o mtodo String.format nos System.out.println("mensagem"); slides Java-Classes System.out.printf(string_formatao, lista_variveis) ;

package nome;
public class NomePrograma { public static void main(String[] args){ System.out.print("Operao impossvel!"); // Escreve mensagem e coloca cursor no fim System.out.println("Diviso por zero!!"); // Escreve mensagem e coloca cursor no incio da // linha seguinte ... System.out.printf("Mdia=%.1f",media); // Sada formatada; Escreve a media (double) // com uma casa decimal. Exemplo: Mdia=15.3
}

} Tambm pode ser usada a classe Formatter


Nelson Freire (ISEPDEI-APROG 2011/12) 16/28

Linguagem Java

Sada Interface Grfica

Suportada pelo mtodo showMessageDialog da classe JOptionPane Sintaxe

JOptionPane.showMessageDialog(null, "mensagem");
package nome; import javax.swing.JOptionPane; public class NomePrograma { // importa classe JOptionPane

public static void main(String[] args){


double media; JOptionPane.showMessageDialog(null, "No foram encontrados nmeros pretendidos"); JOptionPane.showMessageDialog(null, "Mdia=" + mdia); // Sada no formatada ... String s = String.format("Mdia=%.1f",media);

JOptionPane.showMessageDialog(null, s);
}

// Sada formatada

Nelson Freire (ISEPDEI-APROG 2011/12)

17/28

Linguagem Java

Operadores

1/2

Atribuio = // Ex: x = x + z;

Aritmticos + // Soma // Subtraco * // Produto / // Diviso real ou inteira; Diviso inteira se ambos os operandos forem inteiros. % // Resto da diviso Relacionais > // Maior >= // Maior ou igual < // Menor <= // Menor ou igual != // Diferente == // Igual
Lgicos && || ! Outros ++ -// AND // OR // NOT ; Ex: !(x<0 && y>10) // Incrementa valor de 1 unidade; // decrementa valor de 1 unidade; Ex: contador++ Ex: contador-18/28

Nelson Freire (ISEPDEI-APROG 2011/12)

Linguagem Java

Operadores

2/2

Precedncias dos Operadores


Associatividade no mesmo nvel

Precedncia Maior

Operadores [ ] . () chamada_mtodo ! ++ -- (cast) new * / %

Exemplos

a / b * c (a / b) * c

+ < <= > >= instanceof

== !=
&&

||
?: Menor = += -= *= /= %= a -= b += c (a -= b) += c

Nelson Freire (ISEPDEI-APROG 2011/12)

19/28

Linguagem Java

Instruo de Atribuio
// expresso tem de ser do tipo da varivel

Sintaxe varivel = expresso;

Exemplos package nome;


public class NomePrograma {

public static void main(String[] args){ int x, y; double z; int d, idade; x = 5; d = idade 12; z = x * 10 Math.pow(2,5);
}

// idade e d tm de ser do mesmo tipo // Math.pow(2,5) = 25

Nelson Freire (ISEPDEI-APROG 2011/12)

20/28

Linguagem Java

Instrues de Deciso
// = SE ... ENTO
// bloco = { ... } ; obrigatrio para aco com mais de 1 instruo // = SE ... ENTO ... SENO

1/4

Sintaxe

if (condio) { // aco }
if (condio) { // aco 1 } else { // aco 2

}
// = CASO ... SEJA switch(expresso) { // expresso tem de ser do tipo inteiro ou caracter

case valor_1[, case valor_2, ..., case valor_m] :

// aco_1; break;

case valor_n[, case valor_o, ..., case valor_v] : // aco_2; break; ... default : // aco_por_omisso; // opcional; ltima escolha; Pode no ser a ltima }

Nelson Freire (ISEPDEI-APROG 2011/12)

21/28

Linguagem Java

Instrues de Deciso

2/4

Exemplos package nome; public class NomePrograma {

public static void main(String[] args){


int x, y, z; if (x>5) y=4; // bloco {...} no obrigatrio if(x>5 && x<10){ // bloco obrigatrio por haver mais de uma instruo y=10; z=100; } if (x>0) { System.out.println(x + " um nmero positivo"); } else { System.out.println(x + "no um nmero positivo"); } }

}
Nelson Freire (ISEPDEI-APROG 2011/12) 22/28

Linguagem Java

Instrues de Deciso

3/4

Exemplos
package nome;

public class NomePrograma {


public static void main(String[] args){

int x, y, z; switch(x){ case 1, case 3: z = y * 2; break; case 6: z = 12; break; case 2, case 4, case 7: y = 45; z = 23; break; default: z=50; }
} }
Nelson Freire (ISEPDEI-APROG 2011/12)

break termina execuo do switch; seno, so executadas as instrues do caso seguinte

23/28

Linguagem Java

Instrues de Deciso

4/4

Exemplos package nome;


public class NomePrograma { public static void main(String[] args){ char opcao; switch(opcao){ case '1', case 'a': break; case '2', case 'a': break; case '0', case 's', case 'S' : break; default: } } }

break termina execuo do switch; seno, so executadas as instrues do caso seguinte

Nelson Freire (ISEPDEI-APROG 2011/12)

24/28

Linguagem Java

Instrues de Repetio

1/2

Sintaxe
while (condio) { // = ENQUANTO

// corpo do ciclo
}

do {

// = REPETIR ... ENQUANTO

// corpo do ciclo
} while (condio); // termina com ;

for(inicializao contador; condio de funcionamento; passo){ // corpo do ciclo }

// = PARA

Nelson Freire (ISEPDEI-APROG 2011/12)

25/28

Linguagem Java

Instrues de Repetio

2/2

Exemplos package nome; public class NomePrograma { public static void main(String[] args){ int c, y; Scanner ler = new Scanner(System.in); c = 1; while(c<=25){ System.out.println(c); c++; } do { y = ler.nextInt(); } while(y>0); for(c=1; c<=25; c++){ // um PARA(c1 AT 25 PASSO 1) System.out.println(c); } for(c=25; c>=1; c--) // for(); no terminar com ponto-e-vrgula System.out.println(c);
}

}
Nelson Freire (ISEPDEI-APROG 2011/12) 26/28

Linguagem Java

Converses entre Tipos Numricos

1/2

Tipos de Converso Implcita

Explcita (cast)
Converso Implcita Declarada implicitamente o Exemplo: short x = 1389;

char
byte short int long

long y = x;
Converso para tipos maiores ou iguais o Excepto long float Tipos Sem perda de preciso Possvel perda de preciso Converso Explcita Declarada explicitamente ... atravs de cast Sintaxe dum cast o (tipo_alvo) nome_varivel o Exemplo: double x = 13.89; int y = (int) x;
Nelson Freire (ISEPDEI-APROG 2011/12)

float

double

// Parte decimal truncada (y=13)


27/28

Linguagem Java

Converses entre Tipos Numricos

2/2

Valores

Valor
INTEIRO

Sufixo
Sem L

Exemplo
123456789 123456789L 123456789l 12.34

Tipo Considerado
int long double

l
Sem REAL F f

12.34F 12.34f

float

Nelson Freire (ISEPDEI-APROG 2011/12)

28/28

Vous aimerez peut-être aussi