0% acharam este documento útil (0 voto)
31 visualizações20 páginas

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

análise e desenvolvimento de sistemas LTP
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
31 visualizações20 páginas

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

análise e desenvolvimento de sistemas LTP
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

LINGUAGEM E TÉCNICAS DE PROGRAMAÇÃO

ESTUDOS DISCIPLINARES

1ª QUESTÃO
Enunciado
Certo dia o professor de Johann Friederich Carl Gauss (aos 10 anos de idade)
mandou que os alunos somassem os números de 1 a 100. Imediatamente
Gauss achou a resposta – 5050 – aparentemente sem cálculos. Supõe-se que
já aí, Gauss, houvesse descoberto a fórmula de uma soma de uma progressão
aritmética.

Agora você, com o auxílio dos conceitos de algoritmos e da pseudo-linguagem


PORTUGOL, foram apresentados três propostas de algoritmos que realiza a
soma de uma P.A. de N termos, com o primeiro a1 e o último an.

algoritmo "SomaGauss"

// Seção de Declarações

Var

a1,an,n:inteiro

soma:real

Inicio

// Seção de Comandos

escreva("Entre com o a1 ")

Proposta A leia(a1)

escreva("Entre com o n")

leia(n)

escreva("Entre com o a",n)

leia(an)

soma<-((a1+n)*an)/2

escreva("Soma ",soma)

Fimalgoritmo

Proposta B algoritmo "SomaGauss"


// Seção de Declarações

Var

a1,an,n:inteiro

soma:real

Inicio

// Seção de Comandos

escreva("Entre com o a1 ")

leia(a1)

escreva("Entre com o n")

leia(n)

escreva("Entre com o a",n)

leia(an)

soma<-(a1+n)*an/2

escreva("Soma ",soma)

Fimalgoritmo

Proposta C algoritmo "SomaGauss"

// Seção de Declarações

Var

a1,an,n:inteiro

soma:real

Inicio

// Seção de Comandos

escreva("Entre com o a1 ")

leia(a1)

escreva("Entre com o n")

leia(n)

escreva("Entre com o a",n)

leia(an)

soma<-a1+n*an/2
escreva("Soma ",soma)

Fimalgoritmo

Alternativas
A)
Apenas a proposta A está correta
B)
Apenas a proposta B está correta
C)
Apenas a proposta C está correta
D)
Mais de uma proposta correta
E)
Nenhuma das propostas está correta
RESPOSTA: A alternativa correta é a alternativa ‘E’, nenhuma das propostas está correta.
Pois a proposta ‘A’ está errada, pois está somando a1+na1 + na1+n em vez de a1+ana1 +
ana1+an. Logo, a proposta ‘A’ está incorreta. Proposta ‘B’ está errada, pois está somando
a1+na1 + na1+n ao invés de a1+ana1 + ana1+an. Assim, a proposta ‘B’ está incorreta.
Proposta ‘C’ está errada pois na fórmula, n×ann \times ann×an é calculado antes da soma
com a1a1a1, o que não corresponde à fórmula correta. Portanto, a proposta ‘C’ está
incorreta.
2ª QUESTÃO
Enunciado
Considere que o número de uma placa de veículo é composto por quatro
algarismos. foram apresentados três propostas de algoritmos em PORTUGOL
que leia este número e apresente o algarismo correspondente à casa
das dezenas. (considere % = mod e \ = div)

Proposta A...... algoritmo "Placacarro"

// Seção de Declarações

Var

a,d :inteiro

inicio
// Seção de Comandos

escreva("Entre com o numero de 4 dígitos")

leia(a)

d<-a % 100 \ 10

escreva("O algarismo das dezenas é ",d)

fimalgoritmo

algoritmo "Placacarro"

// Seção de Declarações

Var

a,d :inteiro

inicio

// Seção de Comandos
Proposta B
escreva("Entre com o numero de 4 dígitos")

leia(a)

d<-a % 1000 \ 100

escreva("O algarismo das dezenas é ",d)

fimalgoritmo

Proposta C algoritmo "Placacarro"

// Seção de Declarações

Var

a,d :inteiro

inicio

// Seção de Comandos

escreva("Entre com o numero de 4 dígitos")

leia(a)

d<-a \ 1000

escreva("O algarismo dos dezenas é ",d)

fimalgoritmo
Alternativas
A)
Apenas a proposta A está correta
B)
Apenas a proposta B está correta
C)
Apenas a proposta C está correta
D)
Mais de uma proposta está correta
E)
Nenhuma das prospostas está correta
RESPOSTA: Apenas a Proposta A está correta, pois isola corretamente o algarismo das
dezenas. Nesse código o operador “% 100” extrai os dois últimos dígitos do número, e o
operador “\ 10” pega o valor das dezenas. Para um número como 1234:
3ª QUESTÃO
Enunciado
Dado o seguinte programa:

