• Nenhum resultado encontrado

Entrada Processamento Saída

N/A
N/A
Protected

Academic year: 2021

Share "Entrada Processamento Saída"

Copied!
8
0
0

Texto

(1)

Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Lista de Exercícios para a Terceira Unidade

Disciplina: PEOO

Professor: Eberton da Silva Marinho e-mail: ebertonsm@gmail.com Data: 09/04/2019

Data de entrega: Exercícios

Objetivos:

 Entrada e Saída de Dados  Estruturas de Repetição

Entrada e Saída de Dados

O computador é uma máquina que processa informação a partir de dados de entrada fornecidos através de usuários, sensores ou outros sistemas de informação. Com os dados de entrada fornecidos ao computador, ele pode gerar uma saída através de informações visuais em forma de gráficos, relatórios, objetos em 3D, sonoras com son, etc. Esse processo é ilustrado na figura 1 abaixo.

Figura 1. Fluxo de processamento de dados em um computador.

Há algumas formas do usuário fornecer entradas a programas Java. Uma delas é usando a classe Scanner da biblioteca java.útil. A classe Scanner permite que informações fornecidas pelo usuário do programa em vários formatos possam ser processadas pelo programa. A classe Scanner possui vários métodos que permitem a entrada de diferentes tipos, entre eles:

 next(): retorna uma String, que não tenha espaços em branco;  nextDouble(): retorna um número em notação ponto flutuante;  nextInt(): retorna um número inteiro;

 nextLine(): retorna uma String, linha inteira digitada pelo usuário;  nextLong() - retorna um número inteiro de 64 bits.

Para utilizar a classe Scanner, é necessário importá-la através da declaração:  import.java.util.Scanner;

Antes de utilizar a classe, é necessário instanciá-la através do comando:  Scanner sc = new Scanner(System.in);

A partir daqui, basta utilizar os métodos da classe Scanner para ler dados do usuário.  int num = sc.nextInt();

(2)

double salario = sc.nextDouble(); String nome = sc.nextLine();

