Baixe o app para aproveitar ainda mais
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
Compartilhar