Sie sind auf Seite 1von 31

Automao e

Computadores Programao de Alto Nvel

Linguagem JAVA
Bsico

Rui Nunes (AEF 2014/15) 1/31


Linguagem Java Sumrio
Estrutura de um Programa Operadores
Geral Tipos
Bsica Atribuio
Aritmticos
Estruturas de Dados Relacionais
Variveis
Lgicos
Constantes
Outros
Tipos de Dados Precedncias
Primitivos
Instrues
Referncias
Entrada
Interfaces com o Utilizador Sada
Consola Atribuio
Grfica Deciso
Repetio

Converso de Tipos Numricos

Strings

Rui Nunes (AEF 2014/15) 2/31


Linguagem Java Estrutura Geral de um Programa
Programa Java
Constitudo por uma ou mais classes

Classe 1
Classe
Constituda por um
Classe 2 ou mais mtodos
Programa
Mtodo 1

Mtodo 2
Classe n

Mtodo m

Mtodo
Cdigo que executa uma
tarefa
Exemplos
razquadrada
fatorial
Rui Nunes (AEF 2014/15) 3/31
Linguagem Java Classe Principal de um Programa
Classe que contm o mtodo main (principal)

Mtodo 1

Mtodo 2
Classe 1

Mtodo m

Programa

Mtodo 1

Mtodo 2 Classe Principal


Classe i
(Main Class)

Mtodo main

Mtodo main
Controla execuo do programa
1 mtodo executado
Rui Nunes (AEF 2014/15) 4/31
Linguagem Java Estrutura Bsica de um Programa
package nome;
import nomeCompletoClasse;
public class NomePrograma { // Classe principal ; nomePrograma c/ letra inicial maiscula
public static void main(String[] args){ // cabealho do mtodo main ; imutvel
// corpo do mtodo // significa comentrio ( cdigo fonte. No executado )
}
}
Java distingue letras maisculas das minsculas
Declarao package
Especifica nome da package a que pertencer a nova classe
Packages permitem organizar as 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 package da classe Scanner
Modificador de acesso public
Especifica se classe/mtodo pode ou no ser usada por outras classes
Classes/mtodos pblicos podem ser usados por outras classes
Rui Nunes (AEF 2014/15) 5/31
Linguagem Java Estruturas de Dados : categorias 1/3

Categorias
Variveis // valor pode variar durante execuo do programa

Constantes // valor constante durante execuo do programa

Rui Nunes (AEF 2014/15) 6/31


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; // tipo int guarda inteiros; por omisso, variveis numricas inicializadas a 0
int z=5; // varivel declarada e inicializada; = operador de atribuio
int x=5, y, z=1; // mltiplas variveis, do mesmo tipo, declaradas na mesma linha

Local
Em qualquer parte do corpo do mtodo
Boa regra prtica package nome;
Mais perto da utilizao import nomeCompletoClasse;
public class NomePrograma {
public static void main(String[] args){
int x;

int y = 10;

}
}

Rui Nunes (AEF 2014/15) 7/31


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; // por conveno, nomes em maisculas
final int X=9, FATOR=20; // mltiplas constantes, mesmo tipo, declaradas na mesma linha

Local
Qualquer parte do corpo do mtodo
Boa regra prtica
Mais perto da utilizao
package nome;
import nomeCompletoClasse;
public class NomePrograma {
public static void main(String[] args){
final int X=8;

final int FATOR = 20;

}
}

Rui Nunes (AEF 2014/15) 8/31


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 objetos


// referncia = endereo
// definidos por classes
// Ex: classe String - guarda texto

Rui Nunes (AEF 2014/15) 9/31


Linguagem Java Tipos de Dados : primitivos 2/3

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

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

Varivel de Tipo Primitivo x 5

Guarda um valor simples


Ex: int x = 5;
Contedo de varivel de
tipo primitivo

Rui Nunes (AEF 2014/15) 10/31


Linguagem Java Tipos de Dados : referncias 3/3

Definidos por Classes


Exemplos
String // guarda texto; ver slides Java - Classes Nomes de classes iniciadas
Scanner // leitura do teclado da consola com letra maiscula
Formatter // escrita formatada na consola

Varivel de Tipo Referncia RAM


Exemplos
String cidade; ave referncia de objeto
String nome = "Nico";
String ave = "guia";
guia
Guarda uma referncia de objeto da classe declarada
Referncia = endereo de memria
Considerada objeto
Exemplos Objeto da Classe String

nome Contedo de varivel de


tipo referncia
ave

Rui Nunes (AEF 2014/15) 11/31


Linguagem Java Interfaces com o Utilizador
Tipos
Consola
Interface Textual

Interface Grfica
Caixas de Dilogo

Entrada

Sada

Rui Nunes (AEF 2014/15) 12/31


Linguagem Java Entrada de Dados - Consola 1/2
Suportada por objeto da classe Scanner // classe da package java.util

package nome;

import java.util.Scanner; // importa classe Scanner para usar em main


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); // declara um objeto Scanner para ler do teclado

n = ler.nextInt(); // l um int do teclado e guarda em n
y = ler.nextLong(); // l um long do teclado e guarda em y
x = ler.nextDouble(); // l um double do teclado e guarda em x

nome = ler.next(); // l uma string do teclado e guarda em nome
nome_composto= ler.nextLine(); // l uma linha e guarda em nome_composto

}
}

