Centro Tecnológico de Mecatrônica / Centro Tecnológico Automotivo
Disciplina PROGRAMAÇÃO
Instrutor DANIEL CORTELETTI
O comando if.
IF em inglês significa SE. O mais utilizado comando
condicional da linguagem C. Como o nome já sugere, este
comando define uma estrutura condicional para operações que
serão realizadas perante uma determinada condição. Em outras
palavras, este comando AVALIA uma condição, e se ela for
verdadeira, executa uma instrução ou seqüência de instruções.
Adicionando-se o comando ELSE (que do inglês significa
SENÃO) é possível se incluir uma instrução ou lista de
instruções que serão executadas no caso da condição ser
negada.
A forma geral de um if é
if (condição)
... linha ou bloco de instruções se a condição for 1 (verdadeira) ...
else
... linha ou bloco de instruções se a condição for 0 (falsa) ...
É importante observar que o ELSE (senão) não é obrigatório.
Lembre também que uma linha de instruções é sempre
terminada por um ponto e vírgula (;), e um bloco de instruções é
delimitado por chaves ({ ... }), mas após a condição (parênteses) do if
NÃO DEVERÁ SER utilizada o ponto e vírgula.
São exemplos de ifs válidos :
if (x == 5)
{
x = 0;
printf(lcd_putc,"\nX valia 5 e \nagora vale 0");
// zera x
// escreve mensagem
}
else
printf(lcd_putc,"\nX não vale 5..."); // por ser uma única instrução, não precisa das chaves
if ( x % 2 == 1 )
printf (lcd_putc,"\n%u é um número ímpar.",x);
if ( input(PIN_D7) x = 1;
else
{
x ++;
output_high(PIN_E0);
delay_ms(100);
output_low(PIN_E0);
// se resto de X por 2 for igual a 1
// escreve mensagem
// se A1 estiver acionado, x passa a valer 1
// senão
//
//
//
//
aumenta X uma unidade
liga pino D0
tempo de 100 milésimos
desliga pino D0
}
Isso é muito importante, portanto lembre-se :
•
•
Após o comando if, entre parênteses, deve constar a condição, que deve resultar um valor lógico 0
ou 1. São válidos operadores relacionais e lógicos.
Após o if (condição), pode existir uma expressão (Uma única linha finalizada por um ponto e
vírgula, ou um bloco de instruções – várias linhas – delimitados por um abre e fecha chaves).
Impresso em 7/10/2009 11:49 – Página 1
Centro Tecnológico de Mecatrônica / Centro Tecnológico Automotivo
Disciplina PROGRAMAÇÃO
Instrutor DANIEL CORTELETTI
if’s aninhados
Existem situações em que temos que implementar uma decisão dentro do código executado por
outra decisão, ou seja, um if dentro de outro. A isso, chamamos de estruturas condicionais aninhadas,
ou if’s aninhados.
Exemplo:
Exercícios
1) Complete as lacunas do programa abaixo, e execute o programa na estação PLCPiC
#include <16f877.h>
#use delay (clock=____________) // Verifique o valor do clock que irás utilizar
void main()
{
while(1)
// identifica laço infinito
{
___________________________ // se o pino D0 estiver acionado ...
{
// inicia bloco de instruções para o if
______________________
// aciona o pino E2
delay_ms(50);
// tempo de 50 milésimos de segundo
______________________
// desliga o pino E2
delay_ms(100);
// tempo de 100 milésimos de segundo
}
// fim do bloco de instruções
__________________________ // se o pino D1 estiver acionado ...
______________________
// inicia um bloco de instruções para o if
______________________
// aciona todos os bits do PORTC
______________________
// tempo de 100 milésmos de segundo
______________________
// finaliza o bloco de instruções do if
}
___________________________ // se o pino D2 estiver acionado ...
______________________; // desativa todos os bits do PORTC
}
}
Impresso em 7/10/2009 11:49 – Página 2
Centro Tecnológico de Mecatrônica / Centro Tecnológico Automotivo
Disciplina PROGRAMAÇÃO
Instrutor DANIEL CORTELETTI
2)
Para o programa abaixo:
1 #include <16f877.h>
2 #use delay (clock=20000000) // Verifique o valor do clock que irás utilizar
3 void main()
4
{
5
int x = 0;
6
output_C(0); // desliga todo o PORTC
7
while(1)
// identifica laço infinito
8
{
9
if (x < 30)
10
x ++;
11
else
12
{
13
if (input(PIN_D0) && input(PIN_D7))
14
{
15
output_high(PIN_E2);
16
delay_ms(100);
17
output_low(PIN_E2);
18
delay_ms(100);
19
}
20
output_high(PIN_C0);
21
}
22
output_high(PIN_C7);
23
delay_ms(100);
24
output_low(PIN_C7);
25
delay_ms(900);
26
}
27
}
2.1) A linha 16 (delay_ms(100)) é executada em que situação?
( ) Somente uma vez.
( ) Em cada ciclo do programa.
( ) Somente quando X for inferior a 30.
( ) Se X for igual ou superior a 30.
( ) Se X for igual ou superior a 30 e D0 e D7 estiverem AMBOS acionados.
( ) Se X for maior que 30 e D0 ou D7 estiverem acionados.
2.2) A linha 24 é executada em que situação ?
( ) Somente uma vez.
( ) Em cada ciclo do programa.
( ) Somente quando X for inferior a 30.
( ) Se X for igual ou superior a 30.
( ) Se X for igual ou superior a 30 e D0 e D7 estiverem AMBOS acionados.
( ) Se X for maior que 30 e D0 ou D7 estiverem acionados.
2.3) A linha 6 é executada em que situação ?
( ) Somente uma vez.
( ) Em cada ciclo do programa.
( ) Somente quando X for inferior a 30.
( ) Se X for igual ou superior a 30.
( ) Se X for igual ou superior a 30 e D0 e D7 estiverem AMBOS acionados.
( ) Se X for maior que 30 e D0 ou D7 estiverem acionados.
2.4) Insira comentários apropriados ao lado das seguintes linhas:
6, 9, 10, 11, 13
Impresso em 7/10/2009 11:49 – Página 3
Download

O uso do IF - Centro Tecnológico Automotivo e de Mecatrônica SENAI