00 Revisao de Algoritmos Exercicios

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

Transcript of 00 Revisao de Algoritmos Exercicios

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.
*