Mudanças entre as edições de "Pensamento Computacional - Comandos de repetição no Java: while()"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 83: Linha 83:
 
  }  
 
  }  
  
Vamos ver a correspondência do comando ''while'' com um fluxograma:
+
=Exemplo 1==
  
{| border="1" cellpadding="2"
+
Elaborar um programa java para calcular a média de N alunos de uma turma. Será fornecido para cada aluno a nota final.
!Fluxograma
 
!C
 
!Comentário
 
|-
 
| |[[imagem:fluxo5.jpg|200px]]
 
||<syntaxhighlight lang=c>while(contador<5) {
 
  printf("Entre com x\n");
 
  scanf("%f",&x);
 
  soma=soma+x;
 
  contador = contador + 1;
 
}</syntaxhighlight>|| comando ''while()'' aplicado sobre um bloco de instruções. Note que se for uma instrução simples, as chaves podem ser omitidas.
 
|}
 
  
  NOTE que no exemplo anterior o contador inicialmente DEVE conter um valor válido.
+
DADOS DE ENTRADA: Valor N (número de alunos). Um valor inteiro.
 +
                  Valor da nota final para cada alunos. Um valor real.
 +
DADOS DE SAÍDA: média calculada da turma.
 +
 
 +
<syntaxhighlight lang=c>
 +
import java.util.Scanner;
 +
 
 +
public class MediaTurma {
 +
    public static void main(String[] args) {
 +
        Scanner teclado = new Scanner(System.in);
 +
        float mediaFinal, notaAluno, soma_ac;
 +
        int numN, i;
 +
 
 +
        System.out.println("Entre com a quantidade de alunos da turma");
 +
        numN = teclado.nextInt();
 +
 
 +
        soma_ac = 0;
 +
        i = 0;
 +
        while( i < numN ) {
 +
            System.out.println("Entre com a nota do aluno " + (i + 1) );
 +
            notaAluno = teclado.nextFloat();
 +
            soma_ac = soma_ac + notaAluno;
 +
            i = i + 1;
 +
        }
 +
        mediaFinal = soma_ac / numN;
 +
        System.out.println("Media final é " +  mediaFinal);       
 +
    }
 +
}
 +
</syntaxhighlight>

Edição das 16h44min de 22 de setembro de 2023

Objetivos da Aula

Após esta aula o aluno deverá:*conhecer a sintaxe e a semântica do comandos de repetição while();*mapear estruturas simples de repetição especificadas em fluxogramas ou pseudo-código em estruturas em linguagem C.

Comando while()

A sintaxe do comando while() é:

while ( expressao ) 
    instrução

onde a a instrução pode ser:

    instrução simples terminada em ';'
ou
    bloco de instruções com chaves

O comando while permite implementar loops com controle no início.

A semântica do while é a seguinte: ao entrar no comando a EXPRESSÃO entre parênteses é AVALIADA. Caso resulte em uma valor VERDADEIRO o LAÇO do loop é executado uma vez. O programa testa então novamente a expressão. LEMBRAR que:

  • VERDADEIRO é o valor true de uma expressão booleana;
  • DENTRO do laço NORMALMENTE existe uma modificação de alguma parte da expressão de teste de forma que em algum momento o LOOP se encerra.
  • Ao se encerrar o programa continua na próxima instrução APÓS o comando "while()";
  • ANTES DE entrar no comando while SEMPRE tenha certeza que as variáveis estão com valores adequados de forma que a expressão SEJA AVALIADA sempre corretamente.

No exemplo que se segue existe UMA única instrução simples (terminada em ";").

public class contador {
    public static void main(String[] args) {
        int contador;
  
        contador=0;
        while (contador<5)     
           contador=contador+1;
        System.out.println("valor do contador =  " +  contador);        
    }
}

OBSERVE a seguir uma variação do exemplo anterior usando um bloco de instruções delimitado por "{" e "}"

public class contador {
    public static void main(String[] args) {
        int contador;
  
        contador=0;
        while (contador<5)  {  
            System.out.println("valor da expressão  contador < 5 é " +  (contador<5) );
            System.out.println("valor do contador =  " +  contador);
            contador=contador+1;
        }
        System.out.println("SAIU DO LOOP: valor da expressão  contador < 5 é " +  (contador<5) );        
        System.out.println("APÓS o while o valor do contador é  " +  contador);        
    }
}
Notar que a expressão contador<5 assume valor 0 (falso) e 1 (verdadeiro).

A estrutura do comando, informalmente, é:

while (expressão)
  instrução_simples;

ou

while (expressão) {
  lista_de_instruções
} 

Exemplo 1=

Elaborar um programa java para calcular a média de N alunos de uma turma. Será fornecido para cada aluno a nota final.

DADOS DE ENTRADA: Valor N (número de alunos). Um valor inteiro.

                 Valor da nota final para cada alunos. Um valor real.

DADOS DE SAÍDA: média calculada da turma.

import java.util.Scanner;

public class MediaTurma {
    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        float mediaFinal, notaAluno, soma_ac;
        int numN, i;

        System.out.println("Entre com a quantidade de alunos da turma");
        numN = teclado.nextInt();

        soma_ac = 0;
        i = 0;
        while( i < numN ) {
            System.out.println("Entre com a nota do aluno " + (i + 1)  );
            notaAluno = teclado.nextFloat();
            soma_ac = soma_ac + notaAluno;
            i = i + 1;
        }
        mediaFinal = soma_ac / numN;
        System.out.println("Media final é " +  mediaFinal);        
    }
}