Buscar

Bac004 - Parte 6 (Comandos de Controle em C)

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 40 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 40 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 9, do total de 40 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

Prévia do material em texto

Comandos de Controle em C
Comandos de Iteração - 
Repetição
2
Comandos de Iteração
• Existem situações em que é 
necessário repetir um determinado 
trecho de programa um número de 
vezes ou até que algo aconteça. 
3
Comandos de Iteração
 A estrutura de repetição permite que 
uma seqüência de comandos seja 
executada repetidamente até que uma 
determinada condição de interrupção 
seja satisfeita.
 A condição de interrupção que deve 
ser satisfeita é representada por uma 
expressão lógica.
4
Comandos de Iteração - 
Exemplo
• Suponha que um usuário deseje verificar a área de 
um número não determinado de triângulos. 
• O problema é que não se sabe a quantidade exata 
de triângulos. 
• Se fosse implementado um programa que 
verificasse a área de apenas um triângulo, o usuário 
teria que executá-lo quantas vezes fosse 
necessário, saindo e entrando novamente no 
programa. 
• É possível implementar um programa que repetisse 
a verificação enquanto o usuário desejasse, 
fazendo-lhe uma pergunta como "Deseja verificar 
área de outro triângulo?". 
5
Comandos de Iteração - 
Exemplo
• Suponha que se deseje calcular a 
soma de idades de um número 
indeterminado de pessoas em que o 
usuário digita uma idade inválida (0 ou 
um número negativo) quando deseja 
encerrar a entrada das idades. 
• Assim, repetem-se a entrada e o 
cálculo da soma, terminando quando 
o usuário digita uma idade inválida.
6
Comandos de Iteração
 Existem três estruturas de repetição que podem ser 
utilizadas:
 for – recomendado quando há um número 
determinado de repetições
 while – recomendado quando há um número 
indeterminado de repetições
 do while – também recomendado quando há um 
número indeterminado de repetições, mas 
possui diferenças em relação ao while.
7
Comandos de Iteração
• Apesar de cada laço ter a sua 
recomendação, todo problema pode 
ser resolvido com qualquer laço.
• Existem diferenças entre eles, como 
na sintaxe e em seu próprio uso.
8 8
Comandos de Iteração – 
Comando for
Forma Geral
for (inicialização; condição; incremento)
 comando;
 onde:
 inicialização: geralmente um comando de atribuição que 
coloca um valor inicial para as variáveis de controle do 
laço for.
 condição: uma condição relacional, lógica ou aritmética que 
define até quando a iteração pode cont inuar (condição de 
permanência da repet ição)
 incremento: define como a variável de controle do laço varia 
cada vez que o laço é repet ido.
•Deve-se usar chaves se o corpo do laço tiver mais de uma 
inst rução.
9
Comandos de Iteração – 
Comando for
 Existirá sempre uma inicialização da 
