Exercícios de Algoritmia e Programação

Os exercícios que se seguem são para os meus alunos ou para qualquer visitante que queira aprender a programar:

Evolução de um programador

Exercícios de introdução

  1. Escreva um programa em que imprima a seguinte mensagem na saída: “Hello World!”.
  2. Crie um programa que leia 2 números e apresente o seu produto.
  3. Crie um programa que leia 2 variáveis inteiras e troque os seus valores.
  4. Escreva um programa que calcule o resto da divisão inteira entre 2 números introduzidos pelo utilizador.
  5. Escreva um programa que declare uma variável inteira e uma variável caracter, atribua-lhes os valores 5 e ‘a’, imprimindo-as na saída.
  6. Crie um programa para converter graus ºC em ºF e vice-versa C=5/9.(F-32), F=(9.C)/5+32 .
  7. Escreva um programa que calcule o quadrado e o cubo de um valor introduzido pelo utilizador.
  8. Escreva um programa que leia dois valores e apresente o valor que representa a relação percentual entre esses dois valores.
  9. Crie um programa para verificar se um número inteiro positivo é múltiplo de outro. Ambos os números devem ser introduzidos pelo utilizador. Deve verificar se o maior é divisível pelo menor.
  10. Escreva um programa para calcular um valor dum polinómio do 2° grau dados a, b, c e o valor de x.
  11. Crie um programa para determinar se um aluno passou na disciplina de TP I a partir dos valores das duas frequências (F1, F2) e do trabalho (T). A fórmula para obter a nota final (NF) é a seguinte: F = (F1+F2)/2 (arredondado às unidades) NF = F * (20-T) / 20 + T (arredondado às unidades)
  12. Crie um programa para calcular conversões métricas (polegadas-metros milhas-km, etc.) – utilize o switch para as diversas opções.
  13. Crie um programa para verificar se um número inteiro positivo é múltiplo de outro. Ambos os números devem ser introduzidos pelo utilizador. Deve verificar se o maior é divisível pelo menor.
  14. Escreva um programa que leia 2 números inteiros do teclado e indique qual deles é o maior.
  15. Altere o programa anterior para ler 3 números e indicar o maior. Se os números forem todos iguais o programa também o deverá indicar.
  16. Crie um programa que leia um número inteiro e verifique se o número tem 4 algarismos.
  17. Crie um programa que leia 3 valores reais correspondendo aos 3 lados de um triângulo. O programa deve indicar se esses valores podem criar um triângulo e, em caso afirmativo, que triângulo se trata (isósceles, escaleno, equilátero).

Estruturas de controlo – Ciclos

  1.  Escreva um programa para imprimir os números inteiros entre 1 e 10 na mesma linha, primeiro em ordem crescente e depois em ordem decrescente (utilizado ciclos).
  2.  Escreva um programa que peça ao utilizador um nome e um número inteiro (entre 1 e 20). Deverá mostrar esse nome um número de vezes igual a esse valor inteiro.
  3.  Escreva um programa que leia n números (sendo n introduzido pelo utilizador) e indique se os números são todos iguais.
  4.  Escreva um programa que calcule o factorial de um número.
  5.  Escreva um programa que some os algarismos de um número.
  6.  Escreva um programa para imprimir todos os números inteiros entre dois valores introduzidos pelo utilizador. O programa deverá verificar qual dos dois valores é o maior.
  7. Escreva um programa que apresente a tabuada dum número inteiro entre 1 e 9 dado pelo utilizador. Se o número estiver fora dessa gama, o programa deverá dar uma mensagem.
  8. Crie um programa que escreva os números inteiros entre 0 e 100 em intervalos (incremento) dados pelo utilizador. O intervalo deverá ser um número entre 1 e 10. (Por exemplo, com intervalos de 4).
  9. Escreva um programa que leia 10 números inteiros introduzidos pelo utilizador e indique o máximo, a média, o mínimo e a soma dos valores.
  10. Escreva um programa em que o utilizador vai introduzindo as idades dos alunos de uma determinada turma até ser introduzido o número -1. No fim deverá indicar o número de alunos e a média de idades. O programa deverá garantir que apenas são introduzidos números positivos (com a exceção do -1 final).
  11. Escreva um programa em que o utilizador vai introduzindo números positivos até ser introduzido o valor 0 (zero). No fim o programa indicará a percentagem de números pares introduzidos.
  12. Escreva um programa para ler as notas de n alunos (sendo n introduzido pelo utilizador). As notas deverão estar entre 1 e 5. O programa deverá contar quantos alunos tiveram cada uma das notas possíveis.
  13. Escreva um programa que leia 10 números inteiros e indique se um número é igual ao anterior. No final deverá indicar quantos números introduzidos são iguais ao anterior.
  14. [utilização de flags] Escreva um programa que leia n números (sendo n introduzido pelo utilizador) e indique se os números são todos iguais.
  15. [utilização de flags (ou não…)] Escreva um programa que leia n números (sendo n introduzido pelo utilizador) e indique se os números são todos pares, se são todos ímpares ou se há ambos os tipos.
  16. Escreva um programa que apresente todos os números inteiros entre dois números reais introduzidos pelo utilizador.
  17. Escreva um programa que calcule o fatorial de um número.
  18. Escreva um programa que some os algarismos de um número.
  19. [utilização de flags] Crie um programa que determine se um número inteiro é primo.
  20. Escreva um programa em que o utilizador vai introduzindo números inteiros positivos até o número introduzido ser um número primo.
  21. Escreva um programa que leia 10 números do utilizador e indique, no fim, quantos números são primos, quantos são pares e quantos são divisíveis por 3.
  22. Escreva um programa em que o utilizador introduza números até introduzir um número par seguido de um número ímpar.
  23. [utilização de flags] Escreva um programa que leia 10 valores do utilizador e indique no fim se foi introduzido algum número divisível por 7.
  24. Escreva um programa em que o utilizador introduz números inteiros até introduzir um número em que a soma dos algarismos seja superior a 20.
  25. Escreva um programa que indique ao utilizador todos os números primos entre dois números inteiros introduzidos pelo utilizador.
  26. Crie um programa que imprima um número de 4 dígitos invertido (ex. 4536 -> 6354).
  27. Escreva um programa que reduza uma fração.
  28. Escreva um programa que, a partir do preço em euros e do dinheiro entregue, apresente o troco usando o menor número possível de moedas.

