Você está na página 1de 10

Instituto Superior de Engenharia de Coimbra Departamento de Engenharia Informtica e Sistemas

Introduo Programao
2012 - 2013 Ficha Laboratorial 1

Tpicos da matria
Fluxogramas e Pseudo-cdigo: o Programas sequenciais simples o Seleco o Repetio o Funes.

Bibliografia
Apontamentos das aulas Laboratoriais

Exerccios Sequenciais
1. Identifique a funcionalidade descrita no algoritmo seguinte: INCIO principal OBTM (h, l) a <- h ! l MOSTRA(a) FIM principal 2. Suponha que tem um pneu do seu carro furado. Desenvolva um fluxograma que descreva a sequncia de passos para substituir esse pneu. Nota: no possvel pedir ajuda. 3. Elabore um algoritmo que calcule a rea e o permetro de um crculo. 4. Suponha que pretende calcular a nota final desta disciplina. Desenvolva o algoritmo, considerando que os testes e o exame foram cotados para um total de vinte valores, em que cada um dos dois testes vale 2 valores e o exame vale 16 valores.

5. Uma empresa de venda de carros usados paga aos seus funcionrios vendedores um salrio fixo por ms, mais uma comisso por cada carro vendido, tambm fixa, acrescido de 5% do valor das vendas por ele efectuadas. Estabelea um algoritmo que l o nmero do vendedor, o nmero de carros por ele vendidos, o valor total de suas vendas, o salrio fixo e o valor recebido por carro vendido e calcula o salrio mensal do vendedor, escrevendo-o juntamente com o seu nmero de identificao. 6. Escreva um algoritmo para ler o nmero de eleitores de um municpio, o nmero de votos brancos, nulos e vlidos. Deve tambm calcular e escrever a percentagem que cada tipo de voto representa em relao ao total de eleitores. 7. Um motorista de txi deseja calcular o rendimento do seu carro. Considerando que o preo do combustvel de 1,30 "/litro, escreva um algoritmo para ler: a marcao do conta-quilmetros (Km) no incio do dia, a marcao (Km) no final do dia, o nmero de litros de combustvel gasto e o valor total (em ") recebido dos passageiros. Deve ainda calcular e escrever a mdia do consumo em Km/l e o lucro dirio. 8. Considere que um funcionrio desconta 11 % do seu ordenado ilquido para a Segurana Social e 21% para o IRS. Elabore um algoritmo que obtenha o vencimento ilquido de um funcionrio e calcule o valor de cada parcela dos descontos assim como o valor do ordenado lquido. 9. Um agricultor efectuou a sua vindima e vai destinar 3/4 da sua colheita para produzir vinho numa cooperativa, ficando o restante para seu consumo pessoal. Da quantidade entregue na cooperativa 3/5 sero utilizados para a produo de vinho branco e o restante para vinho tinto. Elabore um algoritmo que obtendo a quantidade (em Kg) de uvas colhidas, calcule as quantidades que vo ser destinadas a consumo prprio e produo de cada um dos vinhos. 10. Especifique o algoritmo de um programa que leia um nmero inteiro de segundos e escreva no monitor o nmero de horas, minutos e segundos equivalentes. (Exemplo: 7322 = 2h 2m 2s) 11. Uma empresa de moldes, a trabalhar 8 horas por dia, possui a capacidade de produzir1300 peas. Sabendo que 13% desse material possui defeito, elabore um algoritmo que calcule o nmero de peas em bom estado manufacturadas durante 6 dias.

! ! "#$%&'()*&!+!,%&-%./.)*&!0120!3!0124!5!6789.!:.;&%.$&%7.<!2! ! ! 0!

Exerccios de Seleco
12. Identifique o objectivo do algoritmo seguinte:

13. Desenvolva o algoritmo de um programa que efectue a leitura de trs valores inteiros a partir do teclado e escreva o maior no monitor. 14. Construa o algoritmo de um programa que calcule o valor total a pagar por determinado artigo, sabendo o tipo de artigo e o seu preo sem IVA . Suponha que a taxa de IVA de 5 % para os bens essenciais, 30% para os produtos de luxo e 20 % para os restantes. 15. Escreva um algoritmo para ler o nmero de lados de um polgono regular, e a medida do lado. Deve ainda calcular e imprimir a seguinte informao: Se o nmero de lados for igual a 3 escrever TRINGULO e o valor do seu permetro. Se o nmero de lados for igual a 4 escrever QUADRADO e o valor da sua rea. Se o nmero de lados for igual a 5 escrever PENTGONO.

