Buscar

Aula 03 - Programacao 1

Prévia do material em texto

JAVA 
Programação Java 
Prof. M. Sc. Edgar Gurgel 
Primeiro Aplicativo JAVA 
// Código fonte: AloMundo.java 
 
/* Este é um exemplo de programa JAVA, que imprime uma 
mensagem. */ 
 
public class AloMundo 
{ 
 public static void main (String args[]) 
 { 
 System.out.println ("Alô Mundo, vocês estão aprendendo JAVA!"); 
 } 
} 
POO II 2 
Executando o Aplicativo JAVA 
Comentários 
l  Usando duas barras adjacentes, //, em qualquer ponto de uma 
linha: O compilador Java ignora as barras e o restante da linha 
na qual elas aparecem. Ex: 
 // Um pequeno comentário 
l  uma barra seguida de um asterisco, /* : O compilador Java 
ignora tanto os caracteres /* e todos os caracteres que os 
seguem até que seja encontrado um asterisco imediatamente 
seguido de uma barra, */. Ex: 
 /* Um comentário 
 que se estende por 
 várias linhas */ 
POO II 3 
Executando o Aplicativo JAVA 
Entendendo o programa 
 
l  Todo programa em java começa com a palavra class seguido 
pelo nome da classe (no nosso caso AloMundo) 
public class AloMundo 
{ 
 public static void main (String args[]) 
 { 
 System.out.println ("Alô Mundo, vocês estão aprendendo JAVA!"); 
 } 
} 
OBS: o corpo de uma classe é delimitado pelos símbolos { e }, e 
corresponde à descrição dos atributos e métodos da classe. 
POO II 4 
Executando o Aplicativo JAVA 
Entendendo o programa 
 
l  A linha public static void main (String args[]) aparece em 
todas as classes executáveis. Praticamente todas as 
aplicações possuem esta linha. A única coisa que pode ser 
alterada é na linha é a variável args que pode receber outro 
nome de acordo com o desejo do programador. 
modificadores tipo do 
valor de 
retorno 
nome do 
método 
parâmetros 
public static void main (String args[]) 
POO II 5 
Executando o Aplicativo JAVA 
Entendendo o programa 
 
l  public: é um qualificador de método, que indica que ele é acessível 
externamente a esta classe. Isto é útil quando uma classe necessita 
utilizar alguma funcionalidade de outra classe, característica muito 
comum na linguagem JAVA. 
l  static: É um outro qualificador ele indica que o método deve ser 
compartilhado por todos os objetos que são criados a partir desta 
classe. 
l  void: É o valor de retorno do método. Quando não retorna nenhum 
valor ele retorna void, uma espécie de valor vazio que tem que ser 
especificado. 
POO II 6 
Executando o Aplicativo JAVA 
Entendendo o programa 
 
l  main: É o nome do método que indica ao compilador o 
início do programa. É o método principal. 
l  (Strings args[]): É o argumento do método principal 
(main). É um vetor de strings formados por todos os 
argumentos passados ao programa na linha de comando 
do sistema operacional quando o programa é invocado. 
POO II 7 
Executando o Aplicativo JAVA 
public class Caracteres 
{ 
 public static void main (String args[]) 
 { 
 String nome=“Joao"; 
 String sobreNome=“Silva"; 
 
 System.out.print(nome); 
 System.out.print(" "); 
 System.out.println(sobreNome); 
 } 
} 
POO II 8 
Declarando Variáveis 
l  Um identificador Java é um nome que pode consistir de letras e 
dígitos e dos caracteres _ e $, devendo-se iniciar sempre com uma 
letra. 
l  Uma variável é um espaço da memória do computador que contém um 
valor. O nome de uma variável é um identificador que faz referência 
àquela variável. 
l  O tipo de dado de uma variável determina o tamanho do espaço de 
memória e a forma como os bits armazenados naquele espaço são 
interpretados. 
l  Em Java, o tipo de uma variável deve ser sempre declarado, de forma 
que o compilador java aloca o espaço de memória correto para cada 
tipo de variável do programa. 
l  Quando se conta ao compilador o tipo e nome de uma variável, diz-se 
que se está declarando a variável. 
POO II 9 
Declarando Variáveis 
public class PrimeiroPrograma{ 
 public static void main(String argv[]){ 
 int var1; 
 int var2; 
 int var3; 
 ... 
 } 
} 
POO II 10 
Declarando Variáveis 
public class PrimeiroPrograma{ 
 public static void main(String argv[]){ 
 int var1, var2, var3; 
 ... 
 } 
} 
POO II 11 
Declarando Variáveis 
l  O armazenamento de um valor no espaço de memória alocado para 
uma variável é feito através de uma atribuição a uma variável. 
l  Para se fazer uma atribuição a uma variável, usa-se o sinal de igual 
(=). 
l  É possível inicializar uma variável no mesmo comando em que ela é 
declarada: 
 
 public class PrimeiroPrograma{ 
 public static void main(String argv[]){ 
 int var1 = 10; 
 int var2 = 20; 
 int var3 = 30; 
 ... 
 } } 
