Você está na página 1de 7

Linguagem C Aula 3

Estrutura Repetitiva
Permite que um bloco ou conjunto de comandos ou estruturas sejam repetidas enquanto a condio indicada for verdadeira. Na linguagem C existem trs tipos de uso de estruturas de repetio. 1 Estrutura WHILE (enquanto) Declarao: while (condio) { Bloco com um ou mais comandos ou estruturas } onde, condio a comparao de dois valores que podem ser constantes, contedos de variveis de memria, resultado de expresses aritmticas ou retorno de funes, por meio do uso de operadores relacionais. Aqui pode ser utilizado uma expresso condicional com mais de uma condio relacionada com os operadores && (E) e ||(OU). Se a condio for verdadeira o bloco de comandos entre chaves { } ser executado. Ao ser encontrado a chave de fim de bloco, a execuo do algoritmo retorna ao incio da estrutura para uma nova avaliao da condio. Quando a condio for falsa, o bloco no executado e a execuo do programa continua a partir do prximo comando aps a estrutura. No obrigatrio o uso de chaves para blocos com apenas um comando.

Exemplos:
1- Receber por digitao uma certa quantidade de nmeros, enquanto o usurio desejar digitar nmeros. Som-los e visualizar o resultado da soma ao final.
#include <iostream.h> #include <stdlib.h> int num, soma; //declarao das variveis inteiras char continua; //declarao de varivel tipo caracter int main () //incio da funo main {soma = 0; //inicializa soma com o valor 0 continua = S; //inicializa continua com S while ( continua ==S) //se verdadeira executa o bloco {cout <<\nDigite um nmero; //envia um texto cin >> num; //armazena o valor digitado em num soma = soma + num; //acumula o contedo de num em soma cout <<\nDeseja continuar S/N; //envia um texto cin >> continua; //armazena o valor digitado em continua } //retorna ao inicio da estrutura cout <<\nA soma dos nmeros <<soma; //envia o texto e contedo cout <<\n\n; //salta duas linhas no vdeo system (pause); //executa uma pausa na execuo }

2- Receber por digitao 5 nmeros, som-los e visualizar o resultado da soma ao final.


#include <iostream.h> #include <stdlib.h> int num, soma, cont; //declarao das variveis inteiras int main () //incio da funo main {soma = 0; //inicializa soma com o valor 0 cont = 0; //inicializa cont com 0 while (cont < 5) //se verdadeira executa o bloco {cout <<\nDigite um nmero; //envia um texto cin >>num; //armazena o valor digitado em num soma = soma + num; //acumula o contedo de num em soma cont++; //acumula 1 em cont (cont = cont +1) } //retorna ao inicio da estrutura cout << \nA soma dos nmeros <<soma; //envia o texto e contedo cout <<\n\n; //salta duas linhas no vdeo system (pause); //executa uma pausa na execuo }

3 - Uma pesquisa de mercado entrevistou 100 pessoas para saber a preferncia pelos produtos A, B e C. Receber por digitao as preferncias dessas pessoas e visualizar ao final a quantidade de preferncias de cada tipo de produto.
#include <iostream.h> #include <stdlib.h> int totA, totB, totC,cont; //declarao das variveis inteiras char prod; //declarao de varivel tipo caracter int main () //incio da funo main {cont = 0; //inicializa cont com o valor 0 totA = 0; //inicializa totA com o valor 0 totB = 0; //inicializa totB com o valor 0 totC = 0; //inicializa totC com o valor 0 while (cont < 100) //se verdadeira executa o bloco {cout<< \nDigite o produto ; //envia o texto cin >> prod; //armazena o produto digitado em prod if (prod == 'A'|| prod == 'a') totA++; //acumula 1 na varivel totA (totA = totA +1) else if (prod == 'B' || prod == 'b') totB++; //acumula 1 na varivel totB (totB = totB +1) else if (prod == 'C' || prod == 'c') totC++; //acumula1 na varivel totC (totC = totC +1) cont++; //acumula 1 em cont (cont = cont + 1) } //retorna ao inicio da estrutura cout <<\nQtde de produtos A: <<totA; //envia o texto e contedo de totA cout <<\nQtde de produtos B: <<totB; //envia o texto e contedo de totB cout <<\nQtde de produtos C: <<totC; //envia o texto e contedo de totC cout <<\n\n; //salta duas linhas no vdeo system (pause); //executa uma pausa na execuo }