Programa p1;

var i,j,k:inteiro

inicio

leia(i)

leia(j)

leia(k)

se (i>j) e (i>k) então

escreva(i)

senão

se j>k ntão

escreva(j)

senao

escreva(k)

fimse

fimse

fim.
Considere as entradas, faça o teste de mesa e assinale aquele em que a saída seja
correta:

Alternativas
A)
Entrada respectivamente 3 e 1 e 2

Saída: 3 2 1

B)
Entrada respectivamente 1 e 3 e 2

Saída: 2

C)
Entrada respectivamente 1 e 2 e 3

Saída: 6

D)
Entrada respectivamente 3 e 2 e 1

Saída: 1

E)
Entrada respectivamente 1 e 3 e 2

Saída: 3

RESPOSTA: A alternativa E está correta, com a saída "3" para as entradas 1,3,2

4ª QUESTÃO
Enunciado
Para ocorrer a aprovação dos cursos de tecnologia na UNIP os alunos devem ter
a média final maior ou igual a 5 (cinco).
O cálculo da média segue a seguinte fórmula:

Para auxiliar um aluno desenvolveu o seguinte programa:

algoritmo "Ex"

var

B1,B2,PIM,MF:real

inicio
leia(B1)

leia(B2)

leia(PIM)

MF<-4*B1 + 4*B2 + 2 * PIM /10

se MF >= 5 entao

escreva("aprovado")

senao

escreva("Reprovado")

fimse

fimalgoritmo

Acontece que um aluno tirou 1 (um) na B1, 2,5 (dois e meio) na B2 e 5 (cinco) no
PIM, e o programa indicou erroneamente aprovação.
Qual a explicação?

Alternativas
A)
A expressão da condicional está invertida
B)
As variáveis estão declaradas com o tipo errado
C)
A distribuição dos pesos estão incorretas
D)
Não foi levada em consideração a hierarquia das operações
E)
O programa está correto e possivelmente houve um erro na
digitação dos valores

RESPOSTA: A alternativa D está correta pois a hierarquia não foi levada em consideração

5ª QUESTÃO
Enunciado
1. Dado o seguinte algoritmo:
Programa ProvaE01;

Const

Qt=’quente’;

Fr=’Frio’;

Kelvin=273;

Var

entrada,atual:inteiro;

Inicio

Leia(entrada);

Atual<- Kelvin+entrada;

Se atual>=283 entao

Escreva(atual,’-‘,qt)

Senão

Escreva(atual,’-‘,fr);

Fim.

Assinale a correta:

Alternativas
A)
Entrada: 0

Saída 273 -fr

B)
Entrada: -1

Saída 273 -frio

C)
Entrada: 230

Saída 283 -quente

D)
Entrada: 10

Saída 283 -qt

E)
Entrada: -10

Saída 263 -frio


RESPOSTA: A alternativa A está correta, com a saída "273 - Frio" para a entrada 0.

6ª QUESTÃO
Enunciado
Qual a saída do programa abaixo?

#include<stdio.h>

#include<stdlib.h>

void main()

int x;

for(x=1;x<=19;x++)

printf("%c",'*');

printf("\n");

for(x=0;x<=14;x=x+2)

printf("%d ",x);

printf("\n");

for(x=1;x<=19;x++)

printf("%c",'*');

printf("\n");

system("pause");

Alternativas
A)
1,2,3,6,8,10,12,14
B)
0,2,4,5,8,11,12,14
C)
1,2,3,4,5,6,7,8,9
D)
0,2,4,6,8,10,12,14
E)
2,4,6,8,10,12,14,16
RESPOSTA: A única alternativa que corresponde à sequência de números
gerada no segundo laço é a alternativa D
7ª QUESTÃO
Enunciado
O que o programa abaixo faz?

#include <iostream.h>

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

main()

char nome[30], sexo;

int idade;

printf("Informe seu nome: ");

gets(nome);

printf("Informe seu sexo: ");

scanf("%c",&sexo);

printf("Informe sua idade: ");

scanf("%d",&idade);

if (sexo == 'f' || sexo == 'F' && idade < 25)

printf("\n%s. ACEITA.\n\n", nome);

else

printf("\nNAO ACEITA.\n\n");

system("PAUSE");

return 0;

