Você está na página 1de 15

Instituto de Ensino Santo Antonio

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

Curso: Técnico de Informática


Ano: 1º Ano
Disciplina: Lógica 1

Versão 2009
Elaborado por: Prof. Fernando Salles Claro
Remodelado por: Prof. Vitor Hugo Migoto de Gouvêa
1) Defina os seguintes termos:

a) VARIÁVEIS
b) CONSTANTES
c) PORTUGOL
d) FLUXOGRAMA
e) ALGORITMO

2) Dada as seguintes declarações:


Var
Num: inteiro;
Soma, X: real;
Simbolo: caracter;
Nome, Cor, Dia: string;
Cod, Teste, Tudo: lógico;

Assinalar os comandos de atribuição inválidos:


a) ( ) Simbolo = 5;
b) ( ) Soma = Num + 2 * X;
c) ( ) Tudo = Soma;
d) ( ) Cor = 'Preto' - Raiz(X);
e) ( ) Teste = Cod ou (Raiz(X) <> Soma);
f) ( ) X = X + 1;
g) ( ) Num = '*ABC*';
h) ( ) Dia = 'Segunda';
i) ( ) Soma + 2 = Raiz(X);
j) ( ) X:= Nome >= Cod;

3) Com as mesmas declarações do exercício acima, quais serão os valores armazenados em


SOMA, NOME e TUDO, supondo-se que NUM, X, COR, DIA, TESTE e COD valem,
respectivamente, 25, 2.5, 'Azul', 'Terça', Falso e Verdadeiro ?
a) Nome = Dia;
b) Soma = Raiz(Num) / X + Int(X+1);
c) Tudo = não Teste ou Cod e (Soma < X);

4) Dadas as variáveis inteiras X, Y e Z, contendo os valores 2, 5, 9, respectivamente; a variável


NOME do tipo string contendo 'MARIA' e a variável lógica SIM contendo o valor FALSO,
observar os resultados das expressões lógicas desenvolvidas a seguir:
a) (X + Y > Z) E NOME = 'MARIA'
b) SIM OU (Y >= X)
c) NÃO SIM E (Z DIV Y + 1 = X)
d) (NOME = 'JORGE') E SIM OU (X2 < Z + 10)
Apostila de Exercícios de Lógica de Programação

5) Dada as declarações:
Var
A,B: REAL;
NOME, PROFISSAO: STRING;

Completar o quadro abaixo, com o valor das relações indicadas, tendo-se em vista os valores
atribuídos às variáveis:

VARIÁVEIS RELAÇÕES

A B NOME PROFISSAO A + 1 >= NOME <> PROFISSAO


Raiz(B) 'ANA' = 'MEDICO'

3.0 16.0 'MIRIAN' 'ADVOGADO'

5.0 64.0 'PEDRO' 'MEDICO'

2.5 9.0 'ANA' 'PROFESSOR'

6) Se A=127, B=10, C=5, D=FALSO e E=VERDADEIRO. Qual é o valor produzido por cada
uma das sentenças abaixo?NÃO D;
a) D E E;
b) ( A > B ) OU ( B < C );
c) NÃO ( A < B );
d) ( D E E ) OU ( A = B);
e) ( D OU E) E ( A < B);
f) A + B < C E D OU E E NÃO D;
g) A + B * C/B = 3 E NÃO ( A = B);

7) Qual é a primeira operação executada em cada um dos comandos abaixo?


a) X + Y - Z;
b) A + B / C**2;
c) JOAO + JOSE / JOEL;
d) MARIA + JOAO + BETE + JULIA;
e) X + Y + B**2 + R * 3;

8) Os comandos:

A = B = C;

e
se B=C então
A = VERDADEIRO;
senão
A = FALSO;
fimse;

São equivalentes? Explique por quê.

-2-
Apostila de Exercícios de Lógica de Programação

9) Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. Informe se


as expressões são verdadeiras ou falsas.

SALARIO IR SALLIQ EXPRESSÃO V ou F

100,00 0,00 100,00 (SALLIQ >= 100,00)

