Prévia do material em texto
Programação JAVA - parte 2 Leopoldo França Introdução ao Coding (Mobile) Estruturas de repetição •Diferente do ser humano, o computador não se cansa de realizar operações repetitivas. •Diante disto, podemos incluir nos programas as estruturas de repetição. •O que é uma repetição? • Também chamada a laço ou loop; • É uma instrução que permite a execução de um trecho de um programa várias vezes seguidas. Comandos REPITA e ENQUANTO • Tanto o comando REPITA quanto o comando ENQUANTO permitem repetir um ou mais comandos no corpo de um algoritmo. • A sintaxe dos comandos é: repita <comando1>; <comando2>; . . . <comandoN>; até <expr>; enquanto <expr> faça <comando>; Comando REPITA • O comando REPITA indica que todos os comandos entre a palavra repita e a palavra até encontram-se dentro de um laço e devem ser executados. • Após a palavra até deve haver uma expressão lógica que: • Se falsa, indica que o laço deve ser executado novamente; • Se verdadeira, indica que o laço acabou e o algoritmo deve continuar sendo executado. • Esta estrutura é chamada de repetição com teste no final • A decisão entre repetir e parar o laço é feita ao final do comando. • É garantido que o laço será executado aos menos uma vez. Comando REPITA em Java •O mais próximo do REPITA em Java é a instrução do...while • Teste realizado após a execução do corpo do loop. •O corpo do loop sempre executa ao menos uma vez. • Diferente do repita, o código continuará sendo executado enquanto a instrução for VERDADEIRA. do { instrução } while ( condição ); Exemplo comando do...while public static void main(String[] args) { int c = 1; //declara e inicializa o contador do { // Imprime e incrementa o contador System.out.println("Contador = " +c); c = c + 1; } while (c <= 10); // testa a condição de parada } Comando ENQUANTO •O comando ENQUANTO indica que o comando seguinte será executado, desde que o resultado da expressão lógica seja verdadeiro. • Esta estrutura é chamada de repetição com teste no início •A decisão entre repetir e parar o laço é feita no início do comando. • Se o teste for falso desde o início, o laço não será executado. Comando Enquanto em Java • Implementado com a instrução while • instrução que efetua o teste antes da execução do corpo do loop. •O corpo do loop pode nunca ser executado. while ( condição ) { instrução } Exemplo comando While public static void main(String[] args) { int c = 1; // declara e inicializa a variável de controle while (c <= 10) { // condição de parada do loop System.out.println("Contador = " + c); c = c +1; } } Comando PARA • É muito comum a existência de repetições que fazem uso de variáveis contadoras, especialmente para contagens de 1 em 1. • Para facilitar a construção deste tipo de laço, pode-se utilizar um outro comando de repetição complementar chamada PARA. Sua sintaxe é: para <var> de <valor_inicial> até <valor_final> faça <comando>; Comando Para em Java • Instrução de repetição for foi criada para repetição utilizando variável contadora •Especifica os detalhes da repetição controlada por uma variável contadora em uma única linha for (int c = 1; c <= 10; c++ ) { System.out.println("contador = " + c); } Exemplo •Faça um programa que imprima todos os valores pares de 1 a 1000. Solução em Java usando while public static void main(String[] args) { int c = 1; System.out.println("Valores pares entre 1 e 1000:"); while (c<=1000) { if (c % 2 == 0) System.out.println(c); c = c + 1; } } Exemplo •Faça um programa que leia diversos números informados pelo usuário e após cada leitura exibir se o número é par ou ímpar. Se o usuário fornecer um valor negativo o programa deverá encerrar a execução (sem entretanto testar se esse número negativo é par ou ímpar). class solucao { public static void main(String[] args) { int num = 0; System.out.println( "Para sair, entre com um valor < 0"); System.out.println( "Digite um número:"); Scanner s = new Scanner(System.in); num = s.nextInt(); while (num >=0) { if (num % 2 == 0) System.out.println("O número " + num + " é par"); else System.out.println("O número " + num + " é impar"); System.out.println( "Digite o próximo número:"); num = s.nextInt(); } System.out.println("Tchau…"); } } Repetições encadeadas •Da mesma forma que é permitido o encadeamento de testes, também é possível encadear comandos de repetição. •Exemplo • Imprimir as tabuadas de multiplicação dos números 3, 4, 5 e 6. Programa em Java public static void main(String[] args) { int num = 0, mult =0, cont = 0; num = 3; while (num <= 6) { System.out.println(“Tabuada de : “ + num); cont = 1; while (cont <= 10) { mult = num * cont; System.out.println(num + “X” +cont + “=”+ mult); cont = cont + 1; } num = num + 1; } } Estruturas Compostas Homogêneas Estruturas Compostas Homogêneas • Até agora utilizamos variáveis definidas a partir de tipos básicos de dados. • Cada variável só é capaz de armazenar um dado por vez. • Existem situações em que é necessário armazenar uma grande quantidade de dados na memória ao mesmo tempo. • Esta quantidade torna inviável a criação de variáveis para cada um dos dados a ser armazenado. • Para estes casos, podemos criar variáveis a partir de tipos de dados estruturados. • Um tipo de dado estruturado é aquele formado pela junção ou combinação de tipos básicos, definindo apenas uma variável que o represente. Estruturas Compostas Homogêneas •Vetor (ou array) é uma estrutura de dados composta por uma quantidade determinada de elementos de um mesmo tipo. •Como armazena sempre dados do mesmo tipo, diz-se que vetores são estruturas de dados homogêneas. Definição: Conjunto de dados (Estrutura) Agrupados em uma mesma estrutura (Composta) Todos do mesmo tipo (Homogênea) Várias dimensões Array Unidimensional (Vetor) Bidimensional (Matriz) Multidimensional ( 3, 4, 5, 6 …) Definição: Alocação estática de memória Em linguagens interpretadas é alocado em tempo de execução, ficando estática nesse ponto. Acesso direto através de índices. Índices enumeráveis (inteiros, lógicos, caracteres) Usado em processos repetitivos. 0 1 2 3 4 12 33 0 0 0 Unidimensional (Vetor) Possui uma dimensão Usa apenas um índice para encontrar a informação. Conhecida como VETOR Definição: <Nome> : VETOR [ INICIO : FIM ] DE <tipo> Unidimensional (Vetor) PASCAL: Vet: ARRAY [1..4] OF REAL; Vet: ARRAY [A..D] OF BYTE; Vet: ARRAY [0..3] OF REAL; JAVA: int [] vet; vet = new int[100]; C / C++: int vet[100]; Vetores •Armazenamento em memória 15 A -7 15 23 A Variável simples Vetor Vetores • Para referenciar o conteúdo de uma variável simples, basta indicar o nome que foi definido. • Para vetores, somente o nome não é suficiente. Além do nome, preciso indicar a posição no vetor onde está o dado que queremos acessar/utilizar. • Esta posição é denominada índice. • Os vetores são também chamados de variáveis indexadas unidimensionais. Vetores em Java •Recebem o nome de Array. •Para criar um array, 3 passos são necessários: •Declaração; •Construção; •Inicialização. Vetores em Java •Declarando um vetor: int vetor[ ]; // declaração do array •Construindo um vetor (a construção é feita com o operador new): vetor = new int[10]; // construção do array • PS: Nãose especifica o tamanho do array na declaração. Isso é feito apenas na construção. Vetores em Java • A declaração e construção podem ser feitas de uma vez só: int vetor[ ] = new int[10]; •Os índices em um array em Java começam em 0. • Para inserirmos elementos, precisamos indicar a posição no array onde eles serão inseridos: vetor[0] = 52; vetor[1] = -28; Vetores em Java •Os arrays são inicializados automaticamente em Java. •Cada tipo de dado que podemos colocar em um array possui um valor padrão, que será usado para inicializar o array automaticamente. Inicialização automática de um Array Tipo valor tipo valor byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' boolean false Referências recebem null Vetores em Java • Não é possível acessar além dos limites em um array. • Para sabermos o tamanho de um array, podemos usar a variável length: Ex: int V[ ] = new int[5]; for( int i = 0; i < V.length; i++ ) { System.out.println(“V[" +i + "] = " +V[i] ); } V[0] = 0 Valor de i Saída na tela: V[1] = 0 V[2] = 0 V[3] = 0 V[4] = 0 i = 0 i = 1 i = 2 i = 3 i = 4 Vetores em Java • A declaração, construção e inicialização do array também pode ser feita de uma vez só: String frutas[ ] = {"Uva", "Melancia","Pêssego"}; • O código acima é equivalente a: String frutas[ ] = new String[3]; frutas[0] = "Uva"; frutas[1] = "Melancia"; frutas[2] = "Pêssego"; Vetores •Exemplo: •Uma prova de química foi feita por um grupo de 20 alunos. Faça um programa para ler as notas obtidas pelos alunos, e depois exibir um relatório de notas superiores a 7,5. Solução em Java public static void main(String[] args) { double notas[] = new double[20]; Scanner s = new Scanner(System.in); for (int i=0; i < notas.length;i++) { System.out.println("Digite a nota"); notas[i] = s.nextDouble(); } System.out.println("Notas > 7.5"); for (int i=0; i < notas.length;i++) { if ( notas[i] > 7.5) System.out.println(notas[i]); } } DÚVIDAS ?