Buscar

Linguagem e Tecnica de Programação I

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem e Técnicas de Programação 
 
1.- 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. Transcreva na justificativa da resposta, a linha exata 
onde acontece o erro, se houver. (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 
 
 
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 .- A proposta A está correta. A operação de módulo remove os dois primeiros dígitos, 
ficando somente com os dois últimos, então a divisão faz com que retorne o número da dezena. 
Supostamente a divisão deveria retornar um número racional, mas já que a variável é do tipo 
inteiro, o que vem depois da vírgula é ignorado. 
 
2.- 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: 
Justifique escrevendo o que este programa faz independente dos números digitados. 
 
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.- E, O programa inicia lendo três variáveis do tipo inteiro, (i, j e k), e faz três operações 
condicionais do tipo “se”, visando colocar na tela qual o maior número entre os informados. 
 
3.- Na usina de Angra dos Reis, os técnicos analisam a perda de massa de um material radioativo. 
Sabendo-se que este perde 25% de sua massa a cada 30 segundos. Foram três algoritmos em 
PORTUGOL que calcule iterativamente e imprima o tempo necessário para que a massa deste 
material se torne menor que0,10 grama. Os algoritmos devem calcular o tempo para várias 
massas. 
Proposta A 
algoritmo "Angra" 
var 
contempo, massa, tempo:real 
resp, resp1:caracter 
inicio 
escreva("Digite S se desejar novo calculo ou 
qualquer letra para terminar: ") 
Leia(resp) 
enquanto (resp = "S") ou ( resp = "s") faca 
 contempo <- 1 
 escreva("Digite a massa em gramas do material 
:") 
 Leia(massa) 
 enquanto massa >= 0.10 faca 
 contempo<- contempo +1 
 massa <- 0.75 * massa 
 fimenquanto 
 tempo <- (contempo*30) / 60 
 escreva("O tempo foi de :", tempo, " 
minutos.") 
 Leia(resp1) // so para descer cursor 
 escreva("Digite S se desejar novo calculo ou 
qualquer letra para terminar: ") 
 Leia(resp) 
fimenquanto 
fimalgoritmo 
 
Proposta B 
algoritmo "Angra" 
var 
contempo, massa, tempo:real 
resp, resp1:caracter 
inicio 
escreva("Digite S se desejar novo calculo ou 
qualquer letra para terminar: ") 
Leia(resp) 
enquanto (resp = "S") ou ( resp = "s") faca 
 contempo <- 0 
 escreva("Digite a massa em gramas do material 
:") 
 Leia(massa) 
 enquanto massa >= 0.10 faca 
 contempo<- contempo +1 
 massa <- 0.75 * massa 
 fimenquanto 
 tempo <- (contempo*30) / 60 
 escreva("O tempo foi de :", tempo, " 
minutos.") 
 Leia(resp1) // so para descer cursor 
 escreva("Digite S se desejar novo calculo ou 
qualquer letra para terminar: ") 
 Leia(resp) 
fimenquanto 
fimalgoritmo 
 
Proposta C 
algoritmo "Angra" 
var 
contempo, massa, tempo:real 
resp, resp1:caracter 
inicio 
escreva("Digite S se desejar novo calculo ou 
qualquer letra para terminar: ") 
Leia(resp) 
enquanto (resp = "S") ou ( resp = "s") faca 
 contempo <- 0 
 escreva("Digite a massa em gramas do material 
:") 
 Leia(massa) 
 enquanto massa < 0.10 faca 
 contempo<- contempo +1 
 massa <- 0.75 * massa 
 fimenquanto 
 tempo <- (contempo*30) / 60 
 escreva("O tempo foi de :", tempo, " 
minutos.") 
 Leia(resp1) // so para descer cursor 
 escreva("Digite S se desejar novo calculo ou 
qualquer letra para terminar: ") 
 Leia(resp) 
fimenquanto 
fimalgoritmo 
 
Transcreva na justificativa da resposta, a linha exata onde acontece o erro, se houver. 
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 propostas está correta 
 
 
Resposta. – B correcta O algoritmo A erra na linha em que atribui o valor inicial da variável 
contempo como 1. O programa C erra no condicional do loop da massa do material “enquanto 
massa < 0.10 faca” 
 
 
 
4.- Sobre estrutura de dados, considere: 
 
I. Pilha é uma estrutura de dados com acesso restrito aos seus elementos, uma vez que eles são 
colocados e retirados por um único lado e são ordenados pelo princípio LIFO (last in first out). 
Assim, sempre que um elemento é adicionado ou retirado seu topo é alterado. 
II. Pilha é o tipo de estrutura usada, por exemplo, na avaliação de expressões numéricas, na 
recursividade e pelos compiladores, na passagem de parâmetros para as funções. 
III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, 
sendo normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos 
de diferentes tipos. 
IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se 
conforme o elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessos tanto 
podem ser feitos sequencialmente como diretamente. 
V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são 
ordenados pelo princípio LIFO (last in first out). 
 
Está correto o que se afirma APENAS em 
(Na justificativa reescreva corrigindo as frases incorretas) 
 
A I, II e III. 
B I, III, IV e V 
C I, III e V 
D II. III. IV e V 
E II, IV e V 
 
Resposta.- A o acesso ao k-énsimo elemento da lista é imediato na alocação sequencial, enquanto 
na alocação encadeada obriga o percurso na lista até o elemento desejado. 
O erro da IV é que lista só pode ser acessado sequencialmente e o erro da V é que Fila segue os 
princípios (FIFO e LILO). 
 
5.- Na famoso jogo da Torre de Hanoi, é dada uma torre com discos de raios diferentes, 
empilhados por tamanho de crescente em um dos três pinos dados. O objetivo do jogo é 
transportar-se toda a torre para um dos outros pinos, de acordo com as seguintes regras: 
· apenas um disco pode ser deslocado por vez, 
·em todo o instante, todos os discos precisam estar em um dos três pinos, 
· em nenhum momento, um disco pode ser colocado sobre um disco de raio menor que o 
dele, 
· um dos três pinos pode ser usado como local temporário. 
Imaginando que se tenha uma situação em que a torre inicial tenha um conjunto de 4 (quatro) 
discos, qual o número de movimentações de discos que deverão ser realizadas para se atingis o 
objetivo do jogo? 
 
Escreva na justificativa os movimentos efetuados para resolver o problema 
A 12 
B 13 
C 14 
D 15 
E 16 
 
Resposta.- D 15, , o número de movimentações para N discos é calculado utilizando a fórmula 
2^N - 1.Com isto, para 4 discos, o número mínimo de movimentações será 2^4 - 1= 15. 
 
6.- Temos uma estrutura de dados “D” que pode aceitar vários elementos inteiros. Os 
elementos são inseridos dentro da estrutura com a operação “put(D,i)” (i sendo um elemento 
inteiro). Os elementos são extraídos da estrutura com a operação “get(D)” que retorna um 
elemento. Sabendo que a série de instruções: “put(D,1); put(D,1); put(D,2); imprima(get(D)); 
get(D); put(D,1); get(D); imprima(get(D));” produz o resultado de impressão: 1 2”, este 
resultado é compatível com D sendo? 
(escreva na justificativa a sequência dos dados após cada operação) 
A uma pilha 
B uma fila 
C nenhum dos dois 
D os dois 
E uma árvore 
Resposta.- C nem uma fila e nem uma pilha ao mesmo tempo, pois o função get apenas irá 
consultar o valor inserido. 
 
7.- Sendo uma fila de caracteres, tendo que a operação dequeue(F) extrai o caracter da fila, 
retornando-o e que a operação enqueue(F,’a’) insere na estrutura de dados. Indicar qual o 
estado da fila F, depois as sequintes operações: enqueue(F,’x’); imprima(dequeue(F)); 
enqueue(F,’x’); enqueue(F,’o’); dequeue(F); enqueue(F,’i’); imprima(dequeue(F)); 
enqueue(F,’u’); enqueue(F,’x’); dequeue(F); imprima(dequeue(F)); 
(escreva na justificativa a sequencia dos dados após cada operação) 
A Ficará sem caracteres 
B Ficará com os caracteres xou 
C Ficará com os caracteres xi 
D Ficará somente com o caracter x 
E Ficará somente com o caracter i 
Resposta.- D Serão tirados da fila todos os outros menos x por que ele foi adicionado por ultimo 
 
8.- Um programa faz as seguintes operações: 
• leia vários caracteres no teclado, cada caractere lido está sendo colocado dentro de 
uma pilha 
• esvazia a pilha e coloca cada elemento um depois do outro dentro de uma fila 
• esvazia a fila e coloca cada elemento um depois do outro dentro de uma outra pilha 
• esvazia a pilha e imprima cada elemento um depois do outro. 
 Caso seja introduzido os valores: a b c d, será impresso ao final os valores: 
 (escreva na justificativa a sequencia dos dados a cada instrução) 
A d c b a 
B a a b b c c d d 
C d d c c b b a a 
D a b c d 
E a c 
 
Resposta.- D, a resposta é a-b-c-d 
0 #3 _ #2 
1 c #3 d #1 
2 b #2 #3 
3 a 
 
 
9.- O que vem a ser uma função recursiva? 
(Escreva na justificativa o que está incorreto nas alternativas que não formam escolhidas, o a 
definição das frases) 
A Uma função disponibiliza recursos para as demais 
B Uma função que entra em loop a fim de possibilitar algum cálculo 
C Uma função que faz uso de outras funções 
D Uma função que não faz sentido algum por não apresentar o cálculo por completo 
E Uma função que faz uso dela mesma até que se obtenha o caso base 
 
Resposta.- E - Uma função recursiva é uma função que se refere a si própria. A ideia consiste 
em utilizar a própria função que estamos a definir na sua definição. 
A - Basicamente essa é a definição de qualquer função. 
B - Não necessariamente uma função recursiva faz uso de um loop e nem tem de fazer um 
cálculo. Os seus requisitos básicos são o seu critério de parada e seu próprio uso. 
C - Ela pode fazer uso de outras funções, mas essa não é a principal característica dela. 
D - Uma função sem sentido não tem razão de existência, além de que, nem toda função precisa 
apresentar um cálculo no seu fim. 
 
10.- Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de 
uma estrutura de dados denominada: 
(justifique como cada uma das outras alternativas faz as inserções e retiradas) 
A Fila 
B Pilha 
C Vetor 
D Lista 
E Árvore 
 
Resposta.- B - Ela é inserida sempre no topo e retirada do final da pilha. 
A – Fila é uma lista linear de tipo FIFO 
C – Vetor explora a sequencia da memória 
D – Lista estrutura de dados na qual elementos de um mesmo tipo de dados estão organizados 
de maneira sequencial. 
E – Árvore uma fila duplamente terminada, isto é, uma estrutura linear que permite inserir e 
remover de ambos os extremos. 
 
11.- Imprimir o total da seqüência: 1, 1/2, 1/3 [...] 1/20. (Qual o pseudocódigo correto?) 
Transcreva na justificativa da resposta, a linha exata onde acontece o erro. 
A 
 
início 
 | CONTADOR, SOMA : numérico 
 | SOMA <-0 
 | para CONTADOR de 1 até contador faça 
 | | SOMA <-SOMA + (1/CONTADOR) 
 | fim-para 
 | escreva "O Total da seqüência é ",SOMA 
fim 
B 
 
início 
 --Sem declaração de variáveis 
 | SOMA <-0 
 | para CONTADOR de 1 até 20 faça 
 | | SOMA <-SOMA + (1/CONTADOR) 
 | fim-para 
 | escreva "O Total da seqüência é ",SOMA 
fim 
C 
 
início 
 | CONTADOR, SOMA : numérico 
 | SOMA <-0 
 | para contador até 20 faça 
 | | SOMA <-SOMA + (1/CONTADOR) 
 | fim-para 
 | escreva "O Total da seqüência é ",SOMA 
fim 
D 
 
início 
 | CONTADOR, SOMA : numérico 
 | SOMA <-0 
 | para CONTADOR de 1 até 20 faça 
 | | SOMA <- SOMA + (1/soma) 
 | fim-para 
--Não imprime o resultado da sequência 
 
fim 
E 
 
início 
 | CONTADOR, SOMA : numérico 
 | SOMA <-0 
 | para CONTADOR de 1 até 20 faça 
 | | SOMA <- SOMA + (1/CONTADOR) 
 | fim-para 
 | escreva "O Total da seqüência é ",SOMA 
fim 
 
Resposta.- D, não imprime o resultado da sequencia. 
A - problema na passagem de valor no quesito “até”, que está sendo parametrizado como 
contador, que é incrementado toda a vez que o looping ocorre, o que faz com que esse 
looping seja infinito. 
B - Não existe a declaração de variáveis 
C - Faltou a passagem de valor para o “de” ddentro do “para”. 
E – Erro “SOMA <- SOMA + (1/CONTADOR) “ 
 
12. Uma empresa decidiu fazer um recrutamento para preencher algumas vagas. Os 
candidatos serão cadastrados por computador. Faça um algoritmo para: 
a) ler o número do candidato, a idade, o sexo, a experiência profissional (Sim/Não); 
b) mostrar a idade média dos candidatos; 
c) mostrar o número total de candidatos e candidatas; 
d) mostrar os candidatos (homens e mulheres) maiores de idade que tenham experiência no 
serviço. 
 Transcreva na justificativa da resposta, a linha exata onde acontece o erro das alternativas 
não escolhidas. 
A 
 
início 
 | NUMCANDIDATO, IDADE, SEXO, EXPERIENCIA, IDADEMEDIA, 
NUMCANDIDATOS, 
 | NUMCANDIDATAS, CANDIDATOSCOMEXPERIENCIA : numérico 
 | IDADEMEDIA <- 0 
 | NUMCANDIDATOS <-0 
 | NUMCANDIDATAS <-0 
 | CANDIDATOSCOMEXPERIENCIA ß0 
 | leia "Digite o número do candidato (ou 0 para finalizar o 
cadastro):", NUMCANDIDATO 
 | enquanto NUMCANDIDATO <> 0 faça 
 | | leia "Digite a idade:", IDADE 
 | | leia "Digite o sexo (1 Masculino / 2 Feminino):", SEXO 
 | | leia "Possui experiência (1 Sim / 2 Não):", EXPERIENCIA 
 | | IDADEMEDIA ßIDADEMEDIA + IDADE 
 | | se SEXO = 1 
 | | | então NUMCANDIDATOS ßNUMCANDIDATOS + 1| | | senão NUMCANDIDATAS ßNUMCANDIDATAS + 1 
 | | fim-se 
 | | se EXPERIENCIA = 1 
 | | | então CANDIDATOSCOMEXPERIENCIA 
ßCANDIDATOSCOMEXPERIENCIA + 1 
 | | fim-se 
 | fim-enquanto 
 | IDADEMEDIA <-ARREDONDA(IDADEMEDIA / (NUMCANDIDATOS + 
NUMCANDIDATAS)) 
 | escreva "Idade média dos candidatos: ", IDADEMEDIA 
 | escreva "Total de candidatos: ",NUMCANDIDATOS 
 | escreva "Total de candidatas: ",NUMCANDIDATAS 
 | escreva "Total de candidatos com experiência: 
",CANDIDATOSCOMEXPERIENCIA 
B 
 
início 
 | NUMCANDIDATO, IDADE, SEXO, EXPERIENCIA, IDADEMEDIA, 
NUMCANDIDATOS, 
 | 
 | IDADEMEDIA <-0 
 | NUMCANDIDATOS <-0 
 | NUMCANDIDATAS <-0 
 | CANDIDATOSCOMEXPERIENCIA <-0 
 | leia "Digite o número do candidato (ou 0 para finalizar o 
cadastro):", NUMCANDIDATO 
 | enquanto NUMCANDIDATO <> 0 faça 
 | | leia "Digite a idade:", IDADE 
 | | leia "Digite o sexo (1 Masculino / 2 Feminino):", SEXO 
 | | leia "Possui experiência (1 Sim / 2 Não):", EXPERIENCIA 
 | | IDADEMEDIA <-IDADEMEDIA + IDADE 
 | | se SEXO = 1 
 | | | então NUMCANDIDATOS ßNUMCANDIDATOS + 1 
 | | | senão NUMCANDIDATAS ßNUMCANDIDATAS + 1 
 | | fim-se 
 | | se EXPERIENCIA = 1 
 | | | então CANDIDATOSCOMEXPERIENCIA 
ßCANDIDATOSCOMEXPERIENCIA + 1 
 | | fim-se 
 | fim-enquanto 
 | IDADEMEDIA <- ARREDONDA(IDADEMEDIA / (NUMCANDIDATOS + 
NUMCANDIDATAS)) 
 | escreva "Idade média dos candidatos: ", IDADEMEDIA 
 | escreva "Total de candidatos: ",NUMCANDIDATOS 
 | escreva "Total de candidatas: ",NUMCANDIDATAS 
 | escreva "Total de candidatos com experiência: 
",CANDIDATOSCOMEXPERIENCIA 
Fim 
 
C 
 
início 
 | NUMCANDIDATO, IDADE, SEXO, EXPERIENCIA, IDADEMEDIA, 
NUMCANDIDATOS, 
 | NUMCANDIDATAS, CANDIDATOSCOMEXPERIENCIA : numérico 
 | IDADEMEDIA <-0 
 | NUMCANDIDATOS <-0 
 | NUMCANDIDATAS <-0 
 | CANDIDATOSCOMEXPERIENCIA ß0 
 | leia "Digite o número do candidato (ou 0 para finalizar o 
cadastro):", NUMCANDIDATO 
 | enquanto NUMCANDIDATO <> 0 faça 
 | | leia "Digite a idade:", IDADE 
 | | leia "Digite o sexo (1 Masculino / 2 Feminino):", SEXO 
 | | leia "Possui experiência (1 Sim / 2 Não):", EXPERIENCIA 
 | | IDADEMEDIA ßIDADEMEDIA + IDADE 
 | | se SEXO = 1 
 | | | então NUMCANDIDATOS + 1 
 | | | senão NUMCANDIDATAS + 1 
 | | fim-se 
 | | se EXPERIENCIA = 1 
 | | | então CANDIDATOSCOMEXPERIENCIA + 1 
 | | fim-se 
 | fim-enquanto 
 | IDADEMEDIA <- ARREDONDA(IDADEMEDIA / (NUMCANDIDATOS + 
NUMCANDIDATAS)) 
 | escreva "Idade média dos candidatos: ", IDADEMEDIA 
 | escreva "Total de candidatos: ",NUMCANDIDATOS 
 | escreva "Total de candidatas: ",NUMCANDIDATAS 
 | escreva "Total de candidatos com experiência: 
",CANDIDATOSCOMEXPERIENCIA 
Fim 
 
 
D 
 
início 
 | NUMCANDIDATO, IDADE, SEXO, EXPERIENCIA, IDADEMEDIA, 
NUMCANDIDATOS, 
 | NUMCANDIDATAS, CANDIDATOSCOMEXPERIENCIA : numérico 
 | IDADEMEDIA <-0 
 | NUMCANDIDATOS <-0 
 | NUMCANDIDATAS <-0 
 | CANDIDATOSCOMEXPERIENCIA ß0 
 | leia "Digite o número do candidato (ou 0 para finalizar o 
cadastro):", NUMCANDIDATO 
 | enquanto NUMCANDIDATO = 0 faça 
 | | leia "Digite a idade:", IDADE 
 | | leia "Digite o sexo (1 Masculino / 2 Feminino):", SEXO 
 | | leia "Possui experiência (1 Sim / 2 Não):", EXPERIENCIA 
 | | IDADEMEDIA ßIDADEMEDIA + IDADE 
 | | se SEXO = 1 
 | | | então NUMCANDIDATOS ßNUMCANDIDATOS + 1 
 | | | senão NUMCANDIDATAS ßNUMCANDIDATAS + 1 
 | | fim-se 
 | | se EXPERIENCIA = 1 
 | | | então CANDIDATOSCOMEXPERIENCIA ßCANDIDATOSCOMEXPERI
ENCIA + 1 
 | | fim-se 
 | fim-enquanto 
 | IDADEMEDIA <-ARREDONDA(IDADEMEDIA / (NUMCANDIDATOS + 
NUMCANDIDATAS)) 
 | escreva "Idade média dos candidatos: ", IDADEMEDIA 
 | escreva "Total de candidatos: ",NUMCANDIDATOS 
 | escreva "Total de candidatas: ",NUMCANDIDATAS 
 | escreva "Total de candidatos com experiência: 
",CANDIDATOSCOMEXPERIENCIA 
Fim 
E 
 
início 
 | NUMCANDIDATO, IDADE, SEXO, EXPERIENCIA, IDADEMEDIA, 
NUMCANDIDATOS, 
 | NUMCANDIDATAS, CANDIDATOSCOMEXPERIENCIA : numérico 
 | IDADEMEDIA <-0 
 | NUMCANDIDATOS <-0 
 | NUMCANDIDATAS <-0 
 | CANDIDATOSCOMEXPERIENCIA <-0 
 | leia "Digite o número do candidato (ou 0 para finalizar o 
cadastro):", NUMCANDIDATO 
 | enquanto NUMCANDIDATO <> 0 faça 
 | | leia "Digite a idade:", IDADE 
 | | leia "Digite o sexo (1 Masculino / 2 Feminino):", SEXO 
 | | leia "Possui experiência (1 Sim / 2 Não):", EXPERIENCIA 
 | | IDADEMEDIA <-IDADEMEDIA + IDADE 
 | | se SEXO = 1 
 | | | então NUMCANDIDATOS ßNUMCANDIDATOS + 1 
 | | | senão NUMCANDIDATAS ßNUMCANDIDATAS + 1 
 | | fim-se 
 | | se EXPERIENCIA = 1 
 | | | então CANDIDATOSCOMEXPERIENCIA 
ßCANDIDATOSCOMEXPERIENCIA + 1 
--não imprime nada 
 | | fim-se 
 | fim-enquanto 
 Fim 
 
Resposta.- A - Os candidatos serão cadastrados “| então CANDIDATOSCOMEXPERIENCIA” 
B – Erro “CANDIDATOSCOMEXPERIENCIA <-0” 
C – Erro “IDADEMEDIA ßIDADEMEDIA + IDADE” 
D – Erro “enquanto NUMCANDIDATO = 0 faça” 
E – Não imprime nada 
13.- Um funcionário de uma empresa recebe aumento salarial anualmente. Sabe-se que: 
a) Esse funcionário foi contratado em 1995, com salário inicial de R$ 1.000,00; 
b) Em 1996 recebeu aumento de 1,5% sobre seu salário inicial; 
c) A partir de 1997 (inclusive), os aumentos salariais sempre corresponderam ao dobro do 
percentual do ano anterior. 
Qual o algoritmo que determine o salário atual desse funcionário? 
Transcreva na justificativa da resposta, a linha exata onde acontece o erro das alternativas 
não escolhidas. 
A 
 
DECLARE i, ano_atual, salario, novo_salario, percentual 
NUMÉRICO 
LEIA ano_atual 
salario <- 1000 
percentual <- 0,5% 
novo_salario <- salario + percentual * 1,5 
PARA i <- 1997 ATÉ ano_atual FAÇA 
INÍCIO 
percentual <- 2 * percentual 
novo_salario <- novo_salario + percentual * novo_salario 
FIM 
ESCREVA novo_salario 
FIM_ALGORITMO 
B 
 
DECLARE i, ano_atual, salario, novo_salario, percentual 
NUMÉRICO 
LEIA ano_atual 
salario <- 1000 
percentual <- 1,5% 
novo_salario <- salario + percentual * salario 
PARA i ATÉ ano_atual FAÇA 
INÍCIO 
percentual <- 2 * percentual—depois? 
novo_salario <- novo_salario + percentual * novo_salario 
FIM 
ESCREVA novo_salario 
FIM_ALGORITMO 
C 
 
NUMÉRICO 
—sem declaração de variáveis 
LEIA ano_atual 
salario <- 1000 
percentual <- 1,5% 
novo_salario <- salario + percentual * salario 
PARA i <- 1997 ATÉ ano_atual FAÇA 
INÍCIO 
percentual <- 2 * percentual 
novo_salario <- novo_salario + percentual * novo_salario 
FIM 
ESCREVA novo_salario 
FIM_ALGORITMO 
D 
 
DECLARE i, ano_atual, salario, novo_salario, percentual 
NUMÉRICO 
LEIA ano_atual 
salario <- 1000 
percentual <- 1,5% 
novo_salario <- salario + percentual * salario 
PARA i <- 1997 ATÉ ano_atual FAÇA 
INÍCIO 
percentual <- 2 * percentual 
novo_salario <- novo_salario + percentual * novo_salario 
FIM 
ESCREVA novo_salario 
FIM_ALGORITMO 
E 
 
DECLARE i, ano_atual, salario, novo_salario, percentual 
NUMÉRICO 
 --sem passagem para variável porcentual 
salario <- 1000 
novo_salario <- salario + percentual * salario 
PARA i <- 1997 ATÉ ano_atual FAÇA 
INÍCIO 
percentual<- 2 * percentual 
novo_salario <- novo_salario + percentual * novo_salario 
FIM 
ESCREVA novo_salario 
FIM_ALGORITMO 
 
 
Resposta.- D, sem passagem para variável porcentual 
A - Variável percentual com o valor inicial errado 
B - Variável i sem valor inicial, o que faz com que o PARA perca o sentido; 
C - Sem declaração de valores 
E - Percentual sem valor inicial atribuído. 
14.- O que o algoritmo abaixo faz ? 
início 
 | NOME : literal 
 | CPF, RENDAANUAL, NUMDEPENDENTES, RENDALIQUIDA, 
ALIQUOTAFREQMIN, 
 | VALORAPAGAR : numérico 
 | leia "Digite o nome do contribuinte (ou FIM para 
finalizar o cadastro):", NOME 
 | enquanto NOME <> "FIM" faça 
 | | leia "Digite o CPF:", CPF 
 | | leia "Digite a renda anual:", RENDAANUAL 
 | | leia "Digite o número de dependentes:", 