OBS: Considere que o utilizador s introduz os valores 3, 4 ou 5. 16. Construa um algoritmo para ler dois valores e seleccione uma das seguintes operaes a ser executada (1. Adio, 2. Subtraco, 3. Diviso, 4. Multiplicao). O Algoritmo deve calcular e escrever o resultado dessa operao sobre os dois valores lidos. 17. Para participar da categoria OURO do 1 Campeonato Mundial de Esgrima um atleta deve pesar entre 70 Kg (inclusive) e 80 Kg (inclusive) e medir entre 1,75 m (inclusive) e 1,90 m (inclusive). Escreva um algoritmo para ler a altura e o peso de um atleta e determinar se ele est ou no apto para participar do campeonato. Deve escrever uma das seguintes mensagens conforme cada situao. RECUSADO POR ALTURA - (se somente a altura do jogador for invlida) RECUSADO POR PESO - (se somente o peso do jogador for invlido)

! ! "#$%&'()*&!+!,%&-%./.)*&!0120!3!0124!5!6789.!:.;&%.$&%7.<!2! ! ! 4!

TOTALMENTE RECUSADO- (se a altura e o peso do jogador forem invlidos) ACEITE' - (se a altura e o peso do jogador estiverem dentro dos intervalos especificados)

18. Elabore um algoritmo que recebe as coordenadas de um ponto (x, y), em que x a abcissa e y a ordenada (valores inteiros), e efectue as seguintes tarefas: Verifique se o ponto est na origem dos eixos (0,0); Verifique se o ponto est sobre algum dos dois eixos; Indique se a abcissa e a ordenada so positivas ou negativas.

19. Elabore um algoritmo que obtenha o comprimento de trs linhas e indique se essas trs linhas podem formar um tringulo. Nota: Considerando que a, b e c representam o comprimento de trs linhas, pode-se afirmar que elas podem formar um tringulo se |a-b|<c e c<a+b. 20. Modifique o programa da alnea anterior de forma a indicar se o tringulo escaleno (lados todos diferentes), issceles (dois lados iguais) ou equiltero (todos os lados iguais). 21. Elabore um algoritmo que obtenha um valor real x e que calcule o valor da funo F(x) de acordo com:

22. Escreva o algoritmo de um programa em que, dados trs inteiros que representam o dia, ms e ano de uma determinada data, calcule e imprima o dia, o ms e o ano, relativos data do dia seguinte. No considere os anos bissextos. 23. Construa o algoritmo de um programa que leia um valor inteiro que represente o n de um dos meses do ano e escreva o nome correspondente ao mesmo. 24. Elabore o fluxograma que calcula o nmero de pontos que se encontram dentro, fora e sobre uma circunferncia definida pelas coordenadas de centro (xC,yC) e raio R. Para isso, deve receber uma sequncia de coordenadas (x,y) de pontos. O utilizador deve, no incio, definir o nmero total de pontos que constituem a sequncia.

! ! "#$%&'()*&!+!,%&-%./.)*&!0120!3!0124!5!6789.!:.;&%.$&%7.<!2! ! ! =!

Nota: A distncia entre dois pontos de coordenadas: (x1,y1) e (x2,y2) dada pela seguinte expresso:

Exerccios de Repetio
25. Descreva o objectivo do seguinte algoritmo:

26. Escreva um algoritmo que dado uma base e um expoente, calcule a respectiva potncia atravs de multiplicaes sucessivas. 27. Desenvolva um algoritmo que receba uma sequncia de nmeros terminada com um valor negativo e que calcule a quantidade de nmeros pares e impares dessa sequncia. 28. Construa um algoritmo que leia um nmero indeterminado de nmeros, que representam a idade de um conjunto de indivduos. O ltimo dado, que no entrar nos clculos, contm um valor negativo. Deve igualmente calcular e imprimir a idade mxima, mnima e mdia deste grupo de indivduos. 29. Desenvolva um algoritmo para ler um nmero indeterminado de dados, contendo cada um o peso de um indivduo. O ltimo dado que no entrar nos clculos, contm um valor negativo. O algoritmo deve calcular e imprimir: A mdia aritmtica das pessoas que possuem mais de 60 Kg. O peso da pessoa mais pesada que integra o grupo de indivduos com menos de 60 Kg.

