Buscar

Aula 16

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Algoritmos Aplicados a Engenharia 
 Aula 16 
Os direitos desta obra foram cedidos à Universidade Nove de Julho 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Este material é parte integrante da disciplina, oferecida pela UNINOVE. 
O acesso às atividades, conteúdos multimídia e interativo, encontros virtuais, fóruns de 
discussão e a comunicação com o professor devem ser feitos diretamente no ambiente 
virtual de aprendizagem UNINOVE. 
 
 
Uso consciente do papel. 
Cause boa impressão, imprima menos. 
 
Aula 16: Laços de Repetição 
Objetivo: Entender como um programa executa diversas vezes a mesma instrução e 
quais são suas utilidades. Os laços ensinados serão os laços while e do-while. 
 
 
 
O Laço while 
O segundo comando de laço em C é o while. While, do inglês, significa 
enquanto. De uma maneira geral, as instruções no corpo de um while são 
executadas enquanto as condições testadas são válidas. O laço while possui os 
mesmos argumentos de um laço for, porém, são distribuídos ao longo do corpo do 
comando. 
Utilizamos o laço while quando o laço pode ser terminado inesperadamente, 
por condições desenvolvidas dentro do corpo do laço. Veja o exemplo: 
 
 
Podemos ver que a estrutura do while testa uma condição. Se ela for 
verdadeira, a declaração é executada e o teste é feito novamente, e assim por 
diante. 
O programa acima faz a leitura dos caracteres digitados. Se a letra “u” for 
pressionada, o programa é encerrado. Note que, diferentemente do for, em um laço 
while não conhecemos de antemão a quantidade de iterações que serão 
executadas. Nesse caso, o laço while é mais apropriado que o laço for. 
 
 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
 
int main (){ 
 char Ch; 
 Ch='\0'; 
 while (Ch!='u'){ 
 Ch = getch(); 
 } 
 printf("A letra u foi pressionada. Fim de programa."); 
 system("PAUSE"); 
 return 0; 
} 
 
Sintaxe do laço while 
O comando while consiste na palavra-chave while seguida de uma expressão 
de teste entre parênteses. Se o teste realizado for verdadeiro, o corpo do while será 
executado. É feito então um novo teste, sendo o corpo do while executado caso o 
teste retorne verdadeiro novamente. 
De uma forma geral, o laço for pode ser substituído da seguinte maneira: 
 
Na aula passada, uma sequência de 20 asteriscos foi impressa com o auxílio 
da função for. Agora veja a mesma impressão com o uso da função while: 
 
 
 
O laço while encadeado 
Uma das instruções do corpo de um laço while pode ser outro laço while, o 
que caracteriza o encadeamento de funções. Exemplo: 
while (Teste){ 
 Incremento; 
} 
#include <stdio.h> 
#include <stdlib.h> 
int main(){ 
 int i = 0; 
 while (i<20){ 
 printf("%c", '*'); 
 i++; 
 } 
 printf("\n"); 
 system("PAUSE"); 
 return 0; 
} 
 
 
 
 
A função rand(), que utiliza a biblioteca stdlib.h, retorna um número inteiro 
aleatório. A expressão rand() % 26 resulta o resto da divisão do valor de rand() por 
26. O resultado é um número entre 0 e 25. A esse número é somado o caractere a 
para gerar uma letra minúscula aleatória. 
Codifique o programa acima e faça os testes. 
 
O Laço do-while 
O terceiro e último comando de laço em C é o laço do-while. De uma forma 
geral, a sua sintaxe é: 
 