NUMDEPENDENTES 
 | | RENDALIQUIDA <- RENDAANUAL - (NUMDEPENDENTES * 
110) 
 | | se RENDALIQUIDA < 901 
 | | | então ALIQUOTA <- 0 
 | | | senão se RENDALIQUIDA >= 901 e RENDALIQUIDA 
< 5001 
 | | | | então ALIQUOTA <- 5 
 | | | | senão se RENDALIQUIDA >= 5001 e 
RENDALIQUIDA < 10001 
 | | | | | então ALIQUOTA <- 
10 
 | | | | | senão ALIQUOTA <- 
15 
 | | | | fim-se 
 | | | fim-se 
 | | fim-se 
 | | VALORAPAGAR <- RENDAANUAL * (ALIQUOTA/100) 
 | 
 | fim-enquanto 
fim 
Transcreva na justificativa da resposta, quais as instruções (comandos) que levaram à sua 
conclusão) 
A 
Calcula o valor do Imposto de renda a pagar de acordo com a faixa da aliquota 
respectiva a renda líquida ; 
B Calcula o valor da renda líquida de acordo com o acréscimos dos dependentes; 
C 
Calcula o valor da renda líquida menos os impostos; 
D 
 
Calcula o valor da alíquota a pagar; 
E 
Calcula o salário final do usuário; 
As linhas de cada condicional com rendaliquida após calcula-la, atribuindo 
valores diferentes para cada renda líquida. 
 
