A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Estruturas de Decisão.

Apresentações semelhantes


Apresentação em tema: "Estruturas de Decisão."— Transcrição da apresentação:

1 Estruturas de Decisão

2 Sumário Operadores Relacionais e Lógicos; Estruturas de Controles:
Comandos if e if-else; Operador Condicional Ternário ? : Comando switch-case.

3 Operadores Relacionais
Os operadores relacionais são os usuais: < menor que; <= menor ou igual a; > maior que; >= maior ou igual a; == igual a; != diferente de;

4 Operadores Lógicos Os operadores lógicos (booleanos) são os usuais:
! NOT (negação lógica); && AND (e lógico); || OR (ou inclusivo lógico).

5 Precedências dos Operadores
Como as expressões Aritméticas, Relacionais e Lógicas podem ser combinadas, deve estar clara a ordem de precedência dentre os três tipos de operadores. O operador ! é o de maior precedência, a mesma que a do operador menos unário.

6 Comandos Estruturados
São comandos compostos de outros comandos, podendo ser executados sequencialmente, condicionalmente ou repetidamente.

7 Sequência Sequência finita de instruções onde cada comando é executado uma vez, um após o outro e sem desvios. A sequência é delimitada pelo símbolo { no início e } no final e seus comandos separados pelo delimitador “;” (ponto-e-vírgula). { <comando 1>; <comando 2>; <comando n>; }

8 Estruturas de Controle
O C como toda linguagem de programação, possui estruturas que permitem o controle do fluxo de execução de comandos baseadas em tomadas de decisão.

9 Estruturas de Decisão São comandos que causam o desvio do processamento, permitindo que uma determinada sequência possa ser escolhida para ser executada. Veremos a seguir as seguintes estruturas de decisão: if, if-else e switch-case.

10 Estrutura if O comando if (se-então) causa um desvio no processamento ao selecionar uma sequência para ser executada. A sequência a ser executada depende do valor lógico da condição utilizada. O comando também pode ser formado pelas cláusulas if-else. Primeiramente será apresentado o comando na sua forma mais simples.

11 Estrutura if if ( <expressão> ) <sequência>

12 Estrutura if A sequência de comandos só será executada se a condição (expressão booleana) for verdadeira. Caso contrário será executado o comando seguinte à sequência relacionada ao comando if. A condição deverá ser uma expressão que retorna um valor lógico.

13 Exemplo 1 #include <stdio.h> int main() { int n;
/* Ler um nro inteiro e informar se é negativo, positivo ou nulo */ #include <stdio.h> int main() { int n; printf("Digite um numero: "); scanf("%d", &n); if (n < 0) printf("O número digitado é negativo!\n"); if (n > 0) printf("O número digitado é positivo!\n"); if (n == 0) printf("O número digitado é nulo!\n"); return 0; }

14 Exemplo 2 /* Ler dois números distintos e imprimi-los ordenados. */
#include <stdio.h> #include <stdlib.h> int main() { int a, b, aux; printf("Digite o primeiro numero: "); scanf("%d", &a); printf("Digite o segundo numero: "); scanf("%d", &b); /*se o primeiro for maior que o segundo inverter os valores*/ if (a > b) { aux = a; a = b; b = aux; } printf("Valores ordenados => %d %d\n", a, b); return 0;

15 Exemplo 2 O programa lê dois números e ordena o par caso “a” seja maior que “b”. Caso contrário a troca não será executada e o comando seguinte à sequência (printf) será executado.

16 Estrutura if-else A cláusula opcional else permite a execução de outra sequência de comandos, caso a condição seja falsa.

17 Estrutura if-else if ( <expressão> ) <sequência 1> else <sequência 2>

18 Estrutura if-else A sequência 1 de comandos só será executada se a expressão for verdadeira. Se a expressão for falsa, a sequência de comandos relacionada à cláusula else (sequência 2) será executada. Jamais ambas ou nenhuma das sequências de comandos serão executadas.

19 Exemplo 3 /* Ler dois números distintos e imprimir o maior deles */
#include <stdio.h> #include <stdlib.h> int main() { int a, b; printf("Digite o primeiro numero: "); scanf("%d", &a); printf("Digite o segundo numero: "); scanf("%d", &b); if (a > b) printf("O numero maior e %d\n", a); else printf("O numero maior e %d\n", b); return 0; }

20 Estruturas de Decisão Aninhados
É importante perceber que dentro de uma sequência é possível ter outros comandos de decisão aninhados. if ( <expressão 1> ) <sequência 1> else if ( <expressão 2> ) <sequência 2> else <sequência>

21 Exemplo 4 #include <stdio.h> #include <stdlib.h>
/* Ler um nro inteiro e informar se é negativo, positivo ou nulo */ #include <stdio.h> #include <stdlib.h> int main() { int n; printf("Digite um numero: "); scanf("%d", &n); if (n < 0) printf("O número digitado é negativo!\n"); else if (n > 0) printf("O número digitado é positivo!\n"); else printf("O número digitado é nulo!\n"); return 0; }

22 Exemplo 6 /* Ler três números inteiros distintos e imprimir o maior */
#include <stdio.h> #include <stdlib.h> int main() { int a, b, c; printf("Digite o primeiro numero: "); scanf("%d", &a); printf("Digite o segundo numero: "); scanf("%d", &b); printf("Digite o terceiro numero: "); scanf("%d", &c); printf("O maior dos 3 é "); if (a > b && a > c) printf("%d\n", a); else if (b > a && b > c) printf("%d\n", b); else if (c > a && c > b) printf("%d\n", c); return 0; }

23 Operador Condicional Ternário ? :
O operador condicional fornece uma maneira compacta de expressar uma simples instrução if-else. Este operador consiste em dois operadores separando a expressão toda em três diferentes expressões e é o único operador ternário em C.

24 Operador Condicional Ternário ? :
Forma geral: <condição> ? <expressão1> : <expressão2> ; A condição consiste em uma expressão lógica avaliada como verdadeira ou falsa. A condição é avaliada e se for verdadeira (diferente de zero) a expressão condicional toda assume o valor da expressão 1, se falsa a expressão assume o valor da expressão 2.

25 Exemplo max = (num1 > num2) ? num1 : num2; esta expressão é equivalente à construção if-else seguinte, mas bem mais compacta. if (num1 > num2) max = num1; else max = num2;

26 Exemplo esta expressão é equivalente à construção if-else seguinte:
abs = (num < 0) ? -num : num; esta expressão é equivalente à construção if-else seguinte: if (num < 0) abs = -num; else abs = num;

27 Exemplo #include <stdio.h> #include <stdlib.h> int main () { int x; printf("Digite um numero: "); scanf("%d", &x); (x%2 == 0) ? printf("Par\n") : printf("Impar\n"); return 0; }

28 Estrutura switch-case
O comando if-else permite que seja selecionada uma de duas sequências de ações de acordo com o valor de uma condição. O comando switch-case é uma generalização deste comando. O comando permite que seja executada uma de “várias” ações, dependendo do valor de uma expressão seletora.

29 Comando switch-case switch ( <seletor> ) { case <valor 1> : <sequência 1> case <valor 2> : <sequência 2> : case <valor N> : <sequência N> default : <sequência> }

30 Comando switch-case O valor da expressão seletora é comparado com cada elemento da lista de valores. Se existir um valor igual será executada a sequência relacionada ao valor. Caso contrário, ou nenhuma sequência será executada, ou a sequência relacionada à cláusula default será executada, se existir. Pode ser atribuído mais de um valor para a seleção de uma sequência. Por exemplo: case 2: case 3: case 5: <comandos>; break;

31 Comando switch-case O comando switch avalia a expressão entre parênteses, após a palavra switch, e compara seu valor com os rótulos dos casos. A expressão entre parênteses deve ser um valor inteiro ou caractere. Cada caso deve ser rotulado por uma constante do tipo inteiro ou caractere ou por uma expressão constante. Pode haver uma ou mais instruções seguindo cada case. Estas instruções não devem estar entre chaves. O corpo de um switch deve estar envolto por chaves.

32 Comando switch-case Se um caso for igual ao valor da expressão, a execução começa nele. Se nenhum caso for satisfeito e existir um caso default: a execução começará nele, senão o programa processará as instruções seguintes ao bloco switch. Um default: é opcional. O comando break causa uma saída imediata do switch. Se não existir um comando break seguindo as instruções de um caso, o programa segue executando todas as instruções dos casos abaixo.

33 Exemplo 9 /* Ler um número de 1 a 5 e imprimir o valor por extenso */ #include <stdio.h> int main() { int Nro; printf("Digite um numero entre 1 e 5 : "); scanf("%d", &Nro); switch (Nro) case 1 : printf("Um\n"); break; case 2 : printf("Dois\n"); break; case 3 : printf("Tres\n"); break; case 4 : printf("Quatro\n"); break; case 5 : printf("Cinco\n"); break; default: printf("Numero Invalido!\n"); } return 0;

34 Exemplo 10 /* Ler um número de 1 a 5 e imprimir o valor por extenso */
#include <stdio.h> int main() { int Nro; printf("Digite um numero entre 1 e 5 : "); scanf("%d", &Nro); if (Nro == 1) printf("Um\n"); else if (Nro == 2) printf("Dois\n"); else if (Nro == 3) printf("Tres\n"); else if (Nro == 4) printf("Quatro\n"); else if (Nro == 5) printf("Cinco\n"); else printf("Numero Invalido! \n"); return 0; }

35 Exemplo 11 /* Ler o número de um mês do ano e informar quantos dias tem o mês */ #include <stdio.h> int main() { int Mes; printf("Digite o Numero do Mes: "); scanf("%d", &Mes); switch (Mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("31 dias\n"); break; case 2: printf("28 ou 29 dias\n"); break; case 4: case 6: case 9: case 11: printf("30 dias\n"); break; default: printf("Mês deve estar entre 1 e 12.\n"); } return 0;

36 if-else x switch-case A condição do comando if-else permite o uso dos operadores lógicos e relacionais, enquanto o switch não o permite; Se dentro de um programa há diferentes sequências a executar, de acordo com valores de uma certa variável, o comando switch torna-se mais apropriado que o comando if-else; O comando switch somente permite a comparação de uma variável com diversos valores do mesmo tipo, enquanto o comando if-else permite uma combinação indefinida de comparação de valores e variáveis do mesmo tipo em uma condição; Valores do Tipo Real não são permitidos no comando switch, devendo-se optar pela estrutura if-else.

37 Referências MANZANO, José Augusto N. G., Estudo Dirigido: ALGORITMOS - Editora Érica, 2000. Página Prof. Simão:


Carregar ppt "Estruturas de Decisão."

Apresentações semelhantes


Anúncios Google