Baixe o app para aproveitar ainda mais
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.
Compartilhar