Resposta.- A - Calcula o valor do Imposto, “VALORAPAGAR <- RENDAANUAL * (ALIQUOTA/100”. 
 
15.- Dado o algoritmo abaixo, sendo a = 2 e b = 12 qual será o resultado? 
 
ALGORITMO 
DECLARE cont, a, b, i NUMÉRICO 
PARA CONT <- 1 ATÉ 5 FAÇA 
INÍCIO 
LEIA a, b 
PARA i <- a ATÉ b FAÇA 
INÍCIO 
SE RESTO (i/2) = 0 
ENTÃO ESCREVA i 
FIM 
FIM 
FIM_ALGORITMO 
Justifique escrevendo o teste de mesa quais os valores assumidos pela variável i a cada 
iteração do cont. 
A 1,3,5,7,9,11 
B 2,4,6,8,10,12 
C 2,5,7,9,11 
D 1,2,3,4,5 
E 1,2,3,4,5 
 
Resposta.- B, a resposta 2-4-6-8-10-12. 
 
Passo Linha a b i 
Inicio - 2 12 - 
2 7 2 0 2 
4 7 4 0 4 
6 7 6 0 6 
8 7 6 0 8 
10 7 10 0 10 
12 7 12 0 12 
 
 
16.- Que resposta este algoritmo deve apresentar onde está indicado abaixo, sendo: 
 
DECLARE cont, num, alt, maior, num_maior, menor, num_menor NUMÉRICO 
1) PARA cont <- 1 ATÉ 3 FAÇA 
2) INÍCIO 
3) LEIA num, alt 
4) SE cont = 1 
5) ENTÃO INÍCIO 
6) maior <- alt 
7) num_maior <- num 
8) menor <- alt 
9) num_menor <- num 
10) FIM 
11) SENÃO INÍCIO 
12) SE alt > maior 
13) ENTÃO INÍCIO 
14) maior <- alt 
15) num_maior <- num 
16) FIM 
17) SE alt < menor 
18) ENTÃO INÍCIO 
19) menor <- alt 
20) num_menor <- num 
21) FIM 
22) FIM 
23) FIM 
24) (RESPOSTA??) 
25) FIM_ALGORITMO 
O que acontece quando com as variáveis maior, num_maior, menor, num_menor, quando: 
O cont = 1 
Alt = 1.76 
Num = 56 
Escreva na justificativas as linhas percorridas para cada itaração da variável cont 
A 
maior  1.76 
num_maior = 56 
menor  1.76 
num_menor  56 
B 
maior  56 
num_maior = 1.76 
menor  56 
num_menor =1.76 
C 
maior = 1.76 
num_maior = 56 
menor  nada 
num_menor = nada 
D 
maior  56 
num_maior = 1.76 
menor  1.76 
num_menor = 56 
E 
maior  56 
num_maior = 56 
menor  1.76 
num_menor =1.76 
 
