Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Exercícios de Programação I - Linguagem Pascal, Exercícios de Lógica

EXERCÍCIO PARA O DESENVOLVIMENTO DA LÓGICA DE PROGRAMAÇÃO COM PASCAL!

Tipologia: Exercícios

2019

Compartilhado em 10/10/2019

zairo_vbastos
zairo_vbastos 🇧🇷

12 documentos

1 / 48

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
FIT – Faculdade de Informática de Taquara
Curso de Sistemas de Informação
EXERCÍCIOS e Respostas
da disciplina de PROGRAMAÇÃO I
- Linguagem Pascal -
Profa. Flávia Pereira de Carvalho
Agosto de 2006
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30

Pré-visualização parcial do texto

Baixe Exercícios de Programação I - Linguagem Pascal e outras Exercícios em PDF para Lógica, somente na Docsity!

FIT – Faculdade de Informática de Taquara Curso de Sistemas de Informação

EXERCÍCIOS e Respostas

da disciplina de PROGRAMAÇÃO I

- Linguagem Pascal -

Profa. Flávia Pereira de Carvalho

Agosto de 2006

Sumário

  • Simples - 1 ao 7............................................................................................................................................................. Página
  • Seleção - 1 ao 23...........................................................................................................................................................
  • Repetição e/ou Seleção - 1 ao 30...............................................................................................................................
  • Vetores - 1 ao 23 .........................................................................................................................................................
  • Matrizes - 1 ao 8 ..........................................................................................................................................................
  • Registros - 1 ao 4........................................................................................................................................................
  • Modularização - 1 ao 6...............................................................................................................................................
  • Respostas - Simples ..................................................................................................................................................
  • Respostas - Seleção...................................................................................................................................................
  • Respostas - Repetição e/ou Seleção.......................................................................................................................
  • Respostas - Vetores...................................................................................................................................................
  • Respostas - Matrizes..................................................................................................................................................
  • Respostas - Registros ...............................................................................................................................................
  • Respostas - Modularização.......................................................................................................................................

Seleção - 1 ao 23

1) Escreva um programa que leia o código de origem de um produto e imprima na tela a região de sua procedência conforme a tabela abaixo:

código 1 : Sul código 5 ou 6 : Nordeste

código 2 : Norte código 7, 8 ou 9 : Sudeste código 3 : Leste código 10 : Centro-Oeste código 4 : Oeste código 11 : Noroeste

Observação: Caso o código não seja nenhum dos especificados o produto deve ser encarado como Importado.

2) Escreva um programa que leia as notas das duas avaliações normais e a nota da avaliação optativa. Caso o aluno não tenha feito a optativa deve ser fornecido o valor –1. Calcular a média do semestre considerando que a prova optativa substitui a nota mais baixa entre as duas primeiras avaliações. Escrever a média e mensagens que indiquem se o aluno foi aprovado, reprovado ou está em exame, de acordo com as informações abaixo:

Aprovado : media >= 6.

Reprovado: media < 3.

Exame : media >= 3.0 e < 6.

3) Escreva um programa para ler as notas das duas avaliações de um aluno no semestre, calcular e escrever a média semestral e a seguinte mensagem: PARABÉNS! Você foi aprovado! somente se o aluno foi aprovado (considere 6.0 a média mínima para aprovação).

4) Acrescente ao exercício anterior a mensagem Você foi REPROVADO! Estude mais... caso a

média calculada seja menor que 6.0.

5) Escreva um programa para ler um valor e escrever se é positivo ou negativo. Considere o valor zero como positivo.

6) Reescreva o programa do exercício anterior considerando o zero como neutro, ou seja, se for

digitado o valor zero, escrever a palavra zero.

7) Escreva um programa para ler 2 valores (considere que não serão informados valores iguais) e

escrever o maior deles.

8) Escreva um programa para ler o ano de nascimento de uma pessoa e escrever uma mensagem que

diga se ela poderá ou não votar este ano (não é necessário considerar o mês em que ela nasceu).

9) As maçãs custam R$ 0,30 cada se forem compradas menos do que uma dúzia, e R$ 0,25 se forem compradas pelo menos doze. Escreva um programa que leia o número de maçãs compradas, calcule e escreva o valor total da compra.

10) Escreva um programa para ler 3 valores inteiros (considere que não serão lidos valores iguais) e

escrevê-los em ordem crescente.

11) Escreva um programa que verifique a validade de uma senha fornecida pelo usuário. A senha válida é o número 1234. Devem ser impressas as seguintes mensagens:

ACESSO PERMITIDO caso a senha seja válida.

