Skip to content

Exercícios de programação

License

Notifications You must be signed in to change notification settings

glaucioscheibel/exercicios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 

Repository files navigation

Exercícios de Programação

Conteúdo

  1. Lógica
  2. Algoritmo
  3. Estrutura sequencial
  4. Estrutura de decisão
    1. Estrutura condicional
  5. Estrutura de repetição
  6. Strings
  7. Vetores
  8. Matrizes
  9. Funções
    1. Funções recursivas
  10. Programação concorrente
  11. NoSQL Chave-Valor
  12. NoSQL Documento
  13. Filmes
  14. Livros
  15. Agradecimentos
  16. Informações legais

Lógica

  1. Um homem precisa atravessar um rio com um barco que possui capacidade de transportar apenas ele e mais uma de suas três cargas, que são: um lobo, uma ovelha e um kilo de couve. Quais os passos que o homem deve fazer para conseguir atravessar o rio sem perder as suas cargas? link racha-cuca

  2. Três jesuítas e três canibais precisam atravessar um rio. No entanto dispõem apenas de um barco com capacidade para duas pessoas. Por medida de segurança não se permite que em alguma das margens do rio a quantidade de jesuítas seja inferior à quantidade de canibais. Qual a sequência de viagens necessárias para a travessia do rio com segurança para os jesuítas? link racha-cuca

  3. Para comemorar o aniversário de Cláudio, ele e mais quatro amigos – Alberto, Beto, Dino e Eurico – foram almoçar juntos no restaurante da escola. As mesas são redondas e acomodam exatamente cinco pessoas. Cláudio e Dino sentam-se um ao lado do outro. Alberto e Beto não sentam-se um ao lado do outro. Os dois amigos sentados ao lado de Eurico são:

    • Alberto e Beto
    • Cláudio e Dino
    • Dino e Beto
    • Cláudio e Alberto
    • Alberto e Dino
  4. Uma equipe de meninas está participando de uma gincana preparada pelos professores da escola. Depois de muitas peripécias, elas finalmente encontraram o cofre escondido que contém a última tarefa a ser resolvida. Mas o cofre está protegido com um cadeado digital que é aberto somente se uma senha de quatro letras for digitada. Junto ao cofre elas encontraram também um pedaço de papel com as letras Xkzk. Inicialmente elas pensaram que essa era a senha, mas o cofre não abriu. No entanto, elas tinham certeza de que as quatro letras encontradas eram a chave para o enigma. Depois de pensar um pouco elas perceberam que os nomes das cinco meninas da equipe tinham exatamente quatro letras. Seria essa a ligação com as letras encontradas? Não demorou muito para elas abrirem o cofre, pois a senha era mesmo o nome de uma das meninas. Qual era a senha do cofre?

    • Anna
    • Lisa
    • Nina
    • Iris
    • Nara
  5. Um palíndrome é um número inteiro positivo, sem zeros à esquerda, que é o mesmo se lido da esquerda para a direita ou da direita para a esquerda. Por exemplo, os números 11 e 65256 são palíndromes, mas os números 010 e 123 não são. A diferença entre o valor do maior palíndrome de três dígitos e o menor palíndrome de três dígitos é:

    • 989
    • 888
    • 898
    • 998
    • 979
  6. Na Nlogônia, as cédulas de dinheiro são de $1,00, $3,00, $9,00, $27,00, e $81,00. Num dado momento, um vendedor possui apenas cinco cédulas, uma de cada um dos valores das cédulas existentes na Nlogônia. Qual dos valores abaixo não é possível ser dado como troco por esse vendedor?

    • $40,00
    • $35,00
    • $31,00
    • $13,00
    • $4,00
  7. . Em uma sala há duas lousas (quadros negros), a lousa A e a lousa B. Na lousa A foi escrito o número 7 e na lousa B foi escrito o número 13. Após isso, um aluno entrou na sala, apagou o número da lousa B e em seu lugar escreveu um número igual ao número escrito na lousa A. Depois disso, outro aluno entrou na sala, apagou o número da lousa A e em seu lugar escreveu um número igual ao número atualmente escrito na lousa B. Depois dessas mudanças, quais são os números escritos nas lousas?

    • 13 na lousa A e 7 na lousa B
    • 7 na lousa A e 13 na lousa B
    • 7 na lousa A e 7 na lousa B
    • 13 na lousa A e 13 na lousa B
    • 20 na lousa A e 6 na lousa B
  8. Maria tinha alguns biscoitos. Ela comeu dois e deu dois à irmã. Depois deu metade do que sobrou ao irmão. Se o irmão ficou com 5 biscoitos, quantos tinha Maria no início?

  9. Uma pessoa lê um livro de 100 páginas em 6 dias. Em quantos dias essa pessoa lê um livro de 150 páginas?

  10. Lúcia foi ao mesmo tempo a décima terceira melhor classificada e a décima terceira pior classificada de um concurso. Quantos eram os concorrentes?

  11. Ao observar a sequência de números abaixo, descubra qual das opções completa a série.

    66, 59, 52, 45, 38, ??

    • 32
    • 35
    • 31
    • 41
    • 43
  12. Ao observar a sequência de números abaixo, descubra qual das opções completa a série.

    102, 103, 105, 108, ??

    • 109
    • 114
    • 106
    • 111
    • 112
  13. Ao observar a sequência de números abaixo, descubra qual das opções completa a série.

    50, 5, 40, 10, 30, ??

    • 35
    • 20
    • 25
    • 15
    • 37
  14. Para A = V, B = V e C = F, qual o resultado da avaliação das seguintes expressões lógicas:

    1. A or C and not B
    2. (A or B) and (A and C)
  15. Há cinco casas diferentes em cinco cores diferentes em uma fileira. Em cada casa mora uma pessoa com uma diferente nacionalidade. Os cinco proprietários bebem um certo tipo de bebida, fuma cigarro de uma certa marca e tem um certo tipo de animal de estimação. Nenhum dos proprietários tem o mesmo tipo de animal ou de marca de cigarro ou de bebida. Quem é o dono do peixe? link racha-cuca

    1. O britânico mora na casa vermelha
    2. O suíço tem um cão como animal de estimação
    3. O dinamarquês bebe chá
    4. A casa verde fica imediatamente à esquerda da casa branca
    5. O dono da casa verde bebe café
    6. O proprietário que fuma Pall Mall tem um pássaro
    7. O dono da casa amarela fuma Dunhill
    8. O proprietário morando na casa do centro bebe leite
    9. O norueguês mora na primeira casa
    10. O dono que fuma Blends mora ao lado do que cria gatos
    11. O proprietário que cria um cavalo mora ao lado do que fuma Dunhill
    12. O dono que fuma Bluemasters bebe cerveja
    13. O alemão fuma Prince
    14. O norueguês mora ao lado da casa azul
    15. O proprietário que fuma Blends mora ao lado do que bebe água

