Comunicação e Multimédia
                                                Lógica Computacional

                                                   EXERCÍCIOS

                                             ANO LETIVO: 2012/2013



                                       II - Algoritmia

1. Elabore um algoritmo que permita somar dois quaisquer números, visualizando o
    resultado obtido.


2. Elabore um algoritmo que permita calcular a Área de um quadrado. (Área = Lado×Lado)


3. Elabore um algoritmo que permita calcular o perímetro de um quadrado.


4. Faça um algoritmo para ler a base e a altura de um triângulo. Em seguida, escreva a
    área do mesmo.


5. O preço de um automóvel é calculado pela soma do preço de fábrica com o preço dos
    impostos (45% do preço de fábrica) e a percentagem do revendedor (28% do preço de
    fábrica). Faça um algoritmo que leia a marca e o modelo do automóvel e o preço de
    fábrica e imprima o nome do automóvel e o preço final.


6. Elabore um algoritmo que permita calcular a Média por si obtida à UC de Lógica
    Computacional, em função das classificações parciais, obtidas a cada componente
    de   avaliação.     No    final,   deverá     apresentar     a   nota    e    a   informação
    Aprovado/Reprovado, conforme o caso.


7. Elabore um algoritmo que, de entre dois números fornecidos pelo utilizador, permita
    encontrar o menor deles.


8. Elabore um algoritmo que, de entre três números fornecidos pelo utilizador, permita
    encontrar o maior deles.


9. Elabore um algoritmo que permita, através da inserção dos lados de um triângulo,
    identificar de que tipo de triângulo se trata.


10. Elabore um algoritmo que permita converter Km em Milhas ( e v i c e - v e r s a ) e, se o
    numero de Km (convertidos ou a converter) for superior a 500, visualizar “muito longe”.
11. Elabore um algoritmo que          permita converter   Euros em    Escudos e vice-versa,
    dependendo da escolha do utilizador.


12. Elabore um algoritmo que permita aceitar e de seguida visualizar o nome de N pessoas.


13. Elabore um algoritmo que permita aceitar apenas valores positivos.


14. Elabore um algoritmo que permita encontrar o maior e menor valor de uma série de
    N números positivos fornecidos.


15. Faça um algoritmo que leia N números inteiros positivos e visualize o menor deles.


16. Dada uma série de N valores reais, faça um algoritmo que calcule e escreva a média
    aritmética destes valores, entretanto se a média obtida for maior que 8 deverá ser
    atribuída 10 para a média.


17. Elabore um algoritmo que permita efetuar a soma dos N primeiros números inteiros
    positivos.


18. Elabore um algoritmo que permita calcular a soma dos N primeiros números pares
    positivos.


19. Faça um algoritmo que repita a mensagem Introduza a Letra “a” até que se verifique a
    sua inserção.


20. Uma empresa tem, para um determinado funcionário, uma ficha contendo o nome,
    número de       horas trabalhadas num determinado mês e o nº de dependentes.
    Considerando que:

       A empresa paga 12 euros por hora e 40 euros por cada dependente.

       Sobre o salário são feito descontos de 8,5% para o INSS e 5% para IRS.
    Faça um algoritmo para ler o n ome do funcionário, o número de horas trabalhadas e o
    número de dependentes. Após a leitura, deverá processar a folha de vencimento do
    funcionário indicando (entre outros que ache convenientes): o n ome do funcionário, o
    salário bruto, os valores descontados para cada tipo de imposto e o salário líquido.


21. Elabore um algoritmo que permita calcular o fatorial de um número, tendo em conta
    que:
22. Faça um algoritmo que permita ler a base e a altura de N triângulos e que imprima as
    respetivas áreas.


23. Elabore um algoritmo que leia e armazene as notas de uma turma de N alunos numa
    disciplina e calcule a sua média. O professor pode apenas inserir as notas dos alunos
    que entender, não sendo imperativo que haja a inserção das 60 notas visto que certos
    alunos podem faltar ao Exame.


24. Elabore um algoritmo que leia e armazene os valores anuais de Precipitação de N
    Localidades. Para além disso pretende-se que apresente o valor máximo, o valor
    mínimo e a média dos valores lidos.


25. Elabore um algoritmo       que permita contar todos os números pares e ímpares
    introduzidos, aleatoriamente, pelo utilizador.


26. Elabore um algoritmo que mostre dados estatísticos tendo como base um universo de
    N entrevistas realizadas com o objetivo de saber quantas      pessoas começaram a
    trabalhar com menos de 18 anos, mais de 18 anos e qual o sexo, [M,F].


27. Elabore um algoritmo que permita efetuar somas entre dois números fracionários
    supondo que o denominador é comum. O resultado deverá ser apresentado no
    formato: x/y


28. Elabore um algoritmo que permita ordenar um vetor de N números por ordem crescente
    ou decrescente, mediante a escolha do utilizador.


29. Elabore um algoritmo que permita efetuar a procura de um determinado número,
    fornecido pelo utilizador, num vetor de N posições, carregado aleatoriamente com
    números de 1 a 100.


30. Elabore um algoritmo que permita apagar todos os números pares de um vetor de
    100 posições, reordenando-o de seguida e garantindo que não ficam posições vazias
    entre valores.


Original                   1 2 5 6 7 9


Incorreto                  1      5       7 9


Correcto                   1 5 7 9
31. Elabore um algoritmo que permita fazer uma inserção ordenada por ordem crescente
   de N números inteiros.


32. Elabore um algoritmo que permita armazenar uma lista de N números inteiros e de
   seguida permita, de acordo com uma escolha, ordenar essa mesma lista por ordem
   crescente ou decrescente.


33. Elabore um algoritmo que permita efetuar o registo de N automóveis. Para cada
   automóvel pretende-se que sejam guardadas as seguintes características: Ref. do
   Chassi, Marca e Ano de fabrico. Pretende-se ainda que seja permitido consultar os
   registos efetuados (tantas vezes quantas o utilizador quiser), sendo, para isso,
   fornecida pelo utilizador a Ref. do Chassi.


34. Um determinado partido político (“SóPromete”) pretende ter um programa que lhe
   permita controlar os votos dos partidos adversários (e do seu) e no fim lhe forneça
   uma análise comparativa no que diz respeito à posição em que cada partido ficou nas
   eleições. Elabore um algoritmo que sirva de solução ao que é pretendido pelo partido
   “SóPromete”, tendo em atenção o seguinte:

    Além do partido referido existem mais dois: “JáPrometi” e “VouPrometer”;

    As eleições decorrem em 10 regiões distintas devendo ficar armazenados os votos de
      cada partido;

    A análise pretendida consta numa relação da posição em que cada partido ficou
      após o apuramento de todos os votos de todas as regiões sendo a terminologia a
      seguinte:

      a) O Partido com mais votos : “Partido vencedor das eleições”;

      b) O segundo partido com mais votos: “Partido quase vencedor das eleições”;

      c) O último partido: “Partido que volta a tentar para o ano”.

    Se possível pretende-se também que forneça a mesma relação anterior mas relativa
      a cada região.



35. Um determinado hipermercado está a fazer uma campanha promocional no seu posto de
   combustível, de acordo com a tabela seguinte:
                                   Desconto por quantidade             Preço Base
    Tipo
    Combustível                                         Acima de 40
                           Até 20 L         Até 40 L                      (€/L)
                                                             L
      Gasolina 95             3%                 5%          8%           1,479
        Gasóleo               4%                 7%          10%          1,334
Escreva um algoritmo que permita ler o número de litros vendidos e o tipo de combustível e
calcule o valor (com desconto) a pagar. O algoritmo deverá, obrigatoriamente, utilizar
estruturas de decisão SE… ENTÃO e ESCOLHE… CASO.



36. O algoritmo apresentado a seguir contém alguns erros. Identifique-os e corrija-os,
explicando a consequência que cada um deles teria na execução do programa.


inicio
    real valor, média, soma
         contador
    soma <- 0
    contador <- 1
    enquanto valor > 0 faz
       escrever "Introduza o ",contador, "º valorn",contador,"º valor = "
       valor
       soma <- soma + valor
       contador <- contador + 1

     soma <- soma - valor
     media <- soma / contador – 2

     se media < 0 entao
        escrever "ATENÇÃO valor NEGATIVO n média = ", media
     senao
        escrever "média = ", media, "nIntroduziu ",contador - 2, " valores"
     fimse


37. Sem recorrer a dados estruturados (vetores), desenhe um algoritmo que permita:
    a)   ler, repetidamente, números inteiros positivos, num mínimo de 4;
    b)   as entradas deverão ser validadas (os valores referem-se a resultados de uma
         avaliação [escala 0-20]);
    c)   o programa deverá ser interrompido através de uma instrução dada pelo utilizador;
    d)   no final, o algoritmo deverá apresentar as três notas mais elevadas, de entre todas
         as introduzidas.




38. Considere o seguinte algoritmo:
inicio
  inteiro N, valor, M, contador
       escrever "Quantos valores quer ler?nN = "
       ler N
       para contador de 1 ate N passo 1
           escrever "Introduza o ",contador, "º númeronN_",contador, " = "
           ler valor
           se valor > M entao
               M <- valor
           fimse
       proximo
       escrever "-----------------n"
       escrever "M = ", M
fim
38.1. Faça a traçagem do algoritmo,                       38.2. Analise o algoritmo e simule o que
      completando a tabela seguinte.                             apareceria na tela (ecrã) quando
                                                                 executado, usando os dados de 38.1.


                                                      Tela


      N         Contador          valor           M
                                    4
                                   25
                                    -3
       6
                                   43
                                   12
                                    7




   38.3. Proponha um enunciado para o algoritmo apresentado.



39.
   39.1 Escreva um algoritmo que permita ler um vetor linha de tamanho N, a definir pelo
        utilizador e depois o ordene por ordem crescente.

   39.2. Introduza as alterações que julgue necessárias para que o algoritmo implementado
        em 5.1 possibilite ordenar o vetor por ordem crescente/decrescente, conforme escolha
        do utilizador.


Nota: O algoritmo nunca poderá ser interrompido caso o utilizador se engane introduza uma escolha inválida.



40. Escreva um algoritmo que permita somar duas fracções. A estrutura do algoritmo deverá
   respeitar as seguintes indicações:

    O utilizador deverá ser solicitado a introduzir as duas fracções em separado;
    Para facilitar, cada fracção deverá ser lida pedindo o numerador e o denominador, em
     separado;
    O programa deverá identificar se o denominador das duas fracções é o mesmo e, nesse
     caso, apresentar o resultado somando os numeradores;
    Se os denominadores forem diferentes, o programa deverá encontrar o mínimo múltiplo
     comum e depois apresentar o resultado.



41. Considere o seguinte algoritmo:

inicio
   inteiro num, i
   escrever “Introduza um número nN = “
   ler num
enquanto num > 0 faz
          i <- i+1
          escrever “Introduza um número nN = “
          ler num
      fimenquanto
      Escrever “Foram introduzidos “, i, “números”
Fim


 41.1. Explique o objetivo deste algoritmo e apresente o significado de cada linha;



 41.2. Altere o algoritmo fornecido, usando uma estrutura de repetição REPETE… ATE, em
         substituição da estrutura ENQUANTO… FAZ, mas de forma que o resultado do algoritmo
         não seja alterado.



42. Desenvolva um algoritmo que leia um número e crie uma capicua. Por exemplo, lendo 367 deverá

      obter a capicua 367763.


43. Escreva um algoritmo que:

   Permita implementar um jogo simples, em que o utilizador tenta adivinhar um número
       inteiro (igual ou inferior a 10000) gerado aleatoriamente pelo computador;
   A cada tentativa, o programa deverá indicar se o número introduzido é menor ou maior
       do que o número gerado;
   O jogo termina quando o utilizador acertar no número gerado;
   No final do jogo deverá ser apresentado o número total de tentativas utilizadas pelo
       jogador;
   Armazene todas as tentativas utilizadas num vector.

  Nota: para gerar um número aleatório igual ou inferior a 10000 deverá incorporar o seguinte código no seu
       programa:

             inteiro numero
             numero <- aleatorio() * 10000

02 fp02

  • 1.
    Comunicação e Multimédia Lógica Computacional EXERCÍCIOS ANO LETIVO: 2012/2013 II - Algoritmia 1. Elabore um algoritmo que permita somar dois quaisquer números, visualizando o resultado obtido. 2. Elabore um algoritmo que permita calcular a Área de um quadrado. (Área = Lado×Lado) 3. Elabore um algoritmo que permita calcular o perímetro de um quadrado. 4. Faça um algoritmo para ler a base e a altura de um triângulo. Em seguida, escreva a área do mesmo. 5. O preço de um automóvel é calculado pela soma do preço de fábrica com o preço dos impostos (45% do preço de fábrica) e a percentagem do revendedor (28% do preço de fábrica). Faça um algoritmo que leia a marca e o modelo do automóvel e o preço de fábrica e imprima o nome do automóvel e o preço final. 6. Elabore um algoritmo que permita calcular a Média por si obtida à UC de Lógica Computacional, em função das classificações parciais, obtidas a cada componente de avaliação. No final, deverá apresentar a nota e a informação Aprovado/Reprovado, conforme o caso. 7. Elabore um algoritmo que, de entre dois números fornecidos pelo utilizador, permita encontrar o menor deles. 8. Elabore um algoritmo que, de entre três números fornecidos pelo utilizador, permita encontrar o maior deles. 9. Elabore um algoritmo que permita, através da inserção dos lados de um triângulo, identificar de que tipo de triângulo se trata. 10. Elabore um algoritmo que permita converter Km em Milhas ( e v i c e - v e r s a ) e, se o numero de Km (convertidos ou a converter) for superior a 500, visualizar “muito longe”.
  • 2.
    11. Elabore umalgoritmo que permita converter Euros em Escudos e vice-versa, dependendo da escolha do utilizador. 12. Elabore um algoritmo que permita aceitar e de seguida visualizar o nome de N pessoas. 13. Elabore um algoritmo que permita aceitar apenas valores positivos. 14. Elabore um algoritmo que permita encontrar o maior e menor valor de uma série de N números positivos fornecidos. 15. Faça um algoritmo que leia N números inteiros positivos e visualize o menor deles. 16. Dada uma série de N valores reais, faça um algoritmo que calcule e escreva a média aritmética destes valores, entretanto se a média obtida for maior que 8 deverá ser atribuída 10 para a média. 17. Elabore um algoritmo que permita efetuar a soma dos N primeiros números inteiros positivos. 18. Elabore um algoritmo que permita calcular a soma dos N primeiros números pares positivos. 19. Faça um algoritmo que repita a mensagem Introduza a Letra “a” até que se verifique a sua inserção. 20. Uma empresa tem, para um determinado funcionário, uma ficha contendo o nome, número de horas trabalhadas num determinado mês e o nº de dependentes. Considerando que:  A empresa paga 12 euros por hora e 40 euros por cada dependente.  Sobre o salário são feito descontos de 8,5% para o INSS e 5% para IRS. Faça um algoritmo para ler o n ome do funcionário, o número de horas trabalhadas e o número de dependentes. Após a leitura, deverá processar a folha de vencimento do funcionário indicando (entre outros que ache convenientes): o n ome do funcionário, o salário bruto, os valores descontados para cada tipo de imposto e o salário líquido. 21. Elabore um algoritmo que permita calcular o fatorial de um número, tendo em conta que:
  • 3.
    22. Faça umalgoritmo que permita ler a base e a altura de N triângulos e que imprima as respetivas áreas. 23. Elabore um algoritmo que leia e armazene as notas de uma turma de N alunos numa disciplina e calcule a sua média. O professor pode apenas inserir as notas dos alunos que entender, não sendo imperativo que haja a inserção das 60 notas visto que certos alunos podem faltar ao Exame. 24. Elabore um algoritmo que leia e armazene os valores anuais de Precipitação de N Localidades. Para além disso pretende-se que apresente o valor máximo, o valor mínimo e a média dos valores lidos. 25. Elabore um algoritmo que permita contar todos os números pares e ímpares introduzidos, aleatoriamente, pelo utilizador. 26. Elabore um algoritmo que mostre dados estatísticos tendo como base um universo de N entrevistas realizadas com o objetivo de saber quantas pessoas começaram a trabalhar com menos de 18 anos, mais de 18 anos e qual o sexo, [M,F]. 27. Elabore um algoritmo que permita efetuar somas entre dois números fracionários supondo que o denominador é comum. O resultado deverá ser apresentado no formato: x/y 28. Elabore um algoritmo que permita ordenar um vetor de N números por ordem crescente ou decrescente, mediante a escolha do utilizador. 29. Elabore um algoritmo que permita efetuar a procura de um determinado número, fornecido pelo utilizador, num vetor de N posições, carregado aleatoriamente com números de 1 a 100. 30. Elabore um algoritmo que permita apagar todos os números pares de um vetor de 100 posições, reordenando-o de seguida e garantindo que não ficam posições vazias entre valores. Original 1 2 5 6 7 9 Incorreto 1 5 7 9 Correcto 1 5 7 9
  • 4.
    31. Elabore umalgoritmo que permita fazer uma inserção ordenada por ordem crescente de N números inteiros. 32. Elabore um algoritmo que permita armazenar uma lista de N números inteiros e de seguida permita, de acordo com uma escolha, ordenar essa mesma lista por ordem crescente ou decrescente. 33. Elabore um algoritmo que permita efetuar o registo de N automóveis. Para cada automóvel pretende-se que sejam guardadas as seguintes características: Ref. do Chassi, Marca e Ano de fabrico. Pretende-se ainda que seja permitido consultar os registos efetuados (tantas vezes quantas o utilizador quiser), sendo, para isso, fornecida pelo utilizador a Ref. do Chassi. 34. Um determinado partido político (“SóPromete”) pretende ter um programa que lhe permita controlar os votos dos partidos adversários (e do seu) e no fim lhe forneça uma análise comparativa no que diz respeito à posição em que cada partido ficou nas eleições. Elabore um algoritmo que sirva de solução ao que é pretendido pelo partido “SóPromete”, tendo em atenção o seguinte:  Além do partido referido existem mais dois: “JáPrometi” e “VouPrometer”;  As eleições decorrem em 10 regiões distintas devendo ficar armazenados os votos de cada partido;  A análise pretendida consta numa relação da posição em que cada partido ficou após o apuramento de todos os votos de todas as regiões sendo a terminologia a seguinte: a) O Partido com mais votos : “Partido vencedor das eleições”; b) O segundo partido com mais votos: “Partido quase vencedor das eleições”; c) O último partido: “Partido que volta a tentar para o ano”.  Se possível pretende-se também que forneça a mesma relação anterior mas relativa a cada região. 35. Um determinado hipermercado está a fazer uma campanha promocional no seu posto de combustível, de acordo com a tabela seguinte: Desconto por quantidade Preço Base Tipo Combustível Acima de 40 Até 20 L Até 40 L (€/L) L Gasolina 95 3% 5% 8% 1,479 Gasóleo 4% 7% 10% 1,334
  • 5.
    Escreva um algoritmoque permita ler o número de litros vendidos e o tipo de combustível e calcule o valor (com desconto) a pagar. O algoritmo deverá, obrigatoriamente, utilizar estruturas de decisão SE… ENTÃO e ESCOLHE… CASO. 36. O algoritmo apresentado a seguir contém alguns erros. Identifique-os e corrija-os, explicando a consequência que cada um deles teria na execução do programa. inicio real valor, média, soma contador soma <- 0 contador <- 1 enquanto valor > 0 faz escrever "Introduza o ",contador, "º valorn",contador,"º valor = " valor soma <- soma + valor contador <- contador + 1 soma <- soma - valor media <- soma / contador – 2 se media < 0 entao escrever "ATENÇÃO valor NEGATIVO n média = ", media senao escrever "média = ", media, "nIntroduziu ",contador - 2, " valores" fimse 37. Sem recorrer a dados estruturados (vetores), desenhe um algoritmo que permita: a) ler, repetidamente, números inteiros positivos, num mínimo de 4; b) as entradas deverão ser validadas (os valores referem-se a resultados de uma avaliação [escala 0-20]); c) o programa deverá ser interrompido através de uma instrução dada pelo utilizador; d) no final, o algoritmo deverá apresentar as três notas mais elevadas, de entre todas as introduzidas. 38. Considere o seguinte algoritmo: inicio inteiro N, valor, M, contador escrever "Quantos valores quer ler?nN = " ler N para contador de 1 ate N passo 1 escrever "Introduza o ",contador, "º númeronN_",contador, " = " ler valor se valor > M entao M <- valor fimse proximo escrever "-----------------n" escrever "M = ", M fim
  • 6.
    38.1. Faça atraçagem do algoritmo, 38.2. Analise o algoritmo e simule o que completando a tabela seguinte. apareceria na tela (ecrã) quando executado, usando os dados de 38.1. Tela N Contador valor M 4 25 -3 6 43 12 7 38.3. Proponha um enunciado para o algoritmo apresentado. 39. 39.1 Escreva um algoritmo que permita ler um vetor linha de tamanho N, a definir pelo utilizador e depois o ordene por ordem crescente. 39.2. Introduza as alterações que julgue necessárias para que o algoritmo implementado em 5.1 possibilite ordenar o vetor por ordem crescente/decrescente, conforme escolha do utilizador. Nota: O algoritmo nunca poderá ser interrompido caso o utilizador se engane introduza uma escolha inválida. 40. Escreva um algoritmo que permita somar duas fracções. A estrutura do algoritmo deverá respeitar as seguintes indicações:  O utilizador deverá ser solicitado a introduzir as duas fracções em separado;  Para facilitar, cada fracção deverá ser lida pedindo o numerador e o denominador, em separado;  O programa deverá identificar se o denominador das duas fracções é o mesmo e, nesse caso, apresentar o resultado somando os numeradores;  Se os denominadores forem diferentes, o programa deverá encontrar o mínimo múltiplo comum e depois apresentar o resultado. 41. Considere o seguinte algoritmo: inicio inteiro num, i escrever “Introduza um número nN = “ ler num
  • 7.
    enquanto num >0 faz i <- i+1 escrever “Introduza um número nN = “ ler num fimenquanto Escrever “Foram introduzidos “, i, “números” Fim 41.1. Explique o objetivo deste algoritmo e apresente o significado de cada linha; 41.2. Altere o algoritmo fornecido, usando uma estrutura de repetição REPETE… ATE, em substituição da estrutura ENQUANTO… FAZ, mas de forma que o resultado do algoritmo não seja alterado. 42. Desenvolva um algoritmo que leia um número e crie uma capicua. Por exemplo, lendo 367 deverá obter a capicua 367763. 43. Escreva um algoritmo que:  Permita implementar um jogo simples, em que o utilizador tenta adivinhar um número inteiro (igual ou inferior a 10000) gerado aleatoriamente pelo computador;  A cada tentativa, o programa deverá indicar se o número introduzido é menor ou maior do que o número gerado;  O jogo termina quando o utilizador acertar no número gerado;  No final do jogo deverá ser apresentado o número total de tentativas utilizadas pelo jogador;  Armazene todas as tentativas utilizadas num vector. Nota: para gerar um número aleatório igual ou inferior a 10000 deverá incorporar o seguinte código no seu programa: inteiro numero numero <- aleatorio() * 10000