No fluxo normal de um programa estão as saídas das informações resultantes do processamento das entradas. Java oferece como uma das formas de saída a biblioteca System.out. Nela encontramos métodos para exibição de texto no prompt de comando. A biblioteca System.out possui vários métodos que possibilitam a saída de diferentes tipos de dados. Abaixo há alguns métodos:

 print: Imprime um objeto passada como parâmetro pelo seu método;

 println: Imprime um objeto passada como parâmetro pelo seu método e adiciona uma quebra de linha ao final;

 printf: Imprime um objeto de acordo com o formato de impressão passado como parâmetro O método System.out.printf merece uma atenção maior pelo formato dos seus parâmetros. Ele espera dois parâmetros, o primeiro é o formato de impressão e os seguintes são os dados a serem impressos, System.out.printf( formato, objetos a serem impressos). Formatos:

 %s = String  %d = Inteiro

 %f = número com ponto flutuante.  \t = tabulação  \n = salto de linha. Exemplo:  System.out.printf ("%d \t %f \t %s", 5, 254.336, “Texto");  Saída: 5 254,336 Texto Estruturas de Repetição

Para a resolução de um problema, vários processos precisam ser repetidos, e para tanto, temos que usar estruturas de repetição. Java oferece algumas estruturas que permitem que possamos automatizar processos, reduzindo código, trabalho de programação e facilitando a manutenção de código. As estruturas de repetição executam um bloco específico de comandos enquanto uma condição for satisfeita. As repetições podem ser controladas por um contador ou por uma expressão lógica genérica. A figura 2 mostra o fluxo de execução de uma estrutura de repetição.

(3)

Java dispõe de 3 estruturas de repetição: for, while, do ... while. Para utilizar estas estruturas, deve-se observar 3 aspectos:

 Inicialização: Antes de iniciar a repetição, a condição para entrada na estrutura deve ser satisfeita. Caso a estrutura nunca seja executada, isso configura um erro de lógica de programação.

 Critério de parada: Antes de cada repetição, o critério de parada da repetição é avaliado. Se a condição não for mais atendida, a repetição é interrompida. Caso a repetição nunca pare, e esta condição esteja fora do planejamento do programa, isso configura um erro de lógica de programação chamado de laço infinito.

 Próximo passo: No final de cada repetição, um próximo passo deve ser definido para que o código possa um dia parar. Esse passo se dá através da atualização das variáveis que serão avaliadas para parar o código. O próximo passo deve ser escolhido criteriosamente a fim de evitar erros de lógica de programação resultem em um laço infinito.

Estrutura de Repetição for

A estrutura de repetição for já traz em sua estrutura espaços para as declarações da inicialização, do critério de parada e do próximo passo: for(inicialização; condição de parada; próximo passo). Na inicialização, declaramos e inicializamos as variáveis que serão utilizadas na condição de parada. Um exemplo de código 1 de utilização da estrutura for está abaixo:

Exemplo de código 1. Estrutura for. for(int i = 1; i <= 10; i++){

System.out.println(“Iteração: ” + i); }

Saída para o código acima: Iteração 1 Iteração 2 Iteração 3 Iteração 4 Iteração 5 Iteração 6 Iteração 7 Iteração 8 Iteração 9 Iteração 10

Apesar de não ser uma regra utilizar os espaços reservados para colocar as três declarações necessárias para execução de uma estrutura for, logo não casa erro, é recomendável que se utilize as mesmas para tal finalidade. Podemos colocar a inicialização e o próximo passo no decorrer do código. A única declaração exigida na instrução for é a condição de parada.

No exemplo de código acima, a declaração da variável i dentro da estrutura for, faz com que ela possa ser manipulada apenas dentro do bloco for, assim, quando a instrução for terminar, ela é eliminada pelo executor de código. Chamamos o espaço onde uma variável pode ser manipulada de escopo de variável. Uma variável declarada dentro do método main pode ser vista dentro de todo o método, e uma variável declarada em um bloco for, apenas dentro do for.

(4)

Os exemplos abaixo são válidos. No exemplo de código 2, a variável i de cada for só é manipulável dentro de seu bloco, logo podemos declarar a variável i sem gerar erro.

Exemplo de código 2. Mais exemplos da estrutura for. for(int i = 1; i <= 10; i++){ System.out.println(“Iteração A: ” + i); } for(int i = 1; i <= 10; i++){ System.out.println(“Iteração B: ” + i); }

Os exemplos abaixo também são válidos, porém, devem ser evitados. No exemplo de código 3 a inicialização e o próximo passo são colocados fora das declarações for. Esse tipo de código pode confundir ou dificultar o entendimento do mesmo.

Exemplo de código 3. Mais exemplos da estrutura for. int i = 1; for( ; i <= 10; ){ System.out.println(“Iteração : ” + i); i++; } for(i = 1 ; i <= 10; ){ System.out.println(“Iteração : ” + i); i++; }

Os exemplos abaixo não são válidos. Eles causam erros de programação. Nos exemplos de código 4 e 5 há dois erros. Identifique os erros e as suas consequências.

Exemplo de código 4. Erro de declaração. int i = 1; for( ; i <= 10; ){ System.out.println(“Iteração : ” + i); i++; } for(int i = 1 ; i <= 10; ){ System.out.println(“Iteração : ” + i);

(5)

i++; }

Exemplo de código 5. Erro de lógica na estrutura for. for(int i = 10; i >= 1; i++){

System.out.println(“Iteração : ” + i); }

O fluxo de execução da estrutura for segue o esquema da Figura 3 abaixo. Figura 3. Fluxo de execução da estrutura for.

for(int i = 1; i <= 10; i++){

System.out.println(“Iteração: ” + i);

}

Estrutura de Repetição while

A estrutura while tem um propósito parecido com a for, porém, ela não possui em sua declaração espaços para colocar a inicialização nem o próximo passo, deixando como obrigatório apenas a condição de parada, logo, para utilizar o while, é necessário ter uma maior atenção na organização do código, facilitando o entendimento e diminuindo a frequência de erros no código.

O exemplo de código 6 mostra a utilização da estrutura while. Perceba que a inicialização das variáveis que serão utilizadas na avaliação da condição de parada e o próximo passo está dentro do bloco. O while é utilizado em situações mais gerais e tem um fluxo de execução parecido com a estrutura for.

Exemplo de código 6. Código usando a estrutura while. int i = 1;

while(i <= 10){

System.out.println(“Iteração : ” + i); i++;

}

Algo para prestar atenção é que como não há uma declaração exclusiva na estrutura while para a inicialização das variáveis e do próximo passo, as variáveis a serem avaliadas na condição de parada devem ser declaradas e inicializadas antes do while.

true

(6)

Estrutura de Repetição do ... while

A estrutura do ... while é muito parecida com a while, com a diferença que os comandos de seu bloco sempre serão executados pelo menos uma vez, visto que a avaliação do código de parada se encontra no final da estrutura. O exemplo de código 7 mostra como utilizar a estrutura do ... while.

Exemplo de código 7. Código usando a estrutura do ... while. int i = 0;

do{ i++;

System.out.println(“Iteração : ” + i); }while(i <= 10);

Os exemplos das estruturas de repetição apresentados até agora utilizavam contadores para controlar a interrupção da repetição. Isto é possível quando sabemos, antecipadamente, quantas vezes o código será repetido. Porém, muitas vezes não temos como saber quantas vezes o código deve ser repetido por depender de variáveis não determinísticas, como por exemplo a opção de um operador em continuar ou não a digitação de dados de entrada para o programa. Desta forma, podemos deixar nossa estrutura de repetição em função destas variáveis não determinísticas. O exemplo de código 8 mostra como utilizar a estrutura while com uma expressão de validação genérica.

Exemplo de código 8. Código while controlado por uma expressão de validação genérica. Scanner sc = new Scanner(System.in);

System.out.println(“Digite uma opção:”); int opcao = sc.nextInt();

while (opcao != 0){ // comandos

System.out.println(“Digite uma opção:”); opcao = sc.nextInt();

}

Quando usar cada uma das estruturas

 for: quando se sabe exatamente quantas vezes o código será executado. Geralmente mais utilizado com um contador.

 while: quando não há como prever quantas vezes o código será executado, pois depende de alguma variável não determinística, como a escolha do usuário, ou no caso de expressões mais genéricas.

 do ... while: tem um propósito muito parecido com o while, porém, executa obrigatoriamente uma vez os comandos a serem repetidos, antes de avaliar a condição de parada.

(7)

Interrupções das estruturas de repetição

As três estruturas de repetição não estão condicionadas apenas à avaliação da condição de parada, elas podem ser interrompidas antes disso através dos comandos continue e break.

 continue: faz com que o fluxo da estrutura de repetição volte ao início do bloco de comandos;

 break: interrompe a execução da estrutura de repetição.

A Figura 4 mostra um exemplo de código para explicar a utilização do break e continue. O código irá repetir até que a vaiável terminado for falsa, o código será executado. Se a variável alguém chamou for verdadeira, o código para sua execução e reinicia exatamente após a estrutura while, restoDoPrograma(). Tudo o que houver entre o break e o final da instrução while não é executado. Se a variável paginaDePropaganda for verdadeira, a execução do código volta ao início da estrutura while, com a avaliação da condição de parada, mas a repetição não para.

Figura 4. Exemplo de uso do break e continue em uma estrutura de repetição.

Dicas do dia

 Certifique-se que a estrutura de repetição será inicialmente executada em algum momento do código.

 Certifique-se que a estrutura de repetição para em algum momento. A não ser que a repetição infinita faça parte do projeto do programa.

Exercícios

(8)

a) x = 1; while ( x <= 10 ); x++; } b) for ( y = .1; y != 1.0; y += .1 ) System.out.println( y ); c) for ( x = 100, x >= 1, x++ ) System.out.println( x ); d) for ( x = 19; x >= 1; x += 2 ) System.out.println( x ); e) counter = 2; do { System.out.println( counter ); counter += 2; } While ( counter < 100 );

