Comando de Controle Do-While

Operações relacionais e lógicas Operações Aritméticas variáveis Tipos de dados Estruturas Aninhadas algoritmos

Vamos começar mais um artigo da série ALGORITMOS e hoje falaremos sobre mais um comando de controle de programa, o DO-WHILE.

 

 

Relembrando

 

Estruturas Condicionais:

  • IF/ELSE (SE/ENTÃO)
  • SWITCH/CASE (CHAVE/CASO)

Estruturas de Repetição:

  • WHILE (ENQUANTO)
  • REPEAT/UNTIL (REPITA ATÉ QUE) ou DO/WHILE (FAÇA ENQUANTO)
  • FOR (PARA)

 

 

DO-WHILE

 

O comando Do-While é parecido com o comando While, mas existe uma pequena diferença entre eles. Vamos observar o fluxograma apresentado na Figura 1:

  

Estrutura do-while
Figura 1: Estrutura do-while

  

Note que a condição de parada está depois dos comandos. Isso significa que o DO-WHILE sempre será executado pelo menos uma vez. Os comandos do bloco DO-WHILE só serão executados se a avaliação da condição resultar VERDADEIRA. Essa é a diferença entre esses dois comandos. A sintaxe é a seguinte:

 

 

Os comandos do do-while serão repetidos quantas vezes forem necessárias até que a condição definida seja alcançada. Vamos ver um exemplo:

 

 

Esse exemplo mostra como somar os números de 1 a 10, sem a necessidade de alguém digitar os números, o próprio programa faz a soma sozinho. São necessárias duas variáveis: i e soma. A variável i funciona como um contador, a cada vez que se entra no do-while, ele soma mais um, e é assim que conseguimos chegar ao valor 10. A variável soma armazena o valor da soma, que é o resultado de soma + i, e também é somado de forma iterativa, ou seja, a cada vez que o do-while é executado.

 

A condição de parada desse LOOP é i=10, então, enquanto o valor de i não chegar à 10, o LOOP continuará executando. Quando i for igual a 10, a execução dos comandos do bloco do-while são encerradas, e o controle volta para o programa principal. Esse código faz exatamente a mesma coisa que o código do artigo anterior, mas desta vez estamos usando DO-WHILE e não WHILE ou FOR.

 

As linhas de 7 a 12 são as que correspondem ao comando do-while que, no VISUALG, no PASCAL e no PSEUDOCÓDIGO é chamado de REPEAT-UNTIL ou REPITA ATÉ QUE. A Tabela 1 apresenta o teste de mesa do código:

  

 Tabela 1: Teste de Mesa

iteraçãosoma ← soma + ii ← i + 1escreva iescreva somaaté (i=10)
1

soma ← 0 + 0

soma ← 0

i ← 0 + 1

i ← 1

10

1 = 10

F

2

soma ← 0 + 1

soma ← 1

i ← 1 + 1

i ← 2

21

2 = 10

F

3

soma ← 1 + 2

soma ← 3

i ← 2 + 1

i ← 3

33

3 = 10

F

4

soma ← 3 + 3

soma ← 6

i ← 3 + 1

i ← 4

46

4 = 10

F

5

soma ← 6 + 4

soma ← 10

i ← 4 + 1

i ← 5

510

5 = 10

F

6

soma ← 10 + 5

soma ← 15

i ← 5 + 1

i ← 6

615

6 = 10

F

7

soma ← 15 +6

soma ← 21

i ← 6 + 1

i ← 7

721

7 = 10

F

8

soma ← 21 + 7

soma ← 28

i ← 7 + 1

i ← 8

828

8 = 10

F

9

soma ← 28 + 8

soma ← 36

i ← 8 + 1

i ← 9

936

9 = 10

F

10

soma ← 36 + 9

soma ← 45

i ← 9 + 1

i ← 1

1045

10 = 10

V

11----

-

  

No teste de mesa verificamos que, enquanto a resposta da condição for FALSA, os comandos contidos no DO-WHILE continuarão a executar. A partir do momento em que i=10 for VERDADEIRO, a execução do bloco é encerrada. Vamos ver agora como fica esse mesmo código em outras linguagens:

 

