Exercícios: Lógica de Programação

Avatar do usuário
bernardino
Site Admin
Mensagens: 584
Registrado em: 28 Ago 2020, 15:11

Exercícios: Lógica de Programação

Mensagem por bernardino »

TLP.WHITE.png
TLP.WHITE.png (2.34 KiB) Exibido 164 vezes
Divulgação não é limitada.
As fontes podem usar TLP:WHITE quando o risco de mau uso da informação é mínimo ou não há previsão de risco de mau uso, de acordo com regras e procedimentos aplicáveis para divulgação pública. Informação TLP:WHITE pode ser distribuída sem restrições, desde que respeitadas as regras padrão de direitos autorais.

1. Ler quatro números inteiros e apresentar o resultado da adição e multiplicação, baseando-se na utilização do conceito 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. Depois B com C, B com D e por fim C com D. Perceba que será necessário efetuar seis operações de adição e seis operações de multiplicação e apresentar doze resultados de saída. (MANZANO, p. 26)

Código: Selecionar todos

programa MANZANO_P_26
var
  A, B, C, D: inteiro;
inicio
  escreva "Digite 04 valores a serem somados e multiplicados entre si";
  leia A;
  leia B;
  leia C;
  leia D;
  escreva "A soma de A com B é:", A + B;
  escreva "A multiplicação de A com B é:", A * B;
  escreva "A soma de A com C é:", A + C;
  escreva "A multiplicação de A com C é:", A * C;
  escreva "A soma de A com D é:", A + D;
  escreva "A multiplicação de A com D é:", A * D;
  escreva "A soma de B com C é:", B + C;
  escreva "A multiplicação de B com C é:", B * C;
  escreva "A soma de B com D é:", B + D;
  escreva "A multiplicação de B com D é:", B * D;
  escreva "A soma de C com D é:", C + D;
  escreva "A multiplicação de C com D é:", C * D;
fim
2. Elaborar um programa que calcule e apresente o volume de uma caixa retangular, por meio da fórmula VOLUME ← COMPRIMENTO * LARGURA * ALTURA. (MANZANO, p. 26)

Código: Selecionar todos

programa MANZANO_P_26
var
  C, L, A, V: real;
inicio
  escreva "Digite o comprimento da caixa:";
  leia C;
  escreva "Digite a largura da caixa:";
  leia L;
  escreva "Digite a altura da caixa:";
  leia A;
  V ← C * L * A
  escreva "O volume da caixa retangular é:", V;
fim
3. Ler dois inteiros (variáveis A e B) e imprimir o resultado do quadrado da diferença do primeiro valor pelo segundo. (MANZANO, p. 26)

Código: Selecionar todos

programa MANZANO_P_26
var
  A, B, R: inteiro;
inicio
  escreva "Digite o valor de A:";
  leia A;
  escreva "Digite o valor de B:";
  leia B;
  R ← (A - B) * (A - B)
  escreva "O quadrado da diferença entre A e B é:", R;
fim
4. Elaborar um programa que efetue a apresentação do valor da conversão em real de um valor lido em dólar. O programa deve solicitar o valor da cotação do dólar e também a quantidade de dólares disponível com o usuário, para que seja apresentado o valor em moeda brasileira. (MANZANO, p. 26)

Código: Selecionar todos

programa MANZANO_P_26
var
  cotacao_dolar, quantidade_dolares, valor_real: real;
inicio
  escreva "Digite a cotação do dólar:";
  leia cotacao_dolar;
  escreva "Digite a quantidade de dólares disponível:";
  leia quantidade_dolares;
  valor_real ← cotacao_dolar * quantidade_dolares
  escreva "O valor em reais é:", valor_real;
fim
5. Efetuar a leitura de três valores (variáveis A, B e C) e apresentá-los dispostos em ordem crescente. (MANZANO, p. 41)

Código: Selecionar todos

programa MANZANO_P_41
var
  A, B, C, temp: real;
inicio
  escreva "Digite o valor de A:";
  leia A;
  escreva "Digite o valor de B:";
  leia B;
  escreva "Digite o valor de C:";
  leia C;
  se (A > B) então
    temp ← A
    A ← B
    B ← temp
  senao
    se (A > C) então
      temp ← A
      A ← C
      C ← temp
    fim_se
  fim_se
  se (B > C) então
    temp ← B
    B ← C
    C ← temp
  fim_se
  escreva("Os valores em ordem crescente são:", A, ", ", B, ", ", C)