200,00 10,00 190,00 (SALLIQ < 190,00)

300,00 15,00 285,00 SALLIQ = SALÁRIO - IR

10) Sabendo que A=3, B=7 e C=4, informe se as expressões abaixo são verdadeiras ou falsas.

a) (A+C) > B ( )
b) B >= (A + 2) ( )
c) C = (B –A) ( )
d) (B + A) <= C ( )
e) (C+A) > B ( )

11) Sabendo que A=5, B=4 e C=3 e D=6, informe se as expressões abaixo são verdadeiras ou
falsas.

a) (A > C) E (C <= D) ( )
b) (A+B) > 10 OU (A+B) = (C+D) ( )
c) (A>=C) E (D >= C) ( )

12) Observe o algoritmo abaixo:


var
B1,B2,B3: lógico;

início
se (B1) então
C1;
senão
se (B2) então
se (B3) então
C2;
senão
C3;
C4;
fimse;
fimse;
C5;
fimse;
fim.

Dado o algoritmo acima, responda:


a) Se B1 = VERDADEIRO, B2 = VERDADEIRO, B3 = FALSO, quais os comandos

-3-
Apostila de Exercícios de Lógica de Programação

que serão executados ?

b) Se B1 = FALSO, B2 = VERDADEIRO, B3 = FALSO, quais os comandos que serão


executados ?
c) Quais os valores de B1, B2 e B3 para que somente o comando C5 seja executado ?

d) Se B1 = FALSO, B2 = VERDADEIRO e B3 = VERDADEIRO, quais os comandos


que serão executados ?

13) Qual o valor de L após a execução do algoritmo abaixo?

var
A,B,C: lógico;
X,Y: real;
V,L: inteiro;

início
A = V;
B = V;
C = F;
X = 1.5;
Y = 3.2;
X = X + 1;
se ((C) ou ((X + Y > 5) ou ( não A e B))) então
L = 0;
senão
L = 1;
fimse;
fim.

14) O que está errado no algoritmo abaixo?

var
N,PAR,X: inteiro;

início
leia (N);
X = N mod 2;
se (X = 0) então
PAR = V;
senão
PAR = F;
fimse;
fim.

-4-
Apostila de Exercícios de Lógica de Programação

15) Escreva um algoritmo para calcular o consumo médio de um automóvel (medido em Km/l),
dado que são conhecidos a distância total percorrida e o volume de combustível consumido
para percorrê-la (medido em litros).

FÓRMULA: ONDE:
DIST CM = CONSUMO MÉDIO
CM 
VOL DIST = DISTÂNCIA
VOL = VOLUME DE COMBUSTÍVEL CONSUMIDO

16) Uma empresa decide dar um reajuste a seus funcionários de acordo com os seguintes
critérios:

 50% para aqueles que ganham menos de R$ 3.000,00;


 20% para aqueles que ganham entre R$ 3.000,01 e R$ 10.000 e;
 15% para os demais.

Escreva um algoritmo para calcular e imprimir o valor do salário reajustado de cada


funcionário da empresa.

17) Tendo-se como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que
calcule seu peso ideal, utilizando as seguintes fórmulas:

 para homens: (72,7 * h) – 58;


 para mulheres: (62,1 * h) – 44,7.

18) Elabore um algoritmo que, dada a idade de um nadador, classifique-o em uma das seguintes
categorias:

 infantil A – 5 a 7 anos;
 infantil B – 8 a 10 anos;
 juvenil A – 11 a 13 anos;
 juvenil B – 14 a 17 anos;
 sênior – maiores de 17 anos.

19) Construa um algoritmo que leia três números inteiros e os imprima em ordem crescente.

20) Escreva um algoritmo que leia a MÉDIA de um aluno e que determine e imprima a
mensagem “APROVADO” se o aluno teve média igual ou superior a 7,0, caso contrário o
algoritmo deverá imprimir a mensagem “REPROVADO”.

21) Construir um algoritmo, que dado um conjunto de N valores inteiros e positivos, que
determine e imprima o maior e o menor dentre os números fornecidos.