JAVA

 

PASCAL

 

C

 

C++

  

Observem que nas linguagens C, C++ e Java a condição de parada é i<10 e no Pascal e no VisuAlg é i=10. Se você tentar usar i=10 nessas linguagens, o código entrará em loop infinito, devido à estrutura da própria linguagem de programação, por isso, é sempre bom aprender as estruturas e sintaxe de cada linguagem. O raciocínio está certo, mas a forma com que a linguagem trabalha pode não aceitar a forma que você quer fazer, portanto, consulte sempre o manual da Linguagem específica.

 

 

Conclusão

 

Assim terminamos a parte de comando de controle de programa! A partir dos próximos artigos vamos estudar um pouco sobre Estruturas de Dados simples: arrays e registros.

 

 

Exercícios

 

1. Faça um programa para calcular a área de um triângulo e que não permita a entrada de dados inválidos, ou seja, medidas menores ou iguais à zero.

 

2. Faça um programa que apresente o menu de opções a seguir, permita ao usuário escolher a opção desejada, receba os dados necessários para executar a operação e mostre o resultado. Verifique a possibilidade de opção inválida e não se preocupe com restrições do tipo salário inválido. Menu de opções: 1 – Imposto, 2 – Novo Salário, 3 – Classificação, 4 – Finalizar o programa, 5 – Finalizar o programa. Digite a opção desejada. Na opção 1: receber o salário de um funcionário, calcular e mostrar o valor do imposto usando as regras da tabela 3. Na opção 2: receber o salário de um funcionário, calcular e mostrar o valor do novo salário usando as regras da tabela 4. Na opção 3: receber o salário de um funcionário e mostrar sua classificação usando a tabela 5.

 

Tabela 3

SALÁRIOS

% DO IMPOSTO

Menor que R$500,00

5

De R$500,00 a R$850,00

10

Acima de R$850,00

15

 

 

Tabela 4

SALÁRIOS

AUMENTO

Maiores que R$1.500,00

R$250,00

De R$750,00 (inclusive) a R$1.500,00 (inclusive)

R$50,00

De R$450,00 (inclusive) a R$750,00

R$75,00

Menores que R$450,00

R$100,00

 

 

Tabela 5

SALÁRIOS

CLASSIFICAÇÃO

Até R$700,00

Mal remunerado

Maiores que R$700,00

Bem remunerado

 

 

3. Faça um programa que receba várias idades, calcule e mostre a média das idades digitadas. Finalize digitando idade igual a zero.

 

4. Foi feita uma pesquisa sobre a audiência de canal de TV em várias casas de uma cidade, em determinado dia. Para cada casa consultada foi fornecido o número do canal (4, 5, 7, 12) e o número de pessoas que estavam assistindo àquele canal. Se a televisão estivesse desligada, nada era anotado, ou seja, essa casa não entrava na pesquisa. Faça um programa que: a) Leia um número indeterminado de dados (número do canal e número de pessoas que estavam assistindo); b) Calcule e mostre a porcentagem de audiência de cada canal. Para encerrar a entrada de dados, digite o número do canal zero.

Outros artigos da série

<< Comando de Controle ForFunções e Procedimentos - Parte 1 >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Elaine Cecília Gatto
Bacharel em Engenharia de Computação. Mestre em Ciência da Computação. Doutoranda em Ciência da Computação. Co-fundarora e Líder das #GarotasCPBr. Pesquisadora Convidada no Grupo de Pesquisa: "Artes em Tecnologias Emergentes" do Programa de Pós Graduação em Design na UNESP Campus Bauru. Cantora, Docente no Magistério Superior, Geek, Nerd, Otaku e Gamer. Apaixonada por Michael Jackson, Macross, Rocky Balboa, Séries, Filmes, Cervejas e Vinhos. Mais informações sobre mim você encontra em: http://lattes.cnpq.br/8559022477811603.

2
Deixe um comentário

avatar
 
1 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Elaine Cecília GattoSouza Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Souza
Visitante
Souza

Copiei os fontes, vou brincar com eles em cada compilador necessário para tal e depois parto para os exercícios.

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

opa!!! AÍ SIM!!!