Programação I Engenharia Informática e Engenharia Civil, 1º Ano

Propaganda
Programação I
Engenharia Informática e Engenharia Civil, 1º Ano, 2º Semestre, Turno da tarde,
Ano Lectivo 2009.
Serie de Problemas 1
(Algoritmos e suas características)
Resolva os problemas usando descrição narrativa, fluxograma e o pseúdo-código.
1.
Elabore um Algoritmo que peça dois números ao utilizador, e apresente o resultado
da sua adição.
Esses exercícios podem-se resolver de diferente forma, não há uma forma rígida e
sistemática de resolver esses problemas.
Resolução1:
Descrição arrativa
Pseudo-código
•
•
•
•
•
Pedir dois números ao utilizador
Ler os dois números
Efectuar a soma dos dois números
Apresentar o resultado
Terminar o algoritmo.
Fluxograma
inicio
Escrever(“insira os dois números”)
Ler(Numero1, Numero2)
Soma ← Numero1 + Numero2
Escrever(Soma)
Fim
Programa Soma_umeros
Numero1, Numero2: Real;
Soma: Real;
Inicio
Escrever(“insira os dois numeros”);
Ler(Numero1, Numero2);
Soma = Numero1 + Numero2;
Escrever(Soma);
Fim
2. Elabore um Algoritmo para converter um valor dado em horas e minutos, num
formato apenas em minutos.
a) Não validar o valor da hora e do minuto.
b) Validar o valor da hora e do minuto.
Resolução
a) Não validar o valor da hora e do minuto
essa alínea assume-se que o
utilizador
irá
inserir
os
parâmetros de entrada de forma
correcta.
Descrição arrativa
•
•
•
•
Ler o valor da hora e do
minuto
Efectuar a conversão para
minutos
Apresentar o valor em
minutos
Terminar o algoritmo
Pseudo-código
Programa Converte_para_minutos
hora, minuto : inteiro;
ValorMinuto: inteiro;
Inicio
Ler(hora, minuto);
ValorMinuto = hora x 60 + minuto;
Escrever(ValorMinuto);
Fim
b) Validar o valor da hora e do minuto
Resolução:
essa alínea vai se fazer uma
simples
validação
dos
parâmetros de entrada, por
exemplo verificar se o utilizador
ñ vai inserir um valor da hora
negativo.
Fluxograma
Descrição arrativa
•
•
•
•
•
Fluxograma
Ler o valor da hora e do
minuto
Validar o valor da hora e do
minuto
Efectuar a conversão para
minutos
Apresentar o valor em
minutos
Terminar o algoritmo
inicio
Ler(hora, minuto)
Sim
hora < 0 ou minuto < 0 ?
Não
ValorMinuto ← hora x 60 + minuto
Escrever(ValorMinuto)
Fim
Pseudo-código
Programa Converte_para_minutos
hora, minuto : inteiro;
ValorMinuto: inteiro;
Inicio
Ler(hora, minuto);
Se ( hora < 0 e minuto < 0)
Terminar o algoritmo;
Se não
ValorMinuto = hora x 60 + minuto;
Escrever(ValorMinuto);
Fim
3. Elabore um Algoritmo que dados dois lados de um triângulo rectângulo calcule a
respectiva hipotenusa.
a) Não validar o valor dos lados do triângulo.
Resolução:
Descrição arrativa
Ler o valor dos dois catetos
Efectuar o cálculo da hipotenusa usando o teorema de Pitágoras
Apresentar o valor da hipotenusa
Terminar o algoritmo
Fluxograma
Pseudo-código
Programa Calcula_Hipotenusa
oposto,adjacente : real;
hipotenusa: real;
Inicio
Ler(oposto,adjacente);
hipotenusa =
(oposto^2+adjacente^2)^(1/2);
Escrever(hipotenusa);
Fim
b) Validar o valor dos lados do triângulo.
Resolução:
Descrição arrativa
•
•
•
•
•
Ler o valor dos dois catetos
Validar o valor dos catetos, ou seja, verificar se os catetos são negativos
Efectuar o cálculo da hipotenusa usando o teorema de Pitágoras
Apresentar o valor da hipotenusa
Terminar o algoritmo
Fluxograma
Pseudo-código
Programa Calcula_Hipotenusa
oposto,adjacente : real;
hipotenusa: real;
Inicio
Ler(oposto,adjacente);
Se (oposto < 0 e adjacente < 0)
Terminar algoritmo.
Se não
hipotenusa = (oposto^2+adjacente^2)^(1/2);
Escrever(hipotenusa);
Fim
4. Elabore um algoritmo que dados dois números inteiros, determina se eles são
múltiplos entre si.
Resolução1:
Descrição arrativa
•
•
•
•
Ler os dois números N1 e N2
Calcular o resto da divisão entre eles
Se o resto for igual a zero, escrever “os números N1 e N2 são múltiplos entre si”
Se não, escrever “os números N1 e N2 não são múltiplos entre si”
Fluxograma
Pseudo-código
Programa multiplos
N1, N2 : inteiro;
Resto: inteiro;
Inicio
Ler(N1 ,N2);
Resto = N1 % N2;
Se (Resto == 0)
Escrever (“N1 e N2 são múltiplos entre si”);
Se não
Escrever (“N1 e N2 não são múltiplos entre si”);;
Fim
Resolução2:
inicio
Ler(N1,N2)
sim
não
N1 > N2 ?
Resto = N1 % N2
sim
Resto = N2 % N1
Resto == 0 ?
Escrever(“N1 e N2 são multipos entre si”)
não
Escrever(“N1 e N2 não são multipos entre si”)
Fim
5. Elabore um algoritmo que dado um número inteiro, determina se esse número é par.
(Obs: não validar o parâmetro de entrada).
inicio
Ler(numero)
resto = numero % 2
sim
Resto == 0 ?
“O numero é par”
não
“O numero não é par”
Fim
6. Elabore um algoritmo que dado um número inteiro, determina se esse número é
impar. (Obs: não validar o parâmetro de entrada).
Download