Vectores

  1. Escreva um programa que procure e indique o maior valor (e a respetiva posição) de um vetor de 10 posições introduzido pelo utilizador. Escreva um programa que preencha um vetor de 100 posições com os primeiros 100 números pares.
  2. Escreva um programa que leia 20 valores inteiros entre 1 e 10 e insira-os num vetor. Depois, o utilizador deverá indicar um valor e o programa deverá indicar em que posição ou posições onde se encontra esse mesmo valor. Se o valor não existir no vetor o programa deverá dar a respetiva mensagem.
  3. Crie um programa que apresente a soma de todos os valores de um vetor de inteiros de 10 posições. Os valores devem ser introduzidos pelo utilizador.
  4. Escreva um programa que determine o 2º maior valor de um vetor.
  5. Crie um programa que leia um vetor de 10 valores inteiros do utilizador, não permitindo a introdução de valores repetidos.
  6. Crie um programa que leia um conjunto de valores inteiros do utilizador e os coloque num vetor. O programa deverá terminar a leitura quando for introduzido um número que já exista no vetor, ou seja, quando for introduzido um número repetido. No final deverá apresentar o vetor.
  7. Crie um programa que leia um vetor de n inteiros, sendo n um valor introduzido pelo utilizador, não havendo restrições. O programa deverá converter todos os valores negativos do vetor para 0, imprimir o vetor resultante e indicar quantos valores foram alterados.
  8. Crie um programa que leia 10 números reais, coloque-os num vetor e calcule a sua média.
  9. Escreva um programa que preencha um vetor de 20 posições com os primeiros 20 números primos.
  10. Crie um programa que leia um vetor de 10 inteiros. Os valores deverão estar no intervalo [0,100]. O programa não deverá aceitar valores fora deste intervalo. O programa deverá indicar a soma dos inteiros múltiplos de 5 existentes no vetor.
  11. Escreva um programa que indique se todos os valores de um vetor são iguais, se são todos diferentes, ou se há valores repetidos no vetor.
  12. Crie um programa que leia um vetor de inteiros cujo tamanho será introduzido pelo utilizador, tamanho esse que nunca será inferior a 5 ou superior a 25.O programa deverá indicar ao utilizador se o vetor é constituído (ou não) por valores pares e ímpares alternados. Exemplo: O vetor [1,2,5,6,3,2] verifica esta condição.
  13. Escreva um programa que verifique se todos os elementos de um determinado vetor existem noutro vetor.
  14. Escreva um programa que inverta a ordem dos elementos de um vetor de inteiros.
  15. Crie um programa que conte o número de números primos num vetor de inteiros.
  16. Escreva um programa que peça as idades de 32 alunos de uma turma. O programa deve guardar estes valores num vetor e no final indicar a idade máxima, mínima média e moda da turma.
  17. Crie um programa para somar 2 vetores de tamanhos diferentes e colocar o resultado num 3º vetor.
  18. Crie um programa para determinar o maior valor entre as posições de dois vetores e colocar o resultado num 3º vetor.
  19. Escreva um programa que leia as notas de um determinado número alunos a um conjunto de disciplinas. O número de alunos e o número de disciplinas são introduzidos pelo utilizador. Os valores das notas deverão estar entre 0 e 20 e guardados numa matriz. Depois deverá indicar a média de cada aluno, a nota mais alta, a nota mais baixa, a média de cada disciplina e o número de alunos com média superior a 9,5.
  20. Crie um programa que simule 100 lançamentos de 2 dados, guarde os resultados em vetores e produza uma estatística.
  21. Escreva um programa para determinar o valor mais comum (moda) num vetor de inteiros. Teste com um vetor de 100 posições preenchido aleatoriamente com valores entre 0 e 10.
  22. Crie um programa que ordene um vetor de 10 elementos por ordem crescente e decrescente.
  23. Escreva um programa que procure e indique o maior valor (e a respectiva posição) de um vector de 10 posições introduzido pelo utilizador.

