Comando de Controle Do-While

PSEUDOCODIGO bubble sort switch case

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 >>
Website | Veja + conteúdo

Atuo como Professora de Informática e Computação desde 2001, atendendo de forma especial a Terceira Idade e Concurseiros. Desde 2009 venho atuando como Docente no Ensino Superior em diversos cursos de Graduação e Pós Graduação Lato Sensu, tanto presenciais, quanto semipresenciais e à distância. Ministrei várias disciplinas onde ensino os estudantes a desenvolverem plataformas e sistemas computacionais. Orientei vários trabalhos acadêmicos, desenvolvi inúmeros materiais, trabalhei com pesquisa, ensino, extensão e inovação, ministrei palestras em vários eventos. Mais recentemente venho ofertando serviços na área de tecnologia como desenvolvimento de sistemas, treinamentos, consultoria, mentoria, etc. Comecei meu Doutorado na área de Machine Learning (Multi-label Classification) na UFSCar em 02/2019 e devo terminar em 01/2023. Também estudo canto, jogo vôlei, sou geek, nerd, otaku e gamer!

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

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

Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Souza
Souza
03/11/2016 12:52

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
Elaine Cecília Gatto
Reply to  Souza
04/11/2016 09:23

opa!!! AÍ SIM!!!

Talvez você goste:

Séries



Outros da Série

Menu