Mesmo que a declaração seja apenas uma instrução, mesmo que 
desnecessário, é uma boa prática manter as chaves para melhorar o entendimento 
/* Exemplo do uso de comandos while encadeados */ 
/* Programa de adivinhação */ 
#include <stdio.h> 
#include <stdlib.h> /* para system() e rand() */ 
#include <conio.h> /* para getch() */ 
int main(){ 
 char ch='s'; /* s de sim */ 
 char resp; /* resposta do usuário */ 
 char secreto; 
 int tentativas; 
 while(ch=='s'){ 
 secreto = rand() % 26 + 'a'; 
 tentativas = 1; 
 printf("\n\nDigite uma letra entre 'a' e 'z':\n"); 
 while((resp=getch())!= secreto){ 
 printf("%c é incorreto. Tente novamente\n",resp); 
 tentativas++; 
 } 
 printf("%c É CORRETO!!\n", resp); 
 printf("Voce acertou em %d tentativas\n", tentativas); 
 printf("\nQuer jogar novamente? (s/n): "); 
 ch=getche(); 
 } 
 printf("\nAté logo e boa sorte!\n"); 
 system("PAUSE"); 
 return 0; 
} 
do{ 
 Incremento; 
} while (Teste); 
 
desse comando. Note que, ao final do comando, há um ponto e vírgula, que é 
obrigatório. 
Pela análise do bloco acima, é possível notar que a estrutura do-while 
executa a declaração, testa a condição e, caso verdadeiro, volta para a declaração. 
A importância do comando do-while é que ele, ao contrário do for e do while, garante 
que a declaração será executada pelo menos uma vez. 
Um bom uso do comando do-while é em menus, nos quais é necessário 
garantir que o valor digitado pelo usuário seja válido. 
O exemplo, a seguir, faz uso do laço do-while no programa de adivinhação 
apresentado nesta mesma aula: 
 
 
 
/* Exemplo do uso de comandos while aninhados */ 
/* Programa de adivinhação */ 
#include <stdio.h> 
#include <stdlib.h> /* para system() e rand() */ 
#include <conio.h> /* para getch() */ 
int main(){ 
 char ch='s'; /* s de sim */ 
 char resp; /* resposta do usuário */ 
 char secreto; 
 int tentativas; 
 do{ 
 secreto = rand() % 26 + 'a'; 
 tentativas = 1; 
 printf("\n\nDigite uma letra entre 'a' e 'z':\n"); 
 while((resp=getch())!= secreto){ 
 printf("%c é incorreto. Tente novamente\n",resp); 
 tentativas++; 
 } 
 printf("%c É CORRETO!!\n", resp); 
 printf("Voce acertou em %d tentativas\n", tentativas); 
 printf("\nQuer jogar novamente? (s/n): "); 
 ch=getche(); 
 } while(ch=='s'); 
 printf("\nAté logo e boa sorte!\n"); 
 system("PAUSE"); 
 return 0; 
} 
 
 
 
* O QR Code é um código de barras que armazena links às páginas da web. Utilize o leitor de QR Code de sua preferência 
para acessar esses links de um celular, tablet ou outro dispositivo com o plugin Flash instalado. 
 
 
Referências 
DASGUPTA, Sanjoy; PAPADIMITRIOU, Christos; VAZIRANI, Umesh. Algoritmos. 
São Paulo: McGraw Hill, 2009. 
HEINEMAN, George T.; POLLICE, Gary; SELKOW, Stanley. Algoritmos: o guia 
essencial. Rio de Janeiro: Alta Books, 2009. 
MANZANO, André Luiz N. G.; MANZANO, Maria Izabel N. G. Estudo dirigido de 
informática básica. São Paulo: Érica, 2008. 
MANZANO, José Augusto N. G. Estudo dirigido de linguagem C. São Paulo: Érica, 
2009. 
MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de Oliveira. Algoritmos, 
Lógica para desenvolvimento de programação de computadores. São Paulo: Érica, 
19 ed., 2006. 
MIZRAHI, Victorine Viviane. Treinamento em linguagem C. São Paulo: Pearson, 
2008. 2v. 
 
SCHILDT, Herbert. Mayer. C completo e total. São Paulo: Pearson, 2006. 
VILARIM, Gilvan. Algoritmos de programação para Iniciantes. São Paulo: Ciência 
Moderna, 2004.

Outros materiais