Você está na página 1de 37

1

Tcnicas de Programao I

Reviso de Lgica de Programao
Respostas dos Exerccios
2
Exerccios (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

2) Dado:

nome joao
sim falso
X 2
Y 5
Z 9

Verifique os valor das expresses abaixo

a) sim OU Y >= X
b) No (Y = X) E nome = jose
c) Z + Y > X OU Y >= 5
d) nome = joao E sim OU sqr(x) < z + 10
3
Exerccios (2)
3) Elabore um algoritmo que leia um nmero, N, calcule e escreva o
resultado do seu quadrado

4) Elabore um algoritmo que leia um nmero N e um valor P,
referente uma potncia. Calcule e escreva o resultado deste
nmero elevado potncia (N
P

). Utilize apenas operadores
aritmticos (+, -, /, *). No utilize funes pr-existentes
5) Elabore um algoritmo que leia um nmero N e escreva se ele
par ou mpar

6) Elabore um algoritmo que leia um nmero N e escreva se ele
primo ou no. Nmeros primos s dividem por 1 e por ele
mesmo
4
Exerccios (3)
7) Elaborar um algoritmo que leia duas notas, N1 e N2, e calcule a
mdia do aluno. Imprima de ele est aprovado, reprovado ou
ter que fazer final. Utilize o critrio adotado nesta faculdade

8) Elaborar um algoritmo que leia dois nmeros, I e F, e imprima a
somatrio de todos os nmeros pares e o produto de todos os
nmeros mpares entre eles (exclusive)

9) Elaborar um algoritmo que leia dois nmeros, I e F, e imprima
todos os nmeros primos entre eles (inclusive)

10) Elaborar um algoritmo que leia dois lados quaisquer de um
tringulo retngulo, 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.
5
Exerccios (4)
11) Elaborar um algoritmo para:

a) Ler 2 nmeros inteiros e escrev-los em ordem crescente

b) Faa o mesmo para 3 nmeros

c) Agora tente para 4 nmeros

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 mdia geral da turma

b) Imprima-os em ordem decresceste de nota
6
Exerccio (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


Informe a quantidade de chuva em mm: 500
A quantidade de chuva em polegadas foi 1.97
7
Soluo (1)
algoritmo "chuva"
// Funo : Converte qtd de chuva de mm para polegadas
var
qtdChuvaMm, qtdChuvaPol: real
inicio
escreva("Informe a quantidade de chuva em mm: ")
leia(qtdChuvaMm)
qtdChuvaPol <- qtdChuvaMm / 254
escreva("A quantidade de chuva em polegadas foi ",
qtdChuvaPol:1:2)
fimalgoritmo

Informe a quantidade de chuva em mm: 500
A quantidade de chuva em polegadas foi 1.97
8
Exerccio (2)
2) Dado:

nome joao
sim falso
X 2
Y 5
Z 9

Verifique os valor das expresses abaixo

a) sim OU Y >= X
b) No (Y = X) E nome = jose
c) Z + Y > X OU Y >= 5
d) nome = joao E sim OU sqr(x) < z + 10
9
Soluo (2)
algoritmo "expLogicas"
// Funo : Avalia expressoes logicas
var
nome: literal
sim: logico
X, Y, Z: inteiro
inicio
nome <- "joao"
sim <- falso
X <- 2
Y <- 5
Z <- 9

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
sim OU Y >= X: VERDADEIRO
nao (Y = X) E nome = 'jose': FALSO
Z + Y > X OU Y >= 5: VERDADEIRO
nome = 'joao' E sim OU sqr(x) < z + 10: VERDADEIRO
10
Exerccio (3)
3) Elabore um algoritmo que leia um nmero, N, calcule e escreva o
resultado do seu quadrado

Informe um numero: 3
O quadrado de 3 eh 9
11
Soluo (3)
algoritmo "quadrado"
// Funo : calcula o quadrado de um numero lido
var
n: inteiro
inicio
escreva("Informe um numero: ")
leia(n)
escreva("O quadrado de ", n, " eh ", (n * n))
fimalgoritmo



