AULA TEÓRICA 7. Tema 4. Estruturas de controlo (continuação).

Documentos relacionados
Aula teórica 11. Tema 11. Repetição. Ciclo while Ciclo do-while Ciclo for

Aula teórica 10 Tema 10. Selecção Instruções de selecção:

AULA TEÓRICA 4. Tema 2. Introdução a programação em Java (Continuação) Tema 3. Instruções básicas de entrada e saída

AULA TEÓRICA 5 Tema 3. Instruções básicas de entrada e saída (continuação)

AULA TEÓRICA 2. Tema 1. Desenho de Algoritmos (continuação)

Aula teórica 4. Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.)

AULA TEÓRICA 1 Tema 6. Algoritmos e Fluxogramas

Programação Orientada aos Objectos I

Aula teórica 14. Tema 12. Subprogramas (cont)

AULA TEÓRICA 3. Tema 2. Introdução a programação em Java (Continuação)

AULA TEÓRICA 3 Tema 2. Introdução a programação em Java (JVM, JDK)

Aula Teórica 8. Preparado por eng.tatiana Kovalenko

Introdução à Programação LP JAVA

Aula teórica 13. Tema 12. Subprogramas. Subprogramas em Java Chamada de métodos. Área de domínio das variáveis. Preparado por eng.

AULA TEÓRICA 7 Tema 7. Colecções (cont.) Vector Ø Criação Ø Manipulação

Seleção Múltipla Laços (while, do-while, for) AULA 05

AULA TEÓRICA 4. Tema 3. Linguagem de programação de alto nível Java

AULA TEÓRICA 10. Tema 9. Interface. Tema 10. Recursividade

LÓGICA DE PROGRAMAÇÃO (JAVA) ESTRUTURAS REPETIÇÃO. Professor Carlos Muniz

Programação e Algoritmos I 1 o semestre

Instituto Superior de Ciências e Tecnologia de Moçambique

Variáveis primitivas e Controle de fluxo

AULA TEÓRICA 3. Tema 4. Excepções Ø Tratamento de excepções

Array de objectos Array de objectos Criação Exemplo:

AULA TEÓRICA 9. Tema 8. Herança (continuação) Ø Sobreposição de métodos. Ø Variáveis e métodos estáticos. Ø Hierarquia de classes.

Aula 4 Estruturas de Controle

Instituto Superior de Ciências e Tecnologia de Moçambique

Introdução a JAVA. Variáveis, tipos, expressões, comandos e blocos

Programação Estruturada e Orientada a Objetos

Programação Orientada a Objetos II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

Comando Portugol (Visualg) Java

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Unidade 3: Estruturas de Controle Parte 2 - Lógica, SWITCH, FOR, WHILE e DO WHILE Prof. Daniel Caetano

Tema 7. Colecções AULA TEÓRICA 6. Listas: ArrayList, LinkedList, Vector Ø Criação Ø Manipulação

Instituto Politécnico de Setúbal. Escola Superior de Tecnologia. Departamento de Sistemas e Informática. Guia para codificação em JAVA

Algoritmos I Aula 13 Linguagem de Programação Java

Estruturas de Controle

Aula 7 Estruturas de Repetição Cleverton Hentz

Sintaxe Básica de Java Parte 2

Estruturas de controle Parte 1

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Herança. Caso queira referir-se a um construtor da super classe, a sintaxe é diferente: super.nomedoatributo; super.nomedometodo(<parametros>)

Estruturas de Controle em c#

Vetores Unimensionais

Lógica de Programação e Algoritmos

INSTRUÇÕES DE REPETIÇÃO

Introdução a JAVA. Variaveis, tipos, expressões, comandos e blocos

Desenvolvimento de Aplicações Desktop

Linguagem de Programação III

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Conceitos básicos de programação

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Linguagem Java: Sintaxe Java

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Análise de Programação

Estruturas de Decisão

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Vetores Unimensionais

Algoritmos e Programação

Introdução à Linguagem de Programação Java 1 INTRODUÇÃO À LINGUAGEM DE PROGRAMAÇÃO JAVA

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Linguagem Java - Introdução

Introdução à Ciência da Computação

CIT Aula 02 Variáveis e Estruturas de desvio condicional. Autor: Max Rodrigues Marques Carga Horária: 2 h 22/07/15 1

Estruturas de Repetição

Controle de Fluxo. Laços e Desvios incondicionais

Equivale a um conjunto de if 's encadeados, porém mais estruturado.

Algoritmos I Aula 14 Java: estruturas de seleção e repetição

Linguagem C (repetição)

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Revisão C++ - Parte 1

Sequencial Estrutura de controlo mais simples. As instruções são executadas sequencialmente.

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Programação Estruturada Aula - Estruturas de Repetição