fim
6. Efetuar a leitura de quatro números inteiros e apresentar os números que são divisíveis por 2 e 3. (MANZANO, p. 41)

Código: Selecionar todos

programa MANZANO_P_41;
var
  num1, num2, num3, num4: inteiro;
inicio
  escreva "Digite o primeiro número:";
  leia num1;
  escreva "Digite o segundo número:";
  leia num2;
  escreva "Digite o terceiro número:";
  leia num3;
  escreva "Digite o quarto número:";
  leia num4;
  se (num1 % 2 = 0) && (num1 % 3 = 0) então
    escreva "O primeiro número é divisível por 2 e 3.";
  senao
    escreva "O primeiro número não é divisível por 2 e 3.";
  fim_se
  se (num2 % 2 = 0) && (num2 % 3 = 0) então
    escreva "O segundo número é divisível por 2 e 3.";
  senao
    escreva "O segundo número não é divisível por 2 e 3.";
  fim_se
  se (num3 % 2 = 0) && (num3 % 3 = 0) então
    escreva "O terceiro número é divisível por 2 e 3.";
  senao
    escreva "O terceiro número não é divisível por 2 e 3.";
  fim_se
  se (num4 % 2 = 0) && (num4 % 3 = 0) então
    escreva "O quarto número é divisível por 2 e 3.";
  senao
    escreva "O quarto número não é divisível por 2 e 3.";
  fim_se
fim
7. Efetuar a leitura de cinco números inteiros e identificar o maior e o menor valores. (MANZANO, p. 41)

Código: Selecionar todos

programa MANZANO_P_41;
var
  num1, num2, num3, num4, num5, maior, menor: inteiro;
inicio
  // Solicita ao usuário que digite os cinco números
  escreva("Digite o primeiro número:");
  leia(num1);
  
  escreva("Digite o segundo número:");
  leia(num2);
  
  escreva("Digite o terceiro número:");
  leia(num3);
  
  escreva("Digite o quarto número:");
  leia(num4);
  
  escreva("Digite o quinto número:");
  leia(num5);
  
  // Inicializa as variáveis maior e menor com o primeiro número
  maior ← num1;
  menor ← num1;
  
  // Verifica o maior e o menor valor entre os cinco números
  se (num2 > maior) então
    maior ← num2;
  fim_se;
  se (num2 < menor) então
    menor ← num2;
  fim_se;
  
  se (num3 > maior) então
    maior ← num3;
  fim_se;
  se (num3 < menor) então
    menor ← num3;
  fim_se;
  
  se (num4 > maior) então
    maior ← num4;
  fim_se;
  se (num4 < menor) então
    menor ← num4;
  fim_se;
  
  se (num5 > maior) então
    maior ← num5;
  fim_se;
  se (num5 < menor) então
    menor ← num5;
  fim_se;
  
  // Apresenta o maior e o menor valor
  escreva("O maior valor é:", maior);
  escreva("O menor valor é:", menor);
fim
8. Elaborar um programa que efetue a leitura de um número inteiro e apresentar uma mensagem informando se o número é par ou ímpar. (MANZANO, p. 41)

Código: Selecionar todos

programa PAR_OU_IMPAR;
var
  numero: inteiro;
inicio
  // Solicita ao usuário que digite um número inteiro
  escreva("Digite um número inteiro:");
  leia(numero);
  
  // Verifica se o número é par ou ímpar
  se (numero % 2 = 0) então
    escreva("O número digitado é par.");
  senao
    escreva("O número digitado é ímpar.");
  fim_se;
fim
9. Elaborar um programa que efetue a apresentação do valor da conversão em dólar de um valor lido em real. O programa deve solicitar o valor da cotação do dólar e também a quantidade de reais disponível com o usuário, para que seja apresentado o valor em moeda americana.

Código: Selecionar todos

programa CONVERSAO_REAL_DOLAR;
var
  cotacao_dolar, valor_reais, valor_dolares: real;
inicio
  // Solicita ao usuário que digite a cotação do dólar e a quantidade de reais
  escreva("Digite a cotação do dólar:");
  leia(cotacao_dolar);
  
  escreva("Digite a quantidade de reais:");
  leia(valor_reais);
  
  // Calcula o valor em dólares
  valor_dolares ← valor_reais / cotacao_dolar;
  
  // Apresenta o valor em dólares
  escreva("O valor em dólares é:", valor_dolares);