Resposta.- A, as linhas percorridas da variável cont. 
5) ENTÃO INÍCIO 
6) maior <- alt 
7) num_maior <- num 
8) menor <- alt 
9) num_menor <- num 
 
 
17.- Cobrança de comissão aumenta valor da prestação 
da compra de veículos 
Revendas lucram em cima das prestações sem que o comprador saiba. 
Taxa de retorno prejudica o consumidor, segundo o Procon. 
 
 
Na hora de comprar um carro é preciso ter cuidado. A negociação do contrato de 
financiamento pode esconder armadilhas que prejudicam os consumidores. O 
automóvel comprado com o mesmo prazo de financiamento, exaxtamente com a 
mesma financeira, pode ter preços diferentes, dependendo do vendedor que atender o 
cliente. As revendas de veículos conseguem lucrar em cima das prestações sem que o 
comprador saiba disso. 
Nem sempre o cliente tem escolha. A reportagem do 'Jornal Nacional' visitou com uma 
câmera escondida dez revendas de automóveis de Porto Alegre em um único dia. Foi 
pedido um financiamento de R$ 15 mil para a compra de um carro do ano de 2006 em 
36 parcelas. Em uma das lojas, o vendedor informou que cada parcela sairia por R$ 650. 
Em outro estabelecimento, com a mesma financeira, o valor caiu para R$ 601. 
A diferença de R$ 49 se deve por causa da "taxa de retorno", uma espécide de comissão 
que muitos bancos e financeiras oferecem às revendas como prêmio para quem fechar 
contratos. De acordo com o advogado Peri Fernandes Corrêa, especializado em finanças, 
o comprador é quem, sem saber, paga o bônus. "O problema é que o banco repassa o 
custo deste comissionamento para o consumidor", diz o advogado. 
 O vendedor de uma das lojas visitadas explica que a taxa de retorno é calculada pelos 