2) Explique o fluxo de execução das estruturas de repetição for, while e do while. Fale da diferença entre elas.

Referências

Documentos relacionados

Jesus aproveita para ensinar aos seus discípulos, que somos todos nós, que as riquezas servem para serem partilhadas com os mais necessitados, que para Deus o que conta é

Aos Sindicatos Profissionais de cada base de representação dos trabalhadores, elencados na introdução deste Instrumento Coletivo, e à Federação respectiva, serão devidas, por todos

Busca-se neste trabalho desenvolver questões teórico-práticas de construtos histórico-filosóficos de Michel Foucault, especialmente de suas formulações relativas ao projeto

Se você olha a pornografia, esta cena entrará na sua mente e você terá a capacidade de reproduzi-la muitas vezes para saboreá-la, quantas vezes desejar ou quantas vezes o diabo

Considerada uma vitória política do presidente Michel Temer, a reforma do ensino médio precisa agora envolver e conquistar os professores para não se tornar mais uma lei descumprida

Esta fase pode ser considerada como um período de transição onde os planos em vigor apresentavam características da estrutura anterior ( empresas federais de geração,

O SUBPROCURADOR-GERAL DE JUSTIÇA, PARA A ÁREA JURÍDICO-INSTITUCIONAL, usando das atribuições que lhe foram delegadas pela PORTARIA Nº 4574/2013-MP/PGJ, de 24 de Julho de

CONCLUSÕES: Conclui-se o consumo hídrico da cultura do amendoim cultivado no período da safrinha, para os dois tipos de solo estudado, não atinge o consumo