fim
10. Apresentar os quadrados dos números inteiros de 15 a 200. (MANZANO, p. 50)

Código: Selecionar todos

programa QUADRADOS;
var
  numero, quadrado: inteiro;
inicio
  // Inicia o loop com o número 15
  numero ← 15;
  
  // Enquanto o número for menor ou igual a 200, calcula o quadrado e o apresenta
  enquanto (numero <= 200) faca
    quadrado ← numero * numero;
    escreva("O quadrado de ", numero, " é ", quadrado);
    numero++; // Incrementa o número para avançar para o próximo
  fim_enquanto;
fim.
11. Elaborar um programa que apresente no final o somatório dos valores pares existentes na faixa de 1 até 500. (MANZANO, p. 50)

Código: Selecionar todos

programa SOMATORIO_PARES
var
  numero, soma_pares: inteiro;
inicio
  soma_pares ← 0;
  
  // Loop de 1 a 500
  para numero de 1 ate 500 faca
    // Verifica se o número é par
    se (numero % 2 = 0) então
      soma_pares ← soma_pares + numero; // Adiciona o número par ao somatório
    fim_se;
  fim_para;
  
  // Apresenta o somatório dos números pares
  escreva("O somatório dos números pares de 1 a 500 é:", soma_pares);
fim
12. Apresentar todos os números divisíveis por 4 que sejam menores que 200. Para verificar se o número é divisível por 4, efetuar dentro da malha a verificação lógica desta condição com a instrução se, perguntando se o número é divisível; sendo, mostre-o; não sendo, passe para o próximo passo. A variável que controlará o contador deve ser iniciada com o valor 1. (MANZANO, p. 50)

Código: Selecionar todos

programa DIVISIVEIS_POR_4
var
  numero: inteiro;
inicio
  // Inicializa o contador com 1
  numero ← 1;
  
  // Loop para verificar números divisíveis por 4 menores que 200
  enquanto (numero < 200) faca
    // Verifica se o número é divisível por 4
    se (numero % 4 = 0) então
      escreva(numero); // Mostra o número se for divisível por 4
    fim_se;
    
    // Incrementa o número para o próximo passo
    numero++; 
  fim_enquanto;
fim
13. Elaborar um programa que efetue o cálculo e no final apresente o somatório do número de grãos de trigo que se pode obter num tabuleiro de xadrez, obedecendo à seguinte regra: colocar um grão de trigo no primeiro quadro e nos quadros seguintes o dobro do quadro anterior. Ou seja, no primeiro quadro coloca-se 1 grão, no segundo quadro colocam-se 2 grãos (neste momento têm-se 3 grãos), no terceiro quadro colocam-se 4 grãos (tendo neste momento 7 grãos), no quarto colocam-se 8 grãos (tendo-se então 15 grãos) até atingir o sexagésimo quarto (64o ) quadro. Utilize variáveis do tipo real como acumuladores. (MANZANO, p. 50)

Código: Selecionar todos

programa SOMATORIO_GRAOS_TRIGO
var
  numero_quadro, total_graos: real;
inicio
  // Inicializa o número do primeiro quadro e o total de grãos
  numero_quadro ← 1;
  total_graos ← 1;
  
  // Loop para calcular o total de grãos em cada quadro até o 64º
  enquanto (numero_quadro < 64) faca
    // Dobrando o número de grãos no próximo quadro
    total_graos ← total_graos * 2;
    
    // Passando para o próximo quadro
    numero_quadro++; 
  fim_enquanto;
  
  // Apresenta o total de grãos obtidos
  escreva("O total de grãos de trigo obtidos é:", total_graos);
fim
14. Elaborar um programa que apresente como resultado o valor de uma potência de uma base qualquer elevada a um expoente qualquer, ou seja, de BE , em que B é o valor da base e E o valor do expoente. Observe que neste exercício não pode ser utilizado o operador de exponenciação do portuguol (^).(MANZANO, p. 66)

Código: Selecionar todos

programa POTENCIA
var
  base, expoente, resultado: real;
  i: inteiro;