2 Estrutura DO ... WHILE (faa ... enquanto) Declarao: do { Bloco com um ou mais comandos ou estruturas }while (condio); onde, condio a comparao de dois valores que podem ser constantes, contedos de variveis de memria, resultado de expresses aritmticas ou retorno de funes, por meio do uso de operadores relacionais. Aqui pode ser utilizado uma expresso condicional com mais de uma condio relacionada com os operadores && (E) e ||(OU). Ao encontrar o comando do (faa) o bloco entre chaves { } executado. Ao terminar o bloco, a condio testada: se a condio for verdadeira a execuo retorna ao comando do e o bloco de comandos ser executado novamente. Quando a condio for falsa, o bloco no executado e a execuo do programa continua a partir do prximo comando aps a estrutura. No obrigatrio o uso de chaves para blocos com apenas um comando. Exemplo: Receber por digitao 5 nmeros, som-los e visualizar o resultado da soma ao final.
#include <iostream.h> #include <stdlib.h> int num, soma, cont; //declarao das variveis inteiras int main () //incio da funo main {soma = 0; //inicializa soma com o valor 0 cont = 0; //inicializa cont com 0 do //executa o bloco de comandos {cout <<\nDigite um nmero; //envia um texto cin >>num; //armazena o valor digitado em num soma = soma + num; //acumula o contedo de num em soma cont++; //acumula 1 em cont (cont = cont +1) } while (cont < 5); //se verdadeira executa o bloco novamente cout << \nA soma dos nmeros <<soma; //envia o texto e contedo cout <<\n\n; //salta duas linhas no vdeo system (pause); //executa uma pausa na execuo }

3 Estrutura FOR (para) Declarao: for (inicializaes ; condio ; incrementos ) { Bloco com um ou mais comandos ou estruturas } onde, inicializaes: uma ou mais inicializaes a serem feitas quando da primeira vez que a estrutura executada. Separar com virgulas se existirem vrias inicializaes. condio: a comparao de dois valores que podem ser constantes, contedos de variveis de memria, resultado de expresses aritmticas ou retorno de funes, por meio do uso de operadores relacionais. Aqui pode ser utilizado uma expresso condicional com mais de uma condio relacionada com os operadores && (E) e ||(OU). incrementos: um ou mais incrementos ou decrementos a serem executados sempre que houver um retorno para o incio da estrutura. Separar com virgulas se existirem vrios incrementos. A estrutura do for possui trs parmetros separados por ponto-e-virgula (;). Da primeira vez que a estrutura executada o parmetro das inicializaes executado e em seguida o parmetro com a condio avaliado. Se a condio for verdadeira o bloco de comandos entre chaves { } ser executado. Ao ser encontrado a chave de fim de bloco, a execuo do algoritmo retorna ao incio da estrutura. Sempre que houver retornos, primeiro executado o parmetro dos incrementos e em seguida, uma nova avaliao da condio. Quando a condio for falsa, o bloco no executado e a execuo do programa continua a partir do prximo comando aps a estrutura. No obrigatrio o uso de chaves para blocos com apenas um comando.

Exemplo: Receber por digitao 5 nmeros, som-los e visualizar o resultado da soma ao final.
#include <iostream.h> #include <stdlib.h> int num, soma, cont; //declarao das variveis inteiras int main () //incio da funo main { for (cont = 0,soma=0; cont < 5; cont++) {cout <<\nDigite um nmero; //envia um texto cin >>num; //armazena o valor digitado em num soma = soma + num; //acumula o contedo de num em soma } //retorna ao incio da estrutura cout << \nA soma dos nmeros <<soma; //envia o texto e contedo cout <<\n\n; //salta duas linhas no vdeo system (pause); //executa uma pausa na execuo } Obs: as inicializaes das variveis cont e soma, que eram feitas antes de comear a estrutura de repetio, passaram a ser feitas no primeiro parmetro do for e o incremento da varivel cont, que era feito dentro do bloco de comandos da estrutura, passou a ser feito no terceiro parmetro do for. Variaes do for: com vrias inicializaes: Ex: for (x =0, y =1, z =0; x < 20; x++) com vrios incrementos ou decrementos: Ex: for (a =20; a >= 1; a--, b++, c++) sem inicializaes:

Ex: for (; p <= 200; p++) sem incrementos ou decrementos: Ex: for (m =0, s =0; m <100;) s com a condio: Ex: for (; x >= 500;) sem parmetros: (for infinito) Ex: for (;;) Obs: um loop infinito utilizado quando no se sabe por exemplo, quando algum evento externo ir acontecer que possa interromper a estrutura de repetio. Neste caso pode-se utilizar o comando break..

Comando break: permite interromper uma estrutura de repetio de qualquer tipo, mesmo que a condio ainda seja verdadeira. Nesse caso, a execuo continua a partir do prximo comando aps a estrutura. Ex: Receber por digitao 5 nmeros ou at que o nmero recebido seja negativo, som-los e visualizar o resultado da soma ao final. #include <iostream.h> #include <stdlib.h> int num, soma, cont; //declarao das variveis inteiras int main () //incio da funo main { for (cont = 0,soma=0; cont < 5; cont++) {cout <<\nDigite um nmero; //envia um texto cin >>num; //armazena o valor digitado em num if (num < 0) {cout <<\nNmero negativo; //fim da digitao de numeros break; //interrompe e continua aps a estrutura } soma = soma + num; //acumula o contedo de num em soma } cout << \nA soma dos nmeros <<soma; //envia o texto e contedo de soma cout <<\n\n; //salta duas linhas no vdeo system (pause); //executa uma pausa na execuo }

Exemplo:

Uma pesquisa de mercado entrevistou 100 pessoas para saber a preferncia pelos produtos A, B e C. Receber por digitao as preferncias dessas pessoas e visualizar ao final a quantidade de preferncias de cada tipo de produto.
#include <iostream.h> #include <stdlib.h> int totA, totB, totC,cont; //declarao das variveis inteiras char prod; //declarao de varivel tipo caracter int main () //incio da funo main {for (cont =0,totA =0,totB = 0,totC = 0;cont < 100; cont++) { cout<< \nDigite o produto ; //envia o texto cin >> prod; //armazena o produto digitado em prod if (prod == 'A'|| prod == 'a') totA++; //acumula 1 na varivel totA (totA = totA +1) else if (prod == 'B' || prod == 'b') totB++; //acumula 1 na varivel totB (totB = totB +1) else if (prod == 'C' OU prod == 'c') totC++; //acumula1 na varivel totC (totC = totC +1) } //retorna ao inicio da estrutura cout <<\nQtde de produtos A: <<totA; //envia o texto e contedo de totA cout <<\nQtde de produtos B: <<totB; //envia o texto e contedo de totB cout <<\nQtde de produtos C: <<totC; //envia o texto e contedo de totC cout <<\n\n; //salta duas linhas no vdeo system (pause); //executa uma pausa na execuo }

Exemplo de traduo para C, de um algoritmo de teste de mesa Algoritmo var: x1, x2, y, k, m, b, c escrever Digite um numero ler x1 escrever Digite outro numero ler x2 y = 7 k = 0 m = 0 c = 1 repita enquanto y >= x1 k = k + x1 + 1 se k > 7 c = c + 2 seno c = c + 3 fim se b = 1 repita enquanto b < x2 m = m + 2 b = b + 1 c = c + 1 fim repita y = y 1 fim repita

escrever c escrever k escrever m Fim Traduzindo-se para C: #include <stdlib.h> #include <iostream.h> int x1, x2, y, k, m, b, c; int main() {cout << "\nDigite um numero "; cin >> x1; cout << "\nDigite outro numero "; cin >> x2; y = 7; k = 0; m = 0; c = 1; while (y >= x1) { k = k + x1 + 1; if (k > 7) {c = c + 2;} else {c = c + 3;} b = 1; while (b < x2) { m = m + 2; b++; c++; } y--; } cout <<"\nValor da variavel c: "<< c; cout <<"\nValor da variavel k: "<< k; cout <<"\nValor da variavel m: "<< m; cout <<"\n\n"; system ("pause");
}

Você também pode gostar