Buscar

Exercício LTP-1

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 21 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 21 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 21 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

Exercício 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
O aluno respondeu e acertou. Alternativa(A)
Comentários:
A) A parte da primeira proposta é a única que esta correta e que dará o resultado das dezenas.
Exercício 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
O aluno respondeu e acertou. Alternativa(E)
Comentários:
E) Por que a única condição verdadeira será j>k que será j, no caso o valor 3.
Exercício 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
O aluno respondeu e acertou. Alternativa(B)
Comentários:
B) Na Proposta C o erro esta na linha 12 de cima para baixo tirando os espaços, é que a massa tem que ser maior que ou igual que 0,10 , não menor que isso; Na Proposta A o erro está na linha 8 de cima para baixo tirando os espaços, é que o contempo tem que receber 0 e não 1.
Exercício 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
O aluno respondeu e acertou. Alternativa(A)
Comentários:
A) IV- É que lista só pode ser acessado sequencialmente V- A fila seus elementos são ordenados pelo princípio de FIFO (first in first out)
Exercício 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
O aluno respondeu e acertou. Alternativa(D)
Comentários:
D) 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.
Exercício 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ériede 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
O aluno respondeu e acertou. Alternativa(C)
Comentários:
C) Nem uma fila e nem uma pilha ao mesmo tempo, pois o função get apenas irá consultar o valor inserido.
Exercício 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
O aluno respondeu e acertou. Alternativa(D)
Comentários:
D) Assumindo que a fila estava vazia enqueue(F,’x’);  inseriu x, fila ficou x imprima(dequeue(F));  extraiu x e imprimiu, fila ficou vazia enqueue(F,’x’);  inseriu outro x, fila ficou x enqueue(F,’o’);  inseriou o, fila ficou xo dequeue(F);  extraiu x, fila ficou o enqueue(F,’i’); inseriu i, fila ficou oi imprima(dequeue(F));  extraiu o e imprimiu, fila ficou i enqueue(F,’u’);  inseriu u, fila ficou iu enqueue(F,’x’);  inseriu x, fila ficou iux dequeue(F);  extraiu, i, fila ficou ux imprima(dequeue(F)); extraiu u e imprimiu, ficou x
Exercício 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
O aluno respondeu e acertou. Alternativa(D)
Comentários:
D) Primeiro vai armazena numa pilha, e vi esvaziar essa pilha para armazena seu dados sequencialmente numa fila, depois esvazia fila e armazena dentro de uma outra pila depois esvazia essa pilha para imprimir sequencialmente.
Exercício 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
O aluno respondeu e acertou. Alternativa(E)
Comentários:
E) Nas outras alternativas não escreviam faz uso que ela faz uso dela mesma até que se obtenha o resultado final.
Exercício 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
O aluno respondeu e acertou. Alternativa(B)
Comentários:
B) a) na fila a inserção é feita no final e a remoção é feita no início b) nas pilhas a remoção e a inserção é feita no topo da pilha c) no vetor a inserção e remoção podem ser feitas em qualquer elemento(indexada) d) na lista encadeada a inserção e remoção são feitas dinamicamente em qualquer posição(difere do vetor por não precisar definir inicialmente o tamanho total de elementos) e)Arvore é necessária uma busca por K nesta mesma árvore. Após a busca o local correto para a inserção do nó K será em uma subárvore vazia de uma folha da árvore. Depois de inserido o nó, a altura do nó pai e de todos os nós acima deve ser atualizada. Em seguida o algoritmo de rotação simples ou dupla deve ser acionado para o primeiro nó pai desregulado.
Exercício 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
   | 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
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
O aluno respondeu e acertou. Alternativa(E)
Comentários:
E) Algumas não escreveram se o caractere, os outros estão com o calculo errado.
Exercício 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 ß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
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
   |    | fim-se
   | fim-enquanto
    Fim
O aluno respondeu e acertou. Alternativa(A)
Comentários:
A) 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
Exercício 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
novo_salario <- novo_salario + percentual * novo_salario
FIM
ESCREVA novo_salario
FIM_ALGORITMO
C) 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
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
 
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
O aluno respondeu e acertou. Alternativa(D)
Comentários:
D) D -sem passagem para variável porcentual Erros 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.
Exercício 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 aliquita 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;
O aluno respondeu e acertou. Alternativa(A)
Comentários:
A) Foi nos comandos onde começou a entrar a calcular a renda liquida, a calcular a alíquota e por ultimo o final o onde mostra o total para pagar .
Exercício 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
LEIAa, 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 
O aluno respondeu e acertou. Alternativa(B)
Comentários:
B) Fazendo o teste de mesa os valores que a variável i vai assumir pela iteração da variável cont será: 2-4-6-8-10-12.
Exercício 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
O aluno respondeu e acertou. Alternativa(A)
Comentários:
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
Exercício 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);
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
 
O aluno respondeu e acertou. Alternativa(B)
Comentários:
B) B- Erro na comparação do if. A – Erro “ if (vendaB>vendaB)”. C - Falta de passagem de parâmetro para comparar Vm ax com outro s valor
Exercício 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 propostaC está correta                                                                     
D) Mais de uma proposta correta
E)Nenhuma das propostas está correta                                              
O aluno respondeu e acertou. Alternativa(C)
Comentários:
C) As propostas A e B estão incorretas, o erro das ambas propostas aparecem na mesma linha, onde é feito o calculo para a conversão de Fahrenheit para Celsius.
Exercício 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
O aluno respondeu e acertou. Alternativa(D)
Comentários:
D) Na proposta B erro está na linha do segundo calculo, e na proposta C não tem calculo.
Exercício 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++;
O aluno respondeu e acertou. Alternativa(A)
Comentários:
A) A variável K funciona como critério de parada, i como um contado r. 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.

Outros materiais