Baixe o app para aproveitar ainda mais
Prévia do material em texto
Linguagem de Programação I Professor: Fábio José Rodrigues Pinheiro Bel em Ciência da Computação fabio@ifc-videira.edu.br Índice • Java Development Kit (JDK) • Estrutura de um programa Java • Palavras reservadas • Identificadores • Comentários • Tipos de dados • Operadores e expressões • Entrada e saída de dados • Estruturas de controle • Vetores e Matrizes • Pacotes • Enumeração fabio@ifc-videira.edu.br Java Kit • Estrutura de diretórios do J2SE: – /bin • contém todos os programas utilitários necessários para compilação e execução de aplicações – /demo • contém diversos programas em Java para demonstrar alguns recursos da linguagem – /include • contém os headers para interface de programas Java e C fabio@ifc-videira.edu.br Java Kit • Estrutura de diretórios: – /jre • (Java Run-time Environment) - contém os programas e bibliotecas necessários para executar código Java. – /lib • contém as bibliotecas necessária para a execução e compilação de programas Java fabio@ifc-videira.edu.br Java Kit • Programas (executáveis: /bin): – appletviewer: vizualizador de applets – jar: criador de pacotes – javadoc: gerador de documentação – java: interpretador – javac: compilador – jdb: debugador (debugger) – Outros: idj, javah, javap, javaw, rmic, rmid, rmiregistry, orbd, kinit, klist, serialver, etc. fabio@ifc-videira.edu.br Primeiro Exemplo Exemplo “Alô Mundo” 1: class AloMundo{ 2: public static void main(String []a){ 3: System.out.println(“Alô mundo”); 4: } 5: } fabio@ifc-videira.edu.br Estrutura • Definição da classe – Palavra reservada “class” + nome da classe – Nome da classe = Nome do arquivo.java • Blocos – Abre e fecha com “{” “}”: classes, métodos, estruturas de controle, decisão,etc. – Linhas 1 e 5; 2 e 4; • Método “main” – Método utilizado pelo interpretador java para a execução do programa. fabio@ifc-videira.edu.br Estrutura • Palavras reservadas: class, public, void, static. • Identificadores: AloMundo, main, System, out, println. fabio@ifc-videira.edu.br • As palavras reservadas ou palavras-chave (keywords) são palavras especiais que você não pode usar como identificadores (nomes) para classes, métodos, ou variáveis. • São utilizadas pelo compilador. • Total: 49 palavras Palavras Reservadas fabio@ifc-videira.edu.br Palavras Reservadas fabio@ifc-videira.edu.br Identificadores • Identificadores são seqüências de caracteres, que devem obedecer às seguintes regras: – Um nome pode ser composto por letras, por dígitos e pelos símbolos _ e $. – Um nome não pode ser iniciado por um dígito (0 a 9). – Letras maiúsculas são diferenciadas de letras minúsculas. – Uma palavra-chave da linguagem Java não pode ser um identificador. fabio@ifc-videira.edu.br Identificadores • Tipos de identificadores: – Classes – Métodos – Atributos (variáveis, constantes) • Java diferencia as letras minúsculas da maiúsculas (case sensitive). Exemplo: int aluno; DIFERENTE DE int aluNo; fabio@ifc-videira.edu.br Exemplo Identificadores class AloMundo{ public static void main(String[] a){ String mensagem = “Alô mundo”; System.out.println(mensagem); } } fabio@ifc-videira.edu.br Identificadores • Regras (code conventions): – Nomes de classes são iniciados por letras maiúsculas. – Nomes de métodos, atributos e variáveis são iniciados por letras minúsculas. – Em nomes compostos, cada palavra do nome é iniciada por letra maiúscula - as palavras não são separadas por nenhum símbolo. – Constantes em maiúsculo fabio@ifc-videira.edu.br Comentários • Os comentários são partes do código ignoradas pelo compilador Java. • Úteis no entendimento do código. • Tipos: – Por linha: // – Por bloco: /* */ fabio@ifc-videira.edu.br Exemplo Comentário //classe que escreve uma mensagem class AloMundo{ /* Método main. É invocado ao executar o programa. */ public static void main(String [a]){ System.out.println(“Alô mundo”); } } fabio@ifc-videira.edu.br Compilar/Executar • Compilar um Programa – Edite o codigo-fonte em um editor de textos qualquer – Salve o arquivo para NomeDaClasse.java – Execute: javac NomeDaClasse.java • Rodar o Programa – Execute: java NomeDaClasse – Note que nao inclumos a extensao .class ou .java para executar o programa! – Em ambos os casos, o diretorio que contem o programa deve ser o diretorio corrente da janela de comandos fabio@ifc-videira.edu.br Outro Exemplo 1: class AloMundo{ 2: String mensagem = “Alo Mundo”; 3: public void escreve(){ 4: System.out.println(mensagem); 5: } 6: public static void main(String[] a){ 7: AloMundo alo = new AloMundo(); 8: alo.escreve(); 9: } 10:} fabio@ifc-videira.edu.br Links Interessantes • Java http://java.sun.com • Java Documentation http://www.oracle.com/technetwork/java/javase/doc umentation/index.html • The Java Tutorial http://download.oracle.com/javase/tutorial/ • Java Free http://javafree.org • Grupo de Usuários Java http://www.guj.com.br • Revistas – Java Magazine http://www.javamagazine.com.br – Mundo Java http://www.mundojava.com.br fabio@ifc-videira.edu.br Tipos de Dados • Numérico: inteiros • Exemplos: int x = 345245; byte y = 13; Tipo Valor Tamanho byte -128 a 127 8 bits short -32.768 a 32.767 16 bits int -2.147.483.648 a 2.147.483.647 32 bits long -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 64 bits fabio@ifc-videira.edu.br Tipos de Dados • Numérico: ponto flutuante • Exemplos: float x = 345.111f (ou F); double y = 2.74e12; Tipo Valor Tamanho float -3.40292347E+38 a +3.40292347E+38 32 bits double -1.79769313486231570E+308 a + 1.79769313486231570E+308 64 bits fabio@ifc-videira.edu.br Tipos de Dados • Caracter • Exemplos: – char a = ‘b’; – char b = ‘a’; Tipo Valor Tamanho char 0 a 65535 16 bits fabio@ifc-videira.edu.br Tipos de Dados – Escritos entre aspas simples: ’a’ ’*’ ’3’ etc. – “Caracteres de controle” (ex: fim de arquivo, tabulação, mudança de linha etc.) : ’\n’ indica terminação de linha ’\t’ indica tabulação ’\” indica o caractere ’ ’\\’ indica o caractere \ fabio@ifc-videira.edu.br Tipos de Dados • Exemplo: boolean minusc (char x){ return (x >= ’a’) && (x <= ’z’); } boolean maiusc (char x){ return (x >= ’A’) && (x <= ’Z’); } boolean digito (char x){ return (x >= ’0’) && (x <= ’9’); } fabio@ifc-videira.edu.br Tipos de Dados • Lógico • Exemplos: – boolean a = false; – boolean b = true; true ou falseboolean ValorTipo fabio@ifc-videira.edu.br Tipo String • String não é um tipo primitivo, e sim uma classe. – Exemplo: String nome = “João da Silva”; • Por não ser um tipo primitivo, não pode ser comparado com igualdade. – boolean equals(String): compara o objeto com o String passado por parâmetro – boolean equalsIgnoreCase(String): compara o objeto com o String passado por parâmetro, ignorando maiúsculos e minúsculos. fabio@ifc-videira.edu.br Tipo String fabio@ifc-videira.edu.br Operações • Tipos de operadores: – Aritméticos – Atribuição – Relacionais – Lógicos fabio@ifc-videira.edu.br Operadores Aritméticos fabio@ifc-videira.edu.br Operadores Aritméticos • Diferença entre “++a” e “a++” int a = 1; int b = 1; int c = 1; 1º a = b++ + c; System.out.println(“a = “ + a); System.out.println(“b = “ + b); 2º a = ++b + c; System.out.println(“a = “ + a); System.out.println(“b = “ + b); a = 2 b = 2 c= 1 a = 3 b = 2 c =1 fabio@ifc-videira.edu.br Operadores de Atribuição • Uso compacto de operações aritméticas fabio@ifc-videira.edu.br Operadores Relacionais fabio@ifc-videira.edu.br Operadores Lógicos fabio@ifc-videira.edu.br Entrada e Saída de Dados • Saída: – System.out.printf(); //igual ao C Exemplo: – System.out.println(String); //ou print, sem quebra de linha Exemplo: fabio@ifc-videira.edu.br • Entrada – Classe Scanner Entrada e Saída de Dados fabio@ifc-videira.edu.br Métodos Úteis Programação Orientada a Objetos Estruturas de Controle • Condicional: if e switch • Repetição: for, while e do-while Programação Orientada a Objetos Estruturas de Condição if ( nota >= 90 ) System.out.println( "A" ); else if ( nota >= 80 ) System.out.println( "B" ); else if ( nota >= 70 ) System.out.println( "C" ); else if ( nota >= 60 ) System.out.println( "D" ); else System.out.println( "F" ); Programação Orientada a Objetos Estruturas de Condição • Switch: switch (expressão){ case valor1: diretiva1; break; case valor2: diretiva2; break; ... case valorN: diretivaN; break; default: diretiva default; break; } • Exemplo: String mes; switch(mesAgora){ case 1: mes="Janeiro"; break; case 2: mes="Fevereiro"; break; case 3: mes="Março"; break; case 4: mes="Abril"; break; case 5: mes="Maio"; break; case 6: mes="Junho"; break; case 7: mes="Julho"; break; case 8: mes="Agosto"; break; case 9: mes="Setembro"; break; case 10: mes="Outubro"; break; case 11: mes="Novembro"; break; case 12: mes="Dezembro"; break; } Estruturas de Condição Programação Orientada a Objetos Estruturas de Repetição • while: while (expressão){ ... } – Exemplo: int numero = 2; while (numero<10000){ numero *= numero; System.out.println(“Ainda sou menor que 10000”); } Programação Orientada a Objetos Estruturas de Repetição • do while: do{ ... } while (expressão) • Exemplo: int num = 2; do{ numero *= numero; System.out.println(“Ainda sou menor que 10000”); } while (num < 10000) Programação Orientada a Objetos • for: for (inicialização; condição; incremento){ ... } – Exemplo: for (int i = 0; i<=10; i++){ System.out.println(“9X“ + i + “=“ + 9*i); } Estruturas de Repetição fabio@ifc-videira.edu.br Vetores • Forma mais eficiente de manter referências • Características – Tamanho fixo: vetores não podem ser redimensionados depois de criados. – Quantidade máxima de elementos obtida através da propriedade length (comprimento do vetor). – Verificados em tempo de execução: erro do tipo ArrayIndexOutOfBoundsException. – Tipo definido: Pode-se restringir o tipo dos elementos que podem ser armazenados. fabio@ifc-videira.edu.br • Declaração: int[] numeros; String[] meses; boolean[] valores; • Criação: numeros = new int[10]; meses = new String[12]; valores = new boolean[9999]; Vetores fabio@ifc-videira.edu.br • Inicialização: numeros[0] = 123; numeros[1] = 528; numeros[2] = -111; String[] meses = {"janeiro", "favereiro", "marco", "abril", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"}; • Tamanho do array: nome-do-array.lenght Vetores fabio@ifc-videira.edu.br • Array de array: matriz • Declaração: int[][] matriz; • Criação: matriz = new int [3][4]; //matriz com 3 linhas, e 4 colunas. Ou 3 arrays de tamanho 4 elementos. ou matriz = new int[3][]; //3 arrays com tamanho indefinido Matriz fabio@ifc-videira.edu.br For each • O Java 5.0 introduziu uma construção poderosa de loops que permite fazer um loop por cada elemento em um array sem precisar mexer com índices. for (variável : coleção) instrução – Onde a variável representa cada elemento da coleção (um array, por exemplo) fabio@ifc-videira.edu.br For each • Exemplo – Loop padrão com for: int[] a = {3, 6, 9}; for (int i = 0; i < a.length; i++){ System.out.println(a[i]); } – Com o “for each”: for (int x : a) { System.out.println(x); } Programação Orientada a Objetos Pacotes • Na medida em que as aplicações tornam-se mais complexas, faz-se necessária uma organização das classes. • Desta forma sabe-se a qual aplicação ou projeto uma determinada classe pertence. • A necessidade é ainda maior quando se deseja compartilhar as classes. • Java provê o mecanismo de agrupamento de classes em Pacotes (packages), onde o grupo de classes mantêm uma relação entre si. Programação Orientada a Objetos Pacotes • Para a criação desses pacotes, basta uma declaração de pertinência em cada classe e uma organização das classes em diretórios. • Classes sem declaração de pertinência em pacotes pertencem ao chamado pacote default. • Pacotes requerem que as classes que comporão o pacote sejam armazenadas em um diretório específico. • A declaração do pacote é feita através da palavra-chave package. Programação Orientada a Objetos Pacotes • A estrutura comumente usada é de diretórios e subdiretórios com vários níveis de hierarquia. • O padrão mais utilizado para essa estrutura é: nome do domínio da instituição/empresa que desenvolve o pacote em ordem reversa. – Exemplo pacote: br.edu.ifc.sistema diretório: c:/../../br/edu/ifc/sistema Programação Orientada a Objetos Pacotes package br.edu.ifc.sistema.geometria; public class Circulo{ private double raio; public Circulo(double raio){ this.raio = raio; } public double calculaArea(){ return Math.PI*raio*raio; } } Programação Orientada a Objetos Pacotes import br.edu.ifc.sistema.geometria.Circulo; class EditorGrafico{ Circulo c; Math m; public EditorGrafico(){ c = new Circulo(); m = new Math(); } } Programação Orientada a Objetos Pacotes • Numa estrutura de pacotes, classes devem ser declarados explicitamente como public. • Métodos e atributos sem modificadores, são considerados default, podendo ser acessados livremente dentro do mesmo pacote. • Java possui um pacote padrão – java.lang – que precisa ser importado. • Os demais pacotes deve ser importados: java.io, java.net, javax.swing, java.util, etc. – Acessar a documentação da API do Java Programação Orientada a Objetos String e StringBuilder Programação Orientada a Objetos String • É uma seqüência de caracteres imutável – Representa uma cadeia de caracteres Unicode – Otimizada para ser lida, mas não alterada – Nenhum método de String modifica o objeto armazenado • Há duas formas de criar Strings – Através de construtores, métodos, etc: String s1 = new String("Texto"); String s2 = objeto.getText(); String s3 = coisa.toString(); – Através de atribuição de um literal String s3 = "Texto"; Programação Orientada a Objetos String • Strings criados através de literais são automaticamente armazenadas em um pool para possível reuso. – Mesmo objeto é reutilizado: comparação de Strings iguais criados através de literais revelam que se tratam do mesmo objeto. • Como Strings são objetos imutáveis, podem ser reusados. • Strings iguais criados através de literais são o mesmo objeto String um = "Um"; String dois = "Um"; if (um == dois) System.out.println("um e dois são um!"); Programação Orientada a Objetos String • Strings criados de outras formas não são. String um = "Um"; String tres = new String("Um"); if (um != tres) System.out.println("um não é três!"); • Literais são automaticamente guardados no pool. Outros Strings podem ser acrescentados no pool usando intern(). quatro = tres.intern();if (um == quatro) System.out.println("quatro é um!"); Programação Orientada a Objetos String • Métodos que criam novos Strings: – String concat(String s): retorna a concatenação do String atual com outro passado como parâmetro – String replace(char old, char new): troca todas as ocorrências de um caractere por outro – String substring(int start, int end): retorna parte do String incluindo a posição inicial e excluindo a final – String toUpperCase() e String toLowerCase(): retorna o String em caixaalta e caixa baixa respectivamente Programação Orientada a Objetos String • Métodos para pesquisa – boolean endsWith(String) e startsWith(String) – int indexOf(String), int indexOf(String, int offset): retorna posição do sub string. – char charAt(int posição): retorna caractere em posição • Comparação – boolean equals(String): compara o objeto com o String passado por parâmetro – boolean equalsIgnoreCase(String): compara o objeto com o String passado por parâmetro, ignorando maiúsculos e minúsculos. Programação Orientada a Objetos String • Conversão – Static String valueOf(tipo-primitivo): converte tipo primitivo em um String • Outros métodos – char[] toCharArray(): retorna o vetor de char correspondente ao String – int length(): retorna o comprimento do String Programação Orientada a Objetos StringBuilder • É uma seqüência de caracteres mutável – Representa uma cadeia de caracteres Unicode – Otimizada para ser alterada, mas não lida • StringBuilders podem ser criados através de seus construtores StringBuilder b1 = new StringBuilder(); StringBuilder b2 = new StringBuilder("Texto inicial"); Programação Orientada a Objetos StringBuilder • Métodos de StringBuilder operam sobre o próprio objeto – StringBuilder append(String s): adiciona texto no final – StringBuilder insert(int posição, String s): insere na posição – void setCharAt(int posição, char c): substitui na posição – String toString(): transforma o buffer em String para que possa ser lido • Exemplo StringBuilder buffer = new StringBuilder("H"); buffer.append("e").append("l").append("l").append(o"); System.out.println(buffer.toString()); Programação Orientada a Objetos StringBuilder • Usar String para manipular com valores constantes – Textos carregados de fora da aplicação – Valores literais – Textos em geral que não serão modificados intensivamente • Usar StringBuilder para alterar textos – Acrescentar, concatenar, inserir, etc. • Prefirir usar StringBuilder para construir Strings – Concatenação de strings usando "+" é extremamente cara: um novo objeto é criado em cada fase da compilação apenas para ser descartado em seguida – Usar StringBuilder.append() e, no final, transforme o resultado em String Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65
Compartilhar