Alternativas
A)
Lê o nome, sexo e idade. Verifica se sexo for feminino e idade menor que 25 o sistema imprime o nome da pessoa e a palavra
ACEITA, caso contrario imprime NAO ACEITA.

B)
Lê o nome, sexo e idade. Verifica se sexo for masculino e idade menor que 25 o sistema imprime o nome da pessoa e a palavra
ACEITA, caso contrario imprime NAO ACEITA.

C)
Lê o nome, sexo e idade. Verifica se sexo for masculino e idade maior que 25 o sistema imprime o nome da pessoa e a palavra
ACEITA, caso contrario imprime NAO ACEITA.

D)
Lê o nome, sexo e idade. Verifica se sexo for feminino e idade maior que 25 o sistema imprime o nome da pessoa e a palavra
ACEITA, caso contrario imprime NAO ACEITA.

E)
Lê o nome, sexo e idade. Verifica se sexo for feminino e idade menor que 25 o sistema imprime o nome da pessoa e a palavra
NAO ACEITA, caso contrario imprime ACEITA.

RESPOSTA: Alternativa A está correta, pois descreve o comportamento do programa. O programa lê


o nome (com a função gets()), o sexo (com scanf("%c", &sexo)) e a idade (com scanf("%d", &idade)).

8ª QUESTÃO
Enunciado
Qual é a saída o programa abaixo ?

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <math.h>

void main()

float valor_produto;

printf("Informe o valor do produto: ");

scanf("%f", &valor_produto);

if (valor_produto < 20)

printf("O valor da venda eh %3.2f\n", valor_produto * 1.45);

else

printf("O valor da venda eh %3.2f\n", valor_produto * 1.30);

system("pause");

Alternativas
A)
Acrescenta um lucro de 145% se o valor da compra do produto pelo
comerciante for maior que 20,00; caso contrário, o lucro será de 130%. O
usuário deverá entrar com o valor do produto e imprimir o valor da venda.
B)
Acrescenta um lucro de 45% se o valor da compra do produto pelo
comerciante for maior que 20,00; caso contrário, o lucro será de 30%. O
usuário deverá entrar com o valor do produto e imprimir o valor da venda.
C)
Acrescenta um lucro de 45% se o valor da compra do produto pelo
comerciante for menor que 20,00; caso contrário, o lucro será de 30%. O
usuário deverá entrar com o valor do produto e imprimir o valor da venda.
D)
Acrescenta um lucro de 145% se o valor da compra do produto pelo
comerciante for menor que 20,00; caso contrário, o lucro será de 130%. O
usuário deverá entrar com o valor do produto e imprimir o valor da venda.
E)
Acrescenta um lucro de 30% se o valor da compra do produto pelo
comerciante for maior que 20,00; caso contrário, o lucro será de 145%. O
usuário deverá entrar com o valor do produto e imprimir o valor da venda.
RESPOSTA: Alternativa C está correta. O programa acrescenta um lucro de 45% para
produtos menores que 20,00 e um lucro de 30% para produtos com valor maior ou
igual a 20,00.

9ª QUESTÃO
Enunciado
No que se refere a forma de declaração de um laço for, é correto afirmar:

Alternativas
A)
for (i=1 ; i<5 ; i++)

printf("O valor é %d ", i+4);

B)
for(i=1 , i<5 , i++)

printf(“O valor é: %d ”, i+4)

C)
for(i=1; i<5 , i ++)

printf(“O valor é %d ” ; i+4);

D)
for(i=1 , i<5 , i++);

printf(“O valor é %d”, i+4);

E)
for(i=1 ; i<5 ; i++);

printf(“O valor é %d”, i+4);

RESPOSTA: A alternativa correta é a A. Esta alternativa está correta. A sintaxe do for está correta:
os parâmetros estão separados por ponto e vírgula (;), e a função printf está formatada
corretamente. A expressão i+4 será impressa a cada iteração.

10ª QUESTÃO
Enunciado
Como foi escrito :

"Meu nome é Roberto tenho 23 anos e o meu aniversario é 02/01"

aonde os sublinhados são variáveis


Alternativas
A)
printf("Meu nome é %a tenho %s anos o meu aniversario é s/%d",Roberto,23,2,1)

B)
printf("Meu nome é %s tenho d anos o meu aniversario é d/%d","Roberto",23,2,1)

C)
printf("Meu nome é %s tenho %d anos o meu aniversario é
%s/%s","Roberto",23,"02","01")

D)
printf("Meu nome é %s tenho %d anos o meu aniversario é s/%s","Roberto",23,2,1)

E)
printf("Meu nome é %s tenho %2 anos o meu aniversario é s/%s",Roberto,23,2,1)