próprios funcionários e fica para a loja. De acordo com o funcionário, a financeira dá 
uma possibilidade da loja ganhar uma comissão sobre o financiamento. 
 Sem a cobrança do ágio, a parcela do financiamento de R$ 15 mil seria de R$ 593 em 
36 vezes. Com a maior taxa de retorno do mercado, a parcela subiria para 673. No final 
do financiamento, o cliente deveria pagar, sem a taxa, o total de R$ 21.348. Com a 
cobrança da comissão, o financiamento de R$ 15 mil acabaria em R$ 24.192, ou seja, 
uma diferença de R$ 2.844 a mais para a revenda. 
 Muita gente só percebe esse abuso bem mais tarde, quando fica difícil manter em dia 
as prestações. Por isso, o Procon recomenda que o consumidor pesquisa e exija que as 
revendas expliquem o que se está pagando a cada mensalidade. 
 "Qualquer taxa de retorno para a empresa que vende o carro, ela é uma lesão ao 
consumidor, porque ela é um benefício que o consumidor está pagando que não é 
próprio, é para a revenda", explica Adirana Burguer, coordenadora do Procon-RS. 
 Considerando os fatos acima, dadas três revendas A,B e C e o seu faturamento mensal, 
determinar a maior e a menor venda. 
Para resolver o problema foram apresentadas três soluções: 
 
