EXERCÍCIOS DE LÓGICA DE PROGRAMAÇÃO – PROF. SÉRGIO BRUGNOLO Completar os demais valores que serão impressos: 1. Desenvolva um algoritmo em Portugol que verifique se um número inteiro é negativo. Se for, calcule o seu módulo. Imprima o número. R Volume da Esfera 0 0 2. Crie um algoritmo em Portugol que imprima em ordem decrescente 2 33,51 três números reais fornecidos pelo usuário. ... ... 3. Construa um algoritmo em Portugol que, fornecidos o dia e o mês (em números inteiros), verifique e imprima se aquele dia realmente existe naquele mês. Exemplo: dia 31 e mês 2 não existe; dia 20 e mês 7 ok; dia 0 e mês 5 não existe. 4. Escreva um algoritmo em Portugol que transforme o grau Celsius dado pelo usuário em Fahrenheit. Lembrete: F = C * (9/5) + 32. 5. Implemente um algoritmo em Portugol que, dados 3 ângulos pelo usuário, verifique se os mesmos são ângulos internos de um triângulo. Para isso a soma dos 3 ângulos deve ser sempre igual a 180. Se forem, calcule e imprima os 3 ângulos externos, lembrando que todo ângulo externo de um triângulo é igual a soma dos dois ângulos internos não adjacentes – exemplo: ângulo externo A = ângulo interno b + ângulo interno c. 6. Dado o trecho de algoritmo abaixo, que calcula o volume de uma esfera de raio R: início volume0; PI3,1416; R0; enquanto R<=6 faça início volume4/3*PI*(R*R*R); imprima(R,volume); RR+2; fim enquanto; fim. 7. Encontre o erro de lógica do trecho do algoritmo a seguir: ... i0; enquanto i<20 faça início imprima (i, i*i); i i - 1; imprima (‘i=’,i); fim_enquanto; imprima (‘UFA! CHEGUEI AQUI!’); ... 8. Desenvolva um algoritmo que imprima os números ímpares de 0 a 100. 9. Desenvolva um algoritmo que, dado um número qualquer, imprima os 30 anteriores ao mesmo. Utilize uma estrutura de repetição. 10. Fornecido um número positivo e real qualquer, escreva um algoritmo que imprima os 15 números antecessores a este e os 15 próximos também. Utilize obrigatoriamente estrutura de repetição (qualquer). 11. Elaborar um algoritmo em Portugol que calcule o fatorial de um número inteiro fornecido pelo usuário. Exemplo: 6! = 6.5.4.3.2.1. Lembrete: Fatorial de zero é 1; e não existe fatorial de número negativo. 12. Fornecido o valor de x, calcule a equação a seguir através de um algoritmo em Portugol: x2 + x – 1. 1 EXERCÍCIOS DE LÓGICA DE PROGRAMAÇÃO – PROF. SÉRGIO BRUGNOLO 20. Escreva um algoritmo que calcule o volume (V) de um cone, onde 13. Crie um algoritmo em Portugol que verifica se um número é par, π .r 2 .h V = ímpar ou nulo. Lembre-se de utilizar a função MOD para obter o resto 3 . r e h são dados pelo usuário e π é igual a 3.1416. da divisão inteira. 14. Fornecidos 4 números inteiros, implemente um algoritmo em Portugol que imprima o maior deles. 15. Implemente um algoritmo que calcule o binômio de Newton na terceira potência notável: a3+3a2b+3ab2+b3. Para tanto, o usuário deve digitar os valores de a e b. 16. Utilizando o comando Enquanto-Faça, desenvolva um algoritmo em Portugol que imprima a tabuada do 8, começando do zero. 17. Escreva um algoritmo em Portugol que calcule a hipotenusa (a) conforme o Teorema de Pitágoras. O usuário deve digitar os valores dos catetos b e c. Teorema: a2 = b2 + c2. Se necessário, utilize a função de raiz quadrada SQRT. 18. A Energia Potencial Gravitacional (EPG) está relacionada com a posição que um corpo ocupa no campo gravitacional terrestre e sua capacidade de vir a realizar trabalho mecânico. EPG = m.g.h, onde m é a massa do corpo, g é a aceleração gravitacional e h é a altura em relação ao nível de referência. Portanto, crie um algoritmo em Portugol que, fornecidos m, g e h, calcule a Energia Potencial Gravitacional. 19. Implemente um algoritmo em Portugol que calcule a velocidade de escoamento de fluídos através de pequenos orifícios (VB). Serão digitados a aceleração gravitacional g e altura em relação ao nível de referência h. Fórmula: SQRT. VB = 2.g.h ; utilize a função de raiz quadrada 21. Um dado comerciante sempre calcula o preço de venda dos seus produtos com uma margem de aumento x%. Portanto, construa um algoritmo em Portugol que, dados o valor de custo e a margem de aumento, imprima o preço de venda. 22. Fornecidas as idades de quatro irmãos, construa um algoritmo em Portugol que imprima a idade do irmão caçula e do mais velho. 23. Em uma operação bancária, mais especificamente no pagamento de um boleto, cobram-se juros e multa se houver atraso na quitação. A multa geralmente corresponde a um percentual (%) de aumento sobre o valor a pagar, e os juros são valores em reais de acréscimos diários. Portanto, implemente um algoritmo em Portugol que calcule e imprima o valor final a pagar. Para isso, considere: • O usuário fornecerá o valor inicial a pagar, o valor dos juros e o percentual de multa. • Valores da multa e dos juros igual a –1, implica que o valor final a pagar será igual ao valor inicial, ou seja, não haverá o cálculo de multa de juros. 24. Dados três números inteiros pelo usuário, construa um algoritmo em Portugol que imprima o número intermediário, ou seja, nem o maior nem o menor. 25. Explique o que é um Algoritmo. 26. Suponha que irá telefonar para seu amigo. Você está em um orelhão, com o cartão telefônico no bolso da sua calça. Descrever o algoritmo que irá executar até o momento em que terminar de teclar o último dígito do número do telefone do seu amigo. 27. Para que serve o conectivo condicional Se-Então? 2 EXERCÍCIOS DE LÓGICA DE PROGRAMAÇÃO – PROF. SÉRGIO BRUGNOLO 40. 28. Descreva a função do conectivo repetitivo Enquanto-Faça. Início Afalso; 29. Defina programa e linguagem de programação. Bverdadeiro; Cfalso; 30. O que visa a metodologia de projeto de programas da X1,5; Y3,2; Programação Estruturada? XX+1; 31. Quais são os 3 níveis da Programação Estruturada onde pode-se se C ou (X+Y>5) ou (não A e B) reduzir a complexidade? Explique cada um. então L0; senão L1; 32. Como sabe-se que um identificador é válido? Quais abaixo são fim se; válidos? Fim. a) PROG1 b) 2A c) 1CONTA Qual o valor de L após a execução deste trecho de algoritmo? d) 25 e) XY4 f) K 41. O que será impresso depois de executado o trecho de algoritmo 33. Cite 3 tipos de variáveis. Dê exemplos. seguinte, se: 34. Defina Variável. 41.1. NUM 10; 35. Estabeleça as prioridades entre os operadores lógico, aritmético e relacional (Monte uma tabela). 41.2. NUM 0; 36. Para que serve o comando Leia do Portugol? 41.3. NUM −4; início 37. Para que serve o comando Imprima do Portugol? NUM {um dos valores acima}; se NUM>0 então QUALE ‘Número Positivo’ senão se NUM<0 então QUALE ‘Número Negativo’ senão QUALE ‘Zero’; imprima(QUALE); 38. Desenvolva um algoritmo em Portugol que calcule a seqüência a seguir até o 30º termo: 1, 2, 2, 4, 8, 32, 256... A seqüência é calculada multiplicando os dois números anteriores. 39. Implemente um algoritmo em Portugol que leia 50 números inteiros e positivos, e imprima o maior e menor deles. fim. 42. Faça um algoritmo que calcule a soma de 3 números fornecidos pelo usuário. 3 EXERCÍCIOS DE LÓGICA DE PROGRAMAÇÃO – PROF. SÉRGIO BRUGNOLO a) 5 * 6 + 3 ^ 2 / 2 - 2 ^ 2 / 2 ^ 3 Ache os erros dos trechos de algoritmos 43 e 44, se existirem: b) (2 ^ 7 - 10 ** 2) / 7 - 4 ^ 2 + 3 * 4 43. c) 15 * 3 - 5 * 6 + 3 ^ 3 / 9 - (2 * 8 + 2 * 2) / 10 início d) 4 ^ (1 / 2) + 5 * 9 - 3 ^ 2 * (2 + 3) + 3 * 6 / 2 AREA=0; e) 3 * 9 / 27 - 1 ^ 10 + (14 / 7 + 32 / 4) / 5 VOLUME=0; leia AREA, VOLUME; 47. Verifique se as alternativas a seguir são verdadeiras ou falsas: SOMAAREA+VOLUME a) (5 * 6 + 3 ** 2 / 2 - 2 ** 2 / 2 ** 3) > (5 - 2 ** (16 / 8)) imprima SOMA; b) (3 * 9 / 27 - 1 ** 10) = (5 * 10 - 5 ** 2 * 2) fim se. c) (15 * 3 - 5 * 6 - 4 ** 2) <= (16 + 4 - 5 * 4) d) ((2 ** 7 - 10 ** 2) / 7 - 4 ** 2 + 3 * 4) <> (3 * 6 / 2 + 1) 44. e) (0,9 + 10 ** (25 - 6 * 4)) >= (1 / 2 + 10 ** (-1) + 10 / 25) início valor0; 48. Se A=127, B=10, C=5, D=Falso e E=Verdadeiro. Qual é o valor leia(valor); produzido por cada uma das sentenças abaixo? se valor>0 a) não D e) (D e E) ou (A=B) b) D e E f ) (D ou E) e (A<B) então imprima(“Número Negativo”); senão c) (A>B) ou (B<C) g) A+B < C e D ou E e não D d) não (A<B) h) A+B*C/B = 3 e não (D ou E) se valor<0 então imprima(“Número Positivo”); senão 49. Qual é a primeira operação executada em cada um dos comandos abaixo? se valor=0 a) X + Y - Z d) Maria + João + Bete * Júlia imprima(‘Número Nulo (0)’); fim. b) A + B / C ^ 2 e) X + Y + B ^ 2 + R * 3 c) João + José / Joel f)A*B/C*D 45. Fazer um algoritmo que: dado três valores A, B e C, verificar se eles podem ser valores dos lados de um triângulo e, se for, se é 50. Qual a diferença entre os comandos Repita-Até e Enquanto-Faça? triângulo qualquer, equilátero ou isósceles. Observações: 51. Compare os comandos: Escolha-Caso-Senão e Se-Então-Senão. • Para serem valores de um triângulo os lados individualmente tem que ser menores que a soma dos outros dois. • Triângulo equilátero tem 3 lados iguais. • Triângulo isósceles tem 2 lados iguais. • Triângulo qualquer tem os 3 lados diferentes. 46. Resolva as expressões a seguir: 4 EXERCÍCIOS DE LÓGICA DE PROGRAMAÇÃO – PROF. SÉRGIO BRUGNOLO 52. Observe o exemplo abaixo, que calcula o resto de uma divisão Para saber o Dia da Semana basta dividir por 7 e entrar com o resto inteira. na tabela abaixo: Se 1997:23=86,826086, então o quociente aproximado é 86. O resto 0 Segunda será: 1997-(86x23) 86x23=1978. Daí, 1997-1978=19 O resto é 1 Terça 19. 2 Quarta Para conseguir a parte inteira de um número, declare a variável que 3 Quinta receberá este número como tipo inteiro. 4 Sexta Logo, crie um algoritmo em Portugol, que fornecidos dois números 5 Sábado (dividendo e divisor), calcule e imprima o quociente e o resto da 6 Domingo divisão inteira. Programe um algoritmo em Portugol que, fornecidos o dia, mês e ano (não esqueça de verificar se são válidos), calcule e imprima o dia do 53. A sequência de Fibonacci (lê-se: fibonati), é uma função f:N N, século e da semana. onde: f(N)={1,1,2,3,5,8,13,21,34,55,89,144,233,377,...} 57. Leia com atenção o texto a seguir sobre Física Nuclear: A partir do 3º elemento (inclusive), os próximos são as somas dos dois Com o passar do tempo e na ausência de uma teoria detalhada para anteriores. descrever a estrutura nuclear, vários modelos foram desenvolvidos, Portanto, desenvolva um algoritmo em Portugol que calcule e imprima cada qual correlacionando os dados experimentais de um conjunto os 50 primeiros elementos da série de Fibonacci. mais ou menos limitado de fenômenos nucleares. Entre os modelos formulados está o modelo de gás de Fermi, o modelo uniforme, o 54. Fornecidos 3 números inteiros (i, j, k), onde i é o início e j o final de modelo de partícula a, o modelo da gota líquida e o modelo nuclear de um intervalo de números. Escreva um algoritmo em Portugol que camadas. Com o modelo da gota líquida foi desenvolvida a seguinte imprima os números pares do intervalo e verifique se k pertence ou fórmula semi-empírica para o cálculo da energia de ligação nuclear: não a este intervalo. E = av.A – ac.Z.(Z-1).A – 1/3 – as.A.2/3 – ar.(A-2.Z).2.A – 1 + api.A – 1 onde um dos possíveis conjuntos de valores (em MeV) para as 55. De um grupo de 200 animais de um zoológico, deseja-se saber constantes av, ac, as, ar e api, obtidos por ajustes de curvas quantos são ovíparos, ovovivíparos, ovulíparos e vivíparos. Portanto, experimentais, é o seguinte: implemente um algoritmo em Portugol para resolver isso. av = 14,0; ac = 0,584; 56. O Dia do século é o número de dias decorridos desde o inicio do as = 13,1; século (1º de janeiro de 1901) até a data em questão. Se usa como ar = 19,4; referência 1901 porque a maioria das datas com as quais se trabalha api = 135.α; ainda são do século passado. Lá por 2040 ou mais poderá se mudar com α=+1 para núcleos par-par (Z par e N par), α=0 para núcleos parpara 2001. ímpar (Z par e N ímpar ou Z ímpar e N par) e α=-1 para núcleos A fórmula (válida para datas entre 1901 e 2099) é a seguinte: ímpar-ímpar (Z ímpar e N ímpar). DIA_DO_SECULO = (ANO - 1901) * 365 + (ANO - 1901) DIV 4 + DIA Portanto, fornecidos A (número de Núcleos), Z (Prótons) e N + (MES - 1) *31 - [(MES * 4 + 23) DIV 10] * [(MES + 12) DIV 15] + [(4 (Nêutrons), calcule e imprima E (Energia de Ligação Nuclear). ANO MOD 4) DIV 4) * [(MES + 12) DIV 15] 5 EXERCÍCIOS DE LÓGICA DE PROGRAMAÇÃO – PROF. SÉRGIO BRUGNOLO 62.2. Se B1=falso, B2=verdadeiro, B3=falso, quais os comandos que 58. Dados os valores inteiros dia, mês e ano, escreva a data por extenso: 27/05/2008 27 de Maio de 2008. Não se esqueça de serão executados? verificar se os dados fornecidos são válidos. Por exemplo, não existe 62.3. Quais os valores de B1, B2, B3 para que somente o comando dia 30 em fevereiro, nem 32 em setembro, muito menos mês 18. C5 seja executado? 62.4. Se B1=falso, B2=verdadeiro, B3=verdadeiro, quais os comandos 59. Em uma criação de 300 avestruzes são necessárias as que serão executados? informações: maior peso, menor peso e média de peso. Escreva um algoritmo em Portugol que calcule e imprima estas informações. 63. Melhore os trechos de algoritmos a seguir, utilizando estruturas de repetição: 60. Faça um algoritmo em Portugol que fornecido um número entre 1 e 12, imprima o mês por extenso correspondente. 63.2. 63.1. Início Início 61. Construir um algoritmo em Portugol para fazer a soma de vários total0; total0; valores inteiros e positivos, fornecidos em cartões. O último cartão tem leia(valor); leia(valor); o valor -1. totaltotal+valor; se valor<0 leia(valor); então 62. totaltotal+valor; valorvalor*(-1); ........ leia(valor); totaltotal+valor; se B1 totaltotal+valor; leia(valor); leia(valor); então C1 se valor<0 senão totaltotal+valor; então leia(valor); se B2 valorvalor*(-1); então totaltotal+valor; totaltotal+valor; se B3 leia(valor); leia(valor); então C2 totaltotal+valor; se valor<0 senão leia(valor); então início totaltotal+valor; valorvalor*(-1); imprima(‘O total é ‘, total); totaltotal+valor; C3; C4; fim. leia(valor); se valor<0 fim_se; C5; então ........ valorvalor*(-1); Dado um trecho do algoritmo em Portugol acima, responda: totaltotal+valor; imprima(‘O total é ‘, total); fim. 62.1. Se B1=verdadeiro, B2=verdadeiro, B3=falso, quais os comandos (Cn) que serão executados? 6