A maior rede de estudos do Brasil

Grátis
62 pág.
DevC++

Pré-visualização | Página 7 de 12

Imposto de Renda (11% do Salário Bruto para salários superiores 
a R$ 1440,00) 
d) O salário líquido. 
 
7. Faça um algoritmo que leia dois valores inteiros equivalentes a hora inicial e final de 
um jogo. Retorne o tempo de duração deste jogo sabendo que o jogo pode começar 
em um dia e terminar em outro, e que o tempo máximo de jogo é 24 horas. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 25 
Aula 6 
Exercícios 
Aula destinada a continuação e implementação dos exercícios sobre algoritmos 
condicionais. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 26 
Aula 7 
Seleção encadeada 
É muito comum que dentro de um algoritmo tenhamos vários testes que tenham que ser 
feitos a uma mesma variável ou situação. Para este tipo de situação podemos utilizar o 
encadeamento (aninhamento) de instruções if. Por exemplo, vamos modificar o 
exercício número um da lista anterior para que agora ele considere o valor 0 (zero) 
como nulo. 
 
#include <stdio.h> 
void main() 
{ 
 float valor; 
 
 printf("Digite um valor: "); 
 scanf("%f", &valor); 
 
 if (valor > 0) 
 { 
 printf("O valor é positivo! \n"); 
 } 
 else 
 { 
 if (valor < 0) 
 { 
 printf("O valor é Negativo! \n"); 
 } 
 else 
 { 
 printf("O valor é nulo! \n"); 
 } 
 } 
 system("pause"); 
} 
 
Repare que o segundo teste só será feito caso o primeiro falhe. Este tipo de abordagem é 
interessante para evitar que uma grande quantidade de testes similares sejam feitas 
quando apenas um deles pode ser executado. 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 27 
5.4. Instrução SWITCH 
Utilizar uma seqüência encadeada de testes lógicos apesar de interessante, em algumas 
situações pode tornar o código relativamente complexo. Quando possuímos uma lista de 
valores para avaliar-mos, por exemplo. 
Quando nos deparamos com este tipo de situação existe uma instrução que se mostra 
mais otimizada e organizada para a manipulação dos dados. Essa instrução chama-se 
switch. 
Exemplo: 
 
#include <stdio.h> 
 
void main() 
{ 
 int valor; 
 
 printf("Digite um valor: "); 
 scanf("%d", &valor); 
 
 switch (valor) 
 { 
 case 1: 
 printf ("Foi digitado o valor 1 \n"); 
 break; 
 
 case 2: 
 printf ("Foi digitado o valor 2 \n"); 
 break; 
 
 case 3: 
 printf ("Foi digitado o valor 3 \n"); 
 break; 
 
 default: 
 printf("Foi digitado um valor diferente de 1, 2 ou 3 \n"); 
 } 
 system("pause"); 
} 
 
A instrução switch através de instruções case avalia o conteúdo da variável “valor”, de 
modo que a instrução “default” é executada se todos os testes falharem. 
Percebam que dentro de cada case foi utilizado uma instrução “break” que fará com que 
o switch seja interrompido no momento que encontrar a associação correta para a 
variável “valor”. 
Dentro de cada case não é necessário definir o bloco entre chaves. 
 
5.5. Exercícios Propostos 
1. Faça um algoritmo que recebe um número inteiro, escreva o mês correspondente a 
este número ou a mensagem “mês inválido” 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 28 
 
2. Faça um algoritmo que recebe dois valores reais juntamente com uma variável 
controladora de tipo inteiro. 
a) Caso a variável controladora seja 1, some os valores digitados. 
b) Caso a variável controladora seja 2, multiplique os valores digitados. 
c) Caso a variável controladora seja 3, encontre o maior valor. 
d) Caso a variável controladora seja qualquer outro valor, calcule a média entre os 
valores. 
 
