Prévia do material em texto
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.
Proposta A
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 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
Justificativa: a única correta pois é onde a expressão matemática esta escrita corretamente
seguindo a formula, na B e C elas não seguem a expressão matematica
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
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
Proposta B
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 \ 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
Justificativa: Tanto a A quando a B funcionam para para pegar apenas a casa das dezenas.
A proposta A consegue fazer isso aplicando o operador % (resto da divisão) para pegar os
dois últimos dígitos do número (a % 100), e em seguida é aplicado o operador \ (divisão
inteira) para pegar o algarismo das dezenas (a % 100 \ 10). A proposta B é bem semelhante
so que ele pega os 3 ultimos números e faz a divisão por 100
E)
Nenhuma das prospostas está correta
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
Justificativa: primeiro o laço verifica a variável I se ela é maio que J e K, no caso I é
1, menor que as outras duas, depois verifica se J é maior que K, no caso essa
afirmação é verdadeira para as entradas, então ele finaliza o laço.
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
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
Justificativa: é a única opção que tem a saída correta, que executa a operação
matemática e traz o valor armazenado na variável ‘fr’
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
Justificativa: o Segundo laço for ele inicializa X como 0 e vai adicionando de 2 em
2 ate 14, trazendo apenas os números pares de 0 a 14
E)
2,4,6,8,10,12,14,16
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.
Justificativa: essa opção é a que melhor descreve o programa, no if ele verifica se o sexo é igual a ‘f’ ou ‘F’ e também se a idade é
menor que 25, se essas condições forem verdadeiras ele vai imprimir o ‘ACEITA’,caso essa condição não foi verdadeira ele cai no else
onde ele vai imprimir ‘NÃO 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.
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.
Justificativa: Essa opção é a que melhor descreve o programa por que no if
ele verifica se o valor do produto é menor que 20, se for verdadeiro ele vai
multiplicar o valor por 1.45, que representa o valor do produto + 45% do
valor do produto, trazendo o lucro de 45%, caso contrario ele vai multiplicar
o valor do produto por 1.30, trazendo 30% de lucro
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.
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);
Justificativa: Bom pela cara do código isso parece linguagem C, e essa alternativa
é a que representa o laço for da maneira correta em C for (inicialização;
condição; incremento/decremento) todas as outras tem problemas de sintaxe, seja
que os termos estão separados por virgulas, ou o ponto e virgula no local errado.
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);
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")
Justificativa: Única opção que entrega as especificadores coretos para o tipo de
dado e a sintaxe correta, os outros tem problemas em declaração de variável,
formatação incorreta de data, especificadores inválidos
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)
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.
Justificativa: Nessa linha tam = strlen(nome); Ele verifica o tamanho da
string, nesse laço for (x=1; x <= tam; x++) ele inicia a variável X com o valor
1 e vai adicionando mais um enquanto x for menor que o tamanho da string,
e para cada vez que o retorno desse laço for é verdadeiro ele imprime o
nome
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.
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;
Justificativa: essa é a alternativa que melhor descreve a função strlen ele verifica a
quantidade de caracteres de uma string e retorna a quantidade de caracteres na
string
E)
o programa copia o que o usuário digitou para uma nova variável e a mostra na
tela;
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
Justificativa: float é ponto flutuante e ele declara essa variável na segunda linha
‘float info;’
E)
Número com ponto flutuante e um Endereço de memória
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.
Justificativa: O algoritmo calcula um polinômio de grau n usando os coeficientes de
V, onde x é a variável independente e j acumula o resultado.
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.
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.
Justificativa: Descreve corretamente as operações push/pop em pilha e
enqueue/dequeue em 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.
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
Justificativa: Quando os valores são inseridos em uma pilha, eles entram na ordem
em que são lidos, ao esvaziar ele utiliza o LIFO (Last in, first out) isso faz com que
ele ele inverta a ordem de entrada resultando na opção A
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
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.
Justificativa: essa é a única possível, pois LIFO é Last In First Out, traduzindo ultimo
a entrar primeiro a sair, e FIFO First In First Out, traduzindo, primeiro a entrar
primeiro a sair e pela logica ultimo a entrar oultimo a sair
18ª QUESTÃO
Faça a associação:
A) fila
B) Pilha
C) Lista Ligada
1 - Spool da impressora
2 - Arquivos no HD
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
Justificativa: Filas seguem o conceito de FIFO, e é o que ocorrem em impressões de
arquivos. Pilhas seguem o conceito de LIFO, onde a função chamada é a primeira a
ser encerrada. Listas ligadas não seguem conceitos nem de FIFO nem de LIFO e
pode ser acessadas sem uma ordem especifica
D)
A-2, B-1, C-3
E)
A-1, B-3, C-3
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
Justificativa: Uma sub-árvore é uma árvore menor que faz parte de uma árvore
maior, e ela pode ser a sub-árvore esquerda ou direita de um nó pai na á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
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
Justificatriva: A afirmação I está correta porque em uma ABB, a inserção segue a
regra de comparar e direcionar para a sub-árvore correta e a afirmação III tambem
está correta porque, ao remover um nó com dois filhos, podemos substituir seu valor
pelo valor do nó mais à direita da sub-árvore esquerda, agora a afirmação II está
incorreta porque na remoção de um nó folha não há nenhum nó filho para subir para
a posição do pai.
E)
Nenhuma das afirmações está correta