variável de controle, um teste para 
verificar se a variável atingiu o limite e 
um acréscimo/decréscimo na variável 
de controle.
10
Comandos de Iteração – 
Comando for
//ProgC036.cpp - escreve * 20 vezes na tela
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
 int i;
 for( i=0 ; i < 20 ; i++)
 cout << '*';
 cout << endl;
 system("PAUSE");
 return 0;
}
Comando for
inicialização
Condição de parada
Incremento
Comando que irá se repetir
11
Comandos de Iteração – 
Comando for
//ProgC037 - Imprime a tabuada do 6
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
 int i;
 for( i=1 ; i <= 10 ; i++ )
 cout << '\n' << "\t" << i << " x 6 = " << "\t" << (i*6);
 cout << endl;
 system("PAUSE");
 return 0;
}
Comando for
Comando que irá se repetir
inicialização
Condição de parada
Incremento
12 12
Comandos de Iteração – 
Comando for
/* ProgC038.cpp
Programa que conta de 1 a 100*/
#include <iostream>
#include <cstdlib>
int main ( ){
int Contador;
for (Contador = 1; Contador <= 100; Contador++)
std::cout << "\t" << Contador;
system("PAUSE > null");
return 0;
}
Comando for
Comando que irá se repetir
inicialização
Condição de parada
Incremento
13
Comandos de Iteração – 
Comando for
//ProgC039.cpp - Apresenta números pares de 
// 0 a 100
#include <iostream>
using namespace std;
int main(){
 int i;
 for (i = 0; i <= 100; i = i + 2)
 cout << i << "\t";
 return 0;
}
Comando for Comando que irá se repetir
inicialização Condição de parada
Incremento
14
Comandos de Iteração – 
Comando for
//ProgC040 - Calcula o quadrado de um número usando soma
//o quadrado de n = soma dos n primeiros números ímpares
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
 int n, soma=0;
 cout << "Digite um numero>" << endl;
 cin >> n;
 cout << "O quadrado de " << n << " e ";
 if( n < 0 ) n = -n; //se negativo, muda o sinal
 for(int i=1 ; n > 0 ; n--) {
 soma +=i;
 i += 2;
 }
 cout << soma << endl;
 system("PAUSE");
 return 0;
}
Declaração do i dentro do for, 
só existe neste bloco.
15
Comandos de Iteração – 
Comando for
//ProgC041 - Série de Fibonacci
#include <iostream>
using namespace std;
int main(){
 int N, a, b, c;
 cout << "Digite o numero de termos desejados: "; cin >> N;
 a = 0; b = 1;
 cout << b << endl;
 if (N ==1)
 return 0;
 for (int i = 2; i <= N; i++){
 c = a + b;
 a = b;
 b = c;
 cout << c << endl; }
 return 0;
}
Cálculo dos termos da série. O primeiro e 
o segundo termo são iguais a 1.
Imprime o primeiro termo
O próximo termo é igual à soma dos dois 
anteriores.
16
Comandos de Iteração – 
Comando for
//ProgC042 - Imprime linha - Repetição e Função
#include <iostream>
#include <cstdlib>
using namespace std;
void linha(int n); 
int main(){
 linha(21); cout << endl;
 cout << "* FELIZ ANIVERSARIO *" << endl;
 linha(21);
 cout << endl; system("PAUSE"); return 0;
}
void linha( int n){
 for(int i=0; i<n; i++) cout << '*';
}
Protótipo da Função
Chamada da Função
Função
Comando de repetição
17
Comandos de Iteração – 
Comando for
//ProgC043.cpp - Imprime os divisores de um número
#include <iostream>
using namespace std;
bool divisivel(int x, int y){
 if (x % y == 0)
 return true;
 return false;
}
int main(){
 int N;
 cout << "Digite um numero: "; cin >> N;
 for (int i = 1; i <= N; i++){
 if ( divisivel(N, i) )
 cout << i << endl;
 }
 return 0;
}
Função divisível – retorna tipo 
de dados bool – true ou false
Chamada da Função divisível
Repetição
18
Comandos de Iteração – 
Comando for
//ProgC044.cpp - Imprime um tabuleiro de xadrez
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
 system("cls"); //limpa a tela
 for(int lin=1;lin<=8;lin++) //move o cursor para baixo
 {
 for(int col=1;col<=8;col++) //move o cursor para direita
 if((lin+col)%2==0) //é número par?
 cout << "\xdb\xdb";
 else
 cout << " ";
 cout << endl;
 }
 system("PAUSE");
 return 0;
}
Comando for aninhado
19
Comandos de Iteração – 
Comando for
//ProgC045.cpp - Imprime a tabuada do 2 ao 9
#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
int main(){
 system("cls"); //limpa a tela
 for( int k=0 ; k <= 1 ; k++) {
 cout << endl;
 for(int i=1 ; i <= 4 ; i++)
 cout << "TABUADA DO" << setw(3) << (i+4*k+1) << " ";
 cout << endl;
 for( int i = 1; i <= 9 ; i++) {
 for( int j=2+4*k; j <=5+4*k; j++)
 cout<<setw(3)<<j<<"x"<<setw(3)<<i<<" = "<<setw(3)<<j*i<<" ";
 cout << endl;
 }
 }system("PAUSE"); return 0;
}
Comando for aninhado
20 20
Comandos de Iteração – 
Comando for
/* ProgC046.cpp
Malha de repetição For com comando composto */
#include <iostream>#include <cstdlib>
int main ( ){
int Indice, Numero;
for (Indice = 100; Indice != 65; Indice -= 5){
Numero = Indice * Indice;
std::cout << "\nO quadrado de " << Indice << " e: " << 
Numero;
}
system("PAUSE > null");
return 0;
}
Condição e incremento diferenciado
21 21
Comandos de Iteração – 
Comando for
/* ProgC047.cpp
Repeticao For com 2 variaveis de controle */
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <string.h>
void gotoxy (int x, int y){
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){x,y});
}
int main ( ){
char Nome[9] = "UNIFEI";
int Indice1,Indice2;
system ("CLS");
for (Indice1=0, Indice2=strlen (Nome) - 1; Indice1 < strlen (Nome); Indice1++, Indice2--)
{
gotoxy(10+Indice1, 1);
std::cout << Nome[Indice1];
gotoxy(10+Indice1, 2);
std::cout << Nome[Indice2];
}
system("PAUSE > null");
return 0;
}
Função que possibilita colocar o 
cursor em um ponto da tela.
Comando for trabalhando com 
mais de uma variável de controle.
Função da Biblioteca 
windows.
22 22
Comandos de Iteração – 
Comando for - Exemplo
/* ProgC048.cpp
Repeticao for infinita */
#include <iostream>
#include <cstdlib>
int main ( ){
for (;;)
std::cout << "Laco sem fim!";
system("PAUSE > null");
return 0;
}
O for possui partes que não são obrigatórias, assim este 
comando torna-se uma repetição infinita.
23 23
Comandos de Iteração – 
Comando for - Exemplo
/* ProgC049.cpp
Repeticao for sem corpo */
#include <iostream>
#include <cstdlib>
int main ( ){
long int Contador;
std:: cout << "Espere um pouco...";
for (Contador = 1; Contador < 5000000; Contador++);
std:: cout << "\n\nTerminei !";
system("PAUSE > null");
return 0;
}
Comando for que não tem nenhum comando sendo 
repetido. Útil quando se deseja que o tempo passe.
24
Comandos de Iteração – 
Comando while
• A estrutura de repetição while é utilizada 
quando não se sabe o número de vezes 
que um trecho do algoritmo deve ser 
repetido, embora também possa ser 
utilizada quando se conhece esse número.
• Essa estrutura baseia-se na análise de uma 
condição, de forma que a repetição será 
feita enquanto a condição mostrar-se 
verdadeira.
25
Comandos de Iteração – 
Comando while
 Enquanto o valor da condição for 
