Introdução à Programação - minor João Pedro PEDROSO Departamento de Ciência de Computadores Faculdade de Ciências da Universidade de Porto Ano lectivo de 2012/2013 [email protected] Aula número 3 Revisões, operações em vírgula flutuante 1. No prompt do Python escreva a expressão .1 + .2. (a) Indique qual o resultado obtido. (b) Explique porque se obteve esse resultado. (c) Recomenda-se a leitura da explicação detalhada sobre este problema disponível em http://docs.python.org/tutorial/ floatingpoint.html 2. Avalie mentalmente a expressões que se seguem; verifique o resultado com Python no modo interativo. (a) 5 ** 2 (g) 5 % 2 (b) 9 * 5 (h) 9 % 5 (c) 15 / 12 (i) 15 % 12 (d) 12 / 15 (j) 12 % 15 (e) 15 // 12 (k) 6 % 6 (f) 12 // 15 (l) 0 % 7 3. Coloque parêntesis na expressão 6 * 1 - 2 de forma a que o resultado seja -6. 4. Suponha que neste momento são exatamente 14h00. O seu avião partirá dentro de 51 horas. A que horas parte o seu avião? (Nota: assuma que as horas são valores inteiros.) 5. Escreva um programa em Python que resolva uma versão geral do problema da alínea anterior: pergunte ao utilizador que horas são agora; pergunte quanto tempo deverá esperar; imprima a hora de partida do avião. 6. A sua partida para férias será no quarto dia da semana (uma quarta-feira). Regressa a casa passadas 137 noites. Escreva um programa que pergunte o dia de início das férias (um número entre 1 e 7) e a sua duração, e imprima o dia da semana em que regressa. 7. Considere a frase: “Deitar cedo e cedo erguer dá saúde e faz crescer”. Guarde cada palavra numa variável separada, e imprima a frase com uma linha de código (uma instrução print). 8. Escreva um programa que pergunte ao utilizador os quilómetros percorridos e o número de litros de combustível que um automóvel gastou, e imprima o consumo em litros gastos aos 100 quilómetros. 9. Escreva uma função hipotenusa(a,b) que, dadas as dimensões a,b dos dois lados de um triângulo retângulo, devolve o comprimento da hipotenusa. Ciclos 10. Escreva um programa com um ciclo for que produza o seguinte texto: (a) 1 2 3 (b) 3 6 9 (c) 1 0 -1 11. Escreva um programa que, utilizando a instrução for, imprime o nome de todos os meses do ano: Um mês do ano é Janeiro. Um mês do ano é Fevereiro. ... (Dica 1: utilize uma lista Python. Dica 2: para escrever sequências de carateres em português, poderá ter que indicar a codificação na primeira linha do seu programa (teórica 4).) 12. A fórmula para calcular o valor final (com juros) de um depósito de D euros ao fim de n anos, a uma taxa de r ao ano, é (em euros): F = D(1 + r)n (a) Escreva um programa em Python em que atribuí um valor de 10000 a uma variável D, a taxa de juro 0.08 à variável r (i.e., um juro de 8% ao ano), e imprime o valor do depósito ao longo dos 10 próximos anos. (b) Modifique o programa para que sejam colocadas colocadas perguntas ao utilizador, que de- finirá D, r, e o número de anos que deseja considerar. 13. Considere que tem a atribuição xs = [12, 10, 32, 3, 66, 17, 42, 99, 20] (a) Escreva um ciclo for que imprime cada um dos números da lista xs numa linha separada. (b) Escreve um outro ciclo em que, em cada linha, se imprime o número, o seu quadrado, e a sua raiz quadrada. 14. Escreva um programa com dois ciclos for que produza o seguinte texto: 1 1 2 1 1 2 2 2 1 3 2 3 15. Escreva um programa que leia do teclado dois valores n e m e que produza o seguinte texto: 1 1 2 1 ... m 1 1 2 2 2 ... ... 1 n 2 n m 2 ... m n Números (pseudo-)aleatórios 16. Implemente um funções que devolvam um número aleatório dos seguintes conjuntos: (a) {0, 1, 2, 3, 4}. (b) {0, 2, 4, 6}. (c) [0, 5[. (d) [3, 6[. 17. Implemente uma função para simular o lançamento de uma moeda. 18. Implemente uma função para simular o lançamento de um dado. Programação orientada a objetos, Turtle 19. Considere um objeto telemóvel. (a) Indique três atributos desse objeto. (b) Indique três métodos do seu telemóvel. 20. Numa folha de papel, trace o resultado do programa que se segue. Quando terminar, verifique o resultado com o computador. import turtle wn = turtle.Screen() tess = turtle.Turtle() tess.right(90) tess.left(3600) tess.right(-90) tess.left(3600) tess.left(3645) tess.forward(-100) 21. Utilizando o módulo turtle de forma elementar (i.e., utilizando apenas turtle.forward(n) e turtle.left(a)), escreva um programa para desenhar uma estrela: 22. Escreva uma função (sem valor de retorno) para desenhar uma estrela com cinco vértices. Alargue a definição para permitir desenhar uma estrela com um número n de vértices (n ≥ 3, ímpar). 23. Utilize o módulo turtle para escrever um programa, com ciclos, que desenha polígonos regulares com 3, 4, 6, e 8 lados. 24. Escreva uma função drawPoly(someturtle, somesides, somesize), sem valor de retorno, que faz a tartaruga someturtle desenhar um polígono regular; por exemplo, se for chamada com drawPoly(tess, 8, 50) desenha um octógono com lado de tamanho 50. Utilize-a para desenhar um triângulo equilátero. Exercício a apresentar: um os seguintes, indicados a itálico, a ser sorteado. 25. A superfície de uma esfera de raio r é dado por 4πr2 . Implemente uma função raio_esfera(a) que calcule o raio de uma esfera com superfície a. 26. O volume de um cone com raio na base r e altura h é dado por 31 πhr2 . Implemente uma função vcone(r,h) que calcule o volume de um cone com raio r e altura h. 27. O volume de cilindro elíptico com raios r1 , r2 e al- tura h é dado por πr1 r2 h. Implemente uma função vcilindro(r1,r2,h) que calcule o volume de um cilindro elíptico raios r1 e r2 e altura h. 28. O volume de um toro com raios r1 , r2 é dado por 1 2 2 4 π (r1 + r2 )(r1 − r2 ) , em que r1 e r2 são respetivamente o raio interno e externo do toro. Implemente uma função vtoro(r1,r2) que calcule o volume de um toro com raios r1 e r2.