Proposta A 
#include <stdio.h> 
void main() 
{ 
 float vendaA,vendaB,vendaC; 
 scanf("%f",&vendaA); 
 scanf("%f",&vendaB); 
 scanf("%f",&vendaC); 
 if ((vendaA>vendaB) && (vendaA>vendaC)) { 
 printf(".2f",vendaA); 
 } 
 else 
 {if (vendaB>vendaB) 
 printf(".2f",vendaC); 
 else 
 printf(".2f",vendaB); 
 } 
 
 if ((vendaA<vendaB) && (vendaA<vendaC)) 
 printf(".2f",vendaA); 
 else 
 { 
 if (vendaB<vendaB) 
 printf(".2f",vendaC); 
 else 
 printf(".2f",vendaB); 
 } 
} 
Proposta B 
#include <stdio.h> 
void main() 
{ 
 float vendaA,vendaB,vendaC,VMax,VMin;; 
 scanf("%f",&vendaA); 
 scanf("%f",&vendaB); 
 scanf("%f",&vendaC); 
 VMax=vendaA; 
 VMin=vendaA; 
 if (vendaB>VMax) { 
 VMax=vendaB; 
 if (vendaC>VMax) { 
 VMax=vendaC; 
 }; 
 if (vendaC<VMin) { 
 VMin=vendaC; 
 }; 
 }else{ 
 VMin=vendaB; 
 if (vendaC>VMax) { 
 VMax=vendaC; 
 }; 
 if (vendaC<VMin) { 
 VMin=vendaC; 
 }; 
 }; 
 printf(".2f .2f",VMax,VMin); 
 
} 
Proposta C 
#include <stdio.h> 
void main() 
{ 
float vendaA,vendaB,vendaC,VMax,VMin; 
scanf("%f",&vendaA); 
scanf("%f",&vendaB); 
scanf("%f",&vendaC); 
--Falta de passage de parâmetro para comparação 
if (vendaB>VMax) { 
 VMax=vendaB; 
}; 
if (vendaB<VMin) { 
 VMin=vendaB; 
}; 
if (vendaC>VMax) { 
 VMax=vendaC; 
}; 
if (vendaC<VMin) { 
 VMin=vendaC; 
}; 
printf(".2f .2f",VMax,VMin); 
 
} 
Transcreva na justificativa da resposta, a linha exata onde acontece o erro, se houver. 
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 proposta está correta 
 