22) Escreva um algoritmo que leia os três lados de um triângulo (A, B, C) e que determine e
imprima uma mensagem informando o seu tipo, conforme a tabela abaixo:

 Triângulo Equilátero = 3 lados iguais


 Triângulo Isósceles = 2 lados iguais
 Triângulo Escaleno = 3 lados diferentes

-5-
Apostila de Exercícios de Lógica de Programação

23) Fazer um algoritmo para achar o maior e o menor número de uma série de 10 números e
positivos fornecidos pelo teclado.

24) Escrever um algoritmo para calcular a série abaixo e imprimir o resultado de x.

1 1 1 1 1
x      ... 
1 2 3 4 n

25) O valor do sen(x) pode ser obtido com boa aproximação dos 30 primeiros termos da série
abaixo. Construir um algoritmo que dado o valor de N, calcule e imprima o valor do Sen(n).

n1 n3 n5 n7
sen x      ...
1! 3! 5! 7!

26) Construir um algoritmo para calcular a média de um conjunto de 50 valores inteiros e


positivos, fornecidos pelo teclado.

1 1 1 1
27) Sendo: h  1     ... 
2 3 4 n
Fazer um algoritmo para calcular e imprimir h. O número N ‚ fornecido pelo teclado.

28) Escreva um algoritmo para calcular o fatorial de um número N, fornecido pelo teclado.

29) Fazer um algoritmo que:

 Leia um número real X;


 Determine e imprima o seguinte somatório:

x x x
s  x    ...
1! 2! 3!

Usando os 13 primeiros termos da série:

30) Escrever um algoritmo, que leia um conjunto de 23 dados, cada um, contendo o peso e o
código do sexo ("F" ou "M") dos alunos de uma classe, calcule e imprima:

 Maior e o menor peso da turma;


 A média de peso dos homens;
 A média de peso da turma;

31) Escreva um algoritmo para calcular e imprimir a soma de dez números inteiros quaisquer
fornecidos pelo usuário.

32) Faça um algoritmo para gerar os N primeiros termos da seguinte seqüência:

1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, . . .

-6-
Apostila de Exercícios de Lógica de Programação

33) Escreva um algoritmo para calcular o reajuste salarial de uma empresa que possui 1000
funcionários, de acordo com os seguintes critérios:

 os funcionários com salário inferior a R$ 10.000,00 devem ter um reajuste de 55%;


 os funcionários com salários entre R$ 10.000,01 e R$ 25.000,00 devem ter um
reajuste de 30%
 os funcionários com salários superior a R$ 25.000,00 deve ter um reajuste de 20%

34) Uma empresa decide presentear seus 500 funcionários com um bônus de Natal, cujo valor é
definido do seguinte modo:

 os funcionários do sexo masculino com tempo de casa superior a 15 anos terão direito
a um bônus de 20% de seu salário;
 as funcionárias com tempo de casa superior a 10 anos terão direito a um bônus de
25% de seu salário; e
 os demais funcionários terão direito a um bônus de R$ 5.000,00.

Elabore um algoritmo para calcular o valor do bônus concedido a cada funcionário e o


impacto de tal atitude no orçamento da empresa (ou seja, o montante total dos bônus
concedidos).

35) Construir um algoritmo para calcular o valor de S, usando as 20 primeiras frações da


expressão abaixo:
x x x x x x
s      ...
1 2 3 4 5 20

36) Escreva um algoritmo que determine e imprima todos os números primos compreendidos
entre 1 e 100.

37) Um rei requisitou os serviços de um sábio e disse-lhe que pagaria qualquer preço. O sábio
necessitando de alimentos, indagou o rei sobre o pagamento, se poderia ser feito com grãos
de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro deveria
conter apenas um grão de trigo e nos quadros seguintes, o dobro do quadro anterior. O rei
achou o trabalho barato, pediu que o serviço fosse executado, sem se dar conta de que seria
impossível efetuar o pagamento. Faça um algoritmo que calcule e imprima a quantidade total
de grãos de trigo que o rei deveria pagar ao sábio.

