Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Orientada a Eventos Alexandre Marcos C. Gitirana amcgitirana@yahoo.com.br 2013.1 Geral Da aula anterior, vimos: Revisão de Java Tipos Primitivos Conversão(casting) incrementos Classe String Exercícios Exercícios da Aula Anterior 1) Construa um programa que teste 2 strings, informando: i) o conteúdo delas; ii) o comprimento de cada uma; iii) se as 2 possuem o mesmo comprimento; iv) se são iguais ou diferentes no conteúdo. 2) Construa um programa que dada uma palavra ou frase qualquer, imprima na saída padrão esse conteúdo escrito de trás para frente, com todas as letras em maiúsculas. 3) Construa um programa que imprima uma string em formato de escada. Ex.: R Ro Rom Romm Romme Rommel 4) Modifique o programa anterior de forma que a escada seja invertida. Ex.: Rommel Romme Romm Rom Ro R 5) Construa um programa que dado uma string com uma frase, conte: i) quantos espaços em branco existem na frase; ii) quantas vogais (independentes) há na frase. 6) Construa um programa que teste se uma palavra ou frase é palíndromo ou não. Um palíndromo é uma sequência de caracteres cuja leitura é idêntica se feita da direita para esquerda ou vice−versa. Ex.: OSSO e OVO são palíndromos. Em textos mais complexos os espaços e pontuação são ignorados. A frase “SUBI NO ONIBUS” é exemplo de uma frase palíndromo onde os espaços foram ignorados. 7) Construa um programa para validar a digitação de um CPF, apenas verificando: i) digitação no formato NNN.NNN.NNN-NN (ou seja, uso do “.” e do “-” somente naqueles lugares específicos); ii) se N não for número; iii) tamanho do CPF. Não é necessário validar o dígito verificador. 8) Construa um programa que escreva em maiúscula apenas a primeira letra de uma dada palavra. 9) Construa um programa que substitua apenas a primeira letra de uma dada frase. 10) Construa um programa que substitua todas as letras de uma dada frase por maiúsculas e minúsculas, alternadamente. Ex: “EsTe É uM eXeMpLo De CoMo DeVeRá FiCaR a FrAsE dIgItAdA. NoTe QuE oS eSpAçOs Em BrAnCo DeVeM sEr IgNoRaDoS.” Exercícios da Aula Anterior Hoje Revisão de Java Arrays e Vetores Manipulação de Arquivos Exercícios • Utilizados para armazenar um conjunto de dados/objetos • Bastante utilizado em desenvolvimento de software • Algumas linguagens tratam arrays como sendo vetores, porém, em Java, são diferentes Arrays: Grupo de posições contínuas na memória que possuem o mesmo nome e o mesmo tipo Refere-se a um elemento em particular especificando o nome do array e o número da posição (índice) do elemento: • Para manipulação de arrays, utiliza-se a Classe Arrays Arrays e Vetores • Assim como todo objeto em Java, arrays devem ser declarados: Construídos: Inicializados: Arrays e Vetores Outra maneira de inicializar os arrays: int[] meuArray = {-1, 0, 1}; • Ou Int meuArray[] = {-1, 0, 1}; Arrays não podem mudar de tamanho • Se precisar de mais espaço, é necessário criar um novo array public static void main(String[] args) { int[] meuArray; // Declaração meuArray = new int[6]; // Construção // Inicialização meuArray[0] = 2010; meuArray[1] = 2011; meuArray[2] = 2012; for (int i = 3; i < meuArray.length; i++) { meuArray[i] = i + 2010; } // Visualização for (int i = 0; i < meuArray.length; i++){ System.out.println("Posição[" + i + "] = " + meuArray[i]); } } Vamos brincar ! 8 Manipulação de arrays Alguns métodos utilizados para manipulação de arrays – Lembre-se: Necessário utilizar a Classe java.utils.Arrays sort – Faz uma ordenação nos elementos de um determinado array – Ex.: Arrays.sort(meuArray); binarySearch – Permite uma pesquisa nos elementos de um determinado array – Só é possível realizar essa busca em arrays ordenados – Retorna um atributo inteiro com a posição deste elemento – Ex.: Arrays.binarySearch(meuArray, 1); equals – Permite a comparação entre dois arrays, retornando um booleano verdadeiro (true), caso os array sejam iguais – Ex.: Arrays.equals(meuArray, espelho); Manipulação de arrays toString – Mostra os elementos de um determinado array – Ex.: Arrays.toString(outroArray); fill – Realiza o preenchimento de todos os elementos de um determinado array – Ex.: Arrays.fill(outroArray, 10); • Arrays bidimensionais podem ser equiparados às matrizes • Em Java, entenda como um array de arrays String [][] dado = new String[3][3]; for (int i = 0; i < dado.length; i++){ for(int j = 0; j < dado[i].length; j++){ dado[i][j] = "i: " + i + " j: " + j; } // mesmo FOR para imprimir Arrays Bidimensionais 1) Faça um programa que alimente um array de forma randômica (Math.random()). Depois disso, ordene-o. 2) Sem utilizar o método sort(), faça um programa para ordenar um vetor? 3) Construa um programa que solicite ao usuário o tamanho de 2 vetores. Estes deverão ser alimentados de forma randômica. Ao final, o programa deverá exibir a soma desses dois vetores. Se os vetores não tiverem o mesmo tamanho, os elementos nulos deverão ser contados como ZERO para possibilitar a soma entre eles. Exercícios Int[] meuArray = new int[10]; for (int i = 0; i < meuArray.length; i++){ meuArray[i] = (int) (Math.random() * 100); } System.out.println(Arrays.toString(meuArray)); Arrays.sort(meuArray); int aux; for (int i = 0; i < meuArray.length; i++){ for (int j = 0; j < meuArray.length-1; j++){ if (meuArray[j] > meuArray[j+1]) { aux = meuArray[j]; meuArray[j] = meuArray[j+1]; meuArray[j+1] = aux; } } } Em Java também é possível ler ou escrever em arquivos E uma das suas principais facilidades é a leitura e gravação de arquivos no sistema operacional: Independente de qual esteja utilizando Java possui classes e objetos que lidam com a entrada e saída de dados input/output, abreviado: io Java trata a entrada e saída como fluxos de dados Chamados Streams Manipulação de Arquivos Representa uma fonte de entrada ou saída destino de diferentes tipos Arquivos em disco, dispositivos, outros programas, estruturas em memória, etc Suportam diferentes tipos de dados: Bytes, tipos primitivos de dados, caracteres, objetos Seguem um modelo simples de interação com programas Um stream é uma sequência de dados: Para leitura: input stream Para gravação: output stream I/O Stream Um programa utiliza um Input Stream para ler dados de uma fonte I/O Input/Output Stream Utiliza-se um Output Stream para gravar dados em um destino Manipulação de Arquivos Existem dois mecanismos básicos para manipular streams: Bufferizados: Mecanismos bufferizados empregam uma zona de memória própria ao mecanismo de entrada e saída para armazenar temporariamente os dados manipulados Não bufferizados: Mecanismos não bufferizados acessam diretamente os arquivos ou dispositivos indicados como de entrada ou saída de dados Tipos de Streams Em Java são definidos dois tipos de streams Streams de caracteres: são ditos “modo texto” O conteúdo é compreensível na linguagem humana Arquivos podem ser manipulados diretamente por humanos Streams de bytes: consiste na representação da informação em termos de bytes A vantagem é que a manipulação em programas é mais eficiente, uma vez que não é necessário traduzir “texto” em informação manipulável pelo programa Manipulação de Arquivos Para manipular arquivos, pode-se utilizar o pacote java.io Manipula tanto streams bufferizados quanto não bufferizados: em Modo Texto ou/e Modo Byte A manipulação de arquivos em Java pode ser realizada com as classes FileInputStream e FileOutputStream Vamos Usar? Dentro do main(), escreva e faça as correções e considerações: File pasta = new File("c:/minhaPasta"); Boolean criou = pasta.mkdir(); System.out.println("Pasta criada? " + criou); File arquivo = new File(pasta, "meuArquivo.txt"); criou = arquivo.createNewFile(); Manipulação de Arquivos Para ler também existem várias classes: vamos utilizar a BufferedReader Abaixo do código anterior, digite: // Passa o arquivo a ser lido FileReader fr = new FileReader(arquivo); // Para poder ler o arquivo BufferedReader br = new BufferedReader(fr); // Atributo para recebero conteúdo do arq String linha = ""; while ((linha = br.readLine()) != null) { System.out.println(linha); } br.close(); fr.close(); Manipulação de Arquivos Existem várias classes para escrita em arquivos: vamos utilizar a PrintWriter. Abaixo do Código Anterior, escrevam: Ainda abaixo do código anterior, digite: // Passa o arquivo a ser lido FileReader fr = new FileReader(arquivo); // Para poder ler o arquivo BufferedReader br = new BufferedReader(fr); // Atributo para receber o conteúdo do arq String linha = ""; while ((linha = br.readLine()) != null) { System.out.println(linha); } br.close(); fr.close(); Para ler também existem várias classes: vamos utilizar a BufferedReader 1) Crie um programa que leia um arquivo do tipo texto e gere um arquivo de saída, limitando a quantidade de caracteres em 80 por linha. 2) Crie um programa que leia um arquivo do tipo texto e gere um arquivo de saída paginado. Cada página terá no máximo 60 linhas. Adicione na última linha de cada página o número da página atual. 3) Crie um programa para escrever somente os números pares em um arquivo (pares.txt) e somente os números ímpares em outro arquivo (impares.txt). 4) Crie um programa que leia os arquivos pares.txt e impares.txt e que crie um só arquivo pareseimpares.txt com todos os números dos outros dois arquivos, de forma a preservar a ordem numérica. 5) Escreva um programa que receba o nome de um arquivo pela linha de comando e que imprima todas as linhas desse arquivo. 6) Modifique o programa do exercício anterior (7) para que receba mais dois parâmetros: a linha de início e a de fim para impressão. O programa deve imprimir apenas as linhas entre esses dois valores (incluindo as linhas de início e fim). 7) Crie um programa que inverta a ordem das linhas do arquivo pares.txt. A primeira linha deve conter o maior número e a última, o menor. Lista de Exercícios 02 Boa semana para a todos ! Até quarta-feira que vem ! Programação Orientada a Eventos
Compartilhar