inicio
  // Solicita ao usuário que digite a base e o expoente
  escreva("Digite o valor da base:");
  leia(base);
  
  escreva("Digite o valor do expoente:");
  leia(expoente);
  
  // Inicializa o resultado como 1
  resultado ← 1;
  
  // Calcula a potência da base elevada ao expoente
  para i de 1 ate expoente faca
    resultado ← resultado * base;
  fim_para;
  
  // Apresenta o resultado da potência
  escreva("O resultado de ", base, " elevado a ", expoente, " é:", resultado);
fim
15. Escreva um programa que apresente a série de Fibonacci até o décimo quinto termo. A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, 34, ..., etc. Esta série se caracteriza pela soma de um termo atual com o seu anterior subseqüente, para que seja formado o próximo valor da seqüência. Portanto começando com os números 1, 1 o próximo termo é 1+1=2, o próximo é 1+2=3, o próximo é 2+3=5, o próximo 3+5=8, etc. (MANZANO, p. 66)

Código: Selecionar todos

programa FIBONACCI;
var
  termo_anterior, termo_atual, proximo_termo: inteiro;
  i: inteiro;
inicio
  // Inicializa os dois primeiros termos da série
  termo_anterior ← 1;
  termo_atual ← 1;
  
  // Apresenta os dois primeiros termos da série
  escreva(termo_anterior);
  escreva(termo_atual);
  
  // Calcula e apresenta os próximos termos da série até o décimo quinto
  para i de 3 ate 15 faca
    proximo_termo ← termo_anterior + termo_atual;
    escreva(proximo_termo);
    
    // Atualiza os termos para o próximo cálculo
    termo_anterior ← termo_atual;
    termo_atual ← proximo_termo;
  fim_para;
fim
16. Ler 15 elementos de uma matriz tipo vetor. Construir uma matriz B de mesmo tipo, observando a seguintes lei de formação: “Todo elemento de B deverá ser o quadrado do elemento de A correspondente”. Apresentar as matrizes A e B. (MANZANO, p. 74)

Código: Selecionar todos

programa MATRIZES_VETOR;
var
  A, B: vetor[1..15] de inteiro;
  i: inteiro;
inicio
  // Ler os elementos do vetor A
  para i de 1 ate 15 faca
    escreva("Digite o ", i, "º elemento de A:");
    leia(A[i]);
  fim_para;

  // Construir o vetor B com os quadrados dos elementos de A
  para i de 1 ate 15 faca
    B[i] ← A[i] * A[i];
  fim_para;

  // Apresentar os vetores A e B
  escreva("Vetor A: ");
  para i de 1 ate 15 faca
    escreva(A[i]);
  fim_para;

  escreva("\nVetor B (quadrados): ");
  para i de 1 ate 15 faca
    escreva(B[i]);
  fim_para;
fim
17. Ler duas matrizes A e B do tipo vetor com 15 elementos cada. Construir uma matriz C, sendo esta a junção das duas outras matrizes. Desta forma, C deverá ter o dobro de elementos, ou seja, 30. Apresentar a matriz C. (MANZANO, p. 74)

Código: Selecionar todos

programa MATRIZES_JUNCAO;
var
  A, B, C: vetor[1..15] de inteiro;
  i: inteiro;

inicio
  // Seção de Entrada de Dados
  escreva("Digite os 15 elementos da matriz A: ");
  para i de 1 ate 15 faca
    leia(A[i]);
  fim_para;

  escreva("Digite os 15 elementos da matriz B: ");
  para i de 1 ate 15 faca
    leia(B[i]);
  fim_para;

  // Seção de Processamento
  para i de 1 ate 15 faca
    C[i] ← A[i]; // Copia os elementos de A para as primeiras posições de C
    C[i + 15] ← B[i]; // Copia os elementos de B para as posições restantes de C
  fim_para;

  // Seção de Saída
  escreva("Matriz C (junção de A e B): ");
  para i de 1 ate 30 faca
    escreva(C[i]);
  fim_para;
  
fim
18. Ler duas matrizes do tipo vetor, sendo A com 20 elementos e B com 30 elementos. Construir uma matriz C, sendo esta a junção das duas outras matrizes. Desta forma, C deverá ter a capacidade de armazenar 50 elementos. Apresentar a matriz C. (MANZANO, p. 74)

Código: Selecionar todos

programa MATRIZES_JUNCAO;
var
  A, B, C: vetor[1..50] de inteiro;
  i: inteiro;