3. Faça um algoritmo que simule o caixa de um Fast-Food. Serão digitados o código de 
um produto, juntamente com a quantidade desejada deste produto. Seu programa 
deve retornar o nome do produto juntamente com o valor final a ser pago. 
 
Código Produto Valor Unitário 
1 Sanduíche de Presunto R$ 2,30 
2 Suco de Tamarindo R$ 1,50 
3 Pastel de Vento R$ 1,30 
4 Pão com margarina R$ 0,70 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 29 
5.6. Operadores (Conectores) Lógicos 
Além do que já foi trabalhado durante o curso, existe a possibilidade de que uma 
expressão lógica faça mais de uma pergunta ao mesmo tempo. De modo que essas 
perguntas tem de estar relacionadas de alguma forma. Imagine que exista a necessidade 
de se fazer um filtro em um programa de modo que sejam tratados de forma diferente 
pessoas do sexo feminino menores de idade, maiores de idade, pessoas do sexo 
masculino maiores de idade e menores de idade. 
Se formos fazer um teste para cada possibilidade, o código seria gigantesco. Utilizando 
os operadores lógicos, poderíamos fazer perguntas agrupadas (se for mulher E menor de 
idade, se for homem E maior de idade, etc.). 
Durante o curso iremos trabalhar com três operadores lógicos. São eles: 
5.6.1. Operador && (E) 
 Também conhecido como multiplicação lógica 
 Retorna como resposta “Verdadeiro” se e somente se as duas expressões lógicas 
por ele conectadas forem verdadeiras. 
 
Tabela verdade 
&& V F 
V V F 
F F F 
 
5.6.2. Operador || (OU) 
 Também conhecido como adição lógica 
 Retorna como resposta “Falso” se e somente se as duas expressões lógicas por 
ele conectadas forem falsas. 
Tabela verdade 
|| V F 
V V V 
F V F 
 
5.6.3. Operador ! (Não) 
 Também conhecido como inversor lógico 
 Retorna o valor oposto a uma expressão lógica 
Tabela verdade 
! V F 
 F V 
 
Exemplos 
a) (25 > 10 && 23 % 2 == 1)? Resposta: VERDADEIRO 
b) (25 != 50/2 || 12 > 20)? Resposta: FALSO 
c) (!(2 + 2 = 4)) ? Resposta: FALSO 
d) (40 > 30 && 25 < 12 || 12 % 2 ==0)? Resposta: 
e) (!((25 > 10 && 23 % 2 == 1)))? Resposta: 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 30 
Exemplo Prático 
Fazer um programa que leia as duas notas de um aluno juntamente com sua 
freqüência. Informe se o aluno está aprovado ou reprovado sabendo que a média 
mínima de aprovação é 6 e que a freqüência mínima de aprovação é 75. 
 
#include <stdio.h> 
void main() 
{ 
 float n1, n2, freq, media; 
 
 printf("Digite sua primeira nota: "); 
 scanf("%f", &n1); 
 printf("Digite sua segunda nota: "); 
 scanf("%f", &n2); 
 printf("Digite sua freqüência: "); 
 scanf("%f", &freq); 
 
 media = (n1 + n2)/ 2.0; 
 if (media >= 6 && freq >= 75) 
 { 
 printf ("Parabens! Voce esta APROVADO \n"); 
 } 
 else 
 { 
 printf ("Infelizmente voce esta REPROVADO \n"); 
 } 
 
 system("pause"); 
} 
 
Tente fazer o código acima utilizando operador lógico OU agora. 
 
QI - Escola de Educação Profissional 
Apostila de Lógica de Programação 
 
Professor: Eduardo Reus Souza 31 
5.7. Exercícios Propostos 
1. Faça um algoritmo que lê um valor inteiro e retorna se este é um valor Par Positivo, 
Par Negativo, Ímpar Positivo, Ímpar Negativo ou Nulo. 
 
2. Faça um algoritmo que leia três valores