POO II 12 
Declarando Variáveis 
l  Também é possível combinar diversas declarações com 
inicializações em um comando conciso: 
 
public class PrimeiroPrograma{ 
 public static void main(String argv[]){ 
 int var1 = 10, var2 = 20, var3 = 30; 
 ... 
 } 
} 
POO II 13 
Declarando Variáveis 
l  As declarações de variáveis não precisam ocorrer antes de todos os 
outros comandos (como é regra em algumas outras linguagens). Muitos 
preferem declará-las próximo ao local do programa aonde elas são 
primeiramente usadas, como no seguinte exemplo: 
 
public class PrimeiroPrograma{ 
 public static void main(String argv[]){ 
 int resultado, script = 6; 
 resultado = script; 
 int atuacao = 9; 
 resultado = resultado + atuacao; 
 int direcao = 8; 
 resultado = resultado + direcao; 
 System.out.print("A pontuação do filme é "); 
 System.out.println(resultado); } } 
POO II 14 
Tipos de Dados 
Tipo 
 
Bytes 
 
Armazena 
 byte 
 
1 
 
inteiro 
 short 
 
2 
 
inteiro 
 int 
 
4 
 
inteiro 
 long 
 
8 
 
inteiro 
 
Tipo 
 
Bytes 
 
Armazena 
 float 
 
4 
 
número em 
ponto flutuante 
 double 
 
8 
 
número em 
ponto flutuante 
 
O tipo de data char é usado ordinariamente para o armazenamento de caracteres. 
Entretanto, como os códigos de caracteres podem ser vistos como inteiros, char 
também é tido como um dos tipos de dados para inteiros, assim como byte, short, 
int e long. O tipo de dados char ocupa 2 bytes de memória. 
POO II 15 
Expressões Aritméticas 
l  Os operadores aritméticos (binários) básicos são +, -, *, e / 
usados respectivamente para as operações de adição, 
subtração, multiplicação e divisão: 
 
6 + 3 // Adiciona os valores, resultando em 9 
6 - 3 // Subtrai um valor do outro, resultando em 3 
6 * 3 // Multiplica os valores, resultando em 18 
6 / 3 // Divide um valor pelo outro, resultando em 2 
POO II 16 
Expressões Aritméticas 
l  Quando um numerador inteiro não é divisível por um 
denominador inteiro, o operador de divisão arredonda para 
baixo o resultado produzindo um outro inteiro. 
 
5 / 3 // Divide um valor pelo outro, resultando em 1 
-5 / 3 // Divide um valor pelo outro, resultando em -1 
 
❚  O operador módulo, %, fornece o resto da divisão inteira de 
dois valores inteiros. 
 
5 % 3 // Resulta no resto da divisão de 5 por 3 que é 2 
-5 % 3// Resulta no resto da divisão de 5 por 3 que é -2 
POO II 17 
Expressões Aritméticas 
l  Ao se dividir dois valores em ponto flutuante, o resultado 
também é em ponto flutuante. 
 
5.0 / 3.0// Divide um valor pelo outro, resultando em 1.66667 
 
l  Expressões aritméticas podem conter um operador ou 
mais.6 + 3 + 2 // Resulta em 11 
 6 - 3 - 2 // Resulta em 1 
 6 * 3 * 2 // Resulta em 36 
 6 / 3 / 2 // Resulta em 1 
POO II 18 
Expressões Aritméticas 
l  As regras de precedência seguidas pelos operadores 
aritméticos são aquelas da matemática: 
 
 6 + 3 * 2 // Resulta em 12, e não em 18 
 
