Escola Náutica Infante Dom Henrique Departamento de Radiotecnia
Programação avançada Ficha prática nº 3 Capítulo 2 Controlo de fluxo, strings e arrays Duração: 4 horas
Escola Náutica Infante Dom Henrique Departamento de Radiotecnia
1 – Controlo de fluxo - decisão. If Then Else encadeados . 3 2 – Controlo de fluxo - decisão. Switch.Case . 3 3 – Controlo de fluxo – Ciclo. While. 4 4 – Controlo de fluxo – Ciclo. For . 4 5 – Controlo de fluxo – Salto continue. . 5 6 – Strings. . 6 7 – Arrays. . 7
Escola Náutica Infante Dom Henrique Departamento de Radiotecnia
1 – Controlo de fluxo - decisão. If Then Else encadeados
1.1 – Elabore uma classe denominada IfElseIfFicha3 , que peça a introdução de uma nota quantitativa através do teclado e imprima no ecrã o correspondente valor qualitativo de acordo com a tabela seguinte:
Nota Quantitativa Nota Qualitativa >= 18 Muito Bom >=10 Suficiente >= 7 Medíocre Deverá recorrer a instruções de decisão If.Then.Else encadeados para produzir o resultado desejado. Para a leitura do teclado poderá utilizar a classe java.util.Scanner como fez na ficha 1. 2 – Controlo de fluxo - decisão. Switch.Case 2.1 – Elabore uma classe denominada Switch01Ficha3 , que peça a introdução do número de um mês através do teclado e imprima no ecrã o nome do mês respectivo. Recorra à intrução de decisão switch.case. Caso o número do mês não seja válido, o programa deverá imprimir no ecrã: “Não é um mês válido”. Exemplo: Introduza o número do mês: >> 12 Dezembro Introduza o número do mês: >> 13 Não é um mês válido
Escola Náutica Infante Dom Henrique Departamento de Radiotecnia
3 – Controlo de fluxo – Ciclo. While 3.1 – Elabore uma classe denominada While01Ficha3 , que, recorrendo a um ciclo while, faça a soma de 4 números consecutivos começando em 0. Sugere-se a utilização das variáveis int soma=0, que servirá para guardar o resultado da soma e int a que servirá de variável de controlo do ciclo. O resultado esperado deverá ser: a = 1 , soma = 1 a = 2, soma = 3 a = 3, soma = 6 a = 4, soma = 10 Resultado da soma: 10
4 – Controlo de fluxo – Ciclo. For 4.1 – Elabore uma classe denominada Fact01Ficha3 , que, recorrendo a um ciclo for, faça o factorial de 15 números inteiros. ( de 1! Até 15!). O resultado do factorial deverá ser guardado em duas variáveis distintas: Factl do tipo int. FactL do tipo long. Como exemplo o factorial de 15 números pode ser calculado da seguinte forma: int i; int FactI = 1; long FactL = 1; for (i=1 ; i<=15; i++) {
FactI = FactI * i; FactL = FactL * i; System.out.println( i + “!=” + FactI + “\t” + FactL ); } 4.2 – Observe a partir de que valor, FactL e FactI são diferentes. Isto deve-se ao facto de a partir de determinado momento, o resultado FactI ser demasiado grande para o domínio suportado por uma variável int. Este tipo de situação deveria provocar um “overflow”. No entanto o programa mostra que o overflow não é detectado. Não é emitido nenhum alerta e os resultados poderão estar errados.
Escola Náutica Infante Dom Henrique Departamento de Radiotecnia
4.3 O excerto de programa seguinte mostra uma técnica para corrigir a situação de overflow anterior. Adicione as seguintes linhas dentro do ciclo for e verifique o resultado. O que conclui? Float FactF=1.0f; for (i=1 ; i<=20; i++) {
FactF *= i; If (FactF > Integer.MAX_VALUE) { System.out.println( i + “!=” + “Erro!!! Máximo inteiro excedido”); } else {
System.out.println( i + “!=” + FactF); 5 – Controlo de fluxo – Salto continue. 5.1 – Considere a classe seguinte Continue01Ficha3: public class Continue01Ficha3 { public static void teste(){ System.out.println("Inicio do teste"); int i; for(i=0;i<=10;i+=1){ if (i==5){ System.out.println("continue"); continue; } System.out.println(i); } // Fim do bloco for System.out.println("Fim teste()"); } public static void main (String[] args) { System.out.println("Inicio do programa"); teste(); System.out.println("Fim do programa"); } }
Escola Náutica Infante Dom Henrique Departamento de Radiotecnia
5.2 Corra o programa e verifique se o comportamento da instrução continue é o esperado 5.4 Substitua a instrução continue por break. Verifique agora o comportamento. O que conclui ? 5.5 Substitua a instrução break por return. Verifique agora o comportamento. O que conclui ? 6 – Strings. 6.1 Elabore uma classe String01Ficha3 , que compare strings recorrendo aos operadores == (compara apontadores) e ao método s.equals(String s), existente na API Java. Os valores das strings são: Publlic static void main() { S1 = “Manuel”; S2 = “Manuel”; S3 = s2.substring(0,2) + “nuel”; /* Pseudo código */ Se s1 == s2, imprime s1==s2 cc imprime s1 != s2; Se s1!=s3, imprime s1 != s3 cc imprime s1 == s3; Se s1.equals(s3) e s1.equals(s2) imprime “ Conteudos iguais” cc imprime “Conteudos diferentes”; Se s1.equals(“Pedro”) imprime “são iguais” cc imprime “são diferentes”; }
O resultado esperado será: s1 : Manuel s2: Manuel s3: Manuel s1 == s2; s1!=s3; Conteudos iguais São diferentes 6.2 Comente os resultados das comparações de strings não esquecendo de referir a forma de criar strings e apontadores no Java.
Escola Náutica Infante Dom Henrique Departamento de Radiotecnia
7 – Arrays. 7.1 Demonstração da criação e extracção de dados de um array de uma dimensão. A classe seguinte ArrayDemoFicha03,mostra como é possível criar um array unidimensional com 6 elementos e extrair os seus dados através de um ciclo for… Corra o programa seguinte e verifique / interprete o seu funcionamento. Tenha atenção ao estado (propriedade) “ARRAY.lenght” para obter a dimensão do array. public class ArrayDemoFicha3 { public static void main (String[] args) { final int MAX=6; int[] numero = new int[MAX]; numero[0]=3; numero[1]=4; numero[2]=0; numero[3]=-3; numero[4]=1; numero[5]=5; System.out.println("Array com " + MAX + " posições"); for (int i=0 ; i < numero.length; i++){ System.out.println("numero[" "]=" numero[i]); } } }
Escola Náutica Infante Dom Henrique Departamento de Radiotecnia
7.2 A partir da classe anterior, elabore uma classe Array01Ficha3, que peça a introdução de 5 números através do teclado e os armazene num array denominado numero[ ]. O Array numero[ ] deverá ser construído recorrendo a um ciclo for. O programa deverá também imprimir no ecrã o valor de cada índice do array, como indicado abaixo. Introduza 5 numeros 1 2 3 4 5 numero [0] = 1 numero [1] = 2 numero [2] = 3 numero [3] = 4 numero [4] = 5 Os elementos do array deverão ser extraídos usando um ciclo for. Para a leitura do teclado deverá utilizar a classe java.util.Scanner como fez na ficha 1.
Escola Náutica Infante Dom Henrique Departamento de Radiotecnia
7.3 Demonstração da criação e extracção de dados de um array de duas dimensões (matriz) do tipo float. A classe seguinte ArrayDemo2Ficha03, mostra como é possível criar uma matriz de 6 linhas por 2 colunas e extrair os seus dados através de um ciclo for… Corra o programa seguinte e verifique / interprete o seu funcionamento. Tenha atenção ao estado (propriedade) “ARRAY.lenght” com duas dimensões. public class ArrayDemo2Ficha03 { public static void main (String[] args) { final int LINHA = 6; final int COLUNA = 2; float[][] numero = new float[LINHA][COLUNA]; numero[0][0] = 1.0f; numero[0][1] = 2.0f; numero[1][0] = 3.0f; numero[1][1] = 4.0f; numero[2][0] = 5.0f; numero[2][1] = 6.0f; numero[3][0] = 7.0f; numero[3][1] = 8.0f; numero[4][0] = 9.0f; numero[4][1] = 10.0f; numero[5][0] = 11.0f; numero[5][1] = 12.0f; System.out.println("Array-->Dimensão[" + LINHA + "][" + COLUNA + "]"); for (int i=0; i<numero.length; i++) { for (int j=0; j<numero[0].length; j++){ System.out.println("numero[" + i + "][" + j + "]=" + numero[i][j] + "\t"); } } System.out.println(" "); } }
FURTHER REVELATIONS by C.Lovell. INTRODUCTION. Most of the information in this paper has not been easy to obtain, and much of it is sensitive. In most casesthe sources of information have been indicated by a code; refer to the last sheet for the bibliography andcodes. All statements have been made in good faith, but it is possible that some of the reference books arenow out of date, or that
Apesar do progresso dos meios de diagnóstico e de tratamento, a litíase continua sendo uma das causas mais freqüentes de consulta urológica A formação de cálculos urinários é devida à precipitação e cristalização de sais da urina quando ocorre supersaturação urinária e/ou diminuição dos inibidores da cristalização Inibidores da cristalização ➪