ACESSO NEGADO caso a senha seja inválida.

12) Tendo como entrada a altura e o sexo (codificado da seguinte forma: 1 :feminino 2 :masculino) de uma pessoa, construa um programa que calcule e imprima seu peso ideal, utilizando as seguintes fórmulas:

  • para homens : (72.7 * h) – 58
  • para mulheres : (62.1 * h) – 44.

Observação: Altura = h (na fórmula acima).

13) Escreva um programa para ler um número inteiro (considere que serão lidos apenas valores positivos e inteiros) e escrever se é par ou ímpar.

14) Escreva um programa para ler o número de gols marcados pelo Grêmio e o número de gols marcados pelo Inter em um GRENAL. Escrever o nome do vencedor. Caso não haja vencedor deverá ser impressa a palavra EMPATE.

15) Escreva um programa para ler o número de lados de um polígono regular e a medida do lado (em cm). Calcular e imprimir o seguinte:

  • Se o número de lados for igual a 3 escrever TRIÂNGULO e o valor do seu perímetro.
  • Se o número de lados for igual a 4 escrever QUADRADO e o valor da sua área.
  • Se o número de lados for igual a 5 escrever PENTÁGONO.

Observação: Considere que o usuário informará os valores 3, 4 ou 5.

Repetição e/ou Seleção - 1 ao 30

1) Para que a divisão entre 2 números possa ser realizada, o divisor não pode ser nulo (zero). Escreva um programa para ler 2 valores e imprimir o resultado da divisão do primeiro pelo segundo. OBS: O programa deve validar a leitura do segundo valor (que não deve ser nulo). Enquanto for fornecido um valor nulo a leitura deve ser repetida. Utilize a estrutura Repita/Até na construção da repetição de validação.

2) Altere a solução do exercício anterior para que seja impressa a mensagem Valor inválido! caso o segundo valor informado seja zero.

3) Reescreva o programa para o exercício 1 utilizando a estrutura Enquanto/Faça na construção da repetição de validação.

4) Altere a solução do exercício 3 para que seja impressa a mensagem Valor inválido! caso o segundo valor informado seja zero.

5) Escreva um programa para ler as notas da 1ª e 2ª avaliações de um aluno, calcular e imprimir a média semestral. Faça com que o algoritmo só aceite notas válidas (uma nota válida deve pertencer ao intervalo [0,10]). Cada nota deve ser validada separadamente. Deve ser impressa a mensagem "Nota inválida" caso a nota informada não pertença ao intervalo [0,10].

6) Reescreva o programa para o exercício 5 para que no final seja impressa a mensagem Novo cálculo (1.sim 2.não) solicitando ao usuário que informe um código (1 ou 2) indicando se ele deseja ou não executar o programa novamente. Se for informado o código 1 deve ser repetida a execução de todo o programa para permitir um novo cálculo, caso contrário ele deve ser encerrado.

7) Reescreva o programa do exercício 6 validando a resposta do usuário para a pergunta Novo Cálculo (1.sim 2.não)? (aceitar apenas o código 1 ou 2).

8) Reescreva o programa do exercício 21 da série "Seleção" (triângulo equilátero, isósceles e escaleno) para que após a leitura dos dados (a medida dos 3 lados do triângulo) seja impressa a mensagem Os dados informados estão corretos (1.sim/2.não)? solicitando ao usuário uma resposta. Caso a resposta seja 1 a execução deve continuar normalmente escrevendo o tipo de triângulo, caso contrário, a leitura dos dados (a medida dos 3 lados) deverá ser repetida.

9) Escreva um programa para ler 2 notas de um aluno, calcular e imprimir a média final. Logo após escrever a mensagem "Calcular a média de outro aluno [S]im [N]ão?" e solicitar um resposta. Se a resposta for "S", o programa deve ser executado novamente, caso contrário deve ser encerrado imprimindo a quantidade de alunos aprovados.

10) Reescreva o programa do exercício 9, para que seja impressa no final, a quantidade de alunos aprovados, reprovados e que ficaram em exame.

11) Escreva um programa que verifique a validade de uma senha fornecida pelo usuário. A senha válida é a palavra teste (em minúsculo).

Observação: Se a senha informada pelo usuário for inválida, a mensagem "ACESSO NEGADO" deve ser impressa e repetida a solicitação de uma nova senha até que ela seja válida. Caso contrário deve ser impressa a mensagem "ACESSO PERMITIDO" junto com um número que representa quantas vezes a senha foi informada.