l  Quando uma expressão contém operadores de igual 
precedência, tal como multiplicação e divisão, o compilador 
Java tratará a expressão, como nos exemplos: 
 
 6 / 3 * 2 // Equivalente a (6 / 3) * 2 = 4 
 6 * 3 / 2 // Equivalente a (6 * 3) / 2 = 9 
POO II 19 
Expressões Aritméticas 
l  É sempre possível fazer uso de parênteses em 
torno de sub-expressões para forçar com que uma 
expressão seja interpretada como se queira. 
 
 6 + 3 * 2 // Resulta em 12, e não em 18 
 (6 + 3) * 2 // Resulta em 18, e não em 12 
POO II 20 
Expressões Aritméticas 
l  Alguns operadores, tais como o operador de negação, -, e 
o operador mais unário, +, possuem apenas um operando, 
que deve ser posicionado imediatamente à direita do 
operador. Tais operadores são operadores unários. 
 
l  A precedência do operador de negação, -, é maior do que a 
dos operadores de adição, +, subtração, -, multiplicação, *, 
e divisão, /. 
 
 - 6 * 3 / 2 // Equivalente a ((-6) * 3) / 2 = -9 
POO II 21 
Conversão de Tipos 
Supondo a Variável x Converter em A variável y recebe o valor convertido 
int x = 10 float Float y = (float) x 
int x = 10 double Double y = (double) x 
float x = 10.5 int Int y = (int) x 
String x = “10” int Int y = Integer.parseInt(x) 
String x = “20.54” float Float y = Float.parseFloat(x) 
String x = “20.54” double Double y = Double.parseDouble(x) 
String x = “java” Vetor de bytes Byte b[] = x.getBytes() 
int x = 10 String String y = String.valueOf(x) 
float x = 10.35 String String y = String.valueOf(x) 
double x = 254.54 String String y = String.valueOf(x) 
Byte x[] – (x é um vetor de 
bytes) 
String String y = String.valueOf(x) 
POO II 22 
Exemplos 
/* Essa classe demonstra a utilização de variáveis em uma classe em Java. São 
 declaradas variáveis do tipo int e double. O exemplo também demonstra 
 como imprimir o conteúdo das variáveis na tela */ 
public class Tipos 
{ 
 public static void main ( String args [] ) 
 { 
 int x=10, y =20; //declaração de variáveis do tipo inteiro 
 double dolar = 2.62; 
 /* As linhas seguintes enviam o conteúdo das 
 variáveis para a tela */ 
 System.out.println(x); 
 System.out.println(y); 
 System.out.println(dolar); 
 } 
 } 
POO II 23 
Exemplos 
public class Operacoes 
{ 
 public static void main (String args[]) 
 { 
 //declaração e inicialização de variáveis 
 int x = 10; int y = 3; 
 //várias operações com as variáveis 
 System.out.println("X = "+ x); 
 System.out.println("Y = "+ y); 
 System.out.println("X/Y = "+x/y); //resulta 3 
 System.out.println("Resto de X por Y = "+x%y); //resulta 1 
 System.out.println("Inteiro de X por Y = "+(float)x/y); //resulta 3.3333333 
 System.out.println("X + 1 = "+ ++x); //resulta 11 
 } 
} 
POO II 24 
Definindo Métodos 
Simples 
Objetivo: Aprender como definir métodos simples além do método main. No processo, 
aprende-se a trabalhar com argumentos, parâmetros e valores a serem retornados. 
POO II 25 
Exemplos 
•  A fim de computar a pontuação de vários filmes, é necessário definir 
um método que faça isto, chamado pontuarFilme. Uma vez definido o 
método, é possível invocá-lo como no seguinte exemplo: 
public class Filme{ 
 public static void main(String argv[]){ 
 int script = 6, atuacao = 9, direcao = 8; 
 System.out.print("A pontuação do filme é "); 
 System.out.println(pontuarFilme(script,atuacao,direcao)); 
 } 
 
 public static int pontuarFilme(int s, int a, int d){ 
 return s + a + d; 
 } 
} Resultado: 
 A pontuação do filme é 23 
POO II 26 
Exemplos 
l  No exemplo, o método pontuarFilme tem três argumentos: 6, 9, e 8. 
 
