Buscar

Aula 14

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.

Outros materiais