Comando de Controle Do-While

Vamos começar mais um artigo da série ALGORITMOS e hoje falaremos sobre mais um comando de controle de programa, o 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 >>

Atuo como Professora de Informática e Computação desde 2001. 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 didáticos, trabalhei com pesquisa, ensino, extensão e inovação. Também ministrei palestras em vários eventos. Comecei meu Doutorado na área de Machine Learning - mais especificamente na area de 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 (twitch.tv/cissagatto)

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!!!

WEBINAR

Imagens de Ultrassom: Princípios e Aplicações

DATA: 26/10 ÀS 19:30 H