Você está na página 1de 3

Centro Tecnolgico de Mecatrnica / Centro Tecnolgico Automotivo

Disciplina PROGRAMAO
Instrutor DANIEL CORTELETTI
WHILE
WHILE significa enquanto, e implica em uma condio temporal, algo que deve ser repetido
at que uma determinada situao no seja mais satisfeita.
A sintaxe do while
while ( condio )
linha ou bloco de instrues a repetir...
embre tambm que uma linha de instrues
sempre terminada por um ponto e v!rgula "#$, e um bloco de
instrues delimitado por chaves "% ... &$.
'o caso de no haver nenhuma instruo a executar
"o que podemos chamar de (lao va)io*$, a linha ou bloco de
instrues que seguem o while podero ser suprimidos. +ara
isso, basta acrescentar um ponto e v!rgula no final da linha.
Mas cuidado , -aso acrescente acidentalmente o
ponto e v!rgula no final da linha, a instruo ou bloco de
instruo posterior ao while no ter. relao com a estrutura
condicional, causando um efeito diferente do esperado.
/hile c0 bloco de instrues. 1em o ponto e v!rgula e ao va)io. 2sa "#$ na linha do while
com bloco delimitado por chaves.
Explicando o while(1)
At ento nos deparamos com um elemento comum em nossos programas para
microcontroladores , o while"3$.
'ote que ap4s esta linha de instruo, segue5se "sem nenhum ponto e v!rgula$ um abrir chaves,
que fechado somente no final do programa. 6 que quer di)er isso 7
!ignifica que todas as inst"u#$es contidas ent"e estas cha%es (&loco de inst"u#$es) se"'o
"epetidas at( que a condi#'o que est) ent"e os pa"*nteses do while se+a falsa, -o.o o n/.e"o 1 (
a "ep"esenta#'o &in)"ia de %e"dadei"o, ent'o este la#o n'o i") te".ina" nunca.
6u melhor... ir. terminar sim... caso o sistema seja desligado, ou ainda caso seja encontrada uma
instruo que inte""o.pa o while.
Impresso em 07/10/2009 01!!00 "M# "$gina 1
Centro Tecnolgico de Mecatrnica / Centro Tecnolgico Automotivo
Disciplina PROGRAMAO
Instrutor DANIEL CORTELETTI
-o.o inte""o.pe" u. while 'o somente o while, mas qualquer estrutura de repetio pode ser
interrompida se executada a instruo &"ea0. 8. a instruo continue promove um reinicio do lao,
ignorando o restante das instrues compreendidas no bloco definido pela estrutura de repetio.
9ejamos um exemplo
...
while(!input(PIN_D0)) //enquanto D0 estiver desligado
{ //inicio da estrutura de repeti!o
output_high(PIN_"0)# //liga "0
dela$_%s(&00)# //te%po
output_low(PIN_"0)# //desliga "0
i' (input(PIN_D&)) //se D& 'or acionado
{ //
( ) 0# //*era (
+rea,# //e sai da estrutura de repeti!o
- //
i' (input(PIN_D.)) //se D. 'or acionado
continue# //volta ao in/cio da estrutura de repeti!o
( 00# //au%enta 1
output_high(PIN_"&)# //liga pino "&
dela$_%s(&00)# //te%po
output_low(PIN_"&)# //desliga pino "&
- //'inal da estrutura de repeti!o
...
6 lao acima descrito continuar. a ser executado at que seja acionado o pino :;.
1e o pino :3 for acionado, o lao tambm interrompido "instruo &"ea0$, alm de atribuir o valor
<=>6 a vari.vel ?.
:esta forma, se o pino :@ estiver acionado, o programa continuar. executando o lao, porm no
far. o incremento de ? e nem acionara e desligar. o pino -3, pois a instruo continue fa) com que o
lao seja reiniciado, fa)endo com que a execuo do programa volte ao in!cio do bloco de instrues,
refa)endo tambm o teste de condio do lao.
Impresso em 07/10/2009 01!!00 "M# "$gina 2
Centro Tecnolgico de Mecatrnica / Centro Tecnolgico Automotivo
Disciplina PROGRAMAO
Instrutor DANIEL CORTELETTI
=xerc!cios
3$ -omplete as lacunas do programa abaixo, e execute o programa na estao +-+i-
2include 3&4'566.h7
2use dela$ (cloc,)____________) // 8eri'ique o valor do cloc, que ir9s utili*ar
2de'ine use_port+_lcd true
2include 3_____7 // inclui +i+lioteca de lcd
void %ain()
{
long ":N;< 8# // declara ":N; e 8 co%o vari9veis de &4 +its
____________ // identi'ica lao in'inito
{
output_low(PIN_D0)# //=>?_8@AD@ 3B 0
output_low(PIN_D&)# //=>?_8@AC@=DE 3B 0
":N; ) 0# //":N; 3B 0
__________________ //=EF: 8E?I: G@ H:HINE&)0. 8eri'ique utili*a!o ou n!o do (#)
__________________ //=EF: @NI>EN;: H:HINE.)0. 8eri'ique utili*a!o ou n!o do (#)
{ // +loco de instruJes do lao
":N; 00# // incre%ento da vari9vel ":N;
dela$_%s(&)# // te%po & %s
-
8 ) K4000 / ":N;# // calcula a velocidade e% LC/D a partir de ":N; (%ilisegundos)
print'(lcd_putc<MN'Olu L%/DM< 8)# // %ostra velocidade no lcd
__________________ // Ge 8 7 50 ...
{
output_high(PIN_"6)# // liga ver%elha
-
________ // sen!o
{
output_high(PIN_"0)# // liga verde
-
dela$_%s(.000)# // te%po . segundos
-
-
6bserve que em algumas linhas no deve5se utili)ar o ponto e v!rgula.
@$ Aaseado no programa anterior, tente criar um cronBmetro, que conte o tempo de pulso de um
boto. +or exemplo, se algum pressionar o boto A3 por C,C segundos, no displaD deve aparecer
a mensagem ,
(Aot. +ess. por CC;; ms*
Impresso em 07/10/2009 01!!00 "M# "$gina %

Você também pode gostar