Linguagem C Estruturas de Repetição

Lógica de Programação. Lógica de Programação com Java

AULA TEÓRICA 4. Tema 5. Ficheiros. Ficheiro do tipo texto. Ficheiros de Objectos. Ø Classe File Ø Criação. Manipulação. Ø Classe StringTokenizer

Ambientação com a Sintaxe de Java: parte 1

Sintaxe Básica do Java. João Paulo Q. dos Santos

Lição 4 Fundamentos da programação

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Métodos Computacionais. Comandos Condicionais e de Repetição em C

Programação Orientada a Objetos

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

insfcanceof new public switch transient while byte continue extends for int null

Prof. A. G. Silva. 28 de agosto de Prof. A. G. Silva INE5603 Introdução à POO 28 de agosto de / 1

JAVA. Professor: Bruno Toledo

Programação de Computadores I. Linguagem C Estruturas de Repetição

Prof. A. G. Silva. 13 de setembro de Prof. A. G. Silva INE5603 Introdução à POO 13 de setembro de / 21

Aula 10 Comandos de Repetição

C Comandos de Controle

Algoritmos e Técnicas de

Operadores e Estruturas de Decisão. Vanessa Braganholo

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

Transcrição:

AULA TEÓRICA 7 Tema 4. Estruturas de controlo (continuação). Ø Selecção múltipla. Instrução switch-case. Ø Repetição. O ciclo while. O ciclo do-while. O ciclo for. Ciclos for encadeados. Ø Repetição. O ciclo while. Ø O ciclo do-while. Ø O ciclo for. Ø Ciclos for encadeados. Elaborado por eng.tatiana Kovalenko, UEM

Selecção multipla. Instrução switch-case Se a escolha for feita em função do valor de uma expressão inteira ou caracter, é mais eficaz utilizar uma estrutura de selecção múltipla para o mesmo efeito. Graficamente: expr Esta estrutura começa por calcular o valor da expressão que terá que ter resultado inteiro (byte, short, int ou long) ou caracter (char). Se algum dos valores V1 a Vn for igual ao resultado da expressão, as instruções correspondentes serão executadas.