Programas de revisão com a utilização de operadores lógicos (AND, OR, NOT)

  1. Escreva um programa que leia 3 notas de um aluno (teórica, prática e projecto). As notas deverão estar no intervalo 0-20. A nota final é dada pela soma pesada das notas (TEOR=50% PRAT=30% PROJ=20%). O aluno será aprovado se a soma das 3 notas for superior a 30 ou no caso de a nota prática e teórica serem ambas iguais ou superiores a 13. O aluno deverá ser submetido a um exame oral se a nota teórica for 8 ou 9 ou no caso de a média final ser superior a 14. O programa deverá indicar todos os resultados. Para passar o aluno deverá ter uma nota igual ou superior a 8 em ambas as frequências e uma nota igual ou superior a 10 na média das duas frequências (F). O programa deverá verificar se os valores introduzidos para as frequências estão no intervalo entre 0 e 20. O trabalho deverá ter um valor entre 0 e 4.
  2. Crie um programa que leia 3 notas de um aluno: N1, N2, N3 e indique se o aluno passou à disciplina. Para passar à disciplina o aluno deverá ter uma nota igual ou superior a 8 nas 3 notas e a soma de N1 e N2 deverá ser igual ou superior a 20. As notas deverão estar no intervalo de 0 a 20.
  3. Escreva um programa que leia 3 números inteiros do utilizador, garantindo que todos eles são positivos e diferentes entre si. Se o utilizador tentar introduzir um valor igual a um valor já introduzido, o programa deverá repetir o pedido de introdução do valor.
  4. Crie um programa que leia o valor das vendas de uma empresa em 4 anos consecutivos: 2010, 2011, 2012 e 2013. Os valores deverão ser positivos. O programa deverá indicar em quantos anos neste período o valor de vendas cresceu em relação ao ano anterior (o valor de saída será entre 0 e 3). Deverá indicar ainda o crescimento percentual entre o ano 2010 e 2013. (utilizado ciclos).

Funções

  1. Crie uma função que receba 2 valores inteiros como argumentos e retorne a sua soma. Se o valor da soma for negativo o método deverá retornar o valor 0.
  2. Crie uma função que receba 3 valores reais como argumento e retorne o maior valor.
  3. Crie uma função que receba dois valores reais como argumentos e retorne o valor da raiz quadrada da soma dos quadrados.
  4. Crie uma função que receba um número inteiro como argumento e retorne o maior valor primo inferior a esse argumento. Se o argumento for negativo, a função deverá retornar o valor zero.
  5. Crie uma função ContaPrimos() que receba dois valores inteiros como argumentos e retorne o número de números primos entre estes dois números, inclusive. P. Ex. ContaPrimos(3,10) deverá retornar o valor 3 (3, 5, 7).
  6. Crie uma função que receba 2 notas (F1 e F2) de um aluno e retorne um booleano indicando se o aluno passou. Para passar, a soma das notas deve ser igual ou superior a 19 e ambas devem ser superiores a 7.
  7. Crie uma função que receba dois valores inteiros como argumentos e retorne um valor booleano indicando se os números são divisíveis.
  8. Crie uma função que receba um número inteiro e retorne a soma dos seus algarismos.
  9. Crie uma função que receba 3 valores inteiros (a, b, c) e retorne um valor booleano true se a>b>c e false em caso contrário.
  10. Crie uma função que verifique se um número é primo (deverá retornar um valor booleano).
  11. Crie uma função que receba um número inteiro n e retorne o n-ésimo número primo.
  12. Crie uma função que receba três inteiros como argumentos (ano, mês, dia) e verifique se se trata de um data válida. O ano deverá estar entre 1900 e o presente ano. Deverá retornar um valor booleano.

Funções e matrizes

  • Escreva uma função que recebe uma matriz de caracteres 8×8 representando um tabuleiro de xadrez e calcula o valor total das peças do jogo. Espaços vazios do tabuleiro são codificados como casas com (branco) e têm valor 0 (zero). O valor das demais peças é dado de acordo com a tabela:
Peça Valor
peão 1
cavalo 3
bispo 3
torre 5
rainha 10
rei 50
  • Escreva um jogo “Jogo do Galo” entre dois jogadores, com uma matriz 3 X 3. Ganha o jogador que conseguir fazer uma diagonal ou uma linha. Deve utilizar uma função após qualquer jogada que retorne 0 se ainda não houve vitória, 1, se o jogador 1 ganhou ou 2 se o jogador 2 ganhou (exemplo: boolean ganhou()).
  • Escreva um jogo que simule o jogo das damas. Deve utilizar várias funções e uma matriz global.