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(" "); } }
HEALTH CARE PROVIDER ORDERS FOR STUDENTS WITH DIABETES IN WASHINGTON STATE SCHOOLS STUDENT’SNAME ____________________________Student’sbirthdate___/___/___School_____________Grade___ Emergency numbers for parents (phone) ____-_____-_____ (Cell contact 2) ____-_____-_____ (Cell) ____-_____-____ Doctor’s phone number_____-_____-______ Other contacts________________________________, _____-
Utente e-GdP: camera - Data e ora della consultazione: 2 febbraio 2011 11:13 GIORNALEdelPOPOLO G.D.P. DEL 02.02.2011 NEWS CANTONE SAN GOTTARDO Formigoni esprime solidarietà al Consiglio di Stato 2010 Tribunale penale Più processi «Senza raddoppio rimane per i reati isolata anche la Lombardia» contro la vita L’incontro di ieri Anche nel 2010 non è mancato il lavoro