Sintaxe de instrução switch-case: switch (expressão ou variável) { case valor1 : instruções1; break; case valor2 : instruções2; break;... case valorn : instruçõesn; break; default : instruçõesdefault; break; A instrução case é controlada pela variável ou expressão colocada a seguir à palavra case e, de acordo com o seu valor, executa um determinado conjunto de instruções. A instrução break é utilizada para promover o desvio da execução para a linha posterior ao final de seu bloco. Exemplo: Escrever um programa que permite calcular áreas das diferentes figuras geométricas.

import java.io.*; public class AreasSwitch { public static void main(string args[])throws IOException { BufferedReader x = new BufferedReader(new InputStreamReader(System.in)); double b,h,area; char letra; System.out.println("Calcular area de Rectangulo(R), Triangulo(T) ou Circulo(C)? "); letra = x.readline().charat(0); //converte para tipo char switch (letra) { case 'R' 'r': System.out.print("Valor da base: "); b = Double.parseDouble(x.readLine()); System.out.println("Valor da altura: "); h = Double.parseDouble(x.readLine()); area = b*h; System.out.println("Area do rect= "+area); break;

case 'T': case 't' : //essa é a outra forma de permitir o uso de 'T' e 't' System.out.print("Valor da base: "); case 'C' 'c': b = Double.parseDouble(x.readLine()); System.out.println("Valor da altura: "); h = Double.parseDouble(x.readLine()); System.out.println("Area do triangulo= "+ b*h/2); break; System.out.println("Introduza o valor do raio: "); b = Double.parseDouble(x.readLine()); area = Math.PI*b*b; System.out.println("Area do circulo= "+ area); break; default : System.out.println("Introduziu a letra errada"); break;

Repetição A maioria dos programas que têm interesse prático incluem estruturas repetitivas. Exemplo: agenda de telefones. A situação poderia ser ainda mais complicada se o número de pessoas não fosse conhecido à partida. Uma forma eficaz de resolver este problema é a utilização de uma estrutura que se encarregue de fazer repetir as instruções que permitem ler os dados de uma pessoa tantas vezes quantas as pessoas envolvidas. Estas estruturas são denominadas por estruturas repetitivas ou ciclos. Quando não sabemos quantas vezes deve se fazer a repetição utilizam-se os ciclos while e do...while. O critério de execução ou paragem destes ciclos depende de uma condição, que será testada antes ou depois de cada execução de ciclo.

Ciclo while O ciclo while faz o teste primeiro e executa as instruções depois, caso a condição for verdadeira. Se o resultado for verdadeiro, as instruções (I) - são executadas, seguindo-se um novo cálculo + da condição. Quando a condição tiver resultado I falso, o ciclo terminará, prosseguindo a execução do programa na instrução seguinte ao ciclo. Sintaxe da instrução while: inicialização; //da variável de controle de repetições while (condição) { instruções;//executadas apenas enquanto condição for true acção; //increm. ou decrem. da variável de controle

Exemplo: Calcular a média de N números inteiros fornecidos pelo utilizador. import java.io.*; public class MediaN_Numeros1 { public static void main(string args[])throws IOException { //Declaração de variáveis BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); float media, soma = 0; int quant, num; int contador = 0; //inicialização da variável de controle System.out.println("Quantos são numeros? (>0)"); quant = Integer.parseInt(br.readLine()); while (contador < quant) { System.out.println("Intr. o proximo numero: "); num = Integer.parseInt(br.readLine()); soma += num; contador ++; //acção, i.e. incrementação da variável de controle media = soma/quant; System.out.println("A media dos "+quant+" numeros = "+ media);

M Note-se que, devido ao facto de a condição boleana ser testada antes, o conjunto de instruções pode nunca vir a ser executado. Isto acontece se o resultado da condição for false logo no início. M ao programar um ciclo é necessário criar as condições para que o mesmo possa terminar. Ciclo do-while Ao contrário do ciclo while, o ciclo do...while primeiro executa as instruções e depois faz o teste. Caso a condição for verdadeira o ciclo repete-se. Sintaxe da instrução do...while: inicialização; do { intruções; + acção; - while (condição); I

M Notar que, devido ao facto de a condição apenas ser testada no fim, o conjunto de instruções é executado pelo menos uma vez. O Exemplo anterior modificamos usando ciclo do-while: import java.io.*; public class MediaN_Numeros2 { public static void main(string args[])throws IOException { //Declaração de variáveis BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); float soma = 0; int quant,num,contador=0; System.out.println("Quantos numeros pretende(>0)?"); quant = Integer.parseInt(br.readLine()); do { System.out.println("Intr. proximo numero: "); num = Integer.parseInt(br.readLine()); soma += num; contador++; //acção, i.e. incrementação da variável de controle while(contador < quant); System.out.println("media de "+quant+" numeros= "+ soma/quant);

Uma das utilizações mais comuns deste tipo de repetição é a validação de dados fornecidos pelo utilizador. Exemplo: Pretende se introduzir numero de horas trabalhadas, sabendo que os valores podem variar de 0 a 12. No caso contrário deve aparecer um aviso de erro e pedido de repetir a entrada do valor. import java.io.*; public class ValidarHorasTrab { public static void main (String args [])throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); byte h; do { System.out.print("Qde de horas trabalhadas? "); h = Byte.parseByte(br.readLine()); if (h < 0 h > 12) System.out.println("Valor invalido!tente de novo!"); while (h < 0 h > 12); System.out.println("Horas trabalhadas: "+ h);

Já podemos elaborar um menu que permite escolher uma ou mais opções ou terminar o programa. import java.io.*; public class MenuSimples { public static void main (String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); byte op; do // repete até escolher opção 3 (sair) { do // valida opçoes introduzidas pelo utilizador (1-3) { System.out.print("Qual é a tua opção?\n"); System.out.print("1- Mensagem de boas vindas\n"); System.out.print("2 Ler valor\n"); System.out.print("3 Sair\n "); op = Byte.parseByte(br.readLine()); while (op < 1 op > 3); switch (op) { case 1: System.out.println ("Ola! Bem vindo!\n"); break; case 2: System.out.println("Intr.valor inteiro:"); int n = Integer.parseInt(br.readLine()); System.out.println("introduziu "+n);break; while (op!= 3);

Ciclo for O ciclo for é uma estrutura de repetição compacta. Seus elementos de inicialização, condição e acção são reunidos em forma de um cabeçalho. Quando se pretende que um conjunto de instruções se repita um número de vezes bem específico, utiliza-se o ciclo for, cuja sintaxe é seguinte: for (inicialização; condição; acção) { instruções; inicialização é executada apenas uma vez logo no início do ciclo. Serve normalmente para inicializar a variável que vai controlar o número de vezes que as instruções vão ser repetidas; condição é calculada antes de cada execução das instruções. Se o seu resultado for verdadeiro, as instruções são executadas, se for falso, o ciclo termina;

acção é executada automaticamente em cada iteração após as instruções do ciclo. Normalmente serve para calcular o novo valor da variável de controle (geralmente a acção é uma incrementação ou decrementação da variável de controle). Préincrementar e pós incrementar tem o mesmo efeito na expressão de incremento. Exemplos com a estrutura for: 1). a variável de controle varia de 1 a 100 em incrementos de 1: for (byte i = 1; i <= 100; i++) {... 2). a variável de controle varia de 20 a 2 em incrementos de 2 (ou decrementos de 2): for (byte k = 20; k >= 2; k -= 2) {... 3). permite somar todos os inteiros pares de 2 a 5600: for (int num = 2; num <= 5600; num+=2) sum += num; As duas últimas instruções podem ser escritas na forma mais compacta: for (int num = 2; num <= 5600; sum += num, num+=2) ;

Esta última versão exemplifica uma situação em que a componente acção contém mais do que uma instrução, separados por vírgulas. Neste exemplo, com a inclusão da instrução a repetir na componente acção, o conjunto de instruções a repetir fica vazio, pelo que a seguir ao for aparece um ; (instrução vazia). Mas é aconselhável evitar esta forma pois torna o programa mais difícil de ler. Apesar de ser usual declarar as variáveis no início, estas podem de facto ser colocadas em qualquer ponto do programa. Exemplo: Escreve o programa que visualiza no ecrã todos os números inteiros entre 1 e um número positivo fornecido pelo utilizador. Algoritmo: Pedir o número ao utilizador Ler o número para a variável num Para todos os valores de k entre 1 e num escreve k Fim_Para

Em Java: import java.io.*; public class VisualizarInteiros { public static void main (String args [])throws IOException { int num, k; BufferedReader z = new BufferedReader(new InputStreamReader(System.in)); System.out.prntln("O programa visualizara numeros de 1 ate um valor escolhido por si! "); //validação do numero introduzido do { System.out.println("Intr. até que número pretende ter a lista: "); num = Integer.parseInt(z.readLine()); if (num <= 1) System.out.println("Numero deve ser maior que 1! Tente de novo"); while (num <= 1); System.out.println("Numeros entre 1 e "+num+" : "); for (k = 1; k <= num; k++) System.out.print(k+" ");

Na maioria dos casos, a estrutura for pode ser representada por uma estrutura while equivalente: inicialização; while (condição) { instruções; acção; Ciclos for um dentro de outro Por exemplo, para aceder aos elementos duma matriz bidimensional deve se utilizar dois ciclos for, um dentro do outro. O primeiro serve para fazer variar linhas e o segundo para fazer variar colunas. Mais tarde vamos aprender esta técnica. Um outro exemplo pode ser seguinte: visualizar no ecrã uma tabela de multiplicação organizada em linhas e colunas:

public class ForForTabMult { public static void main (String args []) { final int SIZE = 12; int z; for ( int x=1; x<=size; x++) { for ( int y=1; y<=size; y++) { z = x*y; if (z<10) System.out.print(" "); if (z<100) System.out.print(" "); System.out.print(" "+ z); System.out.println();

O output será: 1 2 3 4 5 6 7 8 9 10 11 12 2 4 6 8 10 12 14 16 18 20 22 24 3 6 9 12 15 18 21 24 27 30 33 36....................... 12 24 36 48 60 72 84 96 108 120 132 144 Como escolher entre as instruções de repetição Os três tipos de controlo de repetição devem ser usados visando às seguintes características: for Utiliza-se no caso de saber o número de repetições antecipadamente. do-while Controla a condição de repetição após a sua execução. O ciclo é executado pelo menos uma vez. Assim, só faz sentido utilizá-lo em situações em que este comportamento seja desejável (validação de dados fornecidos pelo utilizador, pois estes têm que ser lidos antes de ser possível validá-los). while Controla a condição de repetição antes da sua execução. O ciclo pode nunca ser executado. O ciclo for pode também ser utilizado nestas situações, mas a utilização do ciclo while tende a produzir código mais claro e mais legível.

Referência bibliográfica: António José Mendes; Maria José Marcelino. Fundamentos de programação em Java 2. FCA. 2002. Carriço, José; Carriço, António. "Computadores, Tecnologias e sistemas de Informação- O Núcleo de Sistema. Centro de Tecnologias de Informação Ltd. Lisboa. 1997 Carriço, José; Carriço, António. "Computadores, Tecnologias e sistemas de Informação- Periféricos, Internet e multimédia. Centro de Tecnologias de Informação Ltd. Lisboa. 1997. Carriço, José; Carriço, António. "Computadores, Tecnologias e sistemas de Informação- Tecnologias de Software. Centro de Tecnologias de Informação Ltd. Lisboa.1997. Elliot Koffman; Ursula Wolz. Problem Solving with Java. 1999. John R. Hubbard. Theory and problems of programming with Java. Schaum s Outline series. McGraw-Hill. H. Deitel; P. Deitel. Java, como programar. 4 edição. 2003. Bookman. Rui Rossi dos Santos. Programando em Java 2 Teoria e aplicações. Axcel Books. 2004