l  Em Java, os argumentos de métodos são separados por vírgulas. 
 
l  Os argumentos do exemplo são todos expressões constantes, mas 
argumentos também podem ser expressões variáveis ou expressões 
contendo operadores. 
 
POO II 27 
Exemplos 
pontuarFilme 
POO II 28 
Exemplos 
l  Note também que se deve especificar tipos de dados para 
os parâmetros e valores retornados quando se define um 
método em Java: 
l  Se especifica o tipo de dado de cada parâmetro em um método no 
local onde se introduz o parâmetro; 
l  Se especifica o tipo de dado do valor retornado por um método no 
local onde se dá nome ao método. 
POO II 29 
Exemplos 
l  Finalmente, usa-se palavras chave para indicar que tipo 
de método se está definindo: 
l  A palavra chave static indica que o método pontuarFilme é 
um método de classe. Se omitir a palavra-chave static, será 
definido um método de instância. 
l  A palavra chave public indica que qualquer outro método 
definido em qualquer classe pode chamar o método 
pontuarFilme. Se ao invés fossem usadas as palavras chave 
protected ou private, indicaria que o acesso ao método 
pontuarFilme é restrito. 
POO II 30 
Exemplos 
l  Por convenção, muitos programadores Java iniciam o nome de 
cada método por uma letra minúscula. 
 
l  O tipo de dado de cada um dos parâmetros deve ser especificado 
individualmente, porque tipos de dados em declarações de 
parâmetros, diferentemente de tipos de dados em declarações de 
variáveis, não se propagam através das vírgulas. Assim, o exemplo 
seguinte está incorreto: 
 Errado 
 
 public static int movieRating(int s, a, d){ 
 ... } 
pontuarFilme 
POO II 31 
Exemplos 
l  O compilador Java não requer que os programas em Java sejam 
ordenados tal que uma definição de método apareça sempre antes 
que uma chamada aquele método seja feita. Assim, pontuarFilme 
não precisa ser definido antes do método main, aonde é feita uma 
chamada a pontuarFilme. Neste sentido, Java é mais fácil de se 
trabalhar do que C e C++. 
 
l  Não se pode nunca deixar de especificar o tipo de dado do valor 
de retorno de um método. Neste sentido, Java é diferente das 
linguagens C e C++, que permitem que se omita o tipo de retorno 
de uma função se este tipo for int. 
POO II 32 
Exemplos 
l  Alguns métodos não retornam valores. Eles podem ser executados 
apenas para exibir um valor, por exemplo. Neste caso, usa-se a 
palavra chave void como se void fosse um tipo de dado para 
valores de retorno. Quando Java encontra a palavra chave void 
sendo usada como um tipo de dado de valor de retorno, Java sabe 
que nada deverá ser retornado. 
 
l  Por exemplo, na seguinte variação do programa anterior, a tarefa de 
mostrar a pontuação do filme é executada no método 
mostrarPontuacaoFilme, de forma que não há nenhum valor a ser 
retornado. De acordo com isto, aparece a palavra-chave void ao invés 
d e u m n o m e d e t i p o d e d a d o s n a d e f i n i ç ã o d e 
mostrarPontuacaoFilme e mostrarPontuacaoFilme não contém 
nenhum comando return. 
POO II 33 
Exemplos 
public class Filme{ 
 public static void main( String argv[]){ 
 int script = 6, atuacao = 9, direcao = 8; 
 mostrarPontuacaoFilme(script, atuacao, direcao); 
 } 
 public static void mostrarPontuacaoFilme(int s, int a, int d){ 
 System.out.print("A pontuação do filme é "); 
 System.out.println(s+ a + d); 
 } 
} 
POO II 34 
Exemplos 
l  Não é necessário definir um método chamado a 
partir do método main na mesma classe em que o 
método main é definido. Por exemplo, pode-se 
definir pontuarFilme dentro da classe Filme, no 
arquivo Filme.java: 
 
// Classe Filme definida em Filme.java 
public class Filme{ 
 public static int pontuarFilme(int s, int a, int d){ 
 return s + a + d; } 
} 
POO II 35 
Exemplos 
l  Então, pode-se definir o método main() dentro da 
classe Principal no arquivo Principal.java: 
 