Resposta.- B, erro na comparação do if. 
A – Erro “ if (vendaB>vendaB)”. 
C - Falta de passagem de parâmetro para comparar Vmax com outros valores. 
 
18.- Foram apresentadas três propostas de um programa em C++ que leia uma 
temperatura em graus centígrados e apresente a temperatura convertida em graus 
Fahrenheit. A fórmula de conversão é: 
 
onde F é a temperatura em Fahrenheit e C é a temperatura em centígrados 
 
Proposta A 
#include <stdio.h> 
#include <conio.h> 
 
int main(){ 
 float C,F; 
 printf("Entre com a Temperatura em Celsius\n"); 
 scanf("%f",C); 
 F=9*C + 160/5; 
 printf("A Temperatura :%f",F); 
} 
 
Proposta B 
#include <stdio.h> 
#include <conio.h> 
 
void main(){ 
 float C,F; 
 printf("Entre com a Temperatura em Celsius\n"); 
 scanf("%f",&C); 
 F=9*C + 160/5; 
 printf("A Temperatura :%f",F); 
} 
 
Proposta C 
#include <stdio.h> 
#include <conio.h> 
 
void main(){ 
 float C,F; 
 printf("Entre com a Temperatura em Celsius\n"); 
 scanf("%f",&C); 
 F=(9*C + 160)/5; 
 printf("A Temperatura :%f",F); 
} 
 