RESPOSTA: A alternativa C é a correta. Correto: %s é usado corretamente para "Roberto", %d


para a idade 23, e as datas foram formatadas como strings ("02" e "01").

11ª QUESTÃO
Enunciado
Qual a saída produzida deste programa?

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <math.h>

#include <string.h>

void main()

int x,tam;

char nome[30];

printf("Digite um nome: ");

gets(nome);

tam = strlen(nome);

for (x=1; x <= tam; x++)

printf("\n%s",nome);

printf("\n\n");

system("pause");

Alternativas
A)
Recebe do teclado um nome qualquer e imprime uma quantidade fixa do
nome digitado.

B)
Recebe do teclado um nome qualquer e imprime tantas vezes quantos
forem seus caracteres.

C)
Recebe do teclado um nome qualquer e imprime 30 vezes o nome digitado.

D)
Recebe do teclado um nome qualquer e imprime todos os caracteres
repetindo 30 vezes cada um.

E)
Recebe do teclado um nome qualquer e imprime todos os caracteres Uma
vez.

RESPOSTA: A alternativa B é a correta. O nome é impresso tantas vezes quanto o número de


caracteres da string.

12ª QUESTÃO
Enunciado
O que faz a função STRLEN no trecho do programa abaixo, marque a
alternativa corre:

void funcaoX( )

int len;

scanf ("%s", &palavra);

len = strlen (palavra)

printf (len);

Alternativas
A)
o programa concatena as expressões;

B)
o programa zera as expressões e permite a entrada de outros dados;

C)
o programa permite que o usuário entre c/ dados e mostre na tela o valor
hexadecimal;

D)
o programa conta os caracteres que o usuário digitou e mostra a quantidade na tela;

E)
o programa copia o que o usuário digitou para uma nova variável e a mostra na tela;
RESPOSTA: A alternativa D é a correta. Correto: strlen conta o número de caracteres da string e o
programa imprime esse valor.

13ª QUESTÃO
Enunciado

typedef struct no{

float info;

struct no* proximo;

} No;

typedef struct pilha{

No* primeiro;

Que tipo de valor armazenará a variável info?

Alternativas
A)
Endereço de memória

B)
Estrutura No

C)
Estrutura pilha

D)
Número com ponto flutuante

E)
Número com ponto flutuante e um Endereço de memória

RESPOSTA: A alternativa D é a correta. Correto: info armazena um número do tipo float, que é
um número em ponto flutuante.

14ª QUESTÃO
Enunciado
A função abaixo recebe como parâmetros um vetor V com números reais [Vn, ....,
Vo], um número real X e número inteiro n. A função retorna um valor do tipo real.
Marque a alternativa correta, entre as alternativas a seguir, sobre a função e o
algoritmo nela implementado.
Alternativas
A)
O algoritmo calcula o valor de um polinômio de grau n, cujos coeficientes estão
armazenados no vetor V.

B)
) O algoritmo calcula e imprime o produto dos valores armazenados no vetor V por
uma variável real x.

C)
O algoritmo entrará em loop infinito.

D)
O algoritmo calcula e imprime o somatório dos valores armazenados no vetor V.

E)
O algoritmo sempre retornará o mesmo valor, independentemente dos conteúdos de
V, x e n.

REPOSTA: A alternativa A é a correta. Correto: O algoritmo aplica o Método de Horner para calcular o
valor do polinômio.

15ª QUESTÃO
Enunciado
O que significa as operações push / pop em uma pilha e enqueue / dequeue
numa fila, respectivamente?

Alternativas
A)
Remove um dado na pilha / insere um dado na pilha e insere um elemento no final
da fila / remove um elemento do início da fila.

B)
Insere um dado na pilha / remove um dado na pilha e remove um elemento no final
da fila / insere um elemento do início da fila.

C)
Insere um dado na pilha / remove um dado na pilha e insere um elemento no final da
fila / remove um elemento do início da fila.

D)
Insere um dado na pilha / remove um dado na pilha e insere um elemento no início
da fila / remove um elemento do final da fila.

E)
Insere um dado na fila / remove um dado na fila e insere um elemento no final da
pilha / remove um elemento do início da pilha.

RESPOSTA: Resposta correta C. Correto: Descreve corretamente as operações para pilhas e filas.

16ª QUESTÃO
Enunciado
Um programa faz as seguintes operações:

I. Lê vários caracteres no teclado, e cada caractere lido é colocado dentro de uma