30. Supondo que a populao de um bairro A da ordem de 500 habitantes com uma taxa anual de crescimento de 5,2% ao ano e que a populao de um bairro B de 1500 habitantes com uma taxa anual de crescimento de 1,8 %, escreva um algoritmo que calcule e escreva quantos anos

! ! "#$%&'()*&!+!,%&-%./.)*&!0120!3!0124!5!6789.!:.;&%.$&%7.<!2! ! ! >!

sero necessrios para que a populao do bairro A ultrapasse a do bairro B, mantidas as taxas anuais de crescimento. 31. Desenvolva o algoritmo que determine os divisores de um nmero inteiro introduzido pelo utilizador. 32. Escreva um algoritmo que obtenha um nmero inteiro e que calcule a soma dos seus dgitos
(Sugesto: os dgitos de um nmero inteiro so obtidos efectuando sucessivas divises por 10).

33. Desenvolva um algoritmo que indique se um determinado nmero inteiro positivo N perfeito. O algoritmo deve tambm imprimir no monitor o valor de todos os divisores de N que lhe sejam inferiores. Nota: Considera-se que um nmero N perfeito se a soma de todos os seus divisores, inferiores a N, for igual ao prprio N. 34. Suponha que deseja telefonar para algum: a) Desenvolva o fluxograma para a resoluo deste problema. b) Suponha que ao procurar um nome ele no se encontra registado. Modifique o fluxograma de modo a prever essa hiptese. c) Suponha agora que alm da hiptese de no encontrar o nome, tambm o telefone pode estar interrompido. d) No caso de o nmero estar interrompido, rescreva o fluxograma de modo a que repita a marcao do nmero at que atenda. e) Rescreva o fluxograma de modo a prever outras situaes tais como: inexistncia de um telefone operacional, impossibilidade de obter nmero de telefone, engano na ligao efectuada, destinatrio no se encontrar em casa, ... 35. Desenvolva um algoritmo que obtenha os valores de a, b, c, d, e, f (garantindo que estes so positivos) e que calcule o seguinte somatrio triplo.

36. Escreva o algoritmo de um programa que efectue a leitura de nmeros inteiros at que seja introduzido o valor 999 e apresente todos aqueles que so divisveis por 2 e por 3. 37. Desenvolva o algoritmo de um programa que efectue a leitura de um nmero inteiro positivo e, caso este seja par, proceda sua diviso por 2, caso contrrio, efectue a sua multiplicao por 3 e

! ! "#$%&'()*&!+!,%&-%./.)*&!0120!3!0124!5!6789.!:.;&%.$&%7.<!2! ! ! ?!

adicione 1 unidade, repetindo este procedimento at que o valor obtido seja 1. O programa dever imprimir cada um dos valores intermdios e no final dever indicar o n de operaes efectuadas. 38. Elabore o algoritmo que calcule e apresente a mdia ponderada de um conjunto de disciplinas. Para isso, deve receber o nmero de disciplinas para as quais a mdia vai ser calculada, as notas destas (garantindo que estas so >= 10 e <=20) e seu respectivo peso (o valor dos pesos de 3 ou de 4). A entrada de dados deve ser protegida. A mdia calculada da seguinte forma: somatrio (peso * as notas da cadeira), a dividir pelo somatrio dos pesos.

Funes
39. Identifique o resultado do algoritmo seguinte:

! ! "#$%&'()*&!+!,%&-%./.)*&!0120!3!0124!5!6789.!:.;&%.$&%7.<!2! ! ! @!

40. Identifique a funcionalidade implementada pelo algoritmo:

41. Realize as seguintes tarefas: a) Elabore o algoritmo de uma funo que permita calcular o ndice de massa corporal (IMC) de uma pessoa. O IMC de um indivduo obtido dividindo-se o seu peso (em Kg) pela sua altura (em metros) ao quadrado. Assim, por exemplo, uma pessoa de 1,67 m e pesando 55 Kg possui um IMC igual a 20,14. IMC = 55 Kg/ (1,67 m * 1,67 m) = 20,14 b) Elabore o algoritmo de um programa que receba o peso e a altura de uma pessoa e que, chamando a funo da alnea a), calcule o seu IMC. De acordo com os valores de IMC obtidos deve escrever uma das mensagens seguintes:
At 18,5 inclusive: escrever Abaixo do peso normal De 18,5 a 25 inclusive: escrever Peso normal De 25 a 30 inclusive: escrever Acima do peso normal Acima de 30: escrever Obesidade

