Baixe o app para aproveitar ainda mais
Prévia do material em texto
1a Questão)(P2-2012-Até 1,5 ponto) Um estudante de engenharia, que gosta de resolver problemas de lógica, encontrou a seguinte questão: “Quantos pares de coelhos podem ser gerados de um casal de coelhos em um ano? Considere que, de modo natural, a cada mês ocorre a produção de um par. Considere, também, que um par de coelhos só começa a produzir coelhos quando completar dois meses de vida e que neste período nenhum coelho morrerá.” A fim de resolver o problema, o estudante elaborou um programa com o código-fonte em Pascal a seguir: program Coelhos; {$APPTYPE CONSOLE} Uses SysUtils; var OsCoelhos: array [-2..12] of integer; i: integer; begin OsCoelhos[-2] := 0; OsCoelhos[-1] := 1; for i := 0 to 12 do begin OsCoelhos[i] := OsCoelhos[i - 2] + OsCoelhos[i - 1]; WriteLn('Pares de coelhos no mês ', i, ': ', OsCoelhos[i]); end; ReadLn; end. Preencha a tabela a seguir com o conteúdo do vetor OsCoelhos, depois da execução do laço de repetição. i -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 OsCoelhos 2a Questão) A partir da análise do programa apresentado a seguir, responda: a.) (Até 1,0 ponto) Complete o código das linhas 4, 5, 8 e 28. 1 Program Lista_Presenca; 2 Var 3 Nome: array [1..200] of string; 4 Presenca: ________________ 5 ConvidadosPresentes: ______ 6 N: integer; 7 i: integer; 8 Op: _____ 9 Begin 10 Repeat 11 Writeln(‘Digite o número de convidados’); 12 Readln(N); 13 For i := 1 to N do 14 Begin 15 Writeln(‘Nome do convidado ’,i); 16 Readln(Nome[i]); 17 Writeln(‘Presença’); 18 Readln(Presenca[i]); 19 End; 20 ConvidadosPresentes:=0; 21 For i := 1 to N do 22 Begin 23 If Presenca[i] then 24 ConvidadosPresentes := ConvidadosPresentes + 1; 25 End; 26 Writeln(‘Compareceram ’,ConvidadosPresentes, ‘ pessoas’); 27 Writeln(‘Deseja realizar continuar utilizando o programa: S/N?’); 28 __________ 29 Until (Op=‘S’) or (Op=‘s’); 30 End. b.) (Até 1,0 ponto) Para as afirmações a seguir, assinale V para as consideradas verdadeiras e F para as falsas. Justificar apenas as afirmações consideradas falsas. b1.) ( ) A declaração de variáveis indexadas deve ser feita no campo Var na linguagem Pascal. Justificativa: b2.) ( ) A decisão da estrutura de repetição Repita-Até só deve ser realizada com valores ordinais (integer, char ou boolean). Justificativa: 3a Questão) A partir da análise do programa apresentado a seguir, responda: a.) (Até 1,0 ponto) Complete os espaços sublinhados na estrutura Caso de maneira conveniente. 1 Program Paga_Contas; 2 Var 3 N, i, Forma:integer; Soma, Conta, Pagamento:real; 4 Begin 5 Writeln(‘Informe a quantidade de contas a serem pagas’); 6 Readln(N); 7 Soma:=0; 8 For i:=1 to N do 9 Begin 10 Writeln(‘Escolha a forma de pagamento: 1 - à vista; 2 - 2x; 3 - 4x’); 11 Readln(Forma); 12 Writeln(‘Digite o valor da conta’); 13 Readln(Conta); 14 Case ____ of 15 ____: Begin 16 Pagamento:=Conta*0.90; 17 Writeln(‘1x = ’,Pagamento); 18 Soma:=Soma+Pagamento; 19 End; 20 _____: Begin 21 Pagamento:=1.05*Conta/2; 22 Writeln(‘2x = ’,Pagamento); 23 Soma:=Soma+2*Pagamento; 24 End; 25 _____: Begin 26 Pagamento:=1.10*Conta/4; 27 Writeln(‘4x = ’,Pagamento); 28 Soma:=Soma+4*Pagamento; 29 End; 30 End; 31 End; 32 Writeln(‘Valor total de contas = ’,Soma); 33 End. b.) (Até 1,0 ponto) Para as afirmações a seguir, assinale V para as consideradas verdadeiras e F para as falsas. Justificar apenas as afirmações consideradas falsas. b1.) ( ) Na linha 3, a variável de nome Forma foi declarada como integer, pois é utilizada como fator de decisão na estrutura Caso. Justificativa: b2.) ( ) O Begin da linha 9 e o End; da linha 31 são obrigatórios para o correto funcionamento do programa. Justificativa: 4a Questão) (P2-2012)Em meio a comunidade científica, tornou-se necessário desenvolver indicadores de produção científica que permitam quantificar a performance de um determinado pesquisador ou revista periódica. Segundo Weinstock (1971), índices de citação resolvem problemas semânticos que ocorrem com índices por assunto, fazendo uso de uma simbologia de citação ao invés de palavras para descrever o conteúdo de um documento. Uma métrica utilizada para determinar a relevância de um determinado pesquisador é o índice i10, apresentado à comunidade em julho de 2011 pelo Google como parte da ferramenta de busca Google Acadêmico. Esse índice pode ser calculado como o número de artigos com pelo menos 10 citações que os artigos de um pesquisador foram referenciados em outros relatos de pesquisa. Referência WEINSTOCK, M. Citation indexes. In: KENT, A. (ed.), Encyclopedia of Library and Information Science. New York: Marcel Dekker. 1971, v.5, p.16-41. Com base no que foi apresentado responda aos seguintes itens: a.) (Até 1,0 ponto) Para armazenar as citações é necessário criar uma estrutura de dados que permita armazenar o número de citações de até 500 artigos. Escreva a definição do tipo TCitacoes que possua essas características. type b.) (Até 2,0 pontos) Elabore o fluxograma de uma função que retorna o índice i10 sabendo que o número de Citacoes (do tipo TCitacoes) e o número de artigos (do tipo inteiro) são passados por parâmetro. A função deve calcular e retornar o número de artigos que possuem pelo menos 10 citações. 3a Questão) (Até 2,5 pontos) Para resolver certo sistema de equações um engenheiro encomendou a um programador algumas sub-rotinas para executar operações com frações, visando evitar erros de truncamento. Para testes, criou o programa a seguir que utiliza sub- rotinas declaradas na biblioteca Ufracoes. program ProFracoes; {$APPTYPE CONSOLE} uses SysUtils, Ufracoes; var f1, f2, R: TFracao; i: integer; OK: Array[1..4] of Boolean; begin DigitaFracao(f1, OK[1]); DigitaFracao(f2, OK[2]); Operacoes(f1, f2, '+', R, OK[3]); R:= Simplifica (R); if OK[3] then writeLn('Resultado = ', Resultado(R)) else writeLn('Operação inválida!!!'); Operacoes(f1, f2, '/', R, OK[4]); if OK[4] then begin R:= Simplifica (R); writeLn('Resultado = ', Resultado(R)); end else writeLn('Operação inválida!!!'); ReadLn; end. Como o programador não informou os detalhes das sub-rotinas fornecidas, coube a você escrever a declaração do protótipo (cabeçalho completo) das sub-rotinas Operacoes e Simplifica. Sub-rotina Operacoes: Sub-rotina Simplifica: 4a Questão) Você foi contratado por uma lanchonete para concluir o desenvolvimento de um aplicativo que gerencie os itens à disposição dos clientes. Nesse aplicativo, os itens são armazenados em uma variável indexada unidimensional que comporta até 30 itens do tipo string, conforme o exemplo a seguir: Índice Dados 1 ‘3#xyzBurger#12,50’ 2 ‘157#Filé com fritas#25,14’ 3 ‘28#Milk Shake com Halls#9,90’ . . . . . . No exemplo, pode-se verificar que cada dado armazena o código, descrição e preço de um item, separados pelo caractere ‘#’: Código # Descrição # Preço O desenvolvedor que iniciou o aplicativo deixou prontos os fluxogramas do programa principal e de algumas sub-rotinas, apresentados a seguir. Programa Principal: EntraDados (Dados, n) VerificaPreco (Dados, i, op, info, achou, preco) ‘Deseja procurar por código ou descrição (C/D)?’ op ‘Forneça a informação que deve ser procurada:` info Inicio fim Para iß1 até n faça Fim para achou false true preco ProcedimentoQuebraDados: QuebraDados (texto; var cod, descr, pr) início tam ß length(texto) sp ß Pos(‘#’,texto) codß copy(texto,1,sp-1) textoß copy(texto,sp+1,tam) spß pos('#',texto) descrß copy(texto,1,sp-1) prß copy(texto,sp+1,tam) Fim a.) (Até 2,0 pontos) Transcreva fielmente o fluxograma do programa principal para a linguagem Pascal. program Project1; type TDados = array [1 .. 30] of string; // códigos-fonte das sub-rotinas não foram exibidos var begin end. b.) (Até 0,5 ponto) Escreva o conteúdo de cada um dos símbolos hachurados da sub-rotina EntraDados, a seguir. Sub-rotina EntraDados: início n ß 0 Repita Até Continue <> ‘S’ Cod, descr, preco Dados[n] ← Cod+’#’+descr+’#’+preco n ← n + 1 ‘Deseja continuar (S/N)?’ Fim 1 2 Símbolo 1: Símbolo 2: c.) (Até 1,0 ponto) Escreva o fluxograma do procedimento VerificaPreco que compara se o item da posição i do vetor Dados corresponde à informação (código ou descrição, conforme a escolha) de acordo com a opção preenchida com o caractere ‘C’ ou ‘D’. Esse procedimento deverá retornar se houve correspondência e o preço do item. Sabe-se que esse procedimento possui quatro parâmetros passados por valor: o vetor com os Dados, previamente preenchido; a posição i onde se deseja verificar o preço de um determinado item; a opção (‘C’ para código ou ‘D’ para descrição) e a informação a ser localizada e outros dois parâmetros passados por referência: o valor lógico achou que indica se a informação foi localizada ou não na posição indicada pelo índice e o preço (armazenado sob a forma de texto) do produto, caso esteja na posição i. Caso contrário, o preço deve retornar o texto ‘0’. Para o correto funcionamento dessa sub-rotina é necessário fazer a chamada ao procedimento QuebraDados, previamente desenvolvido. VerificaPreco (Dados, i, op, info; var achou, preco) início
Compartilhar