Mais pormenores
Slide seguinte
Rui Nunes (AEF 2014/15) 13/31
Linguagem Java Entrada de Dados - Consola 2/2
Classe Scanner
Serve para ler ficheiros de texto
Consola tratada como ficheiro de texto
Declarao de objeto Scanner
Scanner ler = new Scanner(System.in);
Cria objeto (instncia) da classe Scanner (objeto ler)
Objeto System.in representa dispositivo de entrada standard (teclado)
System classe que representa sistema de computao
in objeto da classe System que representa dispositivo de entrada padro
Por omisso, teclado
Leitura
Preciso invocar mtodo do objeto Scanner adequado ao tipo de dado a ler
Sintaxe: nomeObjetoScanner.nomeMtodo()
Exemplo: ler.nextInt() // para ler int
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
Rui Nunes (AEF 2014/15) 14/31
Linguagem Java Entrada de Dados - Interface Grfica
Suportada pelo mtodo showInputDialog da classe JOptionPane

package nome;

import javax.swing.JOptionPane; // importa classe 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:"));

}
}

Rui Nunes (AEF 2014/15) 15/31


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

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
Rui Nunes (AEF 2014/15) 16/31
Linguagem Java Sada - Interface Grfica
Suportada pelo mtodo showMessageDialog da classe JOptionPane

Sintaxe

JOptionPane.showMessageDialog(null, "mensagem");

package nome;

import javax.swing.JOptionPane; // importa classe JOptionPane

public class NomePrograma {


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

}
}

Rui Nunes (AEF 2014/15) 17/31


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
&& // AND
|| // OR
! // NOT ; Ex: !(x<0 && y>10)
Outros
++ // Incrementa varivel de 1 unidade; Ex: contador++ ou ++contador
-- // Decrementa varivel de 1 unidade; Ex: contador-- ou --contador

Rui Nunes (AEF 2014/15) 18/31


Linguagem Java Operadores 2/2
Precedncias dos Operadores

Associatividade no
Precedncia Operadores mesmo nvel Exemplos

Maior [ ] . () chamada_mtodo

! ++ -- (cast) new

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

+ -

< <= > >= instanceof

== !=

&&

||

?:

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

Rui Nunes (AEF 2014/15) 19/31


Linguagem Java Instruo de Atribuio
Sintaxe
varivel = expresso; // expresso tem de ser do tipo da varivel

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; // idade e d tm de ser do mesmo tipo

z = x * 10 - Math.pow(2,5);
// Math.pow(2,5) = 25

}
}

Rui Nunes (AEF 2014/15) 20/31


Linguagem Java Instrues de Deciso 1/4
Sintaxe

if (condio) { // = SE ... ENTO


// aco
} // bloco = { ... } ; obrigatrio para aco com mais de 1 instruo

if (condio) { // = SE ... ENTO ... SENO


// aco 1
} else {
// aco 2
}

// = CASO ... SEJA


switch(expresso) { // expresso tem de ser do tipo inteiro, caracter ou string
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


}

Rui Nunes (AEF 2014/15) 21/31


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 para uma instruo

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 n positivo");
} else {
System.out.println(x + "no um n positivo");
}
}
}

Rui Nunes (AEF 2014/15) 22/31


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; break termina execuo do switch;
case 6: seno, so executadas as instrues
z = 12; do caso seguinte
break;
case 2: case 4: case 7:
y = 45;
z = 23;
break;
default:
z=50;
}

}
}

Rui Nunes (AEF 2014/15) 23/31


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; break termina execuo do switch;
case '2': case 'a': seno, so executadas as instrues
do caso seguinte
break;
case '0': case 's': case 'S' :

break;
default:

}

}
}

Rui Nunes (AEF 2014/15) 24/31


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){ // = PARA


// corpo do ciclo
}

Rui Nunes (AEF 2014/15) 25/31


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(c 1 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);
}
}
Rui Nunes (AEF 2014/15) 26/31
Linguagem Java Converso de Tipos Numricos 1/4

Valores Numricos

Valor Sufixo Exemplo Considerado do Tipo


Sem 123456789 int
INTEIRO L 123456789L
long
l 123456789l
Sem 12.34 double
REAL F 12.34F
float
f 12.34f

Rui Nunes (AEF 2014/15) 27/31


Linguagem Java Converso de Tipos Numricos 2/4
Tipos de Converso
Implcita

Explcita (cast)

Rui Nunes (AEF 2014/15) 28/31


Linguagem Java Converso de Tipos Numricos 3/4

Converso Implcita
Declarada implicitamente
Exemplo: short x = 1389;
long y = x;
Usada
Converso para tipos maiores ou iguais
Exceto long float
Tipos
Sem perda de preciso
Possvel perda de preciso

char

byte short int long

float double

Rui Nunes (AEF 2014/15) 29/31


Linguagem Java Converso de Tipos Numricos 4/4

Converso Explcita
Declarada explicitamente

Atravs de um cast

Exemplo: short x = 1389;

long y = (long) x;

Sintaxe de um cast
(tipo_alvo) nome_varivel

Exemplo: double x = 13.89;

int y = (int) x; // Parte decimal truncada (y=13)

Tipos

Sem perda de preciso

Possvel perda de preciso

char

byte short int long

float double

Rui Nunes (AEF 2014/15) 30/31


Linguagem Java Strings
Inserir numa String
Newline
"...\n ... "
TAB
"...\t ... "
Aspas
"...\"... "

Exemplos

package nome;

public class NomePrograma {

public static void main(String[] args){


System.out.println("\n MENU ");
System.out.println("\t 1 - Ler um nome");
System.out.println("\t 2 - \"Eliminar\" elementos do array");

}
}

Rui Nunes (AEF 2014/15) 31/31

Das könnte Ihnen auch gefallen