Buscar

2B-Aula_02_-_Comandos_de_Desvio_em_C

Prévia do material em texto

Comandos de Desvio em C
Daniel Aguiar da Silva Carvalho
18 de Janeiro de 2014
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 1 / 24
Roteiro
1 Introdução
2 Expressões Lógicas
Operadores Relacionais
Operadores Lógicos
Operadores bit-a-bit
3 Comando If
4 Comando if - else
5 Comandos Aninhados
6 Comandos Aninhados
7 Operador Ternário (?)
8 Comando switch
Exemplo - switch
Comando Break
9 Avaliação em Curto-circuito
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 2 / 24
Introdução
Introdução
Aprendemos comandos de desvio em Portugol:
se condição então bloco de instruções fimse;
se condição então bloco de instruções senão bloco de
instruções fimse;
Aninhamento de comandos;
Aprendemos a utilizar os operadores lógicos e relacionais;
Veremos isto e mais algumas novas construções:
switch;
Operador ternário;
Operadores bit-a-bit;
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 3 / 24
Expressões Lógicas
Expressões Lógicas
Quando avaliadas retornam verdadeiro ou falso;
C não possui um tipo para representar valores booleanos (tipo
lógico do Portugol);
São tratados como inteiros: (0) Falso e (1) Verdadeiro;
Assim como no Portugol, em C, utilizaremos operadores
relacionais e lógicos;
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 4 / 24
Expressões Lógicas Operadores Relacionais
Operadores Relacionais
Operador Descrição
> Maior
< Menor
>= Maior igual
<= Menor igual
== Igualdade
!= Diferente
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 5 / 24
Expressões Lógicas Operadores Lógicos
Operadores Lógicos
Operador Descrição
&& E
‖ Ou
! Negação
Vamos ver a utilização desses operadores nos exemplos;
Vamos ver outros operadores (Operadores bit-a-bit);
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 6 / 24
Expressões Lógicas Operadores bit-a-bit
Operadores bit-a-bit
Operador Descrição
& E
| Ou∧
Ou exclusivo (XOR)
∼ Complemento de um (Negação)
» Descolamento à esquerda
« Descolamento à direita
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 7 / 24
Comando If
Comando if
Do Portugol: se condição entao ... fimse;
A sintaxe de um comando if é:
if (condição){
bloco de comandos;
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 8 / 24
Comando If
Comando if
Exemplo: crie um programa que leia um número e informe se
ele é menor que zero.
#include <stdio.h>
int main(){
int a;
scanf(‘‘%d’’, &a);
if (a < 0){
printf(‘‘O número informado é negativo.’’);
}
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 9 / 24
Comando if - else
Comando if - else
Do Portugol: se condição entao ... senao ... fimse;
A sintaxe de um comando if - else é:
if (condição){
bloco de comandos;
} else {
bloco de comandos;
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 10 / 24
Comando if - else
Comando if - else
Exemplo: crie um programa que leia um número e imprima
“Pertence ao intervalo.” se ele for maior 1 e menor 10. Caso
contrário, imprima: “Não pertence ao intervalo.”.
#include <stdio.h>
int main(){
int a;
scanf(‘‘%d’’, &a);
if (a > 1 && a < 10){
printf(‘‘Pertence ao intervalo.’’);
} else {
printf(‘‘Não pertence ao intervalo.’’);
}
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 11 / 24
Comando if - else
Comando IF - ELSE
Quando um IF ou ELSE tem somente um comando, as chaves
são opcionais!
#include <stdio.h>
int main(){
int a;
scanf(‘‘%d’’, &a);
if (a > 1 && a < 10)
printf(‘‘Pertence ao intervalo.’’);
else
printf(‘‘Não pertence ao intervalo.’’);
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 12 / 24
Comandos Aninhados
Comandos Aninhados
Assim como em Portugol podemos ter comando aninhados em C;
Exemplo: Crie um programa que calcule a média aritmética de
duas notas e imprima se o aluno está aprovado (média > 6), em
recuperação (2 ≤ média < 6) ou reprovado (média < 2).
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 13 / 24
Comandos Aninhados
Comandos Aninhados
1a parte do programa.
#include <stdio.h>
int main(){
int a, b;
float media;
scanf(‘‘%d’’, &a);
scanf(‘‘%d’’, &b);
media = (a + b)/2;
...
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 14 / 24
Comandos Aninhados
Comandos Aninhados
2a parte do programa.
...
if (media >= 6)
printf(‘‘Aprovado.’’);
else if (media >=2)
printf(‘‘Em recuperação.’’);
else
printf(‘‘Reprovado.’’);
}
Neste caso, temos aninhamentos no else, mas também podemos
ter aninhamento no if ;
Podemos ter vários else if.
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 15 / 24
Operador Ternário (?)
Operador Ternário (?)
É uma alternativa ao comando if-else em algumas situações;
É indicado usar este operador quando a expressão de teste é
bem simples e objetiva;
A sintaxe do operador ternário é:
<expressão1> ? <expressão2> : <expressão3>;
A expressão1 (expressão de teste) é avaliada:
Se verdadeiro, a expressão2 é avaliada e se torna o valor da
expressão;
Caso contrário, a expressão3 é avaliada e se torna o valor da
expressão.
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 16 / 24
Operador Ternário (?)
Operador Ternário (?)
Exemplo: crie um programa que leia um número e imprima: o
seu antecessor, caso o número seja menor que zero; e o seu
sucessor, caso contrário.
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 17 / 24
Operador Ternário (?)
Operador Ternário (?)
#include <stdio.h>
int main () {
int a;
scanf(‘‘%d’’, &a);
a < 0 ? a-- : a++;
printf(‘‘%d’’, a);
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 18 / 24
Comando switch
Comando switch
É uma alternativa ao comando if-else em algumas situações;
Mais restrito: a expressão de teste e o parâmetro do comando só
podem ser do tipo int ou char ;
A sintaxe de um comando switch é:
switch(valor){
case <valor inteiro>:
<comandos>;
break;
// Podemos ter vários outros cases.
default:
<comandos>;
break;
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 19 / 24
Comando switch Exemplo - switch
Exemplo - switch
Crie um programa que a partir de um número inteiro fornecido
pelo usuário imprima:
Domingo (1);
Segunda-feira (2);
Terça-feira (3);
Quarta-feira (4);
Quinta-feira (5);
Sexta-feira (6);
Sábado (7); e
Caso contrário, número inválido.
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 20 / 24
Comando switch Exemplo - switch
Exemplo - switch
switch(valor){
case 1:
printf(‘‘Domingo’’);
break;
case 2:
printf(‘‘Segunda-feira’’);
break;
case 3:
printf(‘‘Terça-feira’’);
break;
case 4:
printf(‘‘Quarta-feira’’);
break;
case 5:
printf(‘‘Quinta-feira’’);
break;
case 6:
printf(‘‘Sexta-feira’’);
break;
case 7:
printf(‘‘Sábado’’);
break;
default:
printf(‘‘Número inválido.’’);
break;
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 21 / 24
Comando switch Comando Break
Comando break [1, 2]
O comando break é utilizado com estruturas de repetição e com
o comando switch;
Ele é utilizado para parar imediatamente a execução de uma
estrutura;No exemplo do switch, caso não exista o break, o programa
passará a executar o case seguinte;
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 22 / 24
Avaliação em Curto-circuito
Avaliação em Curto-circuito
Reduz o tempo de avaliação de expressões lógicas;
Qual é a saída produzida pelo código abaixo?
int main (){
int a = 3;
if (a++ < 4 || a++ > 3)
printf(‘‘%d’’, a);
int b = 2;
if (b++ > 3 && ++b % 2 == 0)
printf(‘‘%d’’, a+b);
printf(‘‘%d’’, a+b);
}
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 23 / 24
Avaliação em Curto-circuito
REFERÊNCIAS
Paul Deitel and Harvey Deitel.
C: Como Programar.
Pearson, 6 ed edition, 2011.
Herbert Schildt.
C Completo e Total.
Makron Books, 1996.
Daniel Aguiar da Silva Carvalho (IFRN) Comandos de Desvio em C 18 de Janeiro de 2014 24 / 24
	Introdução
	Expressões Lógicas
	Operadores Relacionais
	Operadores Lógicos
	Operadores bit-a-bit
	Comando If
	Comando if - else
	Comandos Aninhados
	Comandos Aninhados
	Operador Ternário (?)
	Comando switch
	Exemplo - switch
	Comando Break
	Avaliação em Curto-circuito

Continue navegando