38) Dados dois números inteiros A e B, construa um algoritmo para calcular e imprimir a soma
de todos os números pares existentes entre A e B.

39) Elabore um algoritmo que efetue a soma de todos os números ímpares que são múltiplos de
três e que se encontram no conjunto dos números de 1 até 500.

40) Escreva um algoritmo que leia um valor inteiro N e que imprima a sua tabuada de 1 até 10.

41) A conversão de graus Fahrenheit para Centígrados é obtida pela fórmula C = 5/9 (F-32).
Escreva um algoritmo que calcule e escreva uma tabela de graus centígrados em função de
graus Fahrenheit que variem de 150 até 50 de 0,5 em 0,5.

-7-
Apostila de Exercícios de Lógica de Programação

42) Realizou-se uma pesquisa para determinar o índice de mortalidade infantil em um certo
período. Construa um algoritmo que leia o número de crianças nascidas no período e, depois,
num número indeterminado de vezes, o sexo de uma criança morta (“M” ou “F”) e o número
de meses de vida da criança. Como finalizador, teremos a palavra “FIM” no lugar do sexo da
criança. Determine e imprima:
 A porcentagem de crianças mortas no período;
 A porcentagem de crianças mortas no período do sexo masculino;
 A porcentagem de crianças que viveram dois anos ou menos no período.

43) Fazer um algoritmo para calcular a média aritmética de um conjunto de valores inteiros,
positivos e maiores que zero. (considere o valor zero como finalizador do programa).

44) Dado um conjunto de valores inteiros e positivos, fornecidos pelo teclado, fazer um
algoritmo para determinar e imprimir o menor valor do conjunto. Um valor com -1 (flag)
indica fim dos dados e não devem ser considerados.

45) Construir um algoritmo para fazer a soma de vários valores inteiros e positivos, fornecidos
pelo teclado, o último valor deve ser -1 (flag) e não deve ser considerado.

46) Modifique o exercício 5 de modo que seja possível o cálculo do salário reajustado de um
número INDETERMINADO de funcionários segundo o mesmo critério de reajuste.
Considere o término do cálculo quando o usuário informar um salário igual ou inferior a
ZERO.

47) Dado um país A, com 5.000.000 habitantes e uma taxa de crescimento de 3% ao ano, e um
país B com 7.000.000 habitantes e uma taxa de natalidade de 2% ao ano. Construa um
algoritmo que calcule e imprima quanto tempo é necessário para que a população do país A
ultrapasse a população do país B.

48) Em uma eleição presidencial, existem 5 candidatos. Os votos foram registrados em fichas.
Cada ficha contém um dos códigos relacionados abaixo:

1, 2, 3, 4, 5 - Voto para os respectivos candidatos


6 - Voto nulo
7 - Voto em branco

Construa um algoritmo que:

 Leias as fichas;
 Calcule o total de votos de cada candidato;
 Calcule o total de votos nulos;
 Calcule o total de votos em branco;
 Determine o candidato vencedor;
 Imprima os valores dos itens anteriores.

OBS: A última ficha contém o valor ZERO que indica o fim do processamento e que não
deve ser considerado.

49) Construa um algoritmo que permita fazer um levantamento do estoque de vinhos de uma
adega, tendo como dados de entrada: tipo de vinho (branco, tinto e rosê). Especifique a
porcentagem de cada tipo sobre o total geral de vinhos; a quantidade de vinhos é
-8-
Apostila de Exercícios de Lógica de Programação

desconhecida (usar como finalizador a constante “FIM”).

-9-
Apostila de Exercícios de Lógica de Programação

50) Construa um algoritmo que, dado um conjunto de valores inteiros e positivos, determine qual
o menor e o maior valor do conjunto. O final do conjunto de valores é conhecido através do
valor –5, que não deve ser considerado.