12) A Federação Gaúcha de Futebol contratou você para escrever um programa para fazer uma estatística do resultado de vários GRENAIS. Escreva um algoritmo para ler o número de gols marcados pelo Inter, o número de gols marcados pelo GRÊMIO em um GRENAL, imprimindo o nome do time vitorioso ou a palavra EMPATE. Logo após escrever a mensagem "Novo GRENAL 1.Sim 2.Não?" e solicitar uma resposta. Se a resposta for 1, o algoritmo deve ser executado novamente solicitando o número de gols marcados pelos times em uma nova partida, caso contrário deve ser encerrado imprimindo:

  • Quantos GRENAIS fizeram parte da estatística.
  • O número de vitórias do Inter.
  • O número de vitórias do Grêmio.
  • O número de Empates.
  • Uma mensagem indicando qual o time que venceu o maior número de GRENAIS (ou NÃO HOUVE VENCEDOR).

Observação: Para implementar um contador em Pascal (incrementar):

variável := variável + 1

13) Escreva um programa que leia o primeiro nome e a altura das moças inscritas em um concurso de beleza. Quando for informada a palavra FIM para o nome da moça o programa deverá ser encerrado e imprimir: o nome e a altura da moça mais alta e o número de moças no concurso. Considere que todas as moças possuem altura diferente.

14) Escreva um programa para imprimir as letras de A a Z.

15) Escreva um programa para imprimir os números de 1 a 10 utilizando uma estrutura Repita/Até.

16) Reescreva o programa do exercício anterior, para imprimir os números de 1 a 10 utilizando uma estrutura Enquanto/Faça

17) Escreva um programa que calcule o fatorial de N (N!), sendo que o valor inteiro de N deve ser escolhido pelo usuário. Sendo que:

N! = 1 * 2 * 3 * ... * (N - 1) * N

0! = 1 (por definição)

26) Faça um programa para ler um número de 1 a 9 e mostrar a tabuada da multiplicação do número lido.

27) Faça um programa para ler N números inteiros e positivos (apenas), ou seja, quantos o usuário quiser digitar e quando for digitado o zero, informar quantos números foram lidos, qual foi o maior e o menor número lido.

28) Faça um programa para ler o valor de uma coluna e, se válida, mostre uma "linha" vertical na coluna lida desenhada com caracteres *.

29) Reescreva o programa do exercício anterior, mas agora o caractere que será usado para desenhar a linha deve ser lido, ou seja, o usuário que indicará.

30) Ler o nome de um aluno, as notas da 1a. e 2a. avaliações. Validar as notas aceitando apenas notas válidas para cada avaliação (0,0 a 10,0). Caso seja fornecida uma nota inválida deve ser impressa uma mensagem para o usuário. Após a entrada das notas deve ser impressa a seguinte mensagem: "Os dados estão corretos (S/N)?", aceitando apenas a letra S ou N maiúsculas como resposta. Caso o usuário responda a letra N, o programa deverá solicitar novos dados. Calcular a média do aluno. Após este cálculo a tela deve ser limpa e os resultados impressos conforme o lay-out abaixo:

ALUNO: xxxxxxxxx

1 a. Avaliação 2 a. Avaliação Média Resultado xx.x xx.x xx.x xxxxxxx

Obs: Você deverá obter nota 6,0 no exame para aprovação! Novo cálculo (S/N)?

Na coluna "Resultado" deverão ser impressas as seguintes mensagens, conforme os casos abaixo:

Aprovado : média maior ou igual a 6,

Reprovado : média menor que 3,

Em Exame : média maior ou igual a 3,0 e menor que 6,

>> Note que a observação só deverá ser impressa caso o aluno fique em exame.

Vetores - 1 ao 23

1) Preencher (ler) um vetor X de 10 elementos com o valor inteiro 30. Escrever o vetor X após seu total preenchimento.

2) Preencher um vetor A de 10 elementos com os números inteiros de 1 a 10. Escrever o vetor A após o seu total preenchimento.

3) Preencher um vetor B de 10 elementos com 1 se o índice do elemento for ímpar e com 0 se for par. Escrever o vetor B após o seu total preenchimento.

4) Dado o seguinte vetor V a seguir:

1 2 3 4 5 6 7 8 V 5 1 4 2 7 8 3 6

>> Qual será seu conteúdo depois de executado o algoritmo abaixo?

for i := 8 downto 5 do begin aux := v [i]; v [i] := v [8 - i + 1]; v [8 - i + 1] := aux; end ;

v [3] := v [1]; v [v [3]] := v [v [2]];

5) Ler um vetor C de 10 elementos inteiros, trocar todos os valores negativos do vetor C por 0. Escrever o vetor C modificado.