// Classe Principal definida em Principal.java 
public class Principal { 
 public static void main (String argv[]){ 
 int script = 6, atuacao = 9, direcao = 8; 
 System.out.print("A pontuação do filme é "); 
 
System.out.println(Filme.pontuarFilme(script,atuacao,direcao)); 
 } 
} 
POO II 36 
Exemplos 
l  Conforme mostrado no exemplo anterior, se define 
pontuarFilme em uma classe que é diferente daquela na qual 
pontuarfilme é chamada, deve-se prefaciar o nome do 
método, pontuarFilme, pelo nome da classe na qual o mesmo 
é definido (pois trata-se de um método de classe: static), e 
entre os dois nomes deve-se colocar um ponto. 
 
l  A razão da aparição do nome da classe e do operador ponto 
é que Java permite que se defina métodos com o nome de 
pontuarFilme em mais de uma classe. Assim, é necessário 
sempre se especificar qual é o particular pontuarFilme que se 
tem em mente. 
POO II 37 
Exemplos 
l  Poderia-se, por exemplo, definir não somente a classe Filme, 
mas também a classe JamesBondFilme, na qual o método 
pontuarFilme reflete, digamos, a crença de que 10 deveria 
ser o valor usado ao invés do valor do parâmetro script, s, 
quando se desse a pontuação para filmes do James Bond: 
 