51) Foi realizada uma pesquisa de algumas características físicas da população de uma certa
região, a qual coletou os seguintes dados referentes a cada habitante para serem analisados:

 Sexo (“M” ou “F”);


 Cor dos olhos (“AZUIS”, “VERDES”, “CASTANHOS”);
 Cor dos cabelos (“LOUROS”, “CASTANHOS”, “PRETOS”);
 Idade.

Faça um algoritmo que determine e escreva:

 A idade do habitante mais velho;


 A percentagem de indivíduos do sexo feminino cuja idade está entre 18 e 35 anos
inclusive e que tenham olhos verdes e cabelos louros.

O final do conjunto de habitantes é reconhecido pelo valor –1 informada como idade.

52) Fulano tem 1,50 metros e cresce 2 centímetros por ano, enquanto Ciclano tem 1,10 metros e
cresce 3 centímetros por ano. Construa um algoritmo que calcule e imprima quantos anos
serão necessários para que Ciclano seja maior que Fulano.

53) Desenvolver um programa que efetue a leitura de 10 elementos de uma matriz A do tipo
vetor. Construir uma matriz B de mesmo tipo, observando a seguinte lei de formação: Se o
valor do índice for par, o valor deverá ser multiplicado por 5, sendo ímpar deverá ser somado
por 5. Ao final mostrar os conteúdos das duas matrizes.

54) Desenvolver um programa que efetue a leitura de 5 elementos de uma matriz A do tipo vetor.
No final, apresente o total da soma de todos os elementos que sejam ímpares.

55) Ler duas matrizes A e B do tipo vetor com 20 elementos. Construir uma matriz C, onde cada
elemento de C é a subtração do elemento correspondente de A com B.

56) Ler 15 elementos de uma matriz A do tipo vetor. Construir uma matriz B de mesmo tipo.
Observando a seguinte lei de formação: “Todo elemento de B deverá ser o quadrado do
elemento de A correspondente”.

57) Ler uma matriz A do tipo vetor com 15 elementos. Construir uma matriz B de mesmo tipo,
sendo que cada elemento da matriz B seja o fatorial do elemento correspondente da matriz A.

58) 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 a capacidade de armazenar
50 elementos.
59) Ler 20 elementos de uma matriz A tipo vetor e construir uma matriz B de mesma dimensão
com os mesmos elementos de A, sendo que estes deverão estar invertidos. Ou seja, o
primeiro elemento de A passa a ser o último elemento de B. O segundo elemento de A passa
a ser o penúltimo de B e assim por diante.

- 10 -
Apostila de Exercícios de Lógica de Programação

60) Ler duas matrizes A e B, cada uma de duas dimensões com 5 linhas e 3 colunas. Construir
uma matriz C de mesma dimensão, onde C é formada pela soma dos elementos da matriz A
com os elementos da matriz B.

61) Dada a matriz MAT abaixo:

1 2 3 4

1 O Q * I

2 E A E S

3 R E U T

4 A * * S

Qual será a configuração de MAT depois de executado o algoritmo abaixo?

Algoritmo Quebra_Cabeça;

Tipo
M1: Matriz[1..4,1..4] de caractere;

Var
I, J: inteiro;
AUX: caractere;
MAT: M1;
Início
:
:
Para I = 1 até 4 faça
Para J = I + 1 até 4 faça
AUX = MAT[ I, J ];
MAT [ I, J] = MAT [ J, I];
MAT [ J, I] = AUX;
Fimpara;
Fimpara;
AUX = MAT[ 1,1];
MAT[1,1] = MAT[4,4];
AUX = MAT[2,2];
MAT[2,2] = MAT[3,3];
MAT[3,3] = AUX;
Fim.

- 11 -
Apostila de Exercícios de Lógica de Programação

62) Escreva um algoritmo que:

a) Leia uma matriz 20 x 20 de elementos reais;


b) Divida cada elemento de uma linha da matriz pelo elemento da diagonal principal
desta linha;
c) Imprima a matriz assim modificada.

63) Escreva um algoritmo que:

a) Leia uma matriz 10 x 10 de elementos inteiros;


