Estrutura de Repetição MikroC
Estrutura de Repetição MikroC
Estrutura de Repetição MikroC
umento
Estruturas de Repetio
Introduo
Os laos de repetio servem para repetir uma ou mais vezes determinada instruo ou blocos de
instrues. Existem basicamente trs tipos de estruturas de repetio na linguagem C:
for
While
Do - While
A estrutura for basicamente utilizada para laos finitos de contagem, normalemtne utilizando uma
varivel de controle da contagem.
A estrutura while basicamente utilizado para repetio de um determinado conjunto de instruo
enquanto uma condio for verdadeira.
O comando do - while similar estrutura while, diferenciando apenas o momento que analisada a
condio.
Vamos conhecer sobre cada estrutura de repetio, acompanhe:
O comando For
em que:
inicializao: expresso vlida utilizada normalemtne para inicializao da varivel de
controle do lao for.
condio: condio para que decide pela continuidade ou no do lao de repetio,
enquanto esta condio foi verdadeira , o lao for permanecer em execuo.
incremento: valor incrementado em a cada repetio do lao for.
Exemplo:
int contador;
for (contador = 0 ; contador = 10 ; contador ++ ) portb = contador;
Na estrutura anterior, a varivel contador inicialmente carregada com o valor 0
(zero), e os comandos do lao for so executados. Aps a execuo de todos os
comandos presentes no lao for, a varivel contador incrementada no passo do valor
do incremento, que no nosso exemplo 1 unidade, e novamente os comandos do lao
for so executados. A estrutura de repetio for termina quando a varivel contador
assume o valor 10.
Exemplo:
int v, d;
for (v = 0 ; v = d ; v++)
{
Comando A
Comando B
}
O grande benifcio do lao for sua flexibilidade, pois aceita qualquer expresso vlida em C, mesmo
que essas expresses no tenham relacionamento com o lao de repetio diretamente.
Um exemplo simples de aplicao do lao for a criao de pequenos tempos de atrasos (delays).
int atraso;
for (atraso = 0 ; atraso < 1000 ; atraso++);
O lao for acima faz com que o processamento fique incrementando constantemente a varivel atraso em
1 at que esta varivel seja igual ao valor 1000;
Observe o fragmento de programa seguinte vlido dentro do loop for:
for (n = 0 ; (n < 100) && portb.f0 ; n++)
No exemplo acima a varivel n ser incrementada 100 vezes, desde que o pino RB0 permanea em estado
lgico alto. Se o pino RB0 em algum momento do lao cair para nivel lgico baixo, o loop ser
imediatamente encerrado.
Programa Exemplo:
Aproveitando que estamos estudando as estruturas do lao de repetio for, vamos elaborar um program
que pisca um led conectado ao pino RD0 do PIC utilizando os recursos do lao for.
Acompanhe o esquema abaixo:
O programa seguinte vai contar at 100.000. Para acomodar um nmero dessa grandeza poderiamos ter
utilizado uma varivel long, mas optamos pela varivel int para que voc entenda a construo de dois
laos for encadeados. Para contar at 100,000 necessrio termos uma varivel que conte at 100 e outra
at 1000 (100 * 1000 = 100.000).
//**********************************************************
// programa de perda de tempo utilizando o lao de repetio for.
//**********************************************************
void atraso(void) // rotina de perda de tempo
{
int contador1, contador2;
for (contador1 = 0 ; contador1 < 100 ; contador1++) //lao de repetio for
for (contador2 = 0; contador2 < 1000; contador2++) ;
}
void main() {
trisd = 0;
while(1) {
atraso();
//chama rotina de perda de tempo
portd = ~portd; // inverte os estados do portd do PIC
}
}
O comando While
Muitos dos programadores iniciantes no sabem do que iremos comentar agora.
Repare que no exemplo acima o valor a condio do lao while falsa, neste cado os comandos do lao
no sero executados no programa at que a condio seja verdadeira, ou seja, at que a = 5.
O comando do - while
O comando do -while forma uma estrutura de repetio diferente dos comandos while e for estudado
anteriormente. Sua diferena fundamental com relao as outras tradicionais laos de loop while e for esta
no fato da avaliao da condio de teste ser no final do lao de repetio, contrrio dos outros laos que
estudamos, que testam as condies no incio de cada ciclo.
formato geral:
do comando while (condio);
ou
do
{
comando 1;
comando 2;
} while (condio de teste);
Break
O comando break, na linguagem C, utilizado para interromper (quebrar) qualquer lao
de repetio instantaneamente. No momento da execuo do loop, ao encontrar o
comando break, o lao de repetio finalizado.
Exemplo:
void main() {
int a = 0;
do
{
a++;
//incrementa a varivel A em uma unidade
break;
//interrompe a execuo do lao de repetio do-while
portd = ~portd; //inverte os estados dos portd
}
while(a < 100); //enquanto a varivel a for menor que 100 a rotina do-while ser
executada.
}
Continue
O comando continue reinicia novamente o teste da condio do lao de repetio. Toda
a vez que no lao for encontrado o comando continue, os comandos seguintes no sero
executados no lao.
Exemplo:
void main() {
int a = 0;
do
{
a++;
//incrementa a varivel A em uma unidade
continue;
//iretorna para o inicio do lao de repetio
portd = ~portd; //inverte os estados dos portd
}
while(a < 100); //enquanto a varivel a for menor que 100 a rotina do-while ser
executada.
}