Fundação Minerva – Cultura – Ensino e Investigação Científica Universidade Lusíada – Norte Faculdade de Engenharia e Tecnologias Algoritmia e Programação Proposta de Exercícios Índice Conversão de Expressões ................................................................................................. 2 Algoritmos básicos ........................................................................................................... 3 Algoritmia: conceitos fundamentais sobre Decisões ........................................................ 5 Algoritmia: conceitos fundamentais sobre Repetições..................................................... 6 Programas Básicos ............................................................................................................ 8 Operadores Lógicos ........................................................................................................ 10 Estrutura de Decisão If...Then...Else: duas alternativas ................................................. 10 Estrutura de Decisão If...Then...Else: diversas alternativas ........................................... 11 Estrutura de Repetição For...Next .................................................................................. 11 Estrutura de Repetição Do While ................................................................................... 14 Estrutura de Decisão Select Case ................................................................................... 15 Subrotinas e Funções ...................................................................................................... 17 Vectores .......................................................................................................................... 18 Strings ............................................................................................................................. 20 Conversão de Expressões 1. Converta as seguintes expressões matemáticas em expressões computacionais (Nota: use papel e lápis para converter as expressões, como ilustrado no primeiro exemplo). a b6 9 b) F C 32 5 a) 1 Resultado: 1 a /(b 6) c) A r 2 1 d) y 3 x 3 x 2 7 x 10 3 C1 C 2 C 3 e) T 2 f) A T (T C1)(T C 2)(T C 3) g) r b b 2 4ac 2a 2. Converta as seguintes expressões computacionais em expressões matemáticas. a) 1+a/(b+6) Resultado: 1 a b6 b) (-b+d)/2*a c) x^y-z*t d) Math.Sqrt(Math.Abs(valor)) e) (x/ y)^(n-1) f) 3*a*b/c/d g) Math.Log(Math.Sin(alfa*3.1415/180)) Vitor Pereira [[email protected]] Página 2 de 20 Algoritmos básicos 3. Implemente um algoritmo que, dada a base e a altura de um triângulo, calcule a sua área (Nota: area=(base*altura)/2). 4. Implemente um algoritmo que leia um diâmetro e de seguida calcule o perímetro da circunferência e a área do círculo (Nota: perímetro=2r; área=r2). 5. Desenvolva um algoritmo que leia as notas relativas a um trabalho prático, a um ponto escrito e a um exame final e calcule a média final ponderada de acordo com a seguinte fórmula: NotaFinal = 0.35*TrabalhoPrático + 0.25*PontoEscrito + 0.40*ExameFinal 6. O seguinte é a ementa do grupo “Pastelaria da Fonte”. Desenhe um algoritmo que leia qual a quantidade comprada de cada item e calcule o valor a pagar pelo cliente. PASTELARIA DA FONTE – Ementa Café com Natas ......... €0,90 Sumo Natural ............ €1,00 Chocolate Quente ...... €0,75 Hambúrguer .............. €2,30 Cachorro Simples ...... €1,80 7. O Teorema de Pitágoras é provavelmente o mais célebre dos teoremas da matemática. Crie um algoritmo para determinar a hipotenusa de um triângulo rectângulo, dados os catetos (Se h designar o comprimento da hipotenusa e a e b os comprimentos dos catetos, o teorema afirma que: h2 = a2 + b2). 8. Escreva um algoritmo que leia o comprimento dos lados de um triângulo (C1, C2 e C3) e calcule a área do triângulo, sendo a área dada por: A T (T C1)(T C 2)(T C 3) sendo T C1 C 2 C 3 2 9. Uma aproximação à função factorial é dada pela fórmula de Stirling: n n! 2n ( ) n e Codifique um algoritmo que leia um número e de seguida use esta fórmula para calcular o seu factorial aproximado ( e e são constantes matemáticas). 10. Implemente um algoritmo que leia um ângulo, em graus, e mostre o seno, co-seno e tangente desse ângulo (Nota: as funções trigonométricas recebem um ângulo em radianos. Converta o ângulo em graus para radianos, portanto). Vitor Pereira [[email protected]] Página 3 de 20 11. Um sistema de equações lineares da forma: ax by c dx ey f pode ser resolvido através das seguintes fórmulas: x ce bf ae bd y af cd ae bd Desenvolva um algoritmo que leia os dois conjuntos de coeficientes e mostre os dois valores da solução (isto é, x e y). 12. Codifique um algoritmo que classifique uma nota (entre 0 e 20) numa de cinco possibilidades: muito insuficiente, insuficiente, suficiente, bom e muito bom. Faça as considerações que achar mais convenientes. 13. Codifique um algoritmo que leia duas notas e de seguida mostre a sua média aritmética e a mensagem “Aprovado” ou “Reprovado”, de acordo com o facto de a média ser igual ou superior a 10 ou não. 14. Codifique um algoritmo que leia três números e mostre aqueles que são maiores do que a média. 15. Desenvolva um algoritmo que leia as notas relativas a um trabalho prático, a um ponto escrito e a um exame final e calcule a média final ponderada de acordo com a seguinte fórmula: NotaFinal = 0.35*TrabalhoPrático + 0.25*PontoEscrito + 0.40*ExameFinal No final apresente uma mensagem adequada indicando aprovação ou reprovação. 16. Codifique um algoritmo que leia n números e mostre a sua média aritmética. 17. Codifique um algoritmo que leia n números e mostre o maior e o menor. 18. Escreva um algoritmo que leia n números introduzidos pelo utilizador e mostre, para cada número, uma mensagem a indicar se é negativo, positivo, ou zero. 19. Escreva um algoritmo que leia n números introduzidos pelo utilizador e mostre a média e o número de ocorrências de negativos e positivos. 20. Codifique um algoritmo que leia n notas e mostre a quantidade e respectiva percentagem de positivas e negativas. Vitor Pereira [[email protected]] Página 4 de 20 Algoritmia: conceitos fundamentais sobre Decisões 21. Para o algoritmo “maior de 3 valores”, apresente valores de teste que cumpram cada uma das seguintes alíneas: a) As duas condições (corrente > maior) são ambas falsas; b) As duas condições são ambas verdadeiras; c) A primeira condição é falsa e a segunda verdadeira; d) A primeira condição é verdadeira e a segunda falsa; 22. Implemente um programa para calcular o menor de 4 valores. 23. Com base nos algoritmos de classificações, implemente um programa que: a) Classifique uma nota do tipo double (ajuste os limites dos vários intervalos). b) Leia dois números e mostre: “o 1º é maior” ou “o 2º é maior” ou “são iguais”. c) Leia um valor representativo do pH e mostre que tipo de solução representa: ácida (pH<7), neutra (pH=7) ou alcalina (pH>7). d) Leia o número de lados de um polígono, compreendido entre 1 e 10, e indique que polígono representa (1 ou 2 lados: não há polígono; 3 é um triângulo; 4 é um quadrilátero; 5 é um pentágono; etc.). e) Leia um mês (um valor entre 1 e 12) e de seguida mostre o número de dias desse mês (para o mês 2 deverá mostrar “28 ou 29 dias”, para os meses 1, 3, 5, 7, 8, 10, 12 deverá mostrar “31 dias”, para os restantes a mensagem deverá ser “30 dias”). f) Leia a magnitude de um sismo e mostre que tipo de sismo se trata (micro, muito pequeno, pequeno, etc.) e a frequência diária associada (“~8000 por dia”, “~1000 por dia” …). Ver http://pt.wikipedia.org/wiki/Escala_de_Richter. Vitor Pereira [[email protected]] Página 5 de 20 Algoritmia: conceitos fundamentais sobre Repetições 24. Ciclos realizados um número conhecido de vezes (for). Implemente o seguinte: a) Leia n valores representativos do pH e mostre, para cada valor, que tipo de solução representa: ácida (pH<7), neutra (pH=7) ou alcalina (pH>7). b) Classifique todos os meses (ciclo entre 1 e 12) de acordo com o número de dias que possui, ou seja, mostre “28 ou 29 dias”, “30 dias” ou “31 dias”. c) Leia n valores e, no final, mostre quantos positivos, negativos e zeros foram lidos. d) Leia n valores representativos do pH e mostre o número de ocorrências de cada tipo de solução (quantas ácidas, neutras e alcalinas). e) Para todos os meses do ano, mostre quantos existem de cada grupo de acordo com o número de dias que possuem. Isto é, quantos possuem 28 ou 29 dias, quantos possuem 30 dias e quantos possuem 31 dias. f) Leia n idades e mostre a média aritmética dessas idades. g) Calcule a soma de todos os inteiros compreendidos entre dois quaisquer limites inteiros. Por exemplo, para os valores 1 e 100 o programa deverá calcular a soma de 1+2+3+...+98+99+100 e mostrar o resultado. h) Leia os detalhes de n produtos: código, peso, preço e quantidade, e mostre a média de cada um dos atributos numéricos (pesos, preços e quantidades). i) Leia um valor inteiro, n, e calcule o somatório dos n termos das seguintes séries convergentes: 1 1 1 1 1 1 + + + + + +⋯= 1 4 9 16 25 36 6 1 1 1 1 1 1 + + + + + +⋯=2 1 2 4 8 16 32 1 1 1 1 1 1 + + + + + +⋯=2 1 3 6 10 15 21 1 1 1 1 1 1 − + − + − +⋯= 1 3 5 7 9 11 4 j) Leia n valores e mostre o maior e menor valores lidos. Use o algoritmo “maior de n valores (v2)”, ou seja, inicie as variáveis maior e menor com, respetivamente, o menor e maior valores possíveis e leia os valores no ciclo. k) Leia um valor n, inteiro, e calcule o seu fatorial. l) Leia n valores representativos do pH e mostre a percentagem, com uma casa decimal, do número de ocorrências de cada tipo de solução. Vitor Pereira [[email protected]] Página 6 de 20 m) Leia um valor n, inteiro, e mostre quantos divisores possui (use um ciclo entre 1 e n e, para cada valor, use o operador % para testar se o resto da divisão de n por esse valor dá resto zero). n) Leia um valor inteiro e mostre se esse número é primo ou não (isto é, se só possui dois divisores, 1 e ele próprio, ou então mais). o) Mostre quantos números primos existem entre 1 e 100. p) Implemente o cálculo do fatorial através de um método e de seguida calcule o seguinte somatório (teste o seu programa para x=1 e use 10 termos do somatório; o resultado deverá ser aproximadamente igual a Math.E, ou seja, ~2,71828): xi x 2 x3 e 1 x ... 2! 3! i 0 i! x q) Leia n taxas de juro relativas ao rendimento anual de determinado investimento e calcule o rendimento médio desse investimento. Use a média geométrica para calcular o rendimento média (consulte a secção Exemplo do link http://pt.wikipedia.org/wiki/M%C3%A9dia_geom%C3%A9trica). Por exemplo, se um investimento rende 10% no primeiro ano e 20% no segundo ano, então o rendimento médio é aproximadamente igual a 1,1489. 25. Ciclos realizados um número desconhecido de vezes (while): a) Recorrendo ao algoritmo “maior de 3 valores”, implemente um programa que mostre os valores mínimo e máximo (isto é, o menor e o maior valores) de um número desconhecido de notas. b) Leia o número de golos marcados por uma equipa de futebol e no final mostre a média de golos por jogo. c) Leia um número desconhecido de valores reais e mostre e média dos positivos e a média dos negativos (ignorando todos os valores zero lidos). d) Leia um valor real representativo do erro máximo permitido e de seguida calcule o valor de de acordo com o seguinte somatório. No final mostre o número de termos usados de tal forma que o valor absoluto entre o valor calculado e o valor real Math.PI não é superior ao erro máximo permitido. Por exemplo, se o valor lido for 0,0001 então o programa deverá mostrar o número de termos usados no somatório tal que | (valor calculado) – Math.PI | < 0,0001. (i) i 1 6 2 6 6 6 6 6 2 2 2 ... 2 2 3 4 5 Vitor Pereira [[email protected]] Página 7 de 20 Programas Básicos 26. Codifique um programa que mostre a seguinte figura: X XXX XXXXX XXXXXXX XXXXXXXXX XXX XXX XXX 27. Codifique um programa que declare três variáveis: uma do tipo String, outra do tipo Integer e uma terceira do tipo Double. Peça ao utilizador uma string, um inteiro e um valor real, armazenando-os nas três variáveis. Mostre no ecrã os valores introduzidos pelo utilizador. 28. Codifique um programa que leia dois valores e mostre a sua média. 29. Codifique um programa que leia dois números reais. Mostre no ecrã o resultado da adição, subtracção, multiplicação e divisão desses valores. 30. Implemente um programa que, dada a base e a altura de um triângulo, calcule a sua área (Nota: area=(base*altura)/2). 31. Implemente um programa que leia um diâmetro e de seguida calcule o perímetro da circunferência e a área do círculo (Nota: perímetro=2r; área=r2). 32. Desenvolva um programa que leia as notas relativas a um trabalho prático, a um ponto escrito e a um exame final e calcule a média final ponderada de acordo com a seguinte fórmula: NotaFinal = 0.35*TrabalhoPrático + 0.25*PontoEscrito + 0.40*ExameFinal 33. Elabore um programa que mostre se um número introduzido pelo utilizador é par ou ímpar (use o operador Mod para calcular o resto da divisão do número lido por 2). 34. O Teorema de Pitágoras é provavelmente o mais célebre dos teoremas da matemática. Crie um programa para determinar a hipotenusa de um triângulo rectângulo, dados os catetos (Se h designar o comprimento da hipotenusa e a e b os comprimentos dos catetos, o teorema afirma que: h2 = a2 + b2). 35. Implemente um programa que leia um ângulo, em graus, e mostre o seno, co-seno e tangente desse ângulo (Nota: as funções trigonométricas recebem um ângulo em radianos. Converta o ângulo em graus para radianos, portanto). Vitor Pereira [[email protected]] Página 8 de 20 36. Escreva um programa que leia o comprimento dos lados de um triângulo (C1, C2 e C3) e calcule a área do triângulo, sendo a área dada por: A T (T C1)(T C 2)(T C 3) onde T C1 C 2 C 3 2 37. Crie um programa que leia dois valores e mostre o maior recorrendo à seguinte fórmula: Maior(A,B) = A B A B 2 38. Codifique um programa que leia dois números reais. Mostre no ecrã o resultado formatado de forma adequada da adição, subtracção, multiplicação e divisão desses valores. Por exemplo, para os valores 5 e 2 mostre: 5 + 2 = 7 5 - 2 = 3 5 * 2 = 10 5 / 2 = 2,5 39. Codifique um programa que leia um número inteiro e apresente a tabuada entre 1 e 10 desse valor. Mostre no ecrã a tabuada da seguinte forma (para o valor 5): 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 ... 10 * 5 = 50 40. Um sistema de equações lineares da forma: ax by c dx ey f pode ser resolvido através das seguintes fórmulas: x ce bf ae bd y af cd ae bd Desenvolva um programa que leia os dois conjuntos de coeficientes e mostre os dois valores da solução. Vitor Pereira [[email protected]] Página 9 de 20 Operadores Lógicos 41. Indique qual o resultado lógico (Verdadeiro ou Falso) das seguintes expressões (NÃO codifique programas. Indique apenas qual o resultado lógico de cada alínea): a) 7>=7 b) 10>=20 Or 10>=5 c) 12=13–1 And 1>0 d) 0>–10 Or –10>–20 e) Not (123=123) f) Not(0=0 And 1=2) g) 24>20 And 24<30 h) 4>8 Or 1=0 Or 2<>3 i) Not(1<>0 And 1>2) j) Not(12<=11 Or 12 >=21) Estrutura de Decisão If...Then...Else: duas alternativas 42. Crie um programa que leia um número e de seguida apresente o seu módulo (ou valor absoluto). Considere que não dispõe de uma função com essa funcionalidade (isto é, crie um programa que implemente a mesma funcionalidade de Math.Abs). 43. Elabore um programa que leia 3 números e apresente o respectivo produto se a soma dos quadrados dos dois primeiros números for superior ao dobro do terceiro, ou a respectiva soma, se a condição referida anteriormente for falsa. 44. Codifique um programa que leia o nome e o género de uma pessoa (“M” para masculino e “F” para feminino) e de seguida apresente uma mensagem de agradecimento incluindo “Sr.” ou “Sra.” (isto é, apresente qualquer coisa como “Obrigado, Sra. Ana Beatriz” ou então “Obrigado, Sr. João Sousa”). 45. Codifique um programa que leia dois valores e de seguida mostre a sua média aritmética e a mensagem “Aprovado” ou “Reprovado”, de acordo com o facto de a média ser igual ou superior a 10 ou não. 46. Codifique um programa que leia três números e mostre aqueles que são maiores do que a média. 47. Desenvolva um programa que leia as notas relativas a um trabalho prático, a um ponto escrito e a um exame final e calcule a média final ponderada de acordo com a seguinte fórmula: NotaFinal = 0.35*TrabalhoPrático + 0.25*PontoEscrito + 0.40*ExameFinal No final apresente uma mensagem adequada indicando aprovação ou reprovação. Vitor Pereira [[email protected]] Página 10 de 20 Estrutura de Decisão If...Then...Else: diversas alternativas 48. Implemente um programa que leia um valor e mostre se o valor é negativo, positivo ou zero. 49. Implemente um programa que leia um valor representativo do pH e mostre que tipo de solução representa: ácida, neutra ou alcalina. 50. Codifique um programa que leia dois números e mostre qual o maior (ou, no caso dos números serem iguais, apresente uma mensagem a indicar este facto). 51. Implemente um programa que leia os três lados de um triângulo e mostre que tipo de triângulo representam (três lados iguais = equilátero; dois lados iguais = isósceles; três lados diferentes = escaleno). 52. Crie um programa que leia qual o mês (um valor entre 1 e 12) e de seguida mostre o número de dias desse mês (para o mês 2 deverá mostrar “28 ou 29 dias”, para os meses 1, 3, 5, 7, 8, 10, 12 deverá mostrar “31 dias”, para os restantes a mensagem deverá ser “30 dias”). 53. Crie um programa que leia a magnitude de um sismo e mostre que tipo de sismo se trata (micro, muito pequeno, pequeno, etc.), bem assim como a frequência diária associada. (ver http://pt.wikipedia.org/wiki/Escala_de_Richter). 54. Implemente um programa que leia a temperatura média registada num dia e indique, de acordo com a seguinte informação, se se tratou de um dia Muito Frio, Frio, Ameno, Quente ou Muito Quente: Menos de 8 ºC -> Muito Frio; Entre 8 e 16 ºC -> Frio; Entre 17 e 22 ºC -> Ameno; Entre 23 e 27 ºC -> Quente; Mais de 27 ºC -> Muito Quente Estrutura de Repetição For...Next 55. Codifique um programa que imprima as sequências de números indicadas (Nota: use a cláusula Step do ciclo For...Next para produzir as sequências especificadas; dentro do ciclo use a função Write com o valor da variável de ciclo concatenada com um espaço). 1 2 3 4 5 6 7 8 9 10 0 2 4 6 8 10 12 11 22 33 44 55 66 77 88 –10 –9 –8 –7 –6 –5 –4 –3 –2 –1 20 19 18 17 15 14 13 12 11 10 –1 –2 –3 –4 –5 –6 –7 –8 –9 –10 1 4 9 16 25 36 49 64 81 35 24 15 8 3 0 Vitor Pereira [[email protected]] Página 11 de 20 56. Escreva um programa que, utilizando um ciclo, leia 3 números introduzidos pelo utilizador e mostre, para cada número, uma mensagem a indicar se é negativo, positivo, ou zero. 57. Elabore um programa que, utilizando um ciclo, leia 3 números inteiros introduzidos pelo utilizador e mostre, para cada número, uma mensagem a indicar se é par ou ímpar. 58. Crie um programa que mostre as potências de base 2 para expoentes compreendidos entre 0 e 10, como ilustrado de seguida: 2^0 = 1 2^1 = 2 … 2^10 = 1024 59. Implemente um programa que mostre uma tabela de conversão entre temperaturas Celsius e Fahrenheit, para os valores múltiplos de 10 compreendidos entre 0 e 100. 9 A fórmula de conversão é F C 32 . A tabela a mostrar deverá ser: 5 0 ºC = 32 ºF 10 ºC = 50 ºF ... 100 C = 212 ºF 60. Escreva um programa que mostre a seguinte tabela: n n^2 1 1 2 4 3 9 ... ... 10 100 n^3 1 8 27 ... 1000 61. Escreva um programa que, utilizando um ciclo, mostre a seguinte tabela: n 2^n 1 2 2 4 3 8 ... ... 10 1024 Vitor Pereira [[email protected]] Página 12 de 20 62. Crie um programa que mostre o valor do co-seno para os ângulos 0º, 10º, 20º, …, 80º, 90º. A tabela a mostrar deverá ser (arredondado a 4 casas decimais): cos(0º) = 1 cos(10º) = 0,9848 … cos(90º) = 0 63. Implemente um programa que mostre a média aritmética de n valores. 64. Crie um programa que leia um número inteiro e mostre os seus divisores. Exemplo: divisores de 6: 1, 2, 3, 6. 65. Codifique um programa que determine a amplitude térmica entre 5 temperaturas registadas, isto é, mostre a diferença entre a maior e a menor dessas temperaturas. 66. Implemente um programa que calcule a soma de todos os inteiros compreendidos entre dois limites. Por exemplo, dados os valores 1 e 100 o programa deverá calcular a soma de 1+2+3+...+98+99+100 e mostrar o resultado. 67. Codifique um programa que mostre todos os números de quatro dígitos em que o quadrado da soma das duas metades do número é igual ao próprio número. Exemplo 2025: duas metades 20 e 25. Soma das duas metades 20+25=45 ; 45 * 45 = 2025 68. Crie um programa que calcule a soma da seguinte série de 100 termos: 1 – 1/2 + 1/4 - 1/6 + 1/8 –1/10 + 1/12... 69. Implemente um programa que leia n valores representativos do pH e mostre o número de ocorrências de soluções ácidas, neutras e alcalinas. Apresente ainda a percentagem associada a cada um dos três tipos. 70. Implemente um programa que mostre uma tabela de conversão entre Celsius e Fahrenheit cujos limites e incremento são introduzidos pelo utilizador. Isto é, deve ler os valores mínimo, máximo e incremento, e mostrar a conversão para os valores especificados. 71. Desenvolva um programa que leia um valor inteiro, n, e de seguida apresente o valor do seguinte somatório: 3i 3 4 5 6 3 n = 0 1 2 3 n i n n n n n i 0 n n Vitor Pereira [[email protected]] Página 13 de 20 72. Sem recorrer ao Visual Basic, indique qual o output do seguinte programa. Confirme a sua resposta no Visual Basic. Sub Main() For i As Integer = 1 To 10 For j As Integer = 1 To i Console.Write("X") Next Console.WriteLine() Next End Sub 73. Sem recorrer ao Visual Basic, indique qual o output do seguinte programa. Confirme a sua resposta no Visual Basic. Sub Main() For i As Integer = 1 To 10 For j As Integer = 1 To 10 If i > 7 And j > 8 Then Console.WriteLine("i=" & i & " j=" & j) End If Next Next End Sub 74. Crie um programa que mostre uma tabela com o volume do cilindro em função do raio e da altura. O raio deverá variar entre 2 e 5 de 0,5 em 0,5 cm. A altura deverá variar entre 1 e 5 de 1 em 1 cm. Mostre o volume arredondado a 3 casas decimais. A fórmula de cálculo é r2a (r=raio; a=altura). 75. Codifique um programa que calcule o factorial de n números, pedidos ao utilizador (Nota: n! = n(n-1)(n-2)...2.1). Estrutura de Repetição Do While 76. Dado um país A, com 5.000.000 de habitantes e uma taxa de natalidade de 3% ao ano, e um país B com 7.000.000 e uma taxa de natalidade de 2% ao ano, construa um programa que calcula quantos anos serão necessários para que a população do país A ultrapasse a população do país B. Confirme o resultado mostrando a evolução da população dos dois países ao longo dos anos. 77. Crie um programa que leia um número desconhecido de inteiros e mostre, para cada valor lido, os seus divisores (use -1 para terminar). 78. Implemente um programa que mostre a média aritmética de um número indeterminado de valores. Vitor Pereira [[email protected]] Página 14 de 20 Estrutura de Decisão Select Case 79. Sem recorrer ao Visual Basic, indique qual o output do seguinte programa. De seguida copie o programa para o Visual Basic e confirme a sua resposta. Sub Main() Dim op1, op2, op3, op4 As Integer op1 op2 op3 op4 = = = = 0 0 0 0 For i = 1 To 10 Select Case i Case 1 op1 += 1 Case 2, 3 op2 += 1 Case 4 To 6 op3 += 1 Case Else op4 += 1 End Select Next Console.WriteLine("op1=" & op1 & " op2=" & op2 & " op3=" & op3 & " op4=" & op4) End Sub 80. Sem recorrer ao Visual Basic, indique qual o output do seguinte programa. De seguida copie o programa para o Visual Basic e confirme a sua resposta. Sub Main() Dim neg, zero, pos As Integer neg = 0 pos = 0 zero = 0 For i = -5 To 5 Select Case i Case Is < 0 neg += 1 Case 0 zero += 1 Case Is > 0 pos += 1 End Select Next Console.WriteLine("Negativos = " & neg & " Zero = " & zero & " Positivos = " & pos) End Sub Vitor Pereira [[email protected]] Página 15 de 20 81. Implemente um programa que dada a temperatura média registada num dia classifique, de acordo com a seguinte tabela, se se tratou de um dia Muito Frio, Frio, Ameno, Quente ou Muito Quente. Menos de 9 ºC Entre 9 e 14 ºC Entre 15 e 19 ºC Entre 20 e 26 ºC Mais de 27 ºC Muito Frio Frio Ameno Quente Muito Quente 82. Implemente um programa que leia dois valores (operandos) e um operador aritmético (+,-,*,/) e calcule o resultado da operação sobre os valores lidos. Exemplo de utilização (a linha a negrito é o resultado do programa): Qual o primeiro valor? 12 Qual o segundo valor? 4 Qual a operação (+,-,*,/)? * Resultado: 48 83. Implemente um programa que leia o número de lados de um polígono, compreendido entre 1 e 10, e indique que polígono representa (1 ou 2 lados: não há polígono; 3 triângulo; 4 quadrilátero; 5 pentágono; etc.). (consulte http://pt.wikipedia.org/wiki/Polígono). 84. Codifique um programa que leia três notas (entre 0 e 20) e de seguida, para cada nota, faça a reclassificação de acordo com os seguintes níveis (muito insuficiente, insuficiente, suficiente, bom e muito bom). Faça as considerações que julgue mais apropriadas. 85. A empresa IMAGINARIUM pretende distribuir um bónus pelos seus n colaboradores. Implemente um programa que, para cada colaborador, leia o nome e o salário actual e de seguida mostre o nome, salário actual e novo salário, de acordo com os seguintes aumentos: Salário < 500 4%; 500 <= Salário < 750 3%; 750 <= Salário < 1000 2%; Salário >= 1000 1,5%. Altere o programa para no final mostrar o valor da massa salarial antes e depois dos aumentos (isto é, quanto é que a empresa pagava no total e quanto e que vai passar a pagar por causa dos aumentos). Vitor Pereira [[email protected]] Página 16 de 20 Subrotinas e Funções 86. Implemente uma função chamada AreaTriangulo que receba a base e a altura de um triângulo e retorne a sua área (Nota: area=base*altura/2). 87. Crie funções chamadas VolumeX (em que X é o nome do sólido) para calcular o volume dos seguintes sólidos; ver fórmulas em http://pt.wikipedia.org/wiki/Volume: a) Cubo b) Paralelepípedo c) Cilindro d) Esfera e) Elipsóide 88. Escreva uma função que receba um número inteiro não negativo e retorne o factorial desse número. 89. Uma aproximação à função factorial é dada pela fórmula de Stirling: n n! 2n ( ) n e Codifique uma função que receba um número e de seguida use esta fórmula para calcular o seu factorial. 90. Escreva uma função que receba o comprimento dos três lados de um triângulo (C1, C2 e C3) e retorne a área do triângulo, sendo a área dada por: A T (T C1)(T C 2)(T C 3) onde T C1 C 2 C 3 2 91. O alcance (range, em inglês) de um projéctil lançado com uma velocidade v0 segundo um ângulo 0 com a horizontal é dado pela seguinte fórmula. v sen(2 0 ) R 0 g 2 Codifique uma função que receba as duas variáveis, v0 e 0, e de seguida retorne o alcance. (Nota: Assuma que o ângulo é em radianos. Constante g = 9,8 ms-2). Vitor Pereira [[email protected]] Página 17 de 20 92. Codifique uma função que receba dois parâmetros, x e n, e calcule o seguinte: x n x n 2 x n n2 se x 0 x n1 x n1 n 1 n 1 se x < 0 93. Uma grande parte de funções/constantes matemáticas importantes possuem séries infinitas como aproximações. A aproximação é tanto maior quanto maior for o número de termos utilizado. Desenvolva uma função para calcular o valor de , de acordo com a seguinte série (receba como parâmetro um valor que representa o número de termos a usar): (i ) i 1 6 2 6 6 6 6 6 2 2 2 ... 2 2 3 4 5 Vectores 94. Codifique um programa que declare um vector para armazenar cinco inteiros. Armazene os valores 10, 20, 30, 40 e 50. Sem utilizar um ciclo, mostre os valores armazenados no vector. De seguida altere o programa para, utilizando um ciclo, mostrar os valores armazenados no vector. 95. Codifique um programa que declare um vector para armazenar cinco strings. Armazene os valores “Um”, “Dois”, “Três”, “Quatro” e “Cinco”. Utilizando um ciclo, mostre os valores armazenados no vector. 96. Codifique um programa que declare um vector para armazenar n números reais, pedidos ao utilizador. Utilizando um ciclo, mostre os valores armazenados no vector. 97. Codifique um programa que declare um vector para armazenar n números reais, pedidos ao utilizador. Mostre a média aritmética dos valores inseridos. 98. Codifique um programa que declare um vector para armazenar n números reais, pedidos ao utilizador. Mostre o menor e o maior valores inseridos. Vitor Pereira [[email protected]] Página 18 de 20 99. Codifique um programa que leia n números e mostre aqueles que são maiores do que a média. 100. Codifique um programa que leia n números e mostre-os pela ordem inversa. 101. Desenvolva um programa que leia e armazene n notas inteiras num vector e de seguida mostre as percentagens das positivas e negativas. Por exemplo, se ler 5 notas e, dessas, três forem positivas, o resultado deverá ser 60% positivas e 40% negativas. 102. Crie um programa que leia n valores representativos da intensidade do vento em km/h (ver http://pt.wikipedia.org/wiki/Escala_de_Beaufort) e no final apresente o número de ocorrências de cada grau da escala. 103. Crie um programa que leia n valores representativos da classe de risco de incêndio (ver http://www.meteo.pt/pt/ambiente/risco_incendio/) e no final apresente a classe de risco com maior número de ocorrências. 104. Crie uma função chamada MediaVector que retorne a média dos valores de um 105. Crie uma função chamada MaximoVector que retorne o maior valor existente 106. Crie uma função chamada EPar que receba um valor inteiro e retorne True se o 107. Crie uma função chamada EVogal que receba um carácter e retorne True se o 108. Crie uma função chamada EPrimo que receba um valor inteiro e retorne True se vector do tipo Double. num vector do tipo Double. número for par e False caso contrário. carácter for uma vogal; retorne False caso contrário. se tratar de um número primo; retorne False caso contrário. Vitor Pereira [[email protected]] Página 19 de 20 Strings 109. Codifique um programa que leia quatro strings e de seguida crie e mostre uma 110. Codifique um programa que leia n strings e de seguida crie e mostre uma string 111. Crie um programa que leia uma string e de seguida apresente-a invertida. 112. Codifique um programa que leia um nome e de seguida mostre a primeira string que seja o resultado da concatenação das quatro strings lidas. que seja o resultado da concatenação das n strings lidas, separadas por um espaço. palavra desse nome (use a função IndexOf para procurar o carácter espaço e a função Substring para extrair a string a partir do índice zero até ao índice anterior onde se encontra o espaço). 113. Codifique um programa que leia três strings e apresente-as ordenadas alfabeticamente (utilize como analogia o programa que calcula o maior de três números usando Ifs dentro de Ifs). 114. Codifique uma função chamada Conta que conte o número de ocorrências de um dado carácter numa string. Por exemplo, Conta(“ABCAAZ”, “A”) deve retornar 3; Conta(“ABCAAZ”,”W”) deve devolver 0. 115. Codifique uma função chamada ContaVogais que conte o número de vogais de uma string. Por exemplo, ContaVogais(“Universidade Lusiada”) deve retornar 10; ContaVogais(“XYZ”) deve devolver 0. Chame a função EVogal criada anteriormente. 116. Codifique uma função chamada Repete que repita uma dada string um determinado número de vezes. Por exemplo, Repete(“AH!”, 3) deve gerar e retornar a string “AH!AH!AH!”. Vitor Pereira [[email protected]] Página 20 de 20