6) Ler um vetor D de 10 elementos. Criar um vetor E, com todos os elementos de D na ordem inversa , ou seja, o último elemento passará a ser o primeiro, o penúltimo será o segundo e assim por diante. Escrever todo o vetor D e todo o vetor E.

7) Ler um vetor X de 10 elementos inteiros e positivos. Criar um vetor Y da seguinte forma: os elementos de Y com índice par receberão os respectivos elementos de X divididos por 2 ; os elementos com índice ímpar receberão os respectivos elementos de X multiplicados por 3. Escrever o vetor X e o vetor Y.

8) Ler um vetor W de 10 elementos, depois ler um valor V. Contar e escrever quantas vezes o valor V ocorre no vetor W e escrever também em que posições (índices) do vetor W o valor V aparece. Caso o valor V não ocorra nenhuma vez no vetor W, escrever uma mensagem informando isto.

20) Escrever um programa para ler o nome, a quantidade em estoque, quantidade mínima para estoque e o valor unitário de 6 produtos. Estas informações devem ser armazenadas em vetores separados, ou seja, 4 vetores. A seguir, ler a posição (0 a 6) de um produto no vetor e a quantidade vendida. Se a posição for inválida, deve ser impressa uma mensagem e ser lida uma nova posição. Ajustar a nova quantidade do estoque, ou seja, atualizar a quantidade em estoque e armazenar a quantidade vendida em um outro vetor. Imprimir o nome do produto e o respectivo valor da venda (para o produto lido). Repetir novas consultas ao estoque até que o usuário informe o valor zero para a posição do produto no vetor. Ao final das retiradas, imprimir um balanço de todo o estoque e das vendas de cada produto, escrevendo se o produto está com o estoque normal ou abaixo do mínimo.

21) Ler dois vetores, A e B com um número variável de conteúdos (dados) (no máximo 10). O programa deve solicitar antes da leitura dos vetores a quantidade de dados a serem lidos (1 a 10), os dois vetores terão o mesmo número de elementos. Gerar um terceiro vetor chamado Soma (de no máximo 10 elementos) que seja a soma dos dados do vetor A com os do vetor B. Imprimir o vetor Soma, sem deixar espaços em branco entre os elementos.

22) Ler um vetor A de 10 elementos inteiros e um valor X também inteiro. Armazenar em um vetor M o resultado de cada elemento de A multiplicado pelo valor X. Logo após, imprimir o vetor M.

23) Ler um vetor de 10 elementos inteiros. Após isto, imprimir na tela os 10 valores lidos e o usuário poderá escolher um destes valores para ser excluído do vetor. Ler o valor escolhido e eliminá-lo do vetor. No momento da exclusão todos os valores posteriores ao valor escolhido deverão ser reorganizados (movidos uma posição para esquerda) a fim de que o vetor resultante não fique com um espaço em branco. Imprimir o novo vetor.

Matrizes - 1 ao 8

1) Qual o conteúdo das matrizes M e N após a execução do algoritmo abaixo?

... j := 2; for i := 1 to 3 do begin M [i,j] := 2; M [i,j+2] := 2; M [i,j-1] := 1; M [i,j+1] := 1; end ;

for i := 1 to 2 do for j := 1 to 2 do begin if i = j then N [i,j] := 'A' else N [i,j] := 'Z' ; end ; ; ...

2) Dada a matriz Mat abaixo:

Qual será o seu conteúdo depois de executado o seguinte algoritmo?

... for i := 1 to 3 do for j := i+1 to 4 do begin aux := M [i,j]; M [i,j] := M [j,i]; M [j,i] := aux; end ; ; aux := M [1,1]; M [1,1] := M [4,4]; M [4,4] := aux; aux := M [2,2]; M [2,2] := M [3,3]; M [3,3] := aux; ...

Registros - 1 ao 4

1) Escreva um programa para cadastrar dois clientes de uma loja. As informações necessárias são: nome , endereço e telefone. Deve ser usada uma estrutura de registro para a construção deste cadastro, usando Type para a declaração do registro.

2) O mesmo exercício anterior, mas o programa deverá suportar até 50 clientes. Ao final do cadastro de cada cliente deverá ser perguntado: "Novo Cliente (S/N)?". Deve-se utilizar um vetor do tipo declarado como um registro para a solução deste programa.