verdadeiro, as ações dos comandos 
são executadas. 
 Quando for falso, o comando é 
abandonado. 
 Se já da primeira vez o resultado é 
falso, os comandos não são 
executados nenhuma vez.
26 26
Comandos de Iteração – 
Comando while
Comando while
Forma Geral
while (condição)
comando;
 onde:
 condição: é qualquer expressão onde o 
resultado é um valor igual ou diferente de zero.
 comando: é um comando vazio, um comando
simples ou um comando em bloco (comando
composto).
27
Comandos de Iteração – 
Comando while
//ProgC050.cpp - Escreve 20 asteriscos na tela.
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
 int i = 0; 
 while( i < 20 ) 
 {
 cout << '*';
 i++; 
 }
 cout << endl; system("PAUSE"); return 0;
}
Comando 
while
Inicialização da variável de controle
Teste da 
condição
Incremento 
da variável
28
Comandos de Iteração – 
Comando while
//ProgC051.cpp - Jogo de Cara e Coroa
#include <iostream>
#include <cstdlib>
using namespace std;
int main(){
 int n, perda=0, ganho=0; cout << "Quantas vezes que jogar? "; cin >> n;
 for ( int i=0; i < n; i++) {
 int resp; cout << "Escolha: 0=Cara e 1=Coroa: "; cin >> resp;
 while ( resp != 0 && resp != 1) { cout << "ERRO: entre 0 cara e 1 coroa "; cin >> resp; }
 if (rand()%2==resp)
 { ganho++; if(resp==0) cout << "Deu Cara, voce ganhou." << endl;
 else cout << "Deu Coroa, voce ganhou." << endl;
 } else
 { perda++; if(resp==0) cout << "Deu Coroa, voce perdeu." << endl;
 else cout << "Deu Cara, voce perdeu.";
 }
 }
 cout << "\n\nRelatorio Final:"; cout << "\nNo. de jogos que voce ganhou: " << ganho;
 cout << "\nNo. de jogos que voce perdeu: " << perda << endl; system("PAUSE"); return 0;
}
Comando 
while
Comando 
for
29
Comandos de Iteração – 
Comando while
//ProgC052 - Programa que calcula a 
Média
#include <iostream>
using namespace std;
int main(){
 int N, alunos, acima_60;
 float nota, soma, media;
 cout << "Digite a quantidade de alunos: ";
 cin >> N;
 acima_60 = 0;
 soma = 0;
 alunos = 1;
 
while (alunos <= N){
 cout << "Digite a nota do aluno numero " 
<< alunos << endl;
 cin >> nota;
 soma = soma + nota;
 if (nota > 60)
 acima_60++;
 alunos++; }
 media = soma / N;
 cout << "Numero de alunos acima de 60: " 
<< acima_60 << endl;
 cout << "Media das notas da turma: " << 
media << endl;
 return 0;
}
Inicialização
Condição
Incremento
30
Comandos de Iteração – 
Comando while
//ProgC053.cpp - Validação de entrada de 
dados
#include <iostream>
using namespace std;
int main(){
 float base, altura, area;
 base = 0;
 while (base <= 0){
 cout << "Digite a medida da base: ";
 cin >> base; }
 altura = 0;
 
 while (altura <= 0){
 cout << "\nDigite a medida da altura ";
 cin >> altura; }
 area = base * altura / 2;
 cout << "Area = " << area;
 return 0;
}
Inicialização
Condição
Nova entrada
Inicialização
Inicialização
Condição
Nova entrada
31 31
Comandos de Iteração – 
Comando while - Exemplo
/* ProgC054.cpp
Programa que apresenta a malha de repeticao while */
#include <iostream>
#include <stdio.h>
#include <cstdlib>
int main ( ){
char Caractere = 0;
while (Caractere != '\n')
 Caractere = getchar();
std::cout << "\nFim";
system("PAUSE > null");
return 0;
}
Inicialização
Condição
Atualização
32
Comandos de Iteração – 
Comando while - Exemplo
//ProgC055.cpp Conta caracteres de uma frase
#include <iostream>
#include <cstdlib>
#include <stdio.h>
using namespace std;
int main(){
 int cont=0;
 char Caractere;
 while(Caractere = getchar() != '\n')
 cont++;
 cout << "\nO numero de caracteres e " << cont << 
endl;
 system("PAUSE"); return 0;
}
Inicialização, condição e incremento
33
Comandos de Iteração – 
Comando do while
 A estrutura de repetição do-while pode 