Transcreva na justificativa da resposta, a linha exata onde acontece o erro, se houver. 
 
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 .- C, o método main é um void por padrão. 
 
19.- Todo restaurante, embora por lei não possa obrigar o cliente a pagar, cobra 10% de 
comissão para o garçom. Foram apresentadas três propostas de um programa em C++ que leia 
o valor gasto com despesas realizadas em um restaurante e imprima o valor da gorjeta e o valor 
total com a gorjeta. 
 
 
Proposta A 
#include <stdio.h> 
#include <conio.h> 
 
void main(){ 
 float vTot,vGor,vGasto; 
 printf("Entre com o gasto"); 
 scanf("%f",&vGasto); 
 vGor=vGasto*0.1; 
 printf("Valor Gorjeta: .2f",vGor); 
 vTot=vGasto+vGor; 
 printf("\nValor Total: .2f",vTot); 
} 
 
Proposta B 
#include <stdio.h> 
#include <conio.h> 
 
void main(){ 
 float vTot,vGor,vGasto; 
 printf("Entre com o gasto"); 
 scanf("%f",&vGasto); 
 vGor=vGasto*0.1; 
 printf("Valor Gorjeta: .2f",vGor); 
 vTot=vGasto*1.1; 
 printf("\nValor Total: .2f",vTot); 
} 
 
Proposta C 
#include <stdio.h> 
#include <conio.h> 
 
void main(){ 
 float vGasto; 
 printf("Entre com o gasto"); 
 scanf("%f",&vGasto); 
 printf("Valor Gorjeta: .2f", vGasto*0.1); 
 printf("\nValor Total: .2f", vGasto*1.1); 
} 
 
 Transcreva na justificativa da resposta, a linha exata onde acontece o erro, se houver. 
 
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 correta 
 
E 
Nenhuma das propostas está correta 
TODAS CORRETAS0 
 
Resposta.- D, no código das propostas pode se verificar que o valor calculado para a gorjeta 
nas programações na proposta 
 
20.- O seguinte laço: 
for (int k = 1; k <= i; k+=5) 
{ 
 . <instruções> 
} 
Pode ser substituído por: 
Justifique dizendo a função das variáveis k, i e o passo 
 
A 
k = 1; 
while (k<i) 
{ 
 <instruções> 
 k=k+5; 
} 
B 
k = 1; 
while (i <k) 
{ 
 <instruções> 
 k=k+5; 
} 
 
C 
k = 5; 
while (k <=i) 
{ 
 <instruções> 
 K++; 
} 
 
D 
k = 1; 
while (i <=k) 
{ 
 <instruções> 
 k=k++; 
} 
E 
 
i = 1; 
while (k <=i) 
{ 
 <instruções> 
 k=k++; 
 
Resposta .- A, variável K funciona como critério de parada, i como um contador. O laço verifica 
se K<=i, e se for, as instruções do loop são executadas e K é somado com 5 ao final, e o loop 
volta para a condição.

Continue navegando