pilha.
II. Esvazia a pilha e coloca cada elemento, um depois do outro, dentro de uma fila.
III. Esvazia a fila e coloca cada elemento, um depois do outro, dentro de uma outra
pilha.
IV. Esvazia a pilha e imprime cada elemento um depois do outro.
Caso sejam introduzidos os valores 12 15 11 1 , serão impressos, ao final, os
valores:

Alternativas
A)
1 11 15 12

B)
12 12 15 15 11 11 1 1

C)
1 11 11 15 15 12 12

D)
12 15 11 1

E)
12 11

RESPOSTA: Resposta correta: D) 12 15 11 1.

17ª QUESTÃO
Com relação a filas, listas encadeadas e pilhas podemos afirmar: :

Alternativas
A)
Filas seguem o conceito LIFO, ou seja, o primeiro elemento que entra na estrutura é
o primeiro que sai, listas encadeadas seguem o conceito FIFO das pilhas, ou seja, o
primeiro que entra é o primeiro que sai.
B)
Pilhas seguem o conceito FIFO, ou seja, o último elemento que entra na estrutura é o
último que sai, listas encadeadas seguem o conceito LIFO das filas, ou seja, o último
que entra é o primeiro que sai.

C)
Filas seguem o conceito FIFO, ou seja, o primeiro elemento que entra na estrutura é
o último que sai, listas encadeadas não seguem o conceito LIFO das pilhas, ou seja, o
último que entra é o último que sai.

D)
Filas seguem o conceito LIFO, ou seja, o último elemento que entra na estrutura é o
último que sai, listas encadeadas não seguem o conceito FIFO das pilhas, ou seja, o
primeiro que entra é o primeiro que sai.

E)
Pilhas seguem o conceito LIFO, ou seja, o último elemento que entra na estrutura é o
primeiro que sai, filas seguem o conceito FIFO das filas, ou seja, o último que sai foi o
último que entrou.

RESPOSTA: Resposta correta E. Pilhas seguem o conceito LIFO (Last In, First Out), ou seja, o último a
entrar é o primeiro a sair. Filas seguem o conceito FIFO (First In, First Out), ou seja, o primeiro a
entrar é o primeiro a sair.

18ª QUESTÃO
Faça a associação:

A) fila 1 - Spool da impressora

B) Pilha 2 - Arquivos no HD

C) Lista Ligada 3 - Chamada da funções

Alternativas
A)
A-1, B-2, C-3

B)
A-2, B-3, C1

C)
A-1, B-3, C-2

D)
A-2, B-1, C-3

E)
A-1, B-3, C-3

RESPOSTA: Resposta correta C. A associação correta é: Fila - Spool da impressora (A-1); Pilha -
Chamada de funções (B-3); Lista ligada - Arquivos no HD (C-2)

19ª QUESTÃO
Enunciado
Com relação a árvores binárias, assinale a afirmativa CORRETA:
Alternativas
A)
A altura de uma árvore com um único nó raiz é zero e a altura de uma árvore vazia é
negativa e vale 0

B)
Por definição, uma sub-árvore de uma árvore binária é sempre especificada como
sendo a sub-árvore esquerda ou a sub-árvore direita de uma árvore maior

C)
Uma propriedade fundamental de todas as árvores binárias é que existe mais de um
caminho da raiz para qualquer nó

D)
Numa árvore binária, cada nó pode ter zero ou um filho

E)
Numa árvore binária o balanceamento é feito colocando-se os valores mais altos que
a raiz na sub árvore esquerda

RESPOSTA: Resposta correta B. Em árvores binárias, cada nó pode ter no máximo duas sub-árvores,
que são chamadas de sub-árvore esquerda e sub-árvore direita. Isso é uma característica essencial de
uma árvore binária.

20ª QUESTÃO
Enunciado
1. Dadas as seguintes afirmações em relação à Árvore Binária de Busca:

I. Em uma árvore binária de busca, na inserção de um novo nó, compara-se a


chave a ser inserida com a chave do nó analisado e, se a chave a ser
inserida for menor que a chave do nó analisado, insere-se a chave na sub-
árvore direita; e caso maior insere-se a chave na sub-árvore esquerda.
II. A remoção na folha, o nó filho sobe para a posição do pai
III. Uma das possibilidades da remoção de um nó com dois filhos, , é
substituindo-se o valor do nó a ser retirado pela chave do nó mais à
direita da sub-árvore esquerda.

Alternativas
A)
Apenas a afirmação I é correta

B)
Apenas a afirmação II é correta

C)
Apenas a afirmação III é correta

D)
Mais de uma afirmação correta

E)
Nenhuma das afirmações está correta
RESPOSTA: Resposta correta C. Verdadeira, pois somente a afirmação III está correta.

Você também pode gostar