Buscar

Exercícios de Lógica de Programação


Continue navegando


Prévia do material em texto

INSTITUTO DE CIÊNCIA E TECNOLOGIA – ICT 
DEPARTAMENTO DE CIÊNCIA E TECNOLOGIA 
UC: Lógica de Programação – 2015 
Propostos por Aron Ifanger 
 
Lista de Exercícios 1 
 
Escreva cada um dos algoritmos abaixo utilizando fluxograma e pseudo-
código, realizando os testes de mesa para as entradas fornecidas. 
 
Nota da P3 
 
1 - Suponha que o cálculo da média do aluno seja feito da seguinte forma: 
𝑃1 + 𝑃2 + 𝑃3
3
 
O aluno será aprovado se tiver nota maior que seis. 
Próximo ao final do semestre, os alunos já fizeram as duas primeiras provas (P1 e P2). Escreva um 
algoritmo que determine a nota mínima da P3 para que o aluno seja aprovado sem necessidade de 
fazer o exame. (Entradas: P1 = 5, P2 = 6) 
 
Resposta: 
 
Queremos calcular a nota P3, basta isolar a variável de saída. 
 
6 ⩽
𝑃1 + 𝑃2 + 𝑃3
3
⇔ 18 ⩽ 𝑃1 + 𝑃2 + 𝑃3 ⇔ 18 − 𝑃1 − 𝑃2 ⩽ 𝑃3 
 
De acordo com a expressão acima, a nota deve ser maior ou igual a 18 – P1 – P2, portanto esta é a 
nota mínima. 
 
Pseudo-código: 
 
NotaDaP3 (P1, P2) { 
 Ler(P1, P2); 
 P3 = 18 – P1 – P2; 
 Imprimir (P3); 
} 
 
 
Fluxograma: 
 
 
 
Testes de mesa: 
 
P1 P2 P3 
5 6 
5 6 7 
 Saída 7 
 
2 - Suponha que o cálculo da média do aluno seja feito da seguinte forma: 
𝑃1 + 2𝑃2 + 3𝑃3
6
 
O aluno será aprovado se tiver nota maior que seis. 
Próximo ao final do semestre, os alunos já fizeram as duas primeiras provas (P1 e P2). Escreva um 
algoritmo que determine a nota mínima da P3 para que o aluno seja aprovado sem necessidade de 
fazer o exame. (Entradas: P1 = 3, P2 = 6) 
 
Resposta: 
 
Queremos calcular a nota P3, basta isolar a variável de saída. 
 
6 ⩽
𝑃1 + 2𝑃2 + 3𝑃3
6
⇔ 36 ⩽ 𝑃1 + 2𝑃2 + 3𝑃3 ⇔ 36 − 𝑃1 − 2𝑃2 ⩽ 3𝑃3 ⇔ 12 −
𝑃1 + 2𝑃2
3
⩽ 𝑃3 
 
De acordo com a expressão acima, a nota deve ser maior ou igual a 12 – (P1+ P2)/3, portanto esta é 
a nota mínima. 
 
Pseudo-código: 
 
NotaDaP3 (P1, P2) { 
 Ler(P1, P2); 
 P3 = 12 – (P1+ P2)/3; 
 Imprimir (P3); 
} 
 
Fluxograma: 
 
Teste de mesa: 
 
P1 P2 P3 
3 6 
3 6 9 
 Saída 9 
 
 
3 - Suponha que o cálculo da média do aluno seja feito da seguinte forma: 
 (
𝑃1+2𝑃2+3𝑃3
6
)𝑓𝑟𝑒𝑞 
O aluno será aprovado se tiver nota maior que seis. 
Próximo ao final do semestre, os alunos já fizeram as duas primeiras provas (P1 e P2). Escreva um 
algoritmo que determine a nota mínima da P3 para que o aluno seja aprovado sem necessidade de 
fazer o exame. (Entradas: P1 = 5, P2 = 7) 
Obs: A frequência (freq) é a quantidade de aulas em que o aluno esteve presente, dividida pela 
quantidade de aulas dadas. Como o semestre ainda não terminou, considere que se o aluno não 
faltar mais, sua frequência será de 0,8. Considere também que o aluno não irá faltar. 
 
 
Resposta: 
 
Queremos calcular a nota P3, basta isolar a variável de saída. 
 
6 ⩽ (
𝑃1 + 2𝑃2 + 3𝑃3
6
)0.8 ⇔ 61 0.8⁄ ⩽
𝑃1 + 2𝑃2 + 3𝑃3
6
⇔ 61.25 × 6 ⩽ 𝑃1 + 2𝑃2 + 3𝑃3 ⇔ 
62.25 − 𝑃1 − 2𝑃2
3
⩽ 𝑃3 
 
De acordo com a expressão acima, a nota deve ser maior ou igual a 12 – (P1+ 2P2)/3, portanto esta 
é a nota mínima. 
 
Pseudo-código: 
 
NotaDaP3 (P1, P2) { 
 Ler(P1, P2); 
 P3 = (6^2.25 – P1 – 2P2)/3; 
 Imprimir (P3); 
} 
 
 
Fluxograma: 
 
Teste de mesa: 
 
P1 P2 P3 
5 7 
5 7 12.45 
 Saída 12.45 
 
Obs: Este aluno não conseguirá passar sem exame. 
 
Problema da calculadora 
 
 
4 - Escreva um algoritmo que calcule a multiplicação de dois números, sem usar a operação de 
multiplicação. (Entradas: 7, 9) 
 
Resposta: 
 
Ideia: 9 + 9 + ...(7 vezes)... + 9 
 
 
 
 
Pseudo-código: 
 
Multiplicacao (a, b) { 
 Real resultado; 
 Ler(a, b); 
 resultado = 0; 
 enquanto (b>0) faça { 
 resultado = resultado + a; 
 b = b – 1; 
 } 
 Imprimir (resultado); 
} 
 
Fluxograma: 
 
Teste de mesa: 
 
a b resultado 
7 9 0 
7 8 7 
7 7 14 
7 6 21 
7 5 28 
7 4 35 
7 3 42 
7 2 49 
7 1 56 
7 0 63 
 Saída 63 
 
 
5 - Escreva um algoritmo que calcule a soma de dois números, sem utilizar a operação de soma. 
(Entradas: 10, 15) 
 
Resposta: 
 
Ideia: resultado = - a - b; imprime(-resultado); 
 
Pseudo-código: 
 
Soma (a, b) { 
 Real resultado; 
 resultado = - a - b; 
 Imprimir (-resultado); 
} 
 
Fluxograma: 
 
 
Testes de mesa: 
 
a b resultado 
10 15 0 
10 15 -25 
 Saída -(-25) 
 
 
6 - Escreva um algoritmo que calcule a multiplicação de dois números, utilizando apenas a operação 
de subtração. (Entradas: 3, 4) 
 
Resposta: 
 
Ideia: -a - a - a - … (b vezes)... - a 
 
Pseudo-código: 
 
Multiplicacao2 (a, b) { 
 Real resultado; 
 Ler(a, b); 
 resultado = 0; 
 enquanto (b<0) faça { 
 resultado = resultado - a; 
 b = b – 1; 
 } 
 Imprimir (-resultado); 
} 
 
Fluxograma: 
 
 
Teste de mesa: 
 
a b resultado 
3 4 0 
3 3 -3 
3 2 -6 
3 1 -9 
3 0 -12 
 Saída -(-12) 
 
Operadores mod e div: 
O operador mod representa o resto de uma divisão de inteiros e o operador div representa 
a parte inteira do quociente de uma divisão de inteiros. 
Exemplos: 
 5 mod 2 = 1 8 mod 3 = 2 9 mod 5 = 4 
 5 div 2 = 2 8 div 3 = 2 9 div 5 = 1 
 
7 - Escreva um algoritmo que calcule o resto da divisão, sem utilizar o operador módulo. 
(Entradas: 75, 23) 
 
8 - Escreva algoritmo que calcule a parte inteira do quociente utilizando o operador mod. 
(Entradas: 62, 18) 
 
9 - Escreva um algoritmo que calcule o mod usando div. (Entradas: 4, 18) 
 
Problema da divisão decimal 
 
10 - Escreva um algoritmo que calcule a divisão (não exata) de dois inteiros com três casas 
decimais, utilizando apenas variáveis inteiras e tenha como saída duas variáveis inteiras 
“parte_inteira” e “parte_decimal”. (Entradas: 43, 13) 
Ex: 8/3 = 2.666... saída: parte_inteira = 2, parte_decimal = 666 
 10/4 = 2.25 saída: parte_inteira = 2, parte_decimal = 250 
 101/100 = 1.01 saída: parte_inteira = 1, parte_decimal = 10 
 
Imposto de renda 
 
Considere a tabela de alíquotas abaixo: 
 
Tabela de alíquotas do Imposto de Renda 2015: 
 
Valor Base (R$) Alíquota (%) Dedução (R$) 
 
Até 1.787,77 N/A 0 
De 1.787,78 á 2.679,29 7,5% 134,08 
De 2.679,30 á 3.572,43 15% 335,03 
De 3.572,44 á 4.463,81 22,5% 602,96 
Acima 4.463,81 27,5% 826,15 
 
 
11 - Escreva um algorítmo que calcule a dedução do imposto dado um salário de entrada. (Entrada: 
2700) 
 
Problemas 
 
12 - João tem três barris. No barril A, que está vazio, cabem 8 litros. No barril B, 5. No barril C, 3 
litros. Que deve ele fazer para deixar os barris A e B com 4 litros cada e o C vazio? (fonte: livro 
"Lógica de programação" do Forbellone) 
 
13 – Três senhoras - dona Branca, dona Rosa e dona Violeta – passeavam pelo parque quando dona 
Rosa disse: 
- Não é curioso que estejamos usando vestidos nas cores branco, rosa e violeta, embora nenhuma de 
nós esteja usando um vestido com a cor igual ao próprio nome? 
- Uma simples coincidência – respondeu a senhora com o vestido violeta. 
Qual a cor do vestido de cada senhora? (fonte: livro "Lógica de programação" do Forbellone) 
 
Lógica 
 
Operadores lógicos: 
Símbolo Descrição 
== igual 
< menor 
<= menor igual 
> maior 
>= maior igual 
!= diferente 
&& E 
|| OU 
! Negação 
F Falso 
V Verdadeiro 
 
14 - Calcule o resultado das expressões lógicas abaixo: 
a) 2*4 == 24/3 
b) 15 mod 4 < 19 mod 6 
c) (3*5) div 4 <= (3^2)/0.5 
d) 2+ (8 mod 7) >= 3*6-15 
 
e) 2<5 && 15/3==5 
f) 2<5 || 15/3==5 
g) F || 20 div (18/3) != (21/3) div 2 
h) ! V || 3^2/3 < 15 – (35 mod 7) 
 
i) ! (5 != 10/2 || V && 2-5 > 5-2 || V 
j) 2^4 != 4 || 2+3*5/3 mod 5 < 0