Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos Aplicados a Engenharia Aula 14 Os direitos desta obra foram cedidos à Universidade Nove de Julho Este material é parte integrante da disciplina, oferecida pela UNINOVE. O acesso às atividades, conteúdos multimídia e interativo, encontros virtuais, fóruns de discussão e a comunicação com o professor devem ser feitos diretamente no ambiente virtual de aprendizagem UNINOVE. Uso consciente do papel. Cause boa impressão, imprima menos. Aula 14: Comandos de decisão (Linguagem C) Objetivo: Compreender o uso dos comandos de decisão if, if-else e switch para montar programas mais complexos. Uma das mais importantes tarefas de um programa de computador é decidir o que deve ser executado. Os comandos de decisão permitem determinar qual ação será tomada baseada em um teste condicional. Isso significa que podemos selecionar entre ações alternativas, dependendo de critérios desenvolvidos no decorrer da execução do programa. A linguagem C oferece três comandos de decisão: If If-else Switch O comando if O comando if instrui o computador a tomar uma decisão simples. Veja o exemplo: O código acima imprime na tela o índice de massa corpórea (imc) e, caso o imc seja maior que 25, uma nova mensagem é impressa. /*Cálculo do IMC */ #include <stdio.h> #include <stdlib.h> int main(){ float peso, altura, imc; printf("Digite sua massa corpórea em kg: "); scanf("%f", &peso); printf("\nDigite sua altura em metros: "); scanf("%f", &altura); imc = peso / (altura * altura); printf("\n\n\Seu imc é %f.",imc); if( imc > 25) /* Toma uma decisão caso imc > 25 */ printf("\n\n\nVocê precisa emagrecer!"); system("PAUSE"); return 0; } Sintaxe do comando if O comando if consiste na palavra-chave if seguida de uma expressão de verificação entre parênteses. Caso a verificação seja verdadeira, a instrução é executada. Para que mais de uma instrução seja executada, é necessário o uso de chaves abrindo e fechando o bloco de execução. Veja a seguir: Comandos if encadeado Utilizar comandos if encadeados segue a mesma sintaxe dos comandos já apresentados. Veja o exemplo: O programa acima verifica se o caractere digitado é uma letra minúscula e, caso verdadeiro, imprime a frase “Você digitou uma letra minúscula”. O comando if-else Pode-se pensar no comando else como sendo um complemento do comando if. O comando if completo tem a seguinte forma geral: if (expressão de teste){ Instrução 1; Instrução 2; } /* Exemplo de if encadeado */ #include <stdio.h> #include <stdlib.h> #include <conio.h> int main(){ char ch; printf("Digite uma letra de 'a' a 'z':"); ch=getche(); if(ch >= 'a') if(ch <= 'z') printf("\nVocê digitou uma letra minúscula.\n"); system("PAUSE"); return 0; } A execução do comando if-else pode ser resumida da seguinte forma: A condição é avaliada e, caso seja verdadeira a declaração 1 é executada. Se for falsa, a declaração 2 é executada. É importante não esquecer que, quando usamos a estrutura if-else, estamos garantindo que uma das duas declarações será executada. Nunca serão executadas as duas ou nenhuma delas. Veja o exemplo: Outro exemplo: O programa a seguir imprime um tabuleiro de xadrez utilizando caracteres gráficos: if (condição) declaração_1; else declaração_2; #include <stdio.h> #include <stdlib.h> int main (){ int num; printf ("Digite um número inteiro qualquer: "); scanf ("%d",&num); if (num<10) printf ("\n\nVocê digitou um número menor que 10!"); else printf ("\n\nVocê digitou um número maior que 10!"); system("PAUSE"); return 0; } /* Tabuleiro de xadrez */ #include <stdio.h> #include <stdlib.h> int main(){ int lin, col; system("cls");/* Limpa a tela */ for(lin=1;lin<=8;lin++){ for(col=1;col<=8;col++) if((lin+col)%2==0) /* é número par? */ printf("\xdb\xdb"); else printf(" "); printf("\n"); } system("PAUSE"); return 0; } O comando switch A funcionalidade do comando switch é a de selecionar uma entre várias ações alternativas. Embora os mesmos testes possam ser executados por construções if- else, muitas vezes são deselegantes. O comando switch tem um formato limpo e claro. O comando switch consiste na palavra-chave switch seguida do nome de uma variável ou de um valor numérico constante entre parênteses. O corpo do comando é composto de vários casos a serem testados. A expressão entre parênteses após a palavra-chave switch determina para qual caso o comando será desviado. O corpo de cada caso pode conter qualquer quantidade de instruções sem a necessidade do uso de parênteses. Ao final de cada caso, normalmente usa-se o comando break. Se não for utilizado, todas as instruções a seguir serão executadas, mesmo não compreendendo o mesmo caso. Veja o exemplo: Se o rótulo de um caso for igual ao valor da expressão do switch, a execução começará nele. Se nenhum caso for satisfeito e existir um caso default (padrão), a execução começará nele. Um caso default é opcional. Não pode haver casos com rótulos iguais. switch (variável ou constante) { case constante1: Instrução 1; Instrução 2; ... Instrução n – 1; Instrução n; Break; case constante2: Instrução 1; Instrução 2; ... Instrução n – 1; Instrução n; Break; default: Instrução 1; Instrução 2; ... Instrução n – 1; Instrução n; } O exemplo a seguir utiliza o comando switch para determinar qual dia da semana uma respectiva data representa. /* Imprime o dia da semana a partir de uma data */ #include <stdio.h> #include <stdlib.h> #include <conio.h> /* para getch()*/ int main(){ int dia, mes, ano, dSemana; printf("Digite a data na forma dd/mm/aaaa: "); scanf("%d%*c%d%*c%d",&dia, &mes, &ano); dSemana = ano + dia + 3 * (mes - 1) - 1; if( mes < 3) ano--; else dSemana -= (int)(0.4*mes+2.3); dSemana += (int)(ano/4) - (int)((ano/100 + 1)*0.75); dSemana %= 7; switch(dSemana){ case 0: printf("Domingo"); break; case 1: printf("Segunda-feira"); break; case 2: printf("Terca-feira"); break; case 3: printf("Quarta-feira"); break; case 4: printf("Quinta-feira"); break; case 5: printf("Sexta-feira"); break; case 6: printf("Sabado"); } system("PAUSE"); return 0; } * O QR Code é um código de barras que armazena links às páginas da web. Utilize o leitor de QR Code de sua preferência para acessar esses links de um celular, tablet ou outro dispositivo com o plugin Flash instalado. Referências DASGUPTA, Sanjoy; PAPADIMITRIOU, Christos;VAZIRANI, Umesh. Algoritmos. São Paulo: McGraw Hill, 2009. HEINEMAN, George T.; POLLICE, Gary; SELKOW, Stanley. Algoritmos: o guia essencial. Rio de Janeiro: Alta Books, 2009. MANZANO, André Luiz N. G.; MANZANO, Maria Izabel N. G. Estudo dirigido de informática básica. São Paulo: Érica, 2008. MANZANO, José Augusto N. G. Estudo dirigido de linguagem C. São Paulo: Érica, 2009. MANZANO, José Augusto N. G.; OLIVEIRA, Jayr Figueiredo de Oliveira. Algoritmos, Lógica para desenvolvimento de programação de computadores. São Paulo: Érica, 19 ed., 2006. MIZRAHI, Victorine Viviane. Treinamento em linguagem C. São Paulo: Pearson, 2008. 2v. SCHILDT, Herbert. Mayer. C completo e total. São Paulo: Pearson, 2006. VILARIM, Gilvan. Algoritmos de programação para Iniciantes. São Paulo: Ciência Moderna, 2004.
Compartilhar