Fundao CECIERJ - Vice Presidncia de Educao Superior a Distncia
Curso de Tecnologia em Sistemas de Computao
Disciplina Fundamentos de Programao AP2 2 semestre de 2006. Nome Assinatura ____________________________________________________________________________ Observaes: 1. Prova sem consulta e sem uso de mquina de calcular. 2. Use caneta para preencher o seu nome e assinar nas folhas de questes e nas folhas de respostas. 3. Voc pode usar lpis para responder as questes. 4. Ao final da prova devolva as folhas de questes e as de respostas. 5. Todas as respostas devem ser transcritas nas folhas de respostas. As respostas nas folhas de questes no sero corrigidas.
Questo 1 (Valor: 2,5 pontos)
Suponha as declaraes a seguir. Type T_Elemento = Record Chave: integer; Descr: string; Valor, Qtd: Real; End; T_Arquivo = File of T_Elemento; Implemente o procedimento com cabealho dado a seguir. Procedure Insere ( X{e}: T_Elemento; Var Arq{e/s}: T_Arquivo ); O procedimento Insere recebe como parmetros: um elemento X e um arquivo Arq, que possui suas informaes j ordenadas crescentemente pelo campo Chave. A insero deve preservar a ordenao dos itens aps a incluso de X em Arq. Suponha que o arquivo Arq j esteja conectado, isto , o comando assign j foi executado previamente. Questo 2 (Valor: 2,5 pontos) Faa um programa Pascal que elimine todas as ocorrncias de uma palavra, escolhida pelo usurio, de um arquivo texto, tambm escolhido pelo usurio.
Questo 3 (Valor: 2,5 pontos)
Faa um procedimento em Pascal para inserir, em uma lista encadeada e ordenada crescentemente pelo valor da chave, um novo elemento, contendo a chave c (um inteiro maior do que zero) passada como parmetro. Este elemento dever ser inserido mantendo-se a lista ordenada. Para facilitar, considere que a lista tem pelo menos dois elementos: o primeiro com o valor da chave igual a zero e o ltimo com valor da chave igual a maxint. Utilize as seguintes declaraes. type T_info = integer; T_pont = ^T_elemento; T_elemento = record chave : T_info; prox : T_pont end; procedure Insere_Elem (var P_Lista{e/s}: T_pont; c{e}: T_info); begin {P_Lista: contm o ponteiro para o primeiro elemento da lista ordenada;} {c: contm o valor da chave do elemento a ser inserido.} end; Questo 4 (Valor: 2,5 pontos) Seja P um conjunto de produtos. Seja D uma base de dados que contm um conjunto de transaes de compra. Cada transao de compra t contm um subconjunto de produtos de P. Um subconjunto F de P (F P) dito freqente em D se e somente se pelo menos s% das transaes de D contm os elementos de F. O valor s chamado suporte mnimo. Implemente a funo Verifica_Freq para verificar se um determinado subconjunto F freqente ou no. Os parmetros dessa funo so: a base de dados Base, o nmero de transaes dessa base Tam_Base, o subconjunto F e o suporte mnimo s. A funo dever retornar o valor true, caso F seja freqente, ou false, caso contrrio. Utilize as seguintes definies. const MaxD = 100; type Faixa = 1..MaxD; P = (Leite, Manteiga, Biscoito, Cafe, Pao, Cerveja, Macarro, Amendoim); t = set of P; D = array [Faixa] of t; function Verifica_Freq (Base{e}: D; Tam_Base{e}: Faixa; F{e}: t; s{e}: real): boolean; begin {Considere que o valor de s estar entre 0 e 1.} end;