Estruturas iterativas

Estruturas iterativas

  1. Uma pergunta fundamental é um expressão aritmética com dois operandos inteiros não negativos, cujas operações permitidas são soma (+), subtração(-), multiplicação (*) e divisão (/) e que cujo resultado é 42. Escreva um programa que só termine quando o usuário digitar uma pergunta fundamental (um operando, um operador aritmético e outro operando).

    Exemplo de execução:

    Digite uma pergunta fundamental: 2 + 2
    Essa não é uma pergunta fundamental, tente de novo: 1 * 44
    Essa não é uma pergunta fundamental, tente de novo: 0 - 42
    Essa não é uma pergunta fundamental, tente de novo: 84 / 2
    Obrigado!
    
  2. Coelhos:

    a) Um homem quer começar a criar coelhos e quer saber quantos coelhos ele terá depois de $n$ meses. Suponha que no primeiro mês ele compra uma parelha de coelhos jovens, que as parelhas amadurecem e reproduzem-se apenas após o segundo mês de vida sem problemas de cruzamento consanguíneo e em todos os meses. Também supunha que cada parelha fértil dá a luz a uma nova parelha e que os coelhos nunca morrem.

    Assim, no primeiro mês ele terá uma parelha, no segundo ainda 1, no terceiro 2, no quarto 3 e assim por diante. Essa é a sequência de Fibonacci.

    Escreva um programa que leia um número $n$ e devolva o número de parelhas após $n$ meses.

    b) Essa sequência é chamada de sequência de Fibonacci, que tem a seguinte lei de formação:

    $$F_{i} = F_{i-1} + F_{i-2} \mbox{ e } F_1, F_2 = 1$$

    Assim,

    $$F = (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...)$$

    Faça um algoritmo que imprima os 20 primeiros termos da sequência de Fibonacci.

  3. Você possui um vergalhão de ferro de $L$ centímetros e deseja construir a estrutura de uma caixa. A estrutura conterá um pedaço de vergalhão em cada aresta da caixa. Para evitar desperdício, a caixa deverá usar todo o vergalhão, mas ficará em um recinto de volume no máximo $V\,\mbox{cm}^3$. Faça um programa que imprima todas as dimensões inteiras em centímetros possíveis para essa caixa.

  4. Relembre que capicuas são números que lidos da esquerda para a direita é o mesmo que quando lido da direita para a esquerda. Exemplos:

    • 10201
    • 2002
    • 565
    • 99
    • 7

    Faça agora um algoritmo que verifique se um número é capicua independente do número de dígitos.

  5. Faça um algoritmo que, para cada número inteiro de 1 até 100, imprima "tic" se esse número for múltiplo de 3 e imprima "toc" se for múltiplo de "5".

  6. Faça um programa que imprima um menu de 4 pratos na tela e uma quinta opção para sair do programa. O programa deve imprimir o prato solicitado. O programa deve terminar quando for escolhido a quinta opção.

  7. Faça um programa que lê dois números inteiros positivos a e b. Utilizando laços, o seu programa deve calcular e imprimir o valor $a^b$.

  8. Séries:

    a) Faça um programa que lê um número n e que compute e imprima o valor

    $$ \sum_{i=1}^n i. $$

    Não use formúlas como a da soma de uma P.A. Depois faça uma versão que usa uma fórmula fechada para a soma acima. Qual versão executa mais rapidamente? Por quê?

    b) Agora, faça um programa que lê um número $n$ e imprima os valores da soma

    $$ \sum_{i=1}^j i $$

    para $j$ de 1 até $n$. Você usaria uma fórmula fechada para imprimir cada elemento da série?

  9. Faça um programa que lê um número n e imprima os valores entre 2 e n, que são divisores de n.

  10. No exemplo dos números primos visto em aula, não precisamos testar todos os números entre $2, \dots, (n−1)$, para verificar se dividem ou não n. Basta testarmos até n/2. Por quê? Qual o maior divisor possível de $n$? Na verdade basta testarmos os números $2,\dots, \sqrt{n}$. Por quê?

  11. Considere um programa para determinar se uma sequência de n números digitados pelo usuário está ordenada ou não. Implemente um programa usando uma variável contadora.

  12. Escreva um programa que lê um número n, e então imprime o menor número primo que é maior ou igual n, e imprime o maior primo que é menor ou igual a n. 1

  13. O que será impresso pelo programa abaixo? Assuma que o valor de D na declaração de x é o valor do último dígito do seu RA. Faça um teste de mesa, isso é, execute usando lápis e papel. Depois verifique sua resposta usando um computador. Finalmente, simule o algoritmo passo a passo utilizando um debugger e configurando breakpoints no início de cada iteração. Se não souber como utilizar um debugger, procure ajuda de um monitor.

    x = 5 + D
    y = 0
    while x != 0:
        y = (x % 2) + 10 * y
        x = x // 2
        print(f'x = {x}, y = {y}')
    while y != 0:
        x = y % 100
        y = y // 10
        print(f'x = {x}, y = {y}')
    
  14. Escreva um programa para ler n números do tipo float e imprimir quantos deles estão nos seguintes intervalos: [0 . . . 25], [26 . . . 50], [51 . . . 75] e [76 . . . 100]. Por exemplo, para n = 10 e os seguintes dez números 2.0, 61.5, −1.0, 0.0, 88.7, 94.5, 55.0, 3.1415, 25.5, 75.0, seu programa deve imprimir:

    Intervalo [0..25]: 3
    Intervalo [26..50]: 0
    Intervalo [51..75]: 3
    Intervalo [76..100]: 2
    
  15. Elabore um programa para calcular a raiz quadrada de um número positivo, usando o roteiro abaixo, baseado no método de aproximações sucessivas de Newton. O algoritmo deverá prover 20 aproximações. Seja $Y$ o número:

    a) a primeira aproximação para a raiz quadrada de $Y$ é $X_1 = \frac{Y}{2}$

    b) as sucessivas aproximações serão $X_{n+1} = \frac{X^2_n + Y}{2 X_n}$.

  16. Faça um algoritmo para calcular e escrever o fatorial de um determinado número lido.

  17. A conversão de graus Farenheit para centígrados é obtida por:

    $C= \frac{5}{9} (F – 32)$

    Faça um algoritmo que calcule e escreva uma tabela de centígrados em função de Farenheit, que variam de 50 a 150 de 1 a 1.

  18. Considere o programa para determinar se uma sequência de n números digitados pelo usuário está ordenada ou não.

  19. Múltiplas sequências:

    1. Faça um algoritmo que calcule e escreva o valor de S:

      $$ S= \frac{1}{1} + \frac{3}{2} + \frac{5}{3} + \frac{7}{4} + \dots + \frac{99}{50} $$

    2. Faça um algoritmo que calcule e escreva o valor de S:

      $$ S= \frac{2^1}{50} + \frac{2^2}{49} + \frac{2^3}{48} + \frac{2^4}{47} + \dots + \frac{2^{50}}{1} $$

    3. Faça um algoritmo que calcule o valor de S:

      $$ S= \frac{1}{1} - \frac{2}{4} + \frac{3}{9} - \frac{4}{16} + \dots - \frac{10}{100} $$

  20. Faça um algoritmo que leia o nome de cinco alunos, as notas de português, matemática e física de cada um deles, calcule a média de cada uma das disciplinas e a média geral. Escreva as médias de português, matemática, física e média geral.

  21. Seja S um texto formado por letras maiúsculas, vírgulas, pontos e brancos, terminado pelo caractere ‘#‘ (que somente ocorre no fim do texto). Escreva um programa que leia os caracteres de S, um por vez, e imprima o número de palavras com comprimento menor ou igual a 5.

  22. Escreva um programa que leia um número inteiro positivo n e em seguida imprima n linhas do chamado triângulo de Floyd. O exemplo abaixo mostra o triângulo de Floyd com 6 linhas.

    1
    2 3
    4 5 6
    7 8 9 10
    11 12 13 14 15
    16 17 18 19 20 21
    
  23. Escreva um programa que leia um número inteiro n e escreva uma figura similar à seguinte, mas com n linhas.

    ...*......*...
    ..***....***..
    .*****..*****.
    **************
    
  24. Escreva um programa que imprima uma tabela de números ímpares com $m$ linhas e $n$ colunas ($m$ e $n$ são lidos do teclado) como no seguinte formato de exemplo (para $m = 3$ e $n = 4$).

    01 03 05 07
    15 13 11 09
    17 19 21 23