ser utilizada quando o número de 
repetições necessárias não é fixo.
 Os comandos são executados pelo 
menos uma vez. Quando a condição é 
encontrada, ela é testada. 
 Os comandos são executados até que a 
condição se torne falsa.
34 34
Comandos de Iteração – 
Comando do while
 Forma Geral
do {
comando;
} while (condição);
 Ao contrário dos laços while e for que testam a 
condição de permanência no começo, o laço do-
while testa a condição de permanência no final.
 O comando dentro das chaves será executado 
enquanto a condição for satisfeita.
Comando do … while
35 35
Comandos de Iteração – 
Comando do while
/* ProgC056.cpp
Programa que apresenta a malha de repeticao do-while */
#include <iostream>
#include <cstdlib>
int main ( ){
int Contador = 1;
do {
std::cout << Contador << "\t";
Contador++;
} while (Contador <= 100);
system("PAUSE > null");
return 0;
}
Comando do … while
Inicialização
Atualização
Teste
36
Comandos de Iteração – 
Comando do while
//ProgC057.cpp - Teste dos Triângulos
#include <iostream>
using namespace std;
int main(){
 float base, altura, area;
 do {
 cout << "Digite a medida da base: ";
 cin >> base;
 } while (base <= 0);
 do {
 cout << "\nDigite a medida da altura ";
 cin >> altura;
 } while (altura <= 0);
 area = base * altura / 2;
 cout << "Area = " << area;
 return0;
}
Comando do … while
Comando do … while
Atualização
Atualização
Teste
Teste
37
Comandos de Iteração – 
Comando do while
//ProgC058.cpp - Testa a capacidade de adivinhar uma letra
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main(){
 char joga;
 do //inicio do laço
 { int adivinha; int tentativas = 1; int resp;
 srand(time(NULL)); adivinha = rand() % 26;
 cout << "\n\nDigite um numero entre 0 e 25: " << endl; cin >> resp;
 while(resp != adivinha)
 { cout << resp << " e incorreto. Tente novamente" << endl;
 tentativas++; cin >> resp; }
 cout << resp << "\n E CORRETO!!" << "\nVoce acertou em " << tentativas << " tentativas";
 cout << "\nQuer jogar novamente? (s/n): "; cin >> joga;
 } while(joga =='s'); //fim do laço
 cout << "\nAte logo!" << endl; system("PAUSE"); return 0;
}
Comando do … while
Comando while
38
Comandos de Iteração – 
Comando do while
//ProgC059 - Mostra repetição e função com passagem de argumentos por referência
#include <iostream>
#include <cstdlib>
using namespace std;
void reajusta20( float& p, float& r);
int main(){
 float preco, val_reaj;
 do {
 cout << "Insira o preco atual ou 0 para terminar: ";
 cin >> preco; reajusta20(preco,val_reaj);
 cout << "Preco novo = " << preco << endl;
 cout << "Aumento = " << val_reaj << endl;
 } while( preco != 0.0);
 system("PAUSE"); return 0;
}
void reajusta20(float& p, float& r) //Reajusta o preço em 20%
{
 r = p * 0.2; p = p * 1.2;
}
Comando do … while
Função com passagem 
por referência
39
Tópicos para Discussão
 Estruturas de Repetição
 for
 while
 do while
40 40
Exercícios
 Faça um programa que leia várias 
idades e que calcule e mostre a 
média das idades digitadas. Para 
finalizar a entrada das idades o 
usuário deve digitar idade igual a 
zero. Deve ser criada uma versão do 
programa para cada estrutura de 
repetição estudada (while, for e 
do...while). 
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40

Outros materiais