b) Calcule e imprima a soma dos elementos situados abaixo da diagonal principal da
matriz, incluindo os elementos da própria diagonal principal.

64) Dada a matriz M tridimensional, definida por:

Tipo
MAT = Matriz[0:1, 1:4, 1:3] de inteiro;
Var
M: MAT;
Assuma que a matriz possui os seguintes valores:

1 2 3 4 1 2 3 4 1 2 3 4
0 1 2 3 4 0 1 1 1 1 0 0 0 1 1
1 5 -5 3 0 1 -3 2 0 0 1 -1 -1 2 2
1 2 3

Dado o vetor VET definido por:

Tipo
VET = Vetor[1:4] de inteiro;

Var
V: VET;

Assuma que o vetor possui os seguintes valores:

2 3 4 0
VET
1 2 3 4

Determinar os elementos:

a) M[1,1,2]
b) VET[3]
c) VET[M[0,1,1]
d) M[VET[4], VET[2], VET[1]]
e) M[M[VET[4],4,3,VET[M[0,3,1]],2]

- 12 -
Apostila de Exercícios de Lógica de Programação

65) Escreva um algoritmo que deverá:

a) Ler um vetor de 20 posições do tipo caractere para guardar os nomes dos alunos de sua
turma;
b) Classifique este vetor em ordem crescente utilizando o método de ordenação BUBBLE
SORT.
c) Imprima o vetor devidamente classificado.

66) Elabore um algoritmo para corrigir provas de múltipla escolha. Assuma que em cada prova
encontraremos os seguintes dados: RM, NOME DO ALUNO, MATÉRIA e BIMESTRE,
além de 10 questões numeradas de 1 até 10 e que cada questão possui 5 alternativas
identificadas pelas letras de “a” até “e”. Primeiramente, o algoritmo deve ler o gabarito e o
número de provas a serem corrigidas . A seguir, os dados das provas a serem corrigidas
devem ser lids. Ainda, o algoritmo deverá calcular e escrever:

a) O RM, NOME DO ALUNO, MATÉRIA, BIMESTRE e a NOTA de cada aluno


(assumindo que cada questão correta vale 1 ponto).
b) A porcentagem de aprovação, assumindo que a nota mínima para aprovação é 7.

67) Escrever um algoritmo para ler um vetor de 25 elementos do tipo inteiro e que:

a) Após lido o vetor, verifique se existem números repetidos e caso exista quais são estes
números e quantas vezes o mesmo foi repetido.

68) Dado um vetor de 10 posições do tipo inteiro, construa uma sub-rotina para ler uma matriz N
x M do tipo inteiro. Os valores N e M deverão ser lidos.

69) Faça uma sub-rotina para ler um vetor A de N elementos, e um vetor B de M elementos. Os
valores M e N deverão ser lidos.

70) Faça um programa para ler as informações de N alunos, tais como: Nome, idade e sexo.
Após construa sub-rotina para:

a) Emitir um relatório ordenado crescentemente pelo Nome;


b) Emitir um relatório ordenado decrescentemente pela idade;
c) Informar qual o percentual de alunos do sexo feminino.

71) Faça uma procedimento para calcular A elevado a um expoente B.

72) Faça uma procedimento para calcular o fatorial de um número X qualquer.

73) Faça um algoritmo com sub-rotinas necessárias para calcular e imprimir o resultado da
seguinte expressão matemática:

X 2 2X 3 3X 4 4X 5 5X 6 nX ( n 1)
Y  1      ... 
2! 3! 4! 5! 6! ( n  1)!

- 13 -
Apostila de Exercícios de Lógica de Programação

74) Faça uma função que codifique uma mensagem, da seguinte forma:

A por Z, B por Y, C por X e assim por diante ...

Obs.: a rotina deverá fazer o mesmo para letras minúsculas.

75) Faça uma função para transformar as letras de uma FRASE de minúsculas para maiúsculas

76) Dado um vetor com 40 elementos numéricos do tipo inteiro, faça uma função que verifique
se um dado valor existe neste vetor.

- 14 -