inicio
  // Seção de Entrada de Dados
  escreva("Digite os 20 elementos da matriz A: ");
  para i de 1 ate 20 faca
    leia(A[i]);
  fim_para;

  escreva("Digite os 30 elementos da matriz B: ");
  para i de 1 ate 30 faca
    leia(B[i]);
  fim_para;

  // Seção de Processamento
  para i de 1 ate 20 faca
    C[i] ← A[i]; // Copia os elementos de A para as primeiras posições de C
  fim_para;

  para i de 21 ate 50 faca
    C[i] ← B[i - 20]; // Copia os elementos de B para as posições restantes de C
  fim_para;

  // Seção de Saída
  escreva("Matriz C (junção de A e B): ");
  para i de 1 ate 50 faca
    escreva(C[i]);
  fim_para;
  
fim
19. Ler 20 elementos de uma matriz A tipo vetor e construir uma matriz B de mesma dimensão com os mesmos elementos da matriz A, sendo que deverão estar invertidos. Ou seja, o primeiro elemento de A passa a ser o último de B, o segundo elemento de A passa a ser o penúltimo elemento de B e assim por diante. Apresentar as matrizes A e B lado a lado. (MANZANO, p. 74)

Código: Selecionar todos

programa MATRIZES_INVERSAO;
var
  A, B: vetor[1..20] de inteiro;
  i: inteiro;

inicio
  // Seção de Entrada de Dados
  escreva("Digite os 20 elementos da matriz A: ");
  para i de 1 ate 20 faca
    leia(A[i]);
  fim_para;

  // Seção de Processamento: construir a matriz B invertendo a ordem dos elementos de A
  para i de 1 ate 20 faca
    B[i] ← A[21 - i];
  fim_para;

  // Seção de Saída
  escreva("Matriz A: ");
  para i de 1 ate 20 faca
    escreva(A[i]);
  fim_para;
  
  escreva("\nMatriz B (inversão de A): ");
  para i de 1 ate 20 faca
    escreva(B[i]);
  fim_para;

fim
20. Desenvolver um programa que efetua a leitura dos nomes de 5 alunos e também de suas duas notas semestrais. Ao final deverá ser apresentado o nome de cada aluno classificado em ordem numérica crescente de suas médias anuais. (MANZANO, p. 101)

Código: Selecionar todos

programa CLASSIFICACAO_ALUNOS;
var
  alunos: vetor[1..5] de registro
    nome: cadeia[50];
    nota1, nota2, media: real;
  fim_registro;
  i, j: inteiro;
  temp: registro
    nome: cadeia[50];
    media: real;
  fim_registro;

inicio
  // Seção de Entrada de Dados
  para i de 1 ate 5 faca
    escreva("Digite o nome do aluno ", i, ": ");
    leia(alunos[i].nome);
    
    escreva("Digite a primeira nota do aluno ", i, ": ");
    leia(alunos[i].nota1);
    
    escreva("Digite a segunda nota do aluno ", i, ": ");
    leia(alunos[i].nota2);
    
    // Calcula a média anual do aluno
    alunos[i].media ← (alunos[i].nota1 + alunos[i].nota2) / 2;
  fim_para;

  // Seção de Processamento: Classificação dos alunos em ordem crescente de médias
  para i de 1 ate 4 faca
    para j de i + 1 ate 5 faca
      se alunos[i].media > alunos[j].media entao
        // Troca os elementos de posição se a média do aluno i for maior que a média do aluno j
        temp ← alunos[i];
        alunos[i] ← alunos[j];
        alunos[j] ← temp;
      fim_se;
    fim_para;
  fim_para;

  // Seção de Saída: Apresenta os alunos classificados em ordem crescente de médias
  escreva("Alunos classificados em ordem crescente de médias anuais:\n");
  para i de 1 ate 5 faca
    escreva(i, ". ", alunos[i].nome, " - Média anual: ", alunos[i].media:0:2, "\n");
  fim_para;

fim
TLP.WHITE.png
TLP.WHITE.png (2.34 KiB) Exibido 164 vezes
Algumas pessoas acham que foco significa dizer sim para a coisa em que você vai se focar.
Mas não é nada disso.
Significa dizer não às centenas de outras boas ideias que existem.
Você precisa selecionar cuidadosamente.”

Steve Jobs
Responder