Comandos de Controle em C
Comandos de Iteração
-Repetição
2
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.
3
3Comandos 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 continuar (condição de
permanência da repetição)
incremento: define como a variável de controle do laço
varia
cada vez que o laço é repetido.
•
Deve-se usar chaves se o corpo do laço tiver mais de uma
4
Comandos de Iteração –
Comando for
//ProgC043.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
5
Comandos de Iteração –
Comando for
//ProgC044 - 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
6
6Comandos 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).
7
Comandos de Iteração –
Comando while
//ProgC045.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
8
Comandos de Iteração –
Comando while
//ProgC046.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
9
9Comandos 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.
10
10Comandos de Iteração –
Comando do while
/* ProgC047.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
11
Comandos de Iteração –
Comando do while
//ProgC048.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; return 0; }
Comando do … while
Comando do … while
Atualização
Atualização
Teste
Teste
03/08/13
Programas Exemplos
-Diversos
13
Comandos de Iteração –
Comando for
//ProgC049.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
14
Comandos de Iteração –
Comando for
//ProgC050 - 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
//ProgC051 - 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
16
Comandos de Iteração –
Comando for
//ProgC052.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
17
17Comandos de Iteração –
Comando for
/* ProgC053.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;
}
18
18Comandos de Iteração –
Comando for
/* ProgC054.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
19
19Comandos de Iteração –
Comando for - Exemplo
/* ProgC055.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.
20
20Comandos de Iteração –
Comando for - Exemplo
/* ProgC056.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.
21
Comandos de Iteração –
Comando while
//ProgC057.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; }