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 27: Linha 27:
 
em uma valor VERDADEIRO o LAÇO do loop é executado uma vez. O programa testa então novamente a expressão.
 
em uma valor VERDADEIRO o LAÇO do loop é executado uma vez. O programa testa então novamente a expressão.
 
  LEMBRAR que:
 
  LEMBRAR que:
*VERDADEIRO é qualquer valor diferente de ZERO;
+
*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.  
 
*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()";
 
*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.  
 
*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.  
 
</blockquote>
 
</blockquote>
 +
 +
No exemplo que se segue existe UMA única instrução simples (terminada em ";").
 +
 +
<syntaxhighlight lang=java>
 +
import java.util.Scanner;
 +
 +
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);       
 +
    }
 +
}
 +
</syntaxhighlight>
 +
 +
<blockquote style="background: pink; border: 1px solid black; padding: 1em;">
 +
OBSERVE a seguir uma variação do exemplo anterior usando um bloco de instruções delimitado por "{" e "}"
 +
</blockquote>
 +
 +
<syntaxhighlight lang=c>
 +
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);       
 +
    }
 +
}
 +
</syntaxhighlight>
 +
 +
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''
 +
}
 +
 +
Vamos ver a correspondência do comando ''while'' com um fluxograma:
 +
 +
{| border="1" cellpadding="2"
 +
!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.

Edição das 16h26min 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 ";").

import java.util.Scanner;

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
} 

Vamos ver a correspondência do comando while com um fluxograma:

Fluxograma C Comentário
Fluxo5.jpg
while(contador<5) {
   printf("Entre com x\n");
   scanf("%f",&x);
   soma=soma+x;
   contador = contador + 1;
}
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.