42. Realize as seguintes tarefas: a) Escreva o algoritmo para uma funo que calcula a rea de uma diviso. Como argumento deve receber as dimenses da diviso (comprimento e largura) em metros. Deve devolver a rea calculada. b) Escreva o algoritmo para um programa que calcula a rea total de uma casa. O programa deve pedir ao utilizador o n de divises que a casa possui, e para cada diviso, as suas dimenses em

! ! "#$%&'()*&!+!,%&-%./.)*&!0120!3!0124!5!6789.!:.;&%.$&%7.<!2! ! ! A!

metros. No fim imprimir a rea total calculada. Para obter as reas de cada diviso deve chamar a funo da alnea a). 43. Realize as seguintes tarefas: c) Elabore o algoritmo de uma funo que permita calcular o factorial de um determinado nmero inteiro positivo. d) Utilizando a funo elaborada na alnea anterior, desenvolva um algoritmo que calcule a seguinte expresso:

44. Imagine que pretende desenvolver um programa para calcular a soma de duas fraces. a) Construa o algoritmo de uma funo que receba dois nmeros e calcule (e devolva) o mnimo mltiplo comum (MMC) desses nmeros. b) Elabore o algoritmo de uma funo que receba o numerador e denominador (A/B) de uma fraco e um mltiplo do denominador (B1) e calcule (e devolva) a fraco equivalente A1/B1. c) Desenvolva o algoritmo do programa que calcula a soma de duas fraces, usando as funes anteriores. Devem ser introduzidos os 4 valores N1 / D1 e N2 / D2 e mostrados dois N3 / D3. 45. Realize as seguintes tarefas: a) Desenvolva uma funo que devolva o nmero de divisores de um valor inteiro positivo, passado como argumento. b) Escreva o algoritmo de um programa que leia uma sequncia de nmeros inteiros. Sempre que nessa sequncia surgir um nmero primo, deve ser escrita no monitor a seguinte mensagem: O nmero que introduziu primo!. O programa termina quando for introduzido um nmero negativo ou nulo. 46. Desenvolva o algoritmo de uma funo que leia um conjunto de nmeros inteiros a partir do teclado e devolva o nmero de vezes que o valor mximo surgiu. A dimenso da sequncia passada como argumento. 47. Elabore o algoritmo de uma funo que receba como argumentos uma frase e uma palavra e devolva o n de vezes que essa palavra surge ao longo da referida frase, distinguindo maisculas de minsculas. 48. Escreva o algoritmo de uma funo que calcule a hora de chegada de um avio conhecendo a hora de partida e a durao do voo. A hora de partida um inteiro que representa a hora num relgio de 24 horas, isto , 1245 representa 45 minutos depois do meio-dia. A durao um inteiro

! ! "#$%&'()*&!+!,%&-%./.)*&!0120!3!0124!5!6789.!:.;&%.$&%7.<!2! ! ! B!

no mesmo formato, isto , 345 representa 3 horas e 45 minutos. Pretende-se que a funo devolva a hora de chegada no mesmo formato. 49. Desenvolva uma funo que devolva o mnimo mltiplo comum ou mximo divisor comum de dois nmeros inteiros passados como argumento. A seleco do valor a ser calculado devolvido pela funo dever tambm ser passado como argumento (por exemplo, d->mximo divisor comum, e m->mnimo mltiplo comum). valor=calcula_comum(d, 15, 12); /*valor dever ser 3*/ valor= calcula_comum(m, 15, 12); /*valor dever ser 60*/ 50. a) Escreva o pseudocdigo de uma Funo que recebendo dois nmeros inteiros calcula o mdulo (valor absoluto) da diferena entre eles. b) Apresente o pseudocdigo de uma Funo que recebendo um nmero inteiro positivo, calcula sucessivamente o nmero composto pelos mesmos dgitos, excepto os dois dgitos mais significativos que so substitudos pelo mdulo da sua diferena. O algoritmo deve fazer uso da funo desenvolvida em a). O algoritmo dever terminar quando j no for possvel calcular nenhuma diferena, devendo ento apresentar como resultado o nmero final com apenas um dgito. c) Escreve o programa principal que utilize as funes desenvolvidas na alnea a) e b) Exemplo: N Introduzido: 45612 ;| 4-5 | = 1 Evoluo: 1612 ;| 1-6 | = 5 512 ;| 5-1 | = 4 42 ;| 4-2 | = 2 2 Resultado: 2

! ! "#$%&'()*&!+!,%&-%./.)*&!0120!3!0124!5!6789.!:.;&%.$&%7.<!2! ! ! 21!