public class JamesBondFilme{ 
 public static int pontuarFilme(int s, int a, 
int d){ 
 return 10 + a + d; 
 } 
POO II 38 
Exemplos 
l  Uma vez definidas e compiladas ambas as classes Filme e 
JamesBondFilme, pode-se usar ambas: 
 
public class Principal{ 
 public static void main(String argv[]){ 
 int script = 6, atuacao = 9, direcao = 8; 
 
 System.out.print("A pontuação de um filme é "); 
 System.out.println(Filme.pontuarFilme(script,atuacao, 
direcao)); 
 
 System.out.print("A pontuação do filme do James Bond é "); 
 System.out.println(JamesBondFilme.pontuarFilme(script, 
atuacao, direcao)); 
 } 
} 
POO II 39 
Exemplos 
l  Sempre que há mais de uma definição para um método, o nome 
do método é dito ser sobrecarregado (overload). 
 
l  Java também permite que se defina múltiplos métodos com o 
mesmo nome em uma mesma classe, se cada versão do método 
tiver um arranjo diferente de tipos de dados de parâmetros. 
 
l  P o d e r i a - s e , p o r e x e m p l o , d e f i n i r u m m é t o d o 
mostrarPontuacaoFilme que trabalhe com parâmetros inteiros e 
um outro mostrarPontuacaoFilme que trabalhe com parâmetros 
em ponto flutuante. Então, ambos os métodos podem fazer parte 
de um mesmo programa: 
POO II 40 
Exemplos 
public class Principal{ 
 public static void main (String argv[]){ 
 int intScript = 6, intActing = 9, intDirecting = 8; 
 double doubleScript = 6.0, doubleActing = 9.0, doubleDirecting = 8.0; 
 mostrarPontuacaoFilme(intScript, intActing, intDirecting); 
 mostrarPontuacaoFilme (doubleScript, doubleActing, doubleDirecting); 
 } 
 // Definindo primeiro mostrarPontuacaoFilme com inteiros: 
 public static void mostrarPontuacaoFilme(int s, int a, int d){ 
 System.out.print("A pontuação inteira do filme é "); 
 System.out.println(s + a + d); 
 return; 
 } 
 // Em seguida, definindo mostrarPontuacaoFilme com números em ponto-flutuante 
 public static void mostrarPontuacaoFilme (double s, double a, double d){ 
 System.out.print("A pontuação em ponto flutuante do filme é "); 
 System.out.println(s + a + d); 
 return; 
 } 
} 
POO II 41 
Exemplos 
l  Por permitir a sobrecarga de métodos, Java é dita ser uma 
linguagem polimórfica. 
 
l  O operador +, que normalmente significa adicionar, tem um 
significado inteiramente diferente quando um de seus operandos 
é uma string. Em tais situações, o operador + converte o outro 
operando em uma string, se aquele operando não for uma string, 
e concatena as duas strings, produzindo uma terceira string. 
 
l  Como o operador + possui dois significados diferentes, + é dito 
ser um operador sobrecarregado. 
POO II 42 
Exemplos 
l  Frequentemente encontra-se o operador + como 
operador de concatenação sendo usado 
conjuntamente com métodos de impressão (print, 
println). Tal uso do operador + permite uma 
compactação maior dos comandos. 
 
l  Por exemplo, ao invés de escrever: 
 System.out.print("A pontuação do filme é "); 
 System.out.println(s + a + d); 
 
POO II 43 
Exemplos 
l  Poderia-se igualmente combinar as duas linhas de 
comando em apenas uma, por meio do uso do operador de 
concatenação: 
 System.out.print("A pontuação do filme é " + 
(s + a + d)); 
 
l  Note que o parênteses em torno das variáveis somadas é 
essencial. De outro modo, Java assumiria que se quer 
concatenar a primeira string com o valor de s, transformado 
em uma string, depois a e depois d. Desta forma, Java faria 
uma concatenação, mas não faria nenhuma adição. 
POO II 44 
Exercícios da Lista 1 
Exercícios 
POO II 45 
Funções Matemáticas 
• Estas funções em Java são provenientes de métodos da classe Math do pacote default java.lang 
definidos como static. 
• Sintaxe : Math.<nome do método>(<lista de argumentos>); - Possui duas constantes PI e E. 
• Método max(<valor1>,<valor2>): Calcula o maior entre <valor1> e <valor2> retornando o maior tipo 
encontrado. 
Ex Math.max(10,3.5); -> 10.0 
• Método min(<valor1>,<valor2>): Calcula o menor entre <valor1> e <valor2> retornando o menor tipo 
encontrado. 
Ex Math.min(10,3.5); -> 3.5 
• Método sqrt(<valor1 double>): Calcula a raiz quadrada de <valor1> retornando um double. 
Ex Math.sqrt(900); -> 30.0 
• Método pow(<base>,<pot>): Calcula a potência de <base> por <pot> retornando um double. 
Ex Math.pow(25,0.5); -> 5.0 
• Método round(<valor double>): Calcula o arredondamento do valor retornando um long. 
Ex. Math.round(30.5); -> 31 
• Método random(): Retorna um valor double aleatório entre [0.0 e 1.0[ 
Ex. Para sortear um nº entre 0 e 99 -> (int) (Math.random() * 100) 
POO II 46 
Funções String 
Em Java, String é uma classe que possui métodos para manipulação e que pode ser utilizada como uma 
variável. 
• Sintaxe: (Declaração) String s = “Linguagem Java”; (Utilização) s.<método>(argumento/s) 
 “Os literais String deverão estar entre aspas”. 
• Método length(): Retorna um inteiro equivalente ao tamanho da string. Ex. int tamanho = s.length(); 
(tamanho = 14) 
• Método charAt(<índice>): Retorna um char correspondendo a posição relativa [0...(n-1)] do caracter na string. Ex. char 
c = s.charAt(5); (c = ‘a’) 
• Métodos toUpperCase() e toLowerCase(): Estes métodos convertem os caracteres de uma string para maiúsculo e 
minúsculo respectivamente retornando um string. Ex. String x = s.toUpperCase() ( x = “LINGUAGEM JAVA” ) – 
String x = s.toLowerCase() ( x = “linguagem java” ) 
• Método substring(<índice1>,[<índice2>]): Retorna um String com os caracteres a partir de <índice1> até ]<índice2>[. Se 
<índice2> não for especificado, será até o final da string. Ex. String x = s.substring(0,9); (x = “Linguagem”) 
•  Método trim(): Remove todos os espaços antes e depoisda string retornando uma String. String x = “ Espaços “; x = 
x.trim(); ( x = “Espaços” ) 
• Método replace(<char1>,<char2>): Substitui todas as ocorrências de <char1> por <char2> na string retornando um 
String. Se nenhuma ocorrência de <char1> for encontrada, a string original é retornada. Ex. String x = s.replace(‘a’,’ ‘); 
(x = “Lingu gem J v “) 
• Método valueOf(<nomevar>): Converte vários tipos de dados em String. 
Ex. String x = String.valueOf(45.74); (x = “45.74”) 
POO II 47 
Exercícios da Lista 2 
Exercícios 
POO II 48

Continue navegando