3) O mesmo exercício anterior, mas após o término de todos os cadastros, ou seja, quando o usuário digitar "N" na pergunta para novo cliente ou quando preencher o vetor com 50 clientes, a tela deverá ser limpa e deverá ser montada uma tela para permitir a consulta aos clientes : por código (que é o índice do vetor). Deverá ser digitado o código 999 para encerrar o programa. A tela de consulta deverá ter o seguinte formato:

Digite o código do cliente: _ Nome: Endereço: Telefone: <Digite 999 para sair...>

Observação1: Estas informações só deverão ser impressas uma vez, e não a cada execução do programa.

Observação2: O fundo deve ser azul e as letras amarelas :D

4) Escreva um programa para cadastrar até 30 alunos de uma turma. As informações necessárias são: nome do aluno , nome da disciplina e média final. Deve ser usada uma estrutura de registro para a construção deste cadastro, usando Type para a declaração do registro. Ao final do cadastro de cada aluno deverá ser perguntado: "Novo Aluno (S/N)?". Deve-se utilizar um vetor do tipo declarado como registro para a solução deste programa. Após o término de todos os cadastros, ou seja, quando o usuário digitar "N" na pergunta para novo aluno ou quando preencher o vetor com 30 alunos, a tela deverá ser limpa e deverá ser montada uma tela para permitir a consulta aos alunos : por nome. Deverá ser digitada a palavra FIM para o nome para encerrar o programa. Você deverá fazer uma tela de consulta com o formato que achar adequado.

Observação: Faça o programa o mais próximo da realidade possível ;-)

Modularização - 1 ao 6

1) Escreva um programa que leia uma string e uma letra e conte quantas vezes a letra informada ocorre na string. Utilizar o módulo ContaLetra para resolver este problema:

Nome: ContaLetra

Entrada: uma string e uma letra

Saída: número de vezes que a letra ocorre na string

2) Escreva um programa que leia uma string e conte o número de palavras existentes na string. Considere que palavra é qualquer conjunto de caracteres delimitados por um espaço em branco. Utilizar o módulo ContaPalavra para a resolução deste exercício:

Nome: ContaPalavra

Entrada: uma string

Saída: número de palavras existentes na string

3) Escreva um programa que leia uma palavra e imprima-a invertida na tela. Por exemplo:

FACCAT --> TACCAF

Utilizar o módulo InvertePalavra para resolver este exercício:

Nome: InvertePalavra

Entrada: uma palavra

Saída: a mesma palavra com suas letras em ordem inversa

4) Escreva um programa em Pascal que leia do teclado um valor inteiro e armazene este valor em uma variável. Este valor deverá ser passado como parâmetro para um módulo denominado Quadrado. Este módulo imprime na tela o quadrado do valor passado como parâmetro.

5) O mesmo exercício anterior (número 4), mas agora o módulo deverá retornar para uma segunda variável do programa principal o quadrado do valor passado como parâmetro. Imprimir o valor calculado (estando no programa principal).

6) O mesmo exercício anterior (número 5), mas agora o módulo deverá retornar 2 valores: o quadrado do valor lido do teclado e passado como parâmetro e também o valor passado como parâmetro multiplicado por 10.

program exercicio04; {simples}

uses crt;

var pot_lamp, larg_com, comp_com, area_com, pot_total : real; num_lamp: integer; {pot_lamp: potencia da lampada larg_com: largura do comodo comp_com: comprimento do comodo area_com: area do comodo pot_total: potencia total num_lamp: numero de lampadas}

begin clrscr; writeln; write ('Qual a potencia da lampada (em watts)? '); readln (pot_lamp); writeln; write ('Qual a largura do comodo (em metros)? '); readln (larg_com); writeln; write ('Qual o comprimento do comodo (em metros)? '); readln (comp_com); writeln;

area_com := larg_com * comp_com; pot_total := area_com * 18; num_lamp := round (pot_total / pot_lamp); {round = arredonda o valor}

writeln; writeln ('Numero de lampadas necessarias para iluminar esse comodo: ', num_lamp); end.

program exercicio05; {simples}

uses crt;

var comp, larg, alt, area : real; caixas : integer;

{comp: comprimento, alt: altura}

begin comp := 0; {inicializar variaveis} larg := 0; alt := 0; area := 0; caixas := 0;

clrscr; writeln; write ('Qual o comprimento da cozinha? '); readln (comp); writeln; write ('Qual a largura da cozinha? '); readln (larg); writeln; write ('Qual a altura da cozinha? '); readln (alt); writeln;

area := (compalt2) + (largalt2); caixas := round (area/1.5); {Tem q ser ponto em vez de virgula}

writeln; writeln ('Quantidade de caixas de azulejos para colocar em todas as paredes: ', caixas); writeln; end.