Informe um numero: 3
O quadrado de 3 eh 9
12
Exerccio (4)
4) Elabore um algoritmo que leia um nmero N e um valor P,
referente uma potncia. Calcule e escreva o resultado deste
nmero elevado potncia (N
P

). Utilize apenas operadores
aritmticos (+, -, /, *). No utilize funes pr-existentes
Informe um numero: 2
Informe o valor da potencia: 3
O valor de 2 elevado a 3 eh igual a 8
13
Soluo (4)
algoritmo "potencia"
// Funo : calcula o qvalor de um numero elevado a uma potencia
var
n, p, r, x: inteiro
inicio
escreva("Informe um numero: ")
leia(n)
escreva("Informe o valor da potencia: ")
leia(p)
x <- p
r <- 1
enquanto (x > 0) faca
r <- r * n
x <- x - 1
fimenquanto
escreva("O valor de ", n, " elevado a ", p, " eh igual a ", r)
fimalgoritmo
Informe um numero: 2
Informe o valor da potencia: 3
O valor de 2 elevado a 3 eh igual a 8
14
Exerccio (5)
5) Elabore um algoritmo que leia um nmero N e escreva se ele
par ou mpar
Informe um numero: 5
O numero 5 eh impar
15
Soluo (5)
algoritmo "par"
// Funo : verifica se um numero eh par ou impar
var
n: inteiro
inicio
escreva("Informe um numero: ")
leia(n)
se ((n mod 2) = 0) entao
escreva("O numero ", n, " eh par")
senao
escreva("O numero ", n, " eh impar")
fimse
fimalgoritmo

Informe um numero: 5
O numero 5 eh impar
16
Exerccio (6)
6) Elabore um algoritmo que leia um nmero N e escreva se ele
primo ou no. Nmeros primos s dividem por 1 e por ele
mesmo
Informe um numero: 7
O numero 7 eh primo
17
Soluo (6)
algoritmo "primo"
// Funo : verifica se um numero eh primo
var
n, x: inteiro
primo: logico
inicio
escreva("Informe um numero: ")
leia(n)
primo <- verdadeiro
para x de 2 ate n - 1 faca
se ((n mod x) = 0) entao
primo <- falso
fimse
fimpara
se (primo) entao
escreva("O numero ", n, " eh primo")
senao
escreva("O numero ", n, " nao eh primo")
fimse
fimalgoritmo

Informe um numero: 7
O numero 7 eh primo
18
Exerccio (7)
7) Elaborar um algoritmo que leia duas notas, N1 e N2, e calcule a
mdia do aluno. Imprima de ele est aprovado, reprovado ou
ter que fazer final. Utilize o critrio adotado nesta faculdade

Informe um nota (1): 4
Informe um nota (2): 9
A Media foi 6.5 - A Situacao do aluno eh Fazer final
19
Soluo (7)
algoritmo "media"
// Funo : calcula media das notas de um aluno
var
n1, n2, media: real
inicio
escreva("Informe um nota (1): ")
leia(n1)
escreva("Informe um nota (2): ")
leia(n2)
media <- (n1 + n2) / 2
escreva("A Media foi ", media:1:1, " - A Situacao do aluno eh ")
se (media >= 7) entao
escreva("Aprovado")
senao
se (media = 0) entao
escreva("Reprovado")
senao
escreva("Fazer final")
fimse
fimse
fimalgoritmo
Informe um nota (1): 4
Informe um nota (2): 9
A Media foi 6.5 - A Situacao do aluno eh Fazer final
20
Exerccio (8)
8) Elaborar um algoritmo que leia dois nmeros, I e F, e imprima a
somatrio de todos os nmeros pares e o produto de todos os
nmeros mpares entre eles (exclusive)
Informe intervalo inicial: 1
Informe intervalo final: 20
A soma dos numeros pares eh 90
O produto dos numeros impares eh 654729075
21
Soluo (8)
algoritmo "par_impar"
// Funo : calcula o somatorio dos pares e produto dos impares entre dois numeros
var
i, f, x, soma, prod: inteiro

funcao eh_par(n: inteiro) : logico
inicio
se ((n mod 2) = 0) entao
retorne verdadeiro
senao
retorne falso
fimse
fimfuncao

inicio
escreva("Informe intervalo inicial: ")
leia(i)
escreva("Informe intervalo final: ")
leia(f)
soma <- 0 // zero eh o elemento neutro da soma
prod <- 1 // um eh o elemento neutro do produto
para x de (i+1) ate (f-1) faca
se (eh_par(x)) entao
soma <- soma + x
senao
prod <- prod * x
fimse
fimpara
escreval("A soma dos numeros pares eh ", soma)
escreval("O produto dos numeros impares eh ", prod)
fimalgoritmo
Informe intervalo inicial: 1
Informe intervalo final: 20
A soma dos numeros pares eh 90
O produto dos numeros impares eh 654729075
22
Exerccio (9)
9) Elaborar um algoritmo que leia dois nmeros, I e F, e imprima
todos os nmeros primos entre eles (inclusive)
Informe intervalo inicial: 1
Informe intervalo final: 20
Os numeros Primos entre 1 e 20 sao 1 2 3 5 7 11 13 17 19
23
Soluo (9)
algoritmo "primos"
// Funo : calcula o somatorio doa pares e produto dos impares entre dois numeros
var
i, f, x: inteiro

funcao eh_primo(n: inteiro) : logico
var
x: inteiro
primo: logico
inicio
primo <- verdadeiro
para x de 2 ate (n - 1) faca
se ((n mod x) = 0) entao
primo <- falso
interrompa
fimse
fimpara
retorne primo
fimfuncao

inicio
escreva("Informe intervalo inicial: ")
leia(i)
escreva("Informe intervalo final: ")
leia(f)
escreva("Os numeros Primos entre ", i, " e ", f, " sao ")
para x de i ate f faca
se (eh_primo(x)) entao
escreva(x)
fimse
fimpara
fimalgoritmo
Informe intervalo inicial: 1
Informe intervalo final: 20
Os numeros Primos entre 1 e 20 sao 1 2 3 5 7 11 13 17 19
24
Exerccio (10)
10) Elaborar um algoritmo que leia dois lados quaisquer de um
tringulo retngulo, 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
Informe angulo formado pelos dois lados informados: 90
O tamanho do terceiro lado eh 5.0
25
Soluo (10a)
algoritmo "triangulo"
// Funo : calcula o terceiro lado de um triangulo retangulo
var
l1, l2, ang, l3: real
inicio
escreva("Informe lado (1): ")
leia(l1)
escreva("Informe lado (2): ")
leia(l2)
escreva("Informe angulo formado pelos dois lados informados: ")
leia(ang)
se (ang = 90) entao
l3 <- raizQ( exp(l1,2) + exp(l2,2) )
senao
se (l1 > l2) entao
l3 <- raizQ( exp(l1,2) - exp(l2,2) )
senao
l3 <- raizQ( exp(l2,2) - exp(l1,2) )
fimse
fimse
escreva("O tamanho do terceiro lado eh ", l3:1:1)
fimalgoritmo
Informe lado (1): 3
Informe lado (2): 4
Informe angulo formado pelos dois lados informados: 90
O tamanho do terceiro lado eh 5.0
26
Soluo (10b)
algoritmo "triangulo2"
// Funo : calcula o terceiro lado de um triangulo retangulo
var
l1, l2, ang, l3: real
inicio
escreva("Informe lado (1): ")
leia(l1)
escreva("Informe lado (2): ")
leia(l2)
escreva("Informe angulo formado pelos dois lados informados:
")
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

Informe lado (1): 3
Informe lado (2): 5
Informe angulo formado pelos dois lados informados: 45
O tamanho do terceiro lado eh 5.8
27
Exerccio (11)
11) Elaborar um algoritmo para:

a) Ler 2 nmeros inteiros e escrev-los em ordem crescente

b) Faa o mesmo para 3 nmeros

c) Agora tente para 4 nmeros

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
Numeros ordenados: 1, 3, 5
Informe numero (1): 2
Informe numero (2): 8
Informe numero (3): 4
Informe numero (4): 6
Numeros ordenados: 2, 4, 6, 8
Informe quantidade de numeros: 3
Informe numero [ 1]: 3
Informe numero [ 2]: 2
Informe numero [ 3]: 1
Numeros ordenados: 1 2 3
28
Soluo (11.a)
algoritmo "ordena2"
// Funo : ordena 2 numeros lidos
var
n1, n2: inteiro
inicio
escreva("Informe numero (1): ")
leia(n1)
escreva("Informe numero (2): ")
leia(n2)
escreva("Numeros ordenados: ")
se (n1 < n2) entao
escreva(n1, ", ", n2)
senao
escreva(n2, ", ", n1)
fimse
fimalgoritmo
Informe numero (1): 2
Informe numero (2): 3
Numeros ordenados: 2, 3
29
Soluo (11.b.1)
algoritmo "ordena3"
// Funo : ordena 3 numeros lidos
var
n1, n2, n3: inteiro
inicio
escreva("Informe numero (1): ")
leia(n1)
escreva("Informe numero (2): ")
leia(n2)
escreva("Informe numero (3): ")
leia(n3)
escreva("Numeros ordenados: ")
se ((n1 <= n2) e (n1 <= n3) e (n2 <= n3)) entao
escreva(n1, ", ", n2, ", ", n3)
senao
se ((n1 <= n2) e (n1 <= n3) e (n3 <= n2)) entao
escreva(n1, ", ", n3, ", ", n2)
senao
se ((n2 <= n1) e (n2 <= n3) e (n1 <= n3)) entao
escreva(n2, ", ", n1, ", ", n3)
senao
se ((n2 <= n1) e (n2 <= n3) e (n3 <= n1)) entao
escreva(n2, ", ", n3, ", ", n1)
senao
se ((n3 <= n1) e (n3 <= n2) e (n1 <= n2)) entao
escreva(n3, ", ", n1, ", ", n2)
senao
se ((n3 <= n1) e (n3 <= n2) e (n2 <= n1)) entao
escreva(n3, ", ", n2, ", ", n1)
fimse
fimse
fimse
fimse
fimse
fimse
fimalgoritmo
Informe numero (1): 5
Informe numero (2): 1
Informe numero (3): 3
Numeros ordenados: 1, 3, 5
30
Soluo (11.b.2)
algoritmo "ordena3B"
// Funo : ordena 3 numeros lidos
var
n1, n2, n3, x: inteiro
inicio
escreva("Informe numero (1): ")
leia(n1)
escreva("Informe numero (2): ")
leia(n2)
escreva("Informe numero (3): ")
leia(n3)

se (n2 < n1) entao
x <- n1
n1 <- n2
n2 <- x
fimse
se (n3 < n1) entao
x <- n1
n1 <- n3
n3 <- x
fimse
se (n3 < n2) entao
x <- n2
n2 <- n3
n3 <- x
fimse

escreva("Numeros ordenados: ", n1, ", ", n2, ", ", n3)
fimalgoritmo
Informe numero (1): 5
Informe numero (2): 1
Informe numero (3): 3
Numeros ordenados: 1, 3, 5
Garante que o primeiro nmero o menor
Garante que o segundo nmero o segundo menor
Ento, o ltimo elemento estar sempre ordenado
31
Soluo (11.c)
algoritmo "ordena4"
// Funo : ordena 4 numeros lidos
var
n1, n2, n3, n4, x: inteiro
inicio
escreva("Informe numero (1): ")
leia(n1)
escreva("Informe numero (2): ")
leia(n2)
escreva("Informe numero (3): ")
leia(n3)
escreva("Informe numero (4): ")
leia(n4)

se (n2 < n1) entao
x <- n1
n1 <- n2
n2 <- x
fimse
se (n3 < n1) entao
x <- n1
n1 <- n3
n3 <- x
fimse
se (n4 < n1) entao
x <- n1
n1 <- n4
n4 <- x
fimse
se (n3 < n2) entao
x <- n2
n2 <- n3
n3 <- x
fimse
se (n4 < n2) entao
x <- n2
n2 <- n4
n4 <- x
fimse
se (n4 < n3) entao
x <- n3
n3 <- n4
n4 <- x
fimse

escreva("Numeros ordenados: ", n1, ", ", n2, ", ", n3, ", ", n4)
fimalgoritmo
Informe numero (1): 2
Informe numero (2): 8
Informe numero (3): 4
Informe numero (4): 6
Numeros ordenados: 2, 4, 6, 8
Garante que o primeiro nmero o menor
Garante que o segundo nmero o segundo menor
Ento, o ltimo elemento estar sempre ordenado
Garante que o terceiro nmero o terceiro menor
32
Soluo (11.d)
algoritmo "ordenaN"
// Funo : ordena N numeros lidos
var
num: vetor [1..100] de inteiro
n, i, j, x: inteiro
inicio
escreva("Informe quantidade de numeros: ")
leia(n)
para i de 1 ate n faca
escreva("Informe numero [",i,"]: ")
leia(num[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]
num[j] <- x
fimse
fimpara // garante que o numero de i esta ordenado
fimpara // pega novo i

escreva("Numeros ordenados: ")
para i de 1 ate n faca
escreva(num[i])
fimpara
fimalgoritmo
Informe quantidade de numeros: 3
Informe numero [ 1]: 3
Informe numero [ 2]: 2
Informe numero [ 3]: 1
Numeros ordenados: 1 2 3
33
Exerccio (12)
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 mdia 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
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: Jose --> Nota: 7
Nome: Joao --> Nota: 5
34
Soluo (12.a)
algoritmo "maiorMedia"
// Funo : imprime alunos com media meior que a media geral
var
nome: vetor [1..100] de literal
nota: vetor [1..100] de real
n, i: inteiro
soma, media: real
inicio
escreva("Informe quantidade de alunos: ")
leia(n)
soma <- 0
para i de 1 ate n faca
escreva("Aluno [",i,"].Nome: ")
leia(nome[i])
escreva("Aluno [",i,"].Nota: ")
leia(nota[i])
soma <- soma + nota[i]
fimpara

media <- soma / n
escreval("Media da turma: ", media:1:2)

para i de 1 ate n faca
se (nota[i] >= media) entao
escreval("Nome: ", nome[i], " --> Nota: ", nota[i])
fimse
fimpara
fimalgoritmo
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
35
Soluo (12.b)
algoritmo "maiorMediaOrdenado"
// Funo : imprime alunos com media maior que a media geral, em ordem decrescente de nota
var
nome: vetor [1..100] de literal
nota: vetor [1..100] de real
n, i, j: inteiro
soma, media, xNota: real
xNome: literal
inicio
escreva("Informe quantidade de alunos: ")
leia(n)
soma <- 0
para i de 1 ate n faca
escreva("Aluno [",i,"].Nome: ")
leia(nome[i])
escreva("Aluno [",i,"].Nota: ")
leia(nota[i])
soma <- soma + nota[i]
fimpara

media <- soma / n
escreval("Media da turma: ", media:1:2)

para i de 1 ate n - 1 faca
para j de i + 1 ate n faca
se (nota[j] > nota[i]) entao
xNota <- nota[i]
nota[i] <- nota[j]
nota[j] <- xNota
xNome <- nome[i]
nome[i] <- nome[j]
nome[j] <- xNome
fimse
fimpara
fimpara

para i de 1 ate n faca
se (nota[i] >= media) entao
escreval("Nome: ", nome[i], " --> Nota: ", nota[i])
fimse
fimpara
fimalgoritmo
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: Jose --> Nota: 7
Nome: Joao --> Nota: 5
36
Mais Exerccios
1) Faa um programa para ler uma temperatura em graus Celsius e transform-la em Farenheit. Utilize a seguinte
frmula:
F = (180 * (C + 32) ) / 100

2) Faa um programa que receba o raio e calcule
a) O comprimento de uma circunferncia
b) A rea de um crculo

3) Faa um programa para ler o preo de compra e o percentual de lucro desejado por um vendedor e calcular o
preo de venda

4) Faa um programa para ler o valor do saque realizado pelo cliente de um banco e escrever quantas notas de
cada valor sero necessrias para atender ao saque com a menor quantidade de notas possvel. Sero
utilizadas notas de 100, 50, 20, 10, 5 e 1 reais

5) Faa um algoritmo para escrever a srie de Fibonacci = (1, 1, 2, 3, 5, 8, 13, 21, 34,) enquanto o termo a ser
impresso for menor que 5000.

6) Faa um algoritmo para ler um nmero inteiro positivo e escrever o seu fatorial

7) Faa um algoritmo para somar duas matrizes

8) Faa um algoritmo para calcular a transposta de uma matriz

9) Faa um algoritmo que leia uma matriz mat 2 x 3 e imprima na tela a soma de todos os elementos da matriz
mat.

10) Faa um algoritmo que leia uma matriz mat 4 x 4, e imprima na tela a soma dos elementos abaixo da diagonal
principal da matriz mat.

37

Dvidas?