37
1 Técnicas de Programação I Revisão de Lógica de Programação Respostas dos Exercícios

00 Revisao de Algoritmos Exercicios

Embed Size (px)

Citation preview

Técnicas de Programação IIRespostas dos Exercícios
Exercícios (1)
1) Elabore um algoritmo que leia a quantidade de chuva que caiu no Recife (em mm) e imprima em polegadas
254 mm = 1 polegada
a) sim OU Y >= X
b) Não (Y = X) E nome = ‘jose’
c) Z + Y > X OU Y >= 5
d) nome = ‘joao’ E sim OU sqr(x) < z + 10
*
Exercícios (2)
3) Elabore um algoritmo que leia um número, N, calcule e escreva o resultado do seu quadrado
4) Elabore um algoritmo que leia um número N e um valor P, referente à uma potência. Calcule e escreva o resultado deste número elevado à potência (N P ). Utilize apenas operadores aritméticos (+, -, /, *). Não utilize funções pré-existentes
*
Exercícios (3)
7) Elaborar um algoritmo que leia duas notas, N1 e N2, e calcule a média do aluno. Imprima de ele está “aprovado”, “reprovado” ou terá que “fazer final”. Utilize o critério adotado nesta faculdade
8) Elaborar um algoritmo que leia dois números, I e F, e imprima a somatório de todos os números pares e o produto de todos os números ímpares entre eles (exclusive)
9) Elaborar um algoritmo que leia dois números, I e F, e imprima todos os números primos entre eles (inclusive)
*
a) Ler 2 números inteiros e escrevê-los em ordem crescente
b) Faça o mesmo para 3 números
c) Agora tente para 4 números
d) Finalmente ordene qualquer quantidade
12) Elaborar um algoritmo para:
a) Ler o Nome e a Nota de N alunos, sendo N um inteiro lido e menor que 100, e imprimir o nome de todos os alunos que tiveram notas maiores que a média geral da turma
b) Imprima-os em ordem decresceste de nota
*
Exercício (1)
1) Elabore um algoritmo que leia a quantidade de chuva que caiu no Recife (em mm) e imprima em polegadas
254 mm = 1 polegada
*
var
leia(qtdChuvaMm)
fimalgoritmo
*
a) sim OU Y >= X
b) Não (Y = X) E nome = ‘jose’
c) Z + Y > X OU Y >= 5
d) nome = ‘joao’ E sim OU sqr(x) < z + 10
*
escreval ("sim OU Y >= X: ", sim OU (Y >= X))
escreval ("nao (Y = X) E nome = 'jose': ", nao (Y = X) E nome = "jose")
escreval ("Z + Y > X OU Y >= 5: ", (Z + Y > X) OU (Y >= 5))
escreval ("nome = 'joao' E sim OU sqr(x) < z + 10: ",
(nome = "joao") E (sim) OU (raizQ(x) < z + 10))
fimalgoritmo
nao (Y = X) E nome = 'jose': FALSO
Z + Y > X OU Y >= 5: VERDADEIRO
nome = 'joao' E sim OU sqr(x) < z + 10: VERDADEIRO
*
Exercício (3)
3) Elabore um algoritmo que leia um número, N, calcule e escreva o resultado do seu quadrado
Informe um numero: 3
*
var
fimalgoritmo
*
Exercício (4)
4) Elabore um algoritmo que leia um número N e um valor P, referente à uma potência. Calcule e escreva o resultado deste número elevado à potência (N P ). Utilize apenas operadores aritméticos (+, -, /, *). Não utilize funções pré-existentes
Informe um numero: 2
Informe o valor da potencia: 3
*
Solução (4)
algoritmo "potencia"
// Função : calcula o qvalor de um numero elevado a uma potencia
var
inicio
leia(p)
fimenquanto
escreva("O valor de ", n, " elevado a ", p, " eh igual a ", r)
fimalgoritmo
Informe o valor da potencia: 3
*
Exercício (5)
5) Elabore um algoritmo que leia um número N e escreva se ele é par ou ímpar
Informe um numero: 5
*
var
escreva("O numero ", n, " eh par")
senao
fimse
fimalgoritmo
*
Exercício (6)
6) Elabore um algoritmo que leia um número N e escreva se ele é primo ou não. Números primos só dividem por 1 e por ele mesmo
Informe um numero: 7
*
var
se ((n mod x) = 0) entao
primo <- falso
senao
fimse
fimalgoritmo
*
Exercício (7)
7) Elaborar um algoritmo que leia duas notas, N1 e N2, e calcule a média do aluno. Imprima de ele está “aprovado”, “reprovado” ou terá que “fazer final”. Utilize o critério adotado nesta faculdade
Informe um nota (1): 4
Informe um nota (2): 9
*
var
se (media >= 7) entao
Informe um nota (1): 4
Informe um nota (2): 9
*
Exercício (8)
8) Elaborar um algoritmo que leia dois números, I e F, e imprima a somatório de todos os números pares e o produto de todos os números ímpares entre eles (exclusive)
Informe intervalo inicial: 1
Informe intervalo final: 20
*
Solução (8)
algoritmo "par_impar"
// Função : calcula o somatorio dos pares e produto dos impares entre dois numeros
var
funcao eh_par(n: inteiro) : logico
retorne verdadeiro
para x de (i+1) ate (f-1) faca
se (eh_par(x)) entao
soma <- soma + x
fimalgoritmo
*
Exercício (9)
9) Elaborar um algoritmo que leia dois números, I e F, e imprima todos os números primos entre eles (inclusive)
Informe intervalo inicial: 1
Informe intervalo final: 20
*
Solução (9)
algoritmo "primos"
// Função : calcula o somatorio doa pares e produto dos impares entre dois numeros
var
se ((n mod x) = 0) entao
primo <- falso
para x de i ate f faca
se (eh_primo(x)) entao
Informe intervalo inicial: 1
Informe intervalo final: 20
*
Exercício (10)
10) Elaborar um algoritmo que leia dois lados quaisquer de um triângulo retângulo, L1 e L2, e o ângulo formado pelos mesmos, A, e escreva o tamanho do terceiro lado. Lembre que o quadrado da hipotenusa é igual a soma dos catetos ao quadrado.
Informe lado (1): 3
Informe lado (2): 4
O tamanho do terceiro lado eh 5.0
*
var
inicio
leia(ang)
fimalgoritmo
O tamanho do terceiro lado eh 5.0
*
var
inicio
leia(ang)
l3 <- raizQ (exp(l1, 2) + exp(l2, 2) - (2 * l1 * l2 * int(cos(ang))));
escreva("O tamanho do terceiro lado eh ", l3:1:1)
fimalgoritmo
O tamanho do terceiro lado eh 5.8
*
a) Ler 2 números inteiros e escrevê-los em ordem crescente
b) Faça o mesmo para 3 números
c) Agora tente para 4 números
d) Finalmente ordene qualquer quantidade
Informe numero (1): 2
Informe numero (2): 3
Numeros ordenados: 2, 3
Informe numero (1): 5
Informe numero (2): 1
Informe numero (3): 3
Informe numero (1): 2
Informe numero (2): 8
Informe numero (3): 4
Informe numero (4): 6
Informe quantidade de numeros: 3
Informe numero [ 1]: 3
Informe numero [ 2]: 2
Informe numero [ 3]: 1
*
var
var
se ((n1 <= n2) e (n1 <= n3) e (n2 <= n3)) entao
escreva(n1, ", ", n2, ", ", n3)
se ((n1 <= n2) e (n1 <= n3) e (n3 <= n2)) entao
escreva(n1, ", ", n3, ", ", n2)
se ((n2 <= n1) e (n2 <= n3) e (n1 <= n3)) entao
escreva(n2, ", ", n1, ", ", n3)
se ((n2 <= n1) e (n2 <= n3) e (n3 <= n1)) entao
escreva(n2, ", ", n3, ", ", n1)
se ((n3 <= n1) e (n3 <= n2) e (n1 <= n2)) entao
escreva(n3, ", ", n1, ", ", n2)
se ((n3 <= n1) e (n3 <= n2) e (n2 <= n1)) entao
escreva(n3, ", ", n2, ", ", n1)
*
var
inicio
fimalgoritmo
Garante que o primeiro número é o menor
Garante que o segundo número é o segundo menor
Então, o último elemento estará sempre ordenado
*
var
inicio
fimalgoritmo
Garante que o primeiro número é o menor
Garante que o segundo número é o segundo menor
Então, o último elemento estará sempre ordenado
Garante que o terceiro número é o terceiro menor
*
var
inicio
escreva("Informe numero [",i,"]: ")
fimpara
para i de 1 ate n - 1 faca // para cada numero
para j de i+1 ate n faca // comparar com os sub-sequentes
se (num[j] < num[i]) entao // se encontrar algum menor que o numero de i
x <- num[i] // trocar os numeros
num[i] <- num[j]
fimpara // pega novo i
escreva(num[i])
Informe numero [ 1]: 3
Informe numero [ 2]: 2
Informe numero [ 3]: 1
*
12) Elaborar um algoritmo para:
a) Ler o Nome e a Nota de N alunos, sendo N um inteiro lido e menor que 100, e imprimir o nome de todos os alunos que tiveram notas maiores que a média geral da turma
b) Imprima-os em ordem decresceste de nota
Informe quantidade de alunos: 3
Aluno [ 1].Nome: Joao
Aluno [ 1].Nota: 5
Aluno [ 2].Nome: Jose
Aluno [ 2].Nota: 7
Aluno [ 3].Nome: Maria
Aluno [ 3].Nota: 3
Media da turma: 5.00
Nome: Joao --> Nota: 5
Nome: Jose --> Nota: 7
Aluno [ 1].Nome: Joao
Aluno [ 1].Nota: 5
Aluno [ 2].Nome: Jose
Aluno [ 2].Nota: 7
Aluno [ 3].Nome: Maria
Aluno [ 3].Nota: 3
Media da turma: 5.00
Nome: Jose --> Nota: 7
Nome: Joao --> Nota: 5
// Função : imprime alunos com media meior que a media geral
var
n, i: inteiro
soma, media: real
escreva("Aluno [",i,"].Nome: ")
leia(nome[i])
escreva("Aluno [",i,"].Nota: ")
leia(nota[i])
se (nota[i] >= media) entao
escreval("Nome: ", nome[i], " --> Nota: ", nota[i])
fimse
fimpara
fimalgoritmo
Aluno [ 1].Nome: Joao
Aluno [ 1].Nota: 5
Aluno [ 2].Nome: Jose
Aluno [ 2].Nota: 7
Aluno [ 3].Nome: Maria
Aluno [ 3].Nota: 3
Media da turma: 5.00
Nome: Joao --> Nota: 5
Nome: Jose --> Nota: 7
Solução (12.b)
algoritmo "maiorMediaOrdenado"
// Função : imprime alunos com media maior que a media geral, em ordem decrescente de nota
var
n, i, j: inteiro
soma, media, xNota: real
escreva("Aluno [",i,"].Nome: ")
leia(nome[i])
escreva("Aluno [",i,"].Nota: ")
leia(nota[i])
se (nota[j] > nota[i]) entao
xNota <- nota[i]
se (nota[i] >= media) entao
escreval("Nome: ", nome[i], " --> Nota: ", nota[i])
fimse
fimpara
fimalgoritmo
Aluno [ 1].Nome: Joao
Aluno [ 1].Nota: 5
Aluno [ 2].Nome: Jose
Aluno [ 2].Nota: 7
Aluno [ 3].Nome: Maria
Aluno [ 3].Nota: 3
Media da turma: 5.00
Nome: Jose --> Nota: 7
Nome: Joao --> Nota: 5
Mais Exercícios
1) Faça um programa para ler uma temperatura em graus Celsius e transformá-la em Farenheit. Utilize a seguinte fórmula:
F = (180 * (C + 32) ) / 100
2) Faça um programa que receba o raio e calcule
a) O comprimento de uma circunferência
b) A área de um círculo
3) Faça um programa para ler o preço de compra e o percentual de lucro desejado por um vendedor e calcular o preço de venda
4) Faça um programa para ler o valor do saque realizado pelo cliente de um banco e escrever quantas notas de cada valor serão necessárias para atender ao saque com a menor quantidade de notas possível. Serão utilizadas notas de 100, 50, 20, 10, 5 e 1 reais
5) Faça um algoritmo para escrever a série de Fibonacci = (1, 1, 2, 3, 5, 8, 13, 21, 34,…) enquanto o termo a ser impresso for menor que 5000.
6) Faça um algoritmo para ler um número inteiro positivo e escrever o seu fatorial
7) Faça um algoritmo para somar duas matrizes
8) Faça um algoritmo para calcular a transposta de uma matriz
9) Faça um algoritmo que leia uma matriz mat 2 x 3 e imprima na tela a soma de todos os elementos da matriz mat.
*