Algoritmo

  1. Escreva um algoritmo, passo a passo, para trocar um pneu furado.

Estrutura sequencial

  1. Faça um programa que imprima a mensagem "Alo mundo" na tela.

  2. Faça um programa que peça as 4 notas bimestrais, calcule e imprima a média.

  3. Faça um programa que leia três notas de um aluno, calcule e escreva a média final deste aluno. Considerar que a média é ponderada e que o peso das notas é 2, 3 e 5.

                  n1 × 2 + n2 × 3 + n3 × 5
     mediafinal = ------------------------
                             10
    
  4. Faça um programa para calcular a área de uma circunferência, considerando a fórmula AREA = π × RAIO2. Utilize as variáveis AREA e RAIO, a constante π (pi = 3,14159) e os operadores aritméticos de multiplicação.

  5. Faça um programa que peça dois números, base e expoente, calcule e imprima o primeiro número elevado ao segundo número. Utilize a função de potência da linguagem.

  6. Faça um programa que:

    1. Leia o nome;
    2. Leia o sobrenome;
    3. Concatene o nome com o sobrenome;
    4. Apresente o nome completo.
  7. Faça um programa que leia uma temperatura em graus Celsius e apresente-a convertida em graus Fahrenheit. A fórmula de conversão é: ℉ = (9 × ℃ + 160) ÷ 5, na qual ℉ é a temperatura em Fahrenheit e ℃ é a temperatura em Celsius.

  8. Faça um programa que calcule a quantidade de litros de combustível gasta em uma viagem, utilizando um automóvel que faz 12Km por litro. Para obter o cálculo, o usuário deve fornecer o tempo gasto na viagem e a velocidade média durante ela. Desta forma, será possível obter a distância percorrida com a fórmula DISTANCIA = TEMPO × VELOCIDADE. Tendo o valor da distância, basta calcular a quantidade de litros de combustível utilizada na viagem com a fórmula: LITROS_USADOS = DISTANCIA ÷ 12. O programa deve apresentar os valores da velocidade média, tempo gasto na viagem, a distância percorrida e a quantidade de litros utilizada na viagem.

  9. Faça um programa para determinar o consumo médio de um automóvel sendo fornecida a distância total percorrida pelo automóvel e o total de combustível gasto.

  10. Faça um programa que leia os valores de COMPRIMENTO, LARGURA e ALTURA e apresente o valor do volume de uma caixa retangular. Utilize para o cálculo a fórmula VOLUME = COMPRIMENTO × LARGURA × ALTURA.

  11. Faça um programa que leia a idade de uma pessoa expressa em anos, meses e dias e escreva a idade dessa pessoa expressa apenas em dias. Considerar ano com 365 dias e mês com 30 dias. Calcular quantos dias a pessoa já viveu até hoje.

  12. Faça um programa para calcular e imprimir o número de lâmpadas necessárias para iluminar um determinado cômodo de uma residência. Dados de entrada: a potência da lâmpada utilizada (em watts), as dimensões (largura e comprimento, em metros) do cômodo. Considere que a potência necessária é de 18 watts por metro quadrado.

  13. Faça um programa que armazene o valor 10 em uma variável A e o valor 20 em uma variável B. A seguir (utilizando apenas atribuições entre variáveis) troque os seus conteúdos fazendo com que o valor que está em A passe para B e vice-versa. Ao final, escrever os valores que ficaram armazenados nas variáveis.

  14. Faça um programa para uma loja de tintas. O programa deverá pedir o tamanho em metros quadrados da área a ser pintada. Considere que a cobertura da tinta é de 1 litro para cada 3 metros quadrados e que a tinta é vendida em latas de 18 litros, que custam R$ 80,00. Informe ao usuário a quantidades de latas de tinta a serem compradas e o preço total.

  15. Considere a seguinte situação: Descontam-se inicialmente 10% do salário bruto do trabalhador como contribuição à previdência social. Após esse desconto, há um outro desconto de 5% sobre o valor restante do salário bruto, a título de imposto de renda. Faça um programa que leia o salário bruto de um cidadão e imprima o seu salário líquido.

  16. Faça um programa que leia quatro números e apresente os resultados de adição e multiplicação dos valores entre si, baseando-se na utilização da propriedade distributiva, ou seja, se forem lidas as variáveis A, B, C e D, devem ser somadas e multiplicadas A com B, A com C e A com D; B com C, B com D e por último C com D.

Estrutura de decisão

  1. Faça um programa que peça dois números e imprima o maior deles.

  2. Faça um programa que leia três números e imprima o maior deles.

  3. Faça um programa que receba como entrada três valores e os imprima em ordem crescente.

  4. As maçãs custam R$ 1,30 cada se forem compradas menos de uma dúzia, e R$ 1,00 se forem compradas pelo menos 12 unidades. Escreva um programa que leia o número de maçãs compradas, calcule e imprima o custo total da compra.

  5. Faça um programa para aprovar empréstimos bancários. O código deve pedir três informações: valor do empréstimo, número de parcelas e salário do solicitante. Aprovar empréstimo caso o valor das parcelas represente no máximo 30% do salário do solicitante.

  6. A empresa paga ao corretor uma comissão calculada de acordo com o valor de suas vendas. Se o valor da venda de um corretor for maior que R$ 50.000,00 a comissão será de 12% do valor vendido. Se o valor da venda do corretor estiver entre R$ 30.000,00 e R$ 50.000,00 (incluindo extremos) a comissão será de 9,5%. Em qualquer outro caso, a comissão será de 7%. Escreva um programa onde será informado nome do corretor e o valor da venda, após isto o programa irá calcular o valor da comissão.

  7. Faça um programa onde serão informados as quatro notas do aluno. O programa irá então apresentar a média, se foi aprovado (nota ≥ 7) ou se ficou em exame. Caso o aluno ficou em exame, o programa irá então perguntar qual foi a nota do exame e então irá calcular a nova média (média anteior com a nota do exame) e informar se ele foi aprovado (nova média ≥ 5) ou se foi reprovado.

  8. A jornada de trabalho semanal de um funcionário é de 40 horas. O funcionário que trabalhar mais de 40 horas receberá hora extra, cujo cálculo é o valor da hora regular com um acréscimo de 50%. Escreva um programa que leia o número de horas trabalhadas em um mês, o salário por hora e imprima o salário total do funcionário, que deverá ser acrescido das horas extras, caso tenham sido trabalhadas (considere que o mês possua 4 semanas exatas).

  9. Faça um programa que efetue a leitura de três valores numéricos representando os lados de um triângulo. O programa deverá verificar e informar se os lados fornecidos formam realmente um triângulo (cada lado é menor que a soma dos outros dois lados). Se esta condição for verdadeira, deverá ser indicado qual tipo de triângulo foi formado: isósceles (dois lados iguais e um diferente), escaleno (todos os lados diferentes) ou equilátero (todos os lados são iguais).

  10. Faça um programa para uma empresa que decide dar um reajuste funcionários de acordo com os seguintes critérios:

    • 50% para aqueles que ganham menos do que três salários mínimos;
    • 20% para aqueles que ganham entre três até dez salários mínimos;
    • 15% para aqueles que ganham acima de dez até vinte salários mínimos;
    • 10% para os demais funcionários.
  11. Faça um programa que calcule as raízes de uma equação do segundo grau, na forma ax2 + bx + c. O programa deverá pedir os valores de a, b e c e fazer as consistências, informando ao usuário nas seguintes situações:

    • Se o usuário informar o valor de A igual a zero, a equação não é do segundo grau e o programa não deve fazer pedir os demais valores, sendo encerrado;
    • Se o delta calculado for negativo, a equação não possui raízes reais. Informe ao usuário e encerre o programa;
    • Se o delta calculado for igual a zero a equação possui apenas uma raiz real; informe-a ao usuário;
    • Se o delta for positivo, a equação possui duas raízes reais; informe-as ao usuário.
  12. Faça um programa que peça um número correspondente a um determinado ano e em seguida informe se este ano é ou não bissexto. Regras para o cálculo dos anos bissextos:

    1. De 4 em 4 anos é ano bissexto.
    2. De 100 em 100 anos não é ano bissexto.
    3. De 400 em 400 anos é ano bissexto.
    4. Prevalecem as últimas regras sobre as primeiras
  13. Um posto está vendendo combustíveis com a seguinte tabela de descontos. Escreva um programa que leia o número de litros vendidos e o tipo de combustível (codificado da seguinte forma: A-álcool, G-gasolina), calcule e imprima o valor a ser pago pelo cliente sabendo-se que o preço do litro da gasolina é R$ 3,30 e o preço do litro do álcool é R$ 2,90.

    Álcool até 20 litros, desconto de 3% por litro
    acima de 20 litros, desconto de 5% por litro
    Gasolina até 20 litros, desconto de 4% por litro
    acima de 20 litros, desconto de 6% por litro
  14. Uma quitanda está vendendo frutas com a seguinte tabela de preços. Se o cliente comprar mais de 8 Kg em frutas ou o valor total da compra ultrapassar R$ 25,00, receberá ainda um desconto de 10% sobre este total. Escreva um algoritmo para ler a quantidade (em Kg) de morangos e a quantidade (em Kg) de maças adquiridas e imprima o valor a ser pago pelo cliente.

    Até 5Kg Acima de 5kg
    Morango R$2,50 / kg R$2,20 / kg
    Maçã R$1,80 / kg R$1,50 / kg
  15. Uma Companhia de Seguros possui nove categorias de seguro baseadas na idade e ocupação do segurado. Somente pessoas com pelo menos 17 anos e não mais de 70 anos podem adquirir apólices de seguro. Quanto às classes de ocupações, foram definidos três grupos de risco. A tabela abaixo fornece as categorias em função da faixa etária e do grupo de risco. Dados nome, idade e grupo de risco, determinar a categoria do pretendente à aquisição de tal seguro. Imprimir o nome a idade e a categoria do pretendente, e, caso a idade não esteja na faixa necessária, imprimir uma mensagem.

    Idades Grupos de risco
    Baixa Média Alta
    17 a 20 1 2 3
    21 a 24 2 3 4
    25 a 34 3 4 5
    35 a 64 4 5 6
    65 a 70 7 8 9

Estrutura Condicional

  1. Faça um programa que leia a primeira letra do estado civil de uma pessoa e mostre uma mensagem com a sua descrição (Solteiro, Casado, Viúvo, Divorciado, Desquitado). Mostre uma mensagem de erro caso for informado um código inválido.

  2. Faça um programa que leia dois valores do usuário e a operação que ele deseja executar (Operações: (+) soma, (-) subtração, (/) divisão, (*) multiplicação). Execute a operação desejada e imprima na tela.

  3. Uma loja fornece 10% de desconto para funcionários e 5% de desconto para clientes vips. Faça um programa que calcule o valor total a ser pago por uma pessoa. O programa deverá ler o valor total da compra efetuada e um código que identifique se o comprador é um cliente comum (1), funcionário (2) ou vip (3).

Estrutura de repetição

  1. Faça um programa que calcule a soma dos números inteiros de 1 a 100.

  2. Escreva um programa que pergunte ao usuário um número e após, imprima na tela a soma total de 1 até o número lido. Exemplo: 5: 1 + 2 + 3 + 4 + 5 = 15

  3. Faça um programa que peça dois números, base e expoente, calcule e imprima o primeiro número elevado ao segundo número. Não utilize a função de potência da linguagem.

  4. Construa um programa que exiba a tabuada de 1 até N, onde N é informado pelo usuário. ex: Até a tabuada de 3, irá imprimir as tabuadas de 1, 2 e 3.

  5. Faça um programa para calcular e imprimir a soma dos cubos dos números pares compreendidos entre A e B (B > A). A e B são lidos pelo teclado.

  6. Faça um programa que receba um valor que foi depositado na poupança e exiba o valor com rendimento mês a mês durante o período de um ano. Considere fixo o juros da poupança em 0,5% a. m.

  7. Número primo é aquele que só é divisível por ele mesmo e pelo número 1. Faça um programa que peça um número inteiro ao usuário e determine se o número informado é primo ou não.

  8. Faça um programa que calcule o resultado dos 50 primeiros números da seguinte sequência:

    1000 ÷ 1 - 997 ÷ 2 + 994 ÷ 3 - 991 ÷ 4 + ...

  9. Faça um programa para calcular e imprimir a seguinte equação:

    37 × 38 ÷ 1 + 36 × 37 ÷ 2 + 35 × 36 ÷ 3 + ... + 1 × 2 ÷ 37

  10. Anacleto tem 1,50m e cresce 2 centímetros por ano, enquanto Felisberto tem 1,10m e cresce 3 centímetros por ano. Construa um programa que calcule e apresente quantos anos serão necessários para que Felisberto seja maior que Anacleto.

  11. Um determinado material radioativo perde metade de sua massa a cada 50 segundos. Dada a massa inicial, em gramas, faça um programa que determine o tempo necessário para que essa massa se torne menor que 0,05 gramas.

  12. Supondo que a população de um país A seja da ordem de 80.000 habitantes com uma taxa anual de crescimento de 3% e que a população de B seja 200.000 habitantes com uma taxa de crescimento de 1,5%. Faça um programa que calcule e imprima o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento.

  13. Uma rainha requisitou os serviços de um monge e disse-lhe que pagaria qualquer preço. O monge, necessitando de alimentos, indagou à rainha sobre o pagamento, se poderia ser feito com grãos de trigo dispostos em um tabuleiro de xadrez (que possui 64 casas), de tal forma que o primeiro quadro deveria conter apenas um grão e os quadros subsequentes, o dobro do quadro anterior. Crie um programa para calcular o total de grãos que o monge recebeu.

  14. Escreva um programa que determine o fatorial de um número. Para este problema, tem-se como entrada o valor do número do qual se deseja calcular o fatorial. O fatorial de 0 é igual a 1. O fatorial de um número N(N!) é definido conforme a seguir:

    N! = 1 × 2 × 3 × 4 × ... × (N - 1) × N

  15. Faça um programa que peça para o usuário ir informando números até que ele informe 0 (zero). Após isto apresente os seguintes dados sobre os números digitados:

    1. O maior número;
    2. O menor número;
    3. A soma dos números;
    4. A média deles;
    5. A quantidade de números pares;
    6. A quantidade de números ímpares.
  16. Leia um número positivo do usuário, então, calcule e imprima a sequência Fibonacci (onde cada número é a soma dos dois anteriores) até o primeiro número superior ao número lido. Exemplo: se o usuário informou o número 30, a sequência a ser impressa será 0 1 1 2 3 5 8 13 21 34.

  17. Faça um programa que peça ao usuário pensar em um número de 1 a 1000, o programa então tentará adivinhar o número pensando. A cada chute que o programa der, o usuário deverá responder se ele acertou, se o valor foi acima ou abaixo do pensado. Caso o programa acerte em até 10 tentativas, o programa será considerado vitorioso.

  18. O seguinte programa em Python™ não está funcionando e lhe foi pedido para que seja corrigido. Apenas olhando o código, qual foi o erro de programação?

    cont1 = 0
    cont2 = 0
    brancos = 0
    nulos = 0
    voto = int(input())
    while voto != -1:
        if voto == 1:
            cont1 += 1
        elif voto == 2:
            cont2 += 1
        elif voto == 0:
            brancos += 1
        else:
            nulos += 1
    print(cont1)
    print(cont2)
    print(brancos)
    print(nulos)

Strings

  1. Faça um programa que permita ao usuário digitar o seu nome e em seguida imprima o nome do usuário de trás para frente utilizando somente letras maiúsculas. Dica: lembre−se que ao informar o nome o usuário pode digitar letras maiúsculas ou minúsculas.

  2. Dado uma string com uma frase informada pelo usuário (incluindo espaços em branco), conte:

    1. quantos espaços em branco existem na frase.
    2. quantas vezes aparecem as vogais a, e, i, o, u.
  3. Desenvolva um jogo em que o usuário tenha que adivinhar uma palavra que será mostrada com as letras embaralhadas. O programa terá uma lista de palavras lidas de um arquivo texto ou de um vetor e será escolhida uma aleatoriamente. O jogador terá seis tentativas para adivinhar a palavra. Ao final a palavra deve ser mostrada na tela, informando se o usuário ganhou ou perdeu o jogo.

  4. Leia um código de cinco algarismos (variável Codigo) e gere o digito verificador (DigitoV) módulo 7 para o mesmo. Supondo que os cinco algarismos do código são ABCDE, uma forma de calcular o dígito desejado, com módulo 7 é:

    DigitoV = resto da divisão de S por 7, onde S = 6A + 5B + 4C + 3D + 2E

  5. Escreva um programa que dado um valor numérico digitado pelo usuário (armazenado em uma variável inteira), imprima cada um dos seus dígitos por extenso. Exemplo:

    Entre o número: 4571
    Resultado: quatro, cinco, sete, um
    
  6. Leet é uma forma de se escrever o alfabeto latino usando outros símbolos em lugar das letras, como números por exemplo. A própria palavra leet admite muitas variações, como l33t ou 1337. O uso do leet reflete uma subcultura relacionada ao mundo dos jogos de computador e internet, sendo muito usada para confundir os iniciantes e afirmar-se como parte de um grupo. Pesquise sobre as principais formas de traduzir as letras. Depois, faça um programa que peça uma texto e transforme-o para a grafia leet speak.

  7. Escreva um programa que, a partir de um nome informado pelo usuário, exiba suas iniciais. As iniciais são formadas pela primeira letra de cada nome, sendo que todas deverão aparecer em maiúsculas na saída do programa. Note que os conectores e, do, da, dos, das, de, di, du não são considerados nomes e, portanto, não devem ser considerados para a obtenção das iniciais. As iniciais devem ser impressas em maiúsculas, ainda que o nome seja entrado todo em minúsculas.

    Exemplos:

    Maria das Graças Pimenta -> MGP
    João Carlos dos Santos -> JCS
    
  8. Faça um programa que peça ao usuário duas strings diferentes, verifique então se elas são anagramas, ou seja, tem o mesmo conjunto de letras.

  9. Dado uma frase informada pelo usuário, converta as letras minúsculas em maiúsculas e vice-versa.

    Exemplo:

    Entrada: PalAVra
    saída:   pALavRA
    

Vetores

  1. Fazer um algoritmo que calcule e imprima o soma, a média, o maior e o menor dos valores armazenados em um vetor A de 100 elementos numéricos a serem lidos do dispositivo de entrada padrão.

  2. Faça um programa que copie o conteúdo de um vetor em um segundo vetor.

  3. Faça um programa que some o conteúdo de dois vetores e armazene o resultado em um terceiro vetor.

  4. Faça um programa para ler dois vetores V1 e V2 de 15 números cada. Calcular e imprimir a quantidade de vezes que V1 e V2 possuem os mesmos números e nas mesmas posições.

  5. Faça um programa que defina dois vetores A = [2, 4, 7, 13, 14, 15, 16] e B = [1, 6, 7, 11, 13, 16, 18] e faça as seguintes operações de conjuntos:

    • A ⋃ B: União (todos os valores de ambos os vetores)
    • A ⋂ B: Intersecção (apenas valores que existam em ambos)
    • A − B: Diferença (apenas valores que não apareçam simultaneamente em ambos conjuntos)
  6. Escrever um programa que lê um vetor com 20 números inteiros e os imprime na tela. Troque, a seguir, o 1º elemento com o último, o 2º com o penúltimo etc. até o 10º com o 11º e imprima na tela o vetor N assim modificado.

  7. Numa eleição existem n candidatos identificados pelos números 1, 2, 3 ... n. Faça um programa que compute o resultado de uma eleição. Inicialmente o programa deverá pedir o número total de candidatos e de votantes. Em seguida, deverá pedir para cada votante votar (informando o numero do candidato) e a o final imprimir o número de votos de cada candidato. Utilize um vetor para armazenar o total de votos de cada candidato.

  8. Ler 100 números de matriculas de alunos e armazenar em um vetor. Esses números são distintos, ou seja, não existem números de matriculas iguais. Caso o usuário informa um número de matrículo que já existe, o programa deverá emitir um alerta.

  9. Faça um programa que leia um vetor com N elementos formado por valores do tipo inteiro. Crie então dois novos vetores, um com os valores pares e outro com os valores ímpares do vetor original.

  10. Faça um programa que:

    1. Leia um vetor A com N elementos já ordenados e um vetor B com M elementos também já ordenados.
    2. Intercale os dois vetores A e B, formando um vetor C, sendo que ao final do processo de intercalação, o vetor C continue ordenado. Nenhum outro processo de ordenação poderá ser utilizado além da intercalação dos vetores A e B.
    3. Caso um vetor (A ou B) termine antes do outro, o vetor C deverá ser preenchido com os elementos do vetor que ainda possui informações.
  11. Uma escola de samba recebeu como pontos pela alegoria os seguintes 5 valores inclusos no vetor Notas. Lembrando que a nota mais alta e a nota mais baixa são descartadas. Faça um programa que calcule a média final do quesito.

    Notas = [9.9, 9.7, 9.8, 10, 10]
  12. Dadas duas sequências com n números inteiros entre 0 e 9, interpretadas como dois números inteiros de n algarismos, calcular a sequência de números que representa a soma dos dois inteiros.

      1  8  2  4  3  4  2  5  1
    +    3  3  7  5  2  3  3  7
      -------------------------
      2  1  6  1  8  6  5  8  8
    

Matrizes

  1. Faça um programa para ler e imprimir uma matriz 2 × 4 de números inteiros.

  2. Dada a seguinte matriz, calcule:

    1. A soma dos elementos da primeira coluna;
    2. O produto dos elementos da primeira linha;
    3. A soma de todos os elementos;
    4. O produto da diagonal principal.
    1 2 3 4
    5 6 7 8
    9 10 11 12
    13 14 15 16
  3. Dada as matrizes A e B determine A + B.

    A = -10 1 4 6
    2 3 2 8
    B = 1 8 4 -1
    0 6 3 -3
  4. Faça um programa que dada a matriz A, gere a matriz oposta -A. Matriz oposta possui valores que se somados à matriz original, gera uma matriz com valores zerados.

    A = 2 -3
    -1 4
  5. Faça um programa que dada a seguinte matriz A, gere a matriz transposta dela At. Matriz transposta é a que se obtém trocando-se ordenadamente as linhas pelas colunas.

    A = -7 8
    4 9
    2 1
    At = -7 4 2
    8 9 1
  6. Dada as matrizes A e B determine A × B.

    A = 2 3 1
    -1 0 2
    B = 1 -2
    0 5
    4 1
  7. Matriz identidade é a matriz quadrada de ordem N (2x2, 3x3, 4x4, ... NxN), em que os elementos da diagonal principal são iguais a 1 e, o restante dos elementos são iguais a 0. Faça um programa que peça ao usuário informar o tamanho do ordem e gere a matriz identidade.

  8. Dada a seguinte matriz 3x3:

    1 2 3
    4 5 6
    7 8 9

    Faça um programa que:

    1. Apresente a matriz rotacionada em 90°:
      7 4 1
      8 5 2
      9 6 3
    2. Apresente a matriz rotacionada em 180°:
      9 8 7
      6 5 4
      3 2 1
    3. Apresente a matriz rotacionada em 270°:
      3 6 9
      2 5 8
      1 4 7
  9. O tempo que um determinado avião dispensa para percorrer o trecho entre duas localidades distintas está disponível através da seguinte matriz:

      1 2 3 4 5 6 7
    1   2 11 6 15 11 1
    2 2   7 12 4 2 15
    3 11 7   11 8 3 13
    4 6 12 11   10 2 1
    5 15 4 8 10   5 13
    6 11 2 3 2 5   14
    7 1 15 13 1 13 14  
    1. Faça um programa que leia a matriz anterior e informe ao usuário o tempo necessário para percorrer duas cidades por ele fornecidas;
    2. Faça um programa que permita ao usuário informa várias cidades e as armazene no vetor de rota até que ele informe 0 (zero), após isto imprima o tempo total para cumprir todo o trajeto fornecido passando por todas as cidades.
  10. Implemente um programa que exiba um triângulo de Pascal (Tartaglia) de ordem n, sendo n informado pelo usuário. Para tal, considere uma matriz quadrada de ordem n, o triângulo de Pascal segue a seguinte regra de formação:

    1. todos os elementos da primeira coluna da matriz são iguais a 1;
    2. todos os elementos da diagonal principal da matriz também são iguais a 1;
    3. para os demais elementos são obtido pela soma do elemento da mesma coluna na linha de cima com o seu vizinho esquerdo;
    4. os elementos acima da diagonal principal não são exibidos.

    ex: Triângulo de Pascal de ordem 7:

     1                  
     1  1               
     1  2  1            
     1  3  3  1         
     1  4  6  4  1     
     1  5 10 10  5  1   
     1  6 15 20 15  6  1

Funções

  1. Crie uma função que receba duas palavras e retorne True caso a primeira palavra seja um prefixo da segunda.

  2. Crie uma função que necessite de três argumentos, e que forneça a soma desses três argumentos.

  3. Faça um programa com duas funções, uma que recebe uma temperatura em Fahrenheit e retorna em Celcius e outra que faz o inverso. Lembrando que as fórmulas são ℃ = (℉ - 32) ÷ 1,8 e ℉ = ℃ × 1,8 + 32.

  4. Crie uma função que receba como parâmetro um inteiro positivo ano e devolve verdadeiro ou falso se ano for bissexto ou não. Anos bissextos ocorrem a cada quatro anos exceto anos múltiplos de 100 que não são múltiplos de 400.

  5. Crie uma função que receba o comprimento de cada um dos três lados de um triângulo e retorne se esse triângulo é isósceles (dois lados iguais e um diferente), escaleno (todos os lados diferentes), equilátero (todos os lados são iguais) ou se não é um triangulo (algum lado é maior que a soma dos outros dois lados).

  6. Número primo é aquele que só é divisível por ele mesmo e pelo número 1. Crie uma função que retorne verdadeiro ou falso se o número passado é primo ou não.

Funções recursivas

  1. Crie uma função recursiva que receba um número inteiro positivo N e calcule o somatório dos números de 1 a N.

  2. Faça uma função recursiva que calcule e retorne o fatorial de um número inteiro N.

  3. O máximo divisor comum (MDC) dos inteiros x e y é o maior inteiro que é divisível por x e y. Escreva o algorítmo de Euclides através de uma função recursiva MDC, que retorna o máximo divisor comum de x e y. O MDC de x e y é definido como segue:

    • se y é igual a 0, então mdc(x, y) é x;
    • caso contrário, mdc(x, y) é mdc (y, x mod y), onde mod é o operador módulo (resto).
  4. Faça uma função recursiva que calcule e retorne o N-ésimo termo da sequência Fibonacci. Alguns números desta sequência são: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...

  5. Faça uma função recursiva que retorne a inversão de uma String passada como parâmetro. Ex: teste → etset

  6. Torres de Hanói é um jogo matemático onde dispomos de 3 pinos: pino origem, pino de trabalho e pino destino. O pino origem contém n discos empilhados por ordem crescente de tamanho (o maior disco fica embaixo). O objetivo do jogo é levar todos os discos do pino origem para o pino destino, utilizando o pino de trabalho para auxiliar a tarefa, e atendendo às seguintes restrições:

    1. Apenas um disco pode ser movido por vez (o disco que estiver no topo da pilha de um dos pinos).
    2. Um disco de tamanho maior nunca pode ser colocado sobre um disco de tamanho menor.

    Faça um programa com função recursiva que resolve o jogo das Torres de Hanoi.

Programação concorrente

  1. Faça um programa concorrente que crie 10 threads que exibam o nome da thread e a hora atual.

  2. Faça um programa concorrente que crie 10 threads que exibam o nome da thread e um contador que varia de 1 a 10. Execute várias vezes e observe as variações na saída. Os valores são sempre impressos na mesma ordem?

  3. Faça um programa que gere um array de 1 milhão números inteiros aleatórios e faça as seguintes tarefas:

    1. Some todos os valores de forma sequencial e meça o tempo de execução;
    2. Some todos os valores de forma concorrente com 10 threads e meça o tempo de execução;
    3. Some todos os valores de forma concorrente com 100 threads e meça o tempo de execução.
    4. Responda as seguintes perguntas:
      1. Qual foi o speedup1 obtido?
      2. Teve algum caso que o speedup foi negativo?
  4. Faça um programa que crie uma lista (ArrayList) e manipule ela com as seguintes threads:

    • Duas threads incluindo valores aleatórios na lista.
    • Uma thread removendo o primeiro valor da lista.
    • Uma thread imprimindo a cada segundo os valores existentes.
  5. Numa cozinha, existe 1 lavador de pratos e dois enxugadores de pratos. O escorredor tem espaço para 10 pratos. Faça um programa que simule a lavação e enxugamento de 100 pratos.

NoSQL Chave-Valor

  1. Faça um programa que conecte numa base Redis® e chame as funções PING e ECHO. Utilize a linguagem Java™ com a biblioteca Jedis.

  2. Crie 10 entradas chave-valor aleatórios e em seguida acesse o banco Redis com algum programa GUI (RedisInsight ou Another Redis Desktop Manager) e verifique se as chaves foram criadas. Depois volte ao programa e liste as chaves e seus respectivos valores.

  3. Crie uma chave inteira com o nome "programa:execuções" e a cada chamada do programa execute a função INCR. Verifique pela GUI se o valor está sendo incrementado.

  4. Salve na base de dados uma lista de 10 usuários usando o tipo de dado LIST.

  5. Salve na base de dados uma lista de 10 usuários usando o tipo de dado SET.

  6. Crie uma lista de contatos com a chave "contatos:" mais o apelido da pessoa. Usando o tipo HASH, crie os campos nome, sobrenome, telefone, idade. Faça um programa com as operações CRUD (Create, Read, Update, Delete) da lista de contatos.

  7. Faça um programa que fique publicando (PUBLISH) a cada 20 segundos um número aleatório no tópico "codigo:segurança". Faça um segundo programa que assine (PSUBSCRIBE) a este mesmo tópico e que exiba os valores que vem sendo publicados.

NoSQL Documento

  1. Importe as bases de dados de exemplo do airbnb, mflix e weather e responda as seguintes perguntas sobre cada uma delas:

    1. Quantas coleções existem?
    2. Qual o tipo de dado usado para Id?
    3. Quais tipos de dados foram usados pelos campos no primeiro nível de cada documento?
    4. São aproximadamente quantos campos por documento?
    5. Existe "relacionamento" entre os documentos?
    6. Caso fosse usado um banco relacional, como ficaria o Modelo Entidade-Relacionamento.
    7. Existem dados geoespaciais? Se sim, como são armazenados?
    8. Cite vantagens e desvantagens do uso do modelo documento neste caso.
  2. Com a base de dados do mflix e faça os seguintes programas com a linguagem Java™ e a biblioteca MongoDB® Synchronous Driver:

    1. Liste os filmes com o nome "The Room".
    2. Liste os filmes que possuam uma duração ("runtime") menor ou igual à 15 minutos.
    3. Liste os filmes produzidos nos anos 80 ordenados pelo maior valor no campo "imdb.rating".
    4. Liste os filmes que tenha o gênero "Drama"
    5. Liste os fimes que possuam mais de 3 prêmios.
    6. Insira o filme Piratas do Vale do Silício.
    7. Insira o filme Silicon Cowboys e inclua dois comentários.
    8. Para os filmes lançados antes de 1950, inclua o gênero old.

Filmes

Segue uma relação de filmes que abordam o tema da programação e/ou da importância da computação (ordem alfabética):

Livros

Segue relação de livros recomendados (ordem alfabética):

Agradecimentos

Segue alguns agradecimentos aos professores e eventos que disponibilizaram uma lista de exercícios na internet facilitando a criação desta lista:

Informações legais

  • "Java" is a registered trademark of Oracle.
  • "MongoDB" is a trademark or registered trademark of MongoDB Inc.
  • "Python" is a trademark of the Python Software Foundation.
  • "Redis" is a registered trademark of Redis Ltd.

Footnotes

  1. Na arquitetura de computadores, speedup é um número que mede o desempenho relativo de dois sistemas que processam o mesmo problema.

About

Exercícios de programação

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages