Lógica de Programação I Gilson de Souza Carvalho [email protected] Produzindo conhecimento, transformando vidas www.posse.ueg.br 1 Lógica de Programação I Comandos de Condição • Comando Switch O comando Switch pode ser visto como uma especialização do comando if. Foi criado para facilitar um uso particular de comandos if encadeados. A sintaxe do comando Switch segue: Produzindo conhecimento, transformando vidas www.posse.ueg.br 2 Lógica de Programação I Comandos de Condição switch <valor inteiro/caractere> { case <primeiro valor inteiro/caractere>: <bloco de instruções> break; case <segundo valor inteiro/caractere>: <bloco de instruções> break; ... default: <bloco de instruções final> } Produzindo conhecimento, transformando vidas www.posse.ueg.br 3 Lógica de Programação I Comandos de Condição O comando anterior equivale à sequencia de comandos if encadeados: if (<valor testado> == <primeiro valor>) <bloco de instruções> else if (<valor testado> == <segundo valor>) <bloco de instruções> else if ... else <bloco de instruções final> Produzindo conhecimento, transformando vidas www.posse.ueg.br 4 Lógica de Programação I Comandos de Condição Identificar se um número é igual a 1, 5 ou 10 Faça um algoritmo capaz de identificar se um número é igual a 1, 5 ou 10. Caso não seja nenhum desses valores, retomar a mensagem "Valor inválido". Produzindo conhecimento, transformando vidas www.posse.ueg.br 5 Lógica de Programação I Comandos de Condição #include <stdio.h> #include <stdlib.h> int main() { int num = 0; printf("Entre com um numero: "); scanf("%d", &num); ... Produzindo conhecimento, transformando vidas www.posse.ueg.br 6 Lógica de Programação I Comandos de Condição ... switch (num) { case 1: printf("O numero informado valido: %d \n", num); break; case 5: printf("O numero informado valido: %d \n", num); break; case 10: printf("O numero informado valido: %d \n", num); break; default: printf("O numero informado invalido: %d \n", num); break; } } Produzindo conhecimento, transformando vidas www.posse.ueg.br 7 Lógica de Programação I Comandos de Condição Produzindo conhecimento, transformando vidas www.posse.ueg.br 8 Lógica de Programação I Comandos de Condição O uso do comando switch é particularmente interessante para a construção de algoritmos que executem várias funções e o usuário precise determinar qual operação deva ser executada. Esse tipo ele construção é chamada de menu. Produzindo conhecimento, transformando vidas www.posse.ueg.br 9 Lógica de Programação I Comandos de Condição Identificar se um número é par, positivo ou ano bissexto Faça um algoritmo capaz de identificar se um número é: 1. par ou ímpar; 2. positivo, negativo ou zero; 3. um ano bissexto - considere que para o ano ser bissexto basta que seja divisível por 400. Caso contrário, precisa ser divisível por 4 e não ser divisível por 100. Faça uma condição composta que englobe todas as regras para a definição do ano bissexto. Caso não seja nenhuma das opções anteriores, o algoritmo deve retomar uma mensagem informando ao usuário que a operação solicitada não é válida. Produzindo conhecimento, transformando vidas www.posse.ueg.br 10 Lógica de Programação I Comandos de Condição #include <stdio.h> #include <stdlib.h> int main() { int n1, opcao; n1 = opcao = 0; printf("Entre com o valor a ser testado: "); scanf("%d", &n1); printf("Voce pretende identificar se o numero e: \n"); printf("Opcao 1: Par ou Impar: \n"); printf("Opcao 2: Positivo, Negativo ou Zero: \n"); printf("Opcao 3: Bissexto: \n"); scanf("%d", &opcao); ... Produzindo conhecimento, transformando vidas www.posse.ueg.br 11 Lógica de Programação I Comandos de Condição ... switch (opcao) { case 1: { if ((n1 % 2) == 0) printf("Numero Par. \n"); else printf("Numero Impar. \n"); } break; ... Produzindo conhecimento, transformando vidas www.posse.ueg.br 12 Lógica de Programação I Comandos de Condição ... case 2: { if (n1 > 0) printf("Numero Positivo. \n"); else if (n1 < 0) printf("Numero Negativo. \n"); else printf("Numero Zero. \n"); } break; ... Produzindo conhecimento, transformando vidas www.posse.ueg.br 13 Lógica de Programação I Comandos de Condição case 3: { if (((n1 % 4) == 0) && ((n1 % 100) != 0) || ((n1 % 400) == 0)) printf("Ano Bissexto. \n"); else printf("Ano nao e bissexto. \n"); } break; default: printf("Opcao Invalida. \n"); } return 0; } Produzindo conhecimento, transformando vidas www.posse.ueg.br 14 Lógica de Programação I Comandos de Condição Exercícios 1. Faça um algoritmo que leia um número inteiro diferente de zero diga se este é positivo ou negativo. Produzindo conhecimento, transformando vidas www.posse.ueg.br 15 Lógica de Programação I Comandos de Condição 2. Faça um algoritmo que leia um número inteiro e diga se este é positivo, negativo ou zero. Utilize a sequencia de comandos if encadeados. Produzindo conhecimento, transformando vidas www.posse.ueg.br 16 Lógica de Programação I Comandos de Condição 3. Faça um algoritmo que determine se um dado número é par ou ímpar (utilize o operador resto: <dividendo> resto <divisor>, que retoma o resto da divisão inteira de <dividendo>/<divisor>). Produzindo conhecimento, transformando vidas www.posse.ueg.br 17 Lógica de Programação I Comandos de Condição 4. Faça um algoritmo que simule uma calculadora com as quatro operações básicas (+, -, *, /). O algoritmo deve solicitar ao usuário a entrada de dois operandos e da operação a ser executada, na forma de um menu. Dependendo da opção escolhida, deve ser executada a operação solicitada e escrito seu resultado. Utilize uma variável caractere para armazenar a operação e utilize o comando caso para escolher a operação a ser executada a partir do operador. Produzindo conhecimento, transformando vidas www.posse.ueg.br 18 Lógica de Programação I Comandos de Condição 5. Faça um algoritmo que leia as respostas de três questões de múltipla escolha ('a', 'b‘,'c', 'd'), Em seguida, leia o gabarito dessas respostas, ou seja, as respostas corretas. Depois, compare as respostas dadas com as do gabarito e indique quantas respostas estão corretas. Produzindo conhecimento, transformando vidas www.posse.ueg.br 19 Lógica de Programação I Comandos de Condição 6. Faça um algoritmo que leia três valores que representam os lados de um triângulo. Primeiramente, verifique se os lados podem formar um triângulo (a soma de dois lados não pode ser menor que o terceiro lado). Caso possa formar um triângulo, indique se este é equilátero, isósceles ou escaleno. Produzindo conhecimento, transformando vidas www.posse.ueg.br 20 Lógica de Programação I Comandos de Condição 7. Dado um ano d.C. (depois de Cristo), identifique se este é um ano bissexto ou não. Considere que para o ano ser bissexto basta que seja divisível por 400. Caso contrário, este precisará ser divisível por 4 e não ser divisível por 100. Produzindo conhecimento, transformando vidas www.posse.ueg.br 21 Lógica de Programação I Produzindo conhecimento, transformando vidas www.posse.ueg.br 22