Upload
puc-goias
View
221
Download
2
Embed Size (px)
DESCRIPTION
Enade 2014 PUC Goiás
Citation preview
e.BOOK: QUESTÕES DO ENADE COMENTADAS
Cursos: CIÊNCIA DA COMPUTAÇÃO E ENGENHARIA DA COMPUTAÇÃO
Organizador(es): Coordenador de Ciência da Computação Prof.Ivon Rodrigues Canêdo, Coordenador de Engenharia da Computação Prof.Eugênio Julio Messala Cândido de Carvalho.
SUMÁRIO
QUESTÃO Nº 10
Autor: Sibelius Lellis Vieira
QUESTÃO Nº 11
Autor: Sibelius Lellis Vieira
QUESTÃO Nº 12
Autor: Anibal Santos Jukemura
QUESTÃO Nº 15
Autor: Sibelius Lellis Vieira
QUESTÃO Nº 16
Autor: Sibelius Lellis Vieira
QUESTÃO Nº 17
Autora: Ludmilla Reis Pinheiro dos Santos
QUESTÃO Nº 18
Autor: Sibelius Lellis Vieira
QUESTÃO Nº 19
Autor: Ronaldo Lopes de Oliveira
QUESTÃO Nº 20
Autor: Marco Antônio F. Meneses
QUESTÃO Nº 21
Autora: Carmen Cecília Centeno
QUESTÃO Nº 22
Autor: Mário Oliveira Orsi
QUESTÃO Nº 23
Autor: Aníbal Santos Jukemura
QUESTÃO Nº 29
Autor: Sibelius Lellis Vieira
QUESTÃO Nº 36
Autor: Sibelius Lellis Vieira
QUESTÃO Nº 38
Autor: Aníbal Santos Jukemura
QUESTÃO Nº 39
Autora: Carmen Cecília Centeno
QUESTÃO Nº 42
Autor: Sibelius Lellis Vieira
QUESTÃO Nº 10
Em determinado período letivo, cada estudante de um curso universitário tem aulas
com um de três professores, esses identificados pelas letras X, Y e Z. As quantidades
de estudantes (homens e mulheres) que têm aulas com cada professor é apresentada na
tabela de contingência abaixo.
Professor X Professor Y Professor Z
Estudantes homens 45 5 32
Estudantes mulheres 67 2 4
A partir do grupo de estudantes desse curso universitário, escolhe-se um estudante ao
acaso. Qual é a probabilidade de que esse estudante seja mulher, dado que ele tem
aulas apenas com o professor X?
A 61/73
B 61/155
C 67/155
D 22/112
E 67/112
Gabarito: E
Tipo de questão: fácil
Conteúdo avaliado: Probabilidade e estatística
Autor: Sibelius Lellis Vieira
Comentário:
Se o estudante tem aula com o professor X, então faz parte de um dos 112 estudantes
que tem aula com este professor, conforme aponta a segunda coluna da tabela dada.
Dentre estes alunos, 67 são mulheres. Logo, a probabilidade de que este estudante seja
mulher é de 67/112.
Referências:
DEVORE, Jay L. Probabilidade e estatística para engenharia e ciências. 6. ed. São
Paulo: Thomson, 2006.
QUESTÃO Nº 11
O problema da parada para máquinas de Turing, ou simplesmente problema da parada,
pode ser assim descrito: determinar, para quaisquer máquina de Turing M e palavra w,
se M irá eventualmente parar com entrada w. Mais informalmente, o mesmo problema
também pode ser assim descrito: dados um algoritmo e uma entrada finita, decidir se o
algoritmo termina ou se executará indefinidamente.
Para o problema da parada,
A existe algoritmo exato de tempo de execução polinomial para solucioná-lo.
B existe algoritmo exato de tempo de execução exponencial para solucioná-lo.
C não existe algoritmo que o solucione, não importa quanto tempo seja
disponibilizado.
D não existe algoritmo exato, mas existe algoritmo de aproximação de tempo de
execução polinomial que o soluciona, fornecendo respostas aproximadas.
E não existe algoritmo exato, mas existe algoritmo de aproximação de tempo de
execução exponencial que o soluciona, fornecendo respostas aproximadas.
Gabarito: C
Tipo de questão: Médio
Conteúdo avaliado: Teoria da computação
Autor: Sibelius Lellis Vieira
Comentário:
Segundo Divério e Menezes (2000), o problema da parada é um problema de decisão,
que responde se existe um algoritmo que verifique se uma máquina universal (como a
máquina de Turing M, por exemplo) para, aceitando ou rejeitando w, sendo que o
problema da parada é não-solucionável. Não é possível responder se a máquina para,
não importa quanto tempo seja disponibilizado. Ainda Menezes (2005), existem mais
problemas não-solucionáveis do que solucionáveis. O conceito de algoritmo
corresponde a uma máquina de Turing que sempre para independentemente da entrada.
Neste caso, uma máquina de Turing que fica processando indefinidamente (em um laço
infinito) não é considerada um algoritmo.
Referências:
DIVÉRIO, T. & MENEZES, P. B. Teoria da Computação Máquinas Universais
Computabilidade. Bookman, 2. ed., 2000.
MENEZES, P. B. Matemática Discreta para Computação e Iinformática.
Bookman, 2 ed., 2005.
QUESTÃO Nº 12
Gabarito: B
Tipo de questão: Fácil
Conteúdo avaliado: LINGUAGENS FORMAIS E AUTÔMATOS
Autor: Anibal Santos Jukemura
Comentário: Trata-se de uma avaliação de uma gramática definida em linguagens formais. Para resolver esta questão, basta avaliar as construções gramaticais conforme as afirmações fornecidas, como segue: Afirmação I – FALSA Nesta alternativa, afirma-se que o último símbolo das cadeias geradas é o símbolo 1. Suponha a seguinte sequência de uso das regras, dentre várias que contradizem tal afirmação: 1º) S→0A 2º) A →Ɛ. Percebe-se nesta sequência, a cadeia formada é composta apenas pelo símbolo 0, portanto, o último símbolo não é 1. Afirmação II – VERDADEIRA Para validar essa afirmação, basta utilizar as regras na sequência que geram cadeias de símbolos 0 consecutivas. Para tanto, deve-se utilizar a seguinte solução: 1º) S→0A 2º) A →0B (perceba que a sequencia de dois zeros consecutivos já foi atingida) Para continuar a compor a cadeia derivada desta gramática neste caso, B pode ser substituído somente pelas regras B →1S ou B →Ɛ. Se B →Ɛ for selecionada, a derivação termina e a cadeia final será 00. Se B →1S for selecionada, a sequencia de zeros será interrompida pelo símbolo 1, ou seja, dois zeros consecutivos, e quaisquer outras derivações a partir de S, na tentativa de se gerar sequências de zeros, incorrerão nesta mesma análise. Portanto, O número de zeros consecutivos nas cadeias geradas pela gramática é, no máximo, dois. Afirmação III – FALSA Para discutir essa afirmação, basta avaliar um contraexemplo, dentre vários: utilizando-se as seguintes regras na sequência a seguir, percebe-se que a quantidade de zeros geradas (total de 2) na cadeia derivada é maior que a quantidade de símbolos 1 (total de 1): 1º) S→0A 2º) A→0B 3º) B→1S 4º) S→ Ɛ Cadeia gerada: 001, portanto, a afirmação é FALSA. Afirmação IV - FALSA Para discutir essa afirmação, pode-se utilizar o mesmo contra-exemplo descrito na solução da Afirmação III. Observa-se que a cadeia gerada 001, existe um símbolo 1 à direita de dois símbolos 0, ilustrando que essa afirmação é FALSA.
Portanto, a única afirmação VERDADEIRA é a Afirmação II.
Referências: SUDKAMP, Thomas A. Languages and machines: an introduction to the theory of computer science. 3. nd. ed. Reading: Addison-Wesley, c2006. 654 p. MENEZES, Paulo Blauth. Linguagens formais e autômatos. 5. ed. Porto Alegre: Bookman, Informática UFRGS, 2008. 215 p.
QUESTÃO Nº 15
Suponha que seja necessário desenvolver uma ferramenta que apresente o endereço IP
dos múltiplos roteadores, salto a salto, que compõem o caminho do hospedeiro em que
a ferramenta é executada até um determinado destino (segundo seu endereço IP), assim
como o round-trip time até cada roteador. Tal ferramenta precisa funcionar na Internet
atual, sem demandar mudanças em roteadores nem a introdução de novos protocolos.
Considerando o problema acima, qual dos seguintes protocolos representaria a melhor
(mais simples e eficiente) solução?
A IP: Internet Protocol.
B UDP: User Datagram Protocol.
C TCP: Transmission Control Protocol.
D ICMP: Internet Control Message Protocol.
E DHCP: Dynamic Host Configuration Protocol.
Gabarito: D
Tipo de questão: Fácil
Conteúdo avaliado: Redes de computadores
Autor: Sibelius Lellis Vieira
Comentário:
Para apresentar o endereço IP de cada roteador que compõe o caminho de um
hospedeiro até um determinado destino, assim como o tempo gasto pelo pacote até
aquele roteador, o melhor protocolo que representaria a solução é o ICMP, pelas
seguintes razões: a) o protocolo executa diretamente em cima do protocolo IP, b) o
protocolo não exige nenhuma conexão para sua execução, c) o protocolo não exige
nenhuma porta associada, d) o protocolo não exige servidor (como o DHCP), e) o
protocolo já contém pacotes com código de requisição e resposta para cada roteador no
caminho entre o hospedeiro e um destino qualquer, o que facilita o desenvolvimento da
ferramenta.
Referências:
KUROSE, James F.; ROSS, Keith W. Redes de computadores e a Internet: uma
abordagem top-down. 5. ed. São Paulo: Pearson Addison Wesley, 2010.
TANENBAUM, Andrew; WETHERHALL, David. Redes de computadores. 5. ed
São Paulo: Campus, 2011.
QUESTÃO Nº 16
Um navegador Web executa em um hospedeiro A, em uma rede de uma organização, e
acessa uma página localizada de um servidor Web em um hospedeiro B, situado em
outra rede na Internet. A rede em que A se situa conta com um servidor DNS local. Um
profissional deseja fazer uma lista com a sequência de protocolos empregados e
comparar com o resultado apresentado por uma ferramenta de monitoramento
executada no
hospedeiro A. A lista assume que
i) todas as tabelas com informações temporárias e caches estão vazias;
ii) o hospedeiro cliente está configurado com o endereço IP do servidor DNS local.
Qual das sequências a seguir representa a ordem em que mensagens, segmentos e
pacotes serão observados em um meio físico ao serem enviados pelo hospedeiro A?
A ARP, DNS/UDP/IP, TCP/IP e HTTP/TCP/IP.
B ARP, DNS/UDP/IP, HTTP/TCP/IP e TCP/IP.
C DNS/UDP/IP, ARP, HTTP/TCP/IP e TCP/IP.
D DNS/UDP/IP, ARP, TCP/IP e HTTP/TCP/IP.
E HTTP/TCP/IP, TCP/IP, DNS/UDP/IP e ARP.
Gabarito: A
Tipo de questão: Difícil
Conteúdo avaliado: Redes de computadores
Autor: Sibelius Lellis Vieira
Comentário:
O acesso a uma página localizada em B a partir de A implica, primeiramente, no acesso
ao gateway default para enviar o pacote. O endereço MAC do gateway default é obtido
através do protocolo ARP, pois a tabela ARP está vazia. A seguir. o hospedeiro A
precisa do endereço IP da página que está em B e para tal, envia uma requisição DNS
ao servidor DNS local. Obtido o endereço IP de B, é estabelecida uma conexão TCP
entre A e B, finalizando com o envio de um pacote GET do protocolo HTTP, que
executa em cima do TCP.
Entretanto, seria necessário também uma consulta, via ARP, ao endereço MAC do
servidor DNS local. Portanto, a resposta certa seria ARP (Para obter MAC do IP do
DNS local), DNS, ARP (para obter MAC do IP do gateway default), TCP e HTTP.
Referências:
KUROSE, James F.; ROSS, Keith W. Redes de computadores e a Internet: uma
abordagem top-down. 5. ed. São Paulo: Pearson Addison Wesley, 2010.
TANENBAUM, Andrew; WETHERHALL, David. Redes de computadores. 5. ed
São Paulo: Campus, 2011.
QUESTÃO Nº 17
A tabela a seguir apresenta a relação de mintermos e maxtermos para três variáveis.
Analise o circuito de quatro variáveis a seguir.
Considerando esse circuito, as funções f e g são, respectivamente, (A) Σm(0,1,2,3,6,7,8,9) e Σm(2,3,6,7,10,14). (B) Σm(4,5,10,11,12,13,14,15) e Σm(0,1,4,5,8,9,11,12,13,15). (C) ΠM(0,1,2,3,6,7,8,9) e ΠM(0,1,4,5,8,9,11,12,13,15). (D) ΠM(4,5,10,11,12,13,14,15) e Σm(2,3,6,7,10,14). (E) ΠM(4,5,10,11,12,13,14,15) e ΠM(2,3,6,7,10,14).
Gabarito: B
Tipo de questão: Fácil
Conteúdo avaliado: Tabela verdade, circuitos lógicos, teorema de DeMorgan, expressão Booleana, Mintermo, Maxtermo
Autora: Ludmilla Reis Pinheiro dos Santos
Comentário
Os conceitos de Mintermos e Maxtermos são utilizados para reescrever uma
função lógica em uma forma padronizada com o objetivo de obter uma simplificação
da mesma. Mintermo corresponde a soma padrão de produtos, onde cada termo
corresponde a um produto. Maxtermo corresponde ao produto padrão de somas, onde
cada termo corresponde a uma soma.
Ao analisar o circuito de quatro variáveis, pode-se escrever as funções f e g.
Logo, monta-se a tabela verdade considerando as quatro variáveis de entrada
( ), obtendo-se a tabela 1.
Tabela 1: Tabela verdade de f e g.
Tabela 2: Tabela verdade Mintermo e Maxtermo, utilizando quatro entradas.
Linha Mintermo Maxtermo
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
f g
Linha ( . )+( . ) ( + )( + )
0 0 0 0 0 0 1
1 0 0 0 1 0 1
2 0 0 1 0 0 0
3 0 0 1 1 0 0
4 0 1 0 0 1 1
5 0 1 0 1 1 1
6 0 1 1 0 0 0
7 0 1 1 1 0 0
8 1 0 0 0 0 1
9 1 0 0 1 0 1
10 1 0 1 0 1 0
11 1 0 1 1 1 1
12 1 1 0 0 1 1
13 1 1 0 1 1 1
14 1 1 1 0 1 0
15 1 1 1 1 1 1
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1
A partir das tabelas 1 e 2 é possível escrever as funções f e g. Primeiramente,
consideremos a função f.
+ Reescrevendo em termos de Mintermos
Reescrevendo em termos de Maxtermos
Em seguida, consideremos a função g.
Reescrevendo em termos de Mintermos:
Reescrevendo em termos de Maxtermos:
Logo, a alternativa correta é: B.
Referências:
Sêrro, Carlos. Sistemas digitais - fundamentos algébricos. 1. ed. Lisboa: Ist Press, 2003. 486p.
Mano, M. Morris; Kime, Charles. Logic and Computer Design Fundamentals. 4. ed. New Jersey: Prentice Hall, 2007. 696p.
QUESTÃO Nº 18
Um vendedor de artigos de pesca obteve com um amigo o código executável (já
compilado) de um programa que gerencia vendas e faz o controle de estoque, com o
intuito de usá-lo em sua loja. Segundo o seu amigo, o referido programa foi compilado
em seu sistema computacional pessoal (sistema A) e funciona corretamente. O
vendedor constatou que o programa executável também funciona corretamente no
sistema computacional de sua loja (sistema B). Considerando a situação relatada,
analise as afirmações a seguir.
I. Os computadores poderiam ter quantidades diferentes de núcleos (cores).
II. As chamadas ao sistema (system call) do sistema operacional no sistema A devem
ser compatíveis com as do sistema B.
III. O conjunto de instruções do sistema A poderia ser diferente do conjunto de
instruções do sistema B.
IV. Se os registradores do sistema A forem de 64 bits, os registradores do sistema B
poderiam ser de 32 bits.
É correto o que se afirma em
A III, apenas.
B I e II, apenas.
C III e IV, apenas.
D I, II e IV, apenas.
E I, II, III e IV.
Gabarito: B
Tipo de questão: Fácil
Conteúdo avaliado: Arquitetura e Sistemas Operacionais
Autor: Sibelius Lellis Vieira
Comentário:
Normalmente, os processos executam de forma independente da sua infraestrutura, ou
seja, computadores poderiam ter quantidade diferente de núcleos. Por outro lado, como
o processo é executável, faz chamadas ao sistema com instruções de máquina que
devem ser compatíveis nos dois sistemas. O total de instruções de máquina de uma
sistema não precisa ser igual ao do outro sistema, mas as instruções, de forma geral,
deveriam ser iguais. Os registradores dos dois sistemas devem ser também
compatíveis, pois estão associados às instruções.
No caso desta questão, o item III poderia estar certo, se estabelecesse que parte do
conjunto de instruções de A poderia ser diferente de B, mas apenas parte, pois como o
processo é executável, já compilado, é necessário compatibilidade para interpretar o
código.
Referências:
TANENBAUM, A. Sistemas Operacionais Modernos, 3rd
Ed., Prentice-Hall, 2009.
SILBERSCHATZ, A., GAVIN, P and GAGNE, G. Fundamentos de sistemas
operacionais. 7ª edição, Elsevier/Campus, Rio de Janeiro, 2008.
QUESTÃO Nº 19
Uma equipe está realizando testes com base nos códigos-fonte de um sistema. Os testes envolvem a verificação de diversos componentes individualmente, bem como das interfaces entre os componentes. No contexto apresentado, essa equipe está realizando testes em nível de A unidade. B aceitação. C sistema e aceitação. D integração e sistema. E unidade e integração.
Gabarito: E
Tipo de questão: Objetiva com múltipla escolha
Conteúdo avaliado: Teste de Software
Autor: Ronaldo Lopes de Oliveira
Comentário: A questão trata especificamente dos diferentes níveis de aplicação de testes de software. Testes são instrumentos importantes para ajudar a descobrir defeitos na construção de sistemas de software e podem se aplicados em vários momentos durante o seu ciclo de vida de um software, tratando diferentes níveis de escopo e complexidade. Um sistema de software é constituído por diversos elementos (ou unidades) que muitas vezes são chamados de componentes ou módulos. Cada componente isoladamente tem um propósito ou funcionalidade que precisa ser verificada ao término de sua construção. O teste que verifica se a construção da unidade atende os seus propósitos é conhecido como teste de unidade. O trabalho de teste não termina aí. Os módulos de um sistema precisam ser integrados com outros módulos para juntos realizarem tarefas mais complexas. Essa integração também precisa ser verificada. Para tal são elaborados testes que exercitam as interfaces entre os módulos para verificar se elas foram construídas da maneira adequada. Esses testes são conhecidos como testes de integração. Seguindo no processo de ampliação do escopo e complexidade dos testes, o próximo passo é testar se grandes blocos de software, compostos por vários componentes integrados, se comportam como o esperado e atingem objetivos sistêmicos com produção de resultados visíveis do ponto de vista da aplicação. Os testes de sistema podem se confundir com os testes de integração pela natureza similar de ambos, mas os testes de integração lidam trabalham com um nível menor de composição do que os testes de sistema e se concentram em descobrir defeitos na implementação de interfaces entre componentes de software. Os testes de sistema têm como propósito testar o sistema como um todo. Testes de aceitação constituem uma classe especial de testes que visa obter uma aprovação dos interessados para o software produzido. Além de aspectos funcionais, esses testam verificam se o software atende também os requisitos não funcionais definidos para o software, particularmente no que diz respeito a critérios de qualidade do ponto de vista do usuário final como usabilidade, segurança, desempenho, entre outros.
Referências: SOMMERVILLE, IAN. Engenharia de Software. Nona Edição.
Editora Pearson, 2011. DELAMARO, M.E.; MALDONADO, J.C.; JINO, M. Introdução ao Teste de Software. Campus, 2007.
QUESTÃO Nº 20
Considere que G é um grafo qualquer e que V e E são os conjuntos de vértices e de arestas de G, respectivamente. Considere também que grau (v) é o grau de um vértice v pertencente ao conjunto V. Nesse contexto, analise as seguintes asserções.
Em G, a quantidade de vértices com grau ímpar é ímpar. PORQUE Para G, vale a identidade dada pela expressão ∑v ϵ V grau(v) = 2|E| Acerca dessas asserções, assinale a opção correta. A As duas asserções são proposições verdadeiras, e a segunda é uma justifi cativa correta da primeira. B As duas asserções são proposições verdadeiras, mas a segunda não é uma justifi cativa correta da primeira. C A primeira asserção é uma proposição verdadeira, e a segunda uma proposição falsa. D A primeira asserção é uma proposição falsa, e a segunda uma proposição verdadeira. E Tanto a primeira quanto a segunda asserções são proposições falsas
Gabarito: D
Tipo de questão:
Conteúdo avaliado: Grafos: grau de vértices.
Autor: Marco Antônio F. Menezes
Comentário: A segunda asserção é um resultado clássico em teoria de grafos, que é uma proposição verdadeira. Para demonstrá-la, basta observar que toda aresta de um grafo tem duas extremidades e cada extremidade é contada como um grau para cada vértice. Como o número total de arestas do grafo é a cardinalidade do conjunto de arestas E, segue-se que o somatório dos graus dos vértices de G é o dobro da cardinalidade de E. Uma consequência desse teorema é o corolário que diz que a quantidade de vértices de grau ímpar é par. Logo, a primeira asserção é uma proposição falsa. Um contraexemplo é tomar um grafo com dois vértices e uma aresta incidente a eles. Aqui, temos um número par de vértices, dois, com grau ímpar, um. Portanto, a opção correta é letra D.
Referências: Kenneth H. Rosen. Matemática Discreta e Suas Aplicações. Tradução: Helena Castro e João Guilherme Giudice. Sexta edição, São Paulo: McGraw-Hill, 2009. J. A. Bondy e U. S. R. Murty. Graph theory with applications. The Macmillan Press, 1976.
QUESTÃO Nº 21
No desenvolvimento de um software que analisa bases de DNA, representadas pelas letras A, C, G, T, utilizou-se as estruturas de dados: pilha e fila. Considere que, se uma sequência representa uma pilha, o topo é o elemento mais à esquerda; e se uma seqüência representa uma fila, a sua frente é o elemento mais à esquerda. Analise o seguinte cenário: “a seqüência inicial ficou armazenada na primeira estrutura de dados na seguinte ordem: (A,G,T,C,A,G,T,T). Cada elemento foi retirado da primeira estrutura de dados e inserido na segunda estrutura de dados, e a sequência ficou armazenada na seguinte ordem: ( T,T,G,A,C,T,G,A). Finalmente, cada elemento foi retirado da segunda estrutura de dados e inserido na terceira estrutura de dados e a sequência ficou armazenada na seguinte ordem: (T,T,G,A,C,T,G,A).” Qual a única seqüência de estrutura de dados apresentadas a seguir pode ter sido usada no cenário descrito acima?
A. Fila-Pilha-Fila B. Fila-Fila-Pilha C. Fila-Pilha-Pilha D. Pilha-Fila-Pilha E. Pilha-Pilha-Pilha
Gabarito: A
Tipo de questão:
Conteúdo avaliado: Estrutura de Dados - Listas Lineares
Autora: Carmen Cecília Centeno
Comentário: As pilhas e as filas são estruturas de dados que constituem um tipo particular de listas. Nestas estruturas de dados a remoção e a inserção não provocam uma movimentação dos dados na estrutura, pois o que ocorre é que os elementos inseridos e removidos estão em posições especiais, como a primeira e a ultima posição.
As pilhas são consideradas estruturas de dados do tipo LIFO (last-in , first-out), ou seja, o ultimo elemento inserido é colocado no topo da pilha e este elemento será o primeiro a ser removido. Um exemplo prático é uma pilha de cartas, a ultima carta inserida na pilha estará no topo da mesma, que por sua vez será a primeira a ser removida da pilha. As operações de inserção e remoção em uma pilha são conhecidas como PUSH (topo) e POP(topo), respectivamente. Considere P1 uma pilha onde o elemento mais a esquerda representa o topo da pilha. A inserção dos elementos 1,2,3,4,5, nesta ordem, em P1 resulta em P1={5,4,3,2,1}, onde 5, ultimo elemento inserido, é o elemento mais ao topo. Agora considere uma segunda pilha P2. Retire um elemento de P1 e inserira em P2 após a retirada de todos os elementos de P1 se tem P2={1,2,3,4,5}. Note que a movimentação de pilha para pilha resulta em uma ordenação inversa dos elementos, pois o ultimo elemento retirado da primeira será exatamente o elemento mais ao topo da segunda pilha. As filas são consideradas estruturas de dados do tipo FIFO (first-in, firt-out), ou seja, o primeiro elemento inserido será o primeiro elemento retirado da estrutura. Esta se assemelha a uma fila de banco, onde o primeiro cliente a entrar na fila será o primeiro a ser atendido. Considere F1, uma fila inicialmente vazia onde o elemento mais a esquerda é o inicio da fila. Em F1 será inserido os elementos 1,2,3,4,5 nesta ordem. A fila resultante após inserção é F1={1,2,3,4,5}. Seja F2 uma segunda fila que receberá os elementos de F1, retirados um a um de F1 e inseridos em F2. O resultado de tal movimentação é F2={1,2,3,4,5}. Note que a movimentação de fila para fila não altera a ordenação de seus dados. Considere então P1={1,2,3,4,5} uma pilha onde o topo é seu elemento mais a esquerda e F1 uma fila onde o elemento mais a esquerda representa seu inicio. Ao movimentar os elementos de P1 para F1, retirando elemento a elemento da pilha e inserindo na fila, se obtém o seguinte resultado: F1={1,2,3,4,5}. Note que o movimento de pilha-fila também não altera a ordenação dos dados. Já o inverso, fila-pilha o mesmo não acontece. Se F1={1,2,3,4,5}, ao se movimentar os elementos para P1 se obtém P1={5,4,3,2,1}. Analisando as três estruturas da questão:
E1= (A,G,T,C,A,G,T,T), E2= ( T,T,G,A,C,T,G,A), E3 = (T,T,G,A,C,T,G,A)
Nota se que E2 é o inverso de E1, então E1 e E2 não podem ser ambas filas. Se E1 é uma pilha, E2 também deverá ser uma pilha; se E1 é uma fila então E2 é uma pilha. Podemos concluir que com certeza E2 é uma pilha. Sendo assim E3 não poderá ser uma pilha, pois E2 e E3 possuem mesma ordenação, logo E3 é uma fila. Por exclusão das opções a única alternativa onde E2 é uma pilha e E3 é uma fila determina que E1 seja uma fila. Logo E1 é fila, E2 é pilha e E3 é fila.
Referências: 1. CORMEM, Thomas, et al. Algoritmos – Teoria e Prática. Campus, 2002. 2. SCWARCFITTER, Jayme Luiz, MARKENZAN, Lilian. Estruturas de dados e
seus algoritmos. Rio, LTC, 1994.
QUESTÃO Nº 22
QUESTÃO 22
Considere a seguinte tabela verdade, na qual estão definidas quatro entradas –
A, B, C e D – e uma saída S.
A menor expressão de chaveamento representada por uma soma de produtos
correspondente à saída S é
A) AB’(D+C’)+A’D’+ABC.
B) AD + A’BD’+A’BC+A’B’C’.
C) A’D’ + AB’D+AB’C’+ABC.
D) (A’+D)(A+B+C’)(A+B’+C+D’).
E) (A+D’)(A’+B’+C)(A’+B+C’+D).
Gabarito: 22 C
Tipo de questão: Média
Conteúdo avaliado: Simplificação de Circuitos usando mapa de Kanoungh
Autor: Mário Oliveira Orsi
Comentário: a solução deve ser obtida usando a REGRAS* de simplificação do Mapa de KARNOUGT COM QUATRO VARIÁVEIS. *regras:
Primeiro passo: montar o Mapa à partir da tabela Segundo passo:examinar o mapa para detectar os 1s que não são adjacentes a qq outros1s. Terceiro passo: agrupar os 1s que são adjacentes a somente outro 1 Quarto passo: agrupar qualquer octeto, mesmo que contenha 1s já combinados Quinto passo: agrupar qualquer quarteto que contenha 1 ou mais 1s que ainda não tenham sido combinados. (certificar de usar o nº mínimo de agrupamentos) Sexto passo: agrupar qualquer outros 1s que ainda não ainda não tenham sido combinados. (certificar de usar o nº mínimo de agrupamentos) Sétimo passo: forme a soma OU (OR) dos termos gerados por cada agrupamento
Referências: livro texto Tocci / Widmer – Sistemas Digitais princípios e aplicações
QUESTÃO Nº 23
Gabarito: C
Tipo de questão: Fácil
Conteúdo avaliado: Linguagens Formais e Autômatos
Autor): Aníbal Santos Jukemura
Comentário: Letra A – FALSA Conforme Ramos, (Ramos, 2009):
"As linguagens inerentemente ambíguas, de acordo com a definição (...), são aquelas para as quais inexistem gramáticas livres de contexto não-ambíguas que as definem. Tais linguagens são definidas exclusivamente através de gramáticas livres de contexto ambíguas."
A gramática fornecida é uma gramática linear à direita (não é estritamente uma gramática livre de contexto). Gramáticas lineares à direita geram apenas formas sentenciais no formato Y =>*αY, com α ϵ Σ+, em que, obviamente, não há balanceamento de termos, nem, portanto, aninhamentos sintáticos. A existência de termos balanceados (ou aninhados) é, por isso, o fator que diferencia uma linguagem estritamente livre de contexto de uma linguagem regular. Letra B – FALSA A gramática apresentada é uma Gramática Linear a Direita. Portanto é uma Gramática Regular por definição (MENEZES, 2008): Seja G = {V, T, P, S} uma gramática e sejam A e B elementos de V e w uma palavra de T*. Então G é uma: a) GLD: Se todas as regras de produção são da forma A→ wB ou A→w. b) GLE: Se todas as regras de produção são da forma A→Bw ou A →w. c) GLUD: Se todas as regras de produção são como na GLD e além disso |w| =< 1. d) GLUE: Se todas as regras de produção são como na GLE e além disso |w| =< 1. Note-se que nas gramáticas lineares o lado direito das produções apresentam no máximo uma variável, que se existir irá sempre anteceder (LE) ou suceder (LD) qualquer subpalavra de terminais. Teorema: Seja L uma linguagem, então: L é gerada por uma GLD, se e somente se L é gerada por uma GLE, se e somente se L é gerada por uma GLUD, se e somente se L é gerada por uma GLUE. Ou seja, as diversas formas de gramáticas lineares são formalismos equivalentes. Gramática Regular: Uma gramática regular é qualquer gramática linear.
Conforme a hierarquia de Chomsky descrita em 1959, foram propostas quatro classes de gramáticas: Gramáticas Regulares (Tipo-3), Gramáticas Livre de Contexto (Tipo-2), Gramáticas Sensíveis ao Contexto (Tipo-1) e Gramáticas Irrestritas (Tipo-0). Estas
gramáticas geram as classes de linguagens regulares (LR), linguagens livres de contexto (LLC), linguagens sensíveis ao contexto (LSC) e linguagens recursivamente enumerável (LRE), respectivamente. A relação entre estas linguagens é conforme a regra: (LR Ì LLC Ì LSC Ì LRE).
Conclui-se que uma Gramática Regular gera, no limite conceitual, uma Linguagem Regular, pois nem toda Linguagem Regular é uma Linguagem Livre de Contexto.
LETRA C – VERDADEIRA A questão é verdadeira, pois a gramática fornecida e o autômato descrito são equivalentes. Para provar essa equivalência, a partir da gramática fornecida, aplica-se o algoritmo de conversão da gramática regular apresentada para autômato finito não-determinístico (AFND), em seguida, converte-se o AFND para um AFD e por fim, minimiza-se o AFD encontrado. O resultado será o autômato fornecido. Letra D – FALSA Conforme Menezes, 2008: “Um prefixo de uma palavra é qualquer sequência inicial desta palavra”. Com o uso deste conceito,uma simples análise pode ser feita pela função-transição do estado 0. Percebe-se que as transições δ(0,b)=0 e δ(0,c)=0, permitem que as cadeias geradas possam ter, como símbolos iniciais, os símbolos b e c, impossibilitando um prefixo que comece com o símbolo a. Portanto, não de pode afirmar que o prefixo para as cadeias geradas pelo autômato seja ababc. LETRA E – FALSA Uma explicação possível e rápida para afirmar que essa é uma questão FALSA seria a avaliar um contraexemplo, através do qual a expressão regular fornecida, apresenta a operação de fechamento em três elementos: (a+b+c)* (ab)* e (a+b+c)* Considerando que tais operações podem gerar a cadeia vazia, uma string possível para a linguagem reconhecida pela expressão regular fornecida seria a string abc. Ao aplicar a função-transição do autômato em questão, a partir do estado inicial 0 (estado zero), o resultado seria: δ(0,a)={1} δ(1,b)={2} δ(2,c)={0}, onde 0 não é estado final no autômato, rejeitando, portanto, a string abc. Logo, a linguagem reconhecida pelo autômato não é a mesma que é representada pela expressão regular fornecida.
Referências: SUDKAMP, Thomas A. Languages and machines: an introduction to the theory of computer science. 3. nd. ed. Reading: Addison-Wesley, c2006. 654 p.
MENEZES, Paulo Blauth. Linguagens formais e autômatos. 5. ed. Porto Alegre: Bookman, Informática UFRGS, 2008. 215 p. Ramos, Marcus Vinícius Midena. Linguagens Formais: teoria, modelagem e implementação. Ed. Bookman. Porto Alegre, 2009
QUESTÃO Nº 29
Uma antiga empresa de desenvolvimento de software resolveu atualizar toda sua
infraestrutura computacional adquirindo um sistema operacional multitarefa,
processadores multi-core (múltiplos núcleos) e o uso de uma linguagem de
programação com suporte a threads. O sistema operacional multitarefa de um
computador é capaz de executar vários processos (programas) em paralelo.
Considerando esses processos implementados com mais de uma thread ( multi-
threads), analise as afirmações abaixo.
I. Os ciclos de vida de processos e threads são idênticos.
II. Threads de diferentes processos compartilham memória.
III. Somente processadores multi-core são capazes de executar programas multi-
threads.
IV. Em sistemas operacionais multitarefa, threads podem migrar de um processo para
outro.
É correto apenas o que se afirma em
A I.
B II.
C I e III.
D I e IV.
E II e IV.
Gabarito: A
Tipo de questão: Médio
Conteúdo avaliado: Sistemas Operacionais
Autor: Sibelius Lellis Vieira
Comentário:
Normalmente, as threads são consideradas subprocessos, ou seja, partes de um
processo que executam independentemente umas das outras, mas compartilham
atributos do processo ao qual estão associadas. Os ciclos de vida de processos e threads
são normalmente idênticos, pois as threads são as unidades que, de fato, são
executáveis, mas não compartilham memória com threads de outros processos.
Threads são adstritas ao processo do qual fazem parte e podem executar em qualquer
tipo de processador.
Referências:
TANENBAUM, A. Sistemas Operacionais Modernos, 3rd
Ed., Prentice-Hall, 2009.
SILBERSCHATZ, A., GAVIN, P and GAGNE, G. Fundamentos de sistemas
operacionais. 7ª edição, Elsevier/Campus, Rio de Janeiro, 2008.
QUESTÃO Nº 36
O problema P versus NP é um problema ainda não resolvido e um dos mais estudados
em Computação. Em linhas gerais, deseja-se saber se todo problema cuja solução pode
ser eficientemente verificada por um computador, também pode ser eficientemente
obtida por um computador. Por “eficientemente” ou “eficiente” significa “em tempo
polinomial”. A classe dos problemas cujas soluções podem ser eficientemente obtidas
por um computador é chamada de classe P. Os algoritmos que solucionam os
problemas dessa classe têm complexidade de pior caso polinomial no tamanho das suas
entradas. Para alguns problemas computacionais, não se conhece solução eficiente, isto
é, não se conhece algoritmo eficiente para resolvê-los. No entanto, se para uma dada
solução de um problema é possível verificá-la eficientemente, então o problema é dito
estar em NP. Dessa forma, a classe de problemas para os quais suas soluções podem
ser eficientemente verificadas é chamada de classe NP. Um problema é dito ser NP-
completo se pertence à classe NP e, além disso, se qualquer outro problema na classe
NP pode ser eficientemente transformado nesse problema. Essa transformação eficiente
envolve as entradas e saídas dos problemas. Considerando as noções de complexidade
computacional apresentadas acima, analise as afirmações que se seguem.
I. Existem problemas na classe P que não estão na classe NP.
II. Se o problema A pode ser eficientemente transformado no problema B e B está na
classe P, então A está na classe P.
III. Se P = NP, então um problema NP-completo pode ser solucionado eficientemente.
IV. Se P é diferente de NP, então existem problemas na classe P que são NP-
completos.
É correto apenas o que se afirma em
A I.
B IV.
C I e III.
D II e III.
E II e IV.
Gabarito: D
Tipo de questão: Difícil
Conteúdo avaliado: Teoria da computação
Autor: Sibelius Lellis Vieira
Comentário:
Segundo Garey e Johnson (1979), a classe P é definida como a classe de problemas
solucionáveis em tempo polinomial por uma máquina de Turing determinística, ao
passo que a classe NP é a dos problemas que são solucionáveis por uma máquina de
Turing não-determinística. Portanto, P está contida em NP. Se o problema A pode ser
eficientemente transformado no problema B (ou seja, em tempo polinomial), e B está
na classe P, então A está na classe P. Por outro lado, se P = NP, então um problema
NP-completo poderia ser solucionado eficientemente, uma vez que um problema NP-
completo também está contido em NP. Por último, se P é diferente de NP, como se
considera atualmente, os problemas da classe P são resolvidos em tempo polinomial e
os problemas da classe NP-completo estão na classe NP, mas não se conhece algoritmo
em tempo polinomial para solucioná-los, o que indica problemas da classe P não estão
na classe dos NP-completos.
Referências:
GAREY, M. & JOHNSON, D. Computers and Intractability: A Guide to the Theory of NP-Completeness, W. H. Freeman, 1979.
QUESTÃO Nº 38
Gabarito: E
Tipo de questão: Médio
Conteúdo avaliado: Compiladores
Autor: Anibal Santos Jukemura
Comentário Conforme Aho (AHO, 2007), uma gramática é designada de LR(0) quando não existem conflitos entre duas ações (entre duas ações de redução ou entre uma de leitura e uma de redução). O estado e1 é resultado da operação de desvio de e0 com o não-terminal N. Percebe-se que e1 irá gerar mais dois estados resultantes da leitura do caracter x ou de um dígito d, o que geraria ações de leitura (ou de x ou de d). Como o conjunto
SEGUINTE (M)={$,x,d}, e em e1, tem-se o item canônico M→N. , as ações (e1,x) e
(e1,d) apresentarão conflitos leitura/redução, uma vez que esse item canônico provocará uma ação de redução para ambas as ações. Portanto, são se pode afirmar que a gramática é LR(0), tornando a primeira asserção FALSA. Como a gramática fornecida não é LR(0), não é possível construtir um autômato LR(0) determinístico para ela. Portanto, a segunda asserção é FALSA.
Referências:
1. AHO, Alfred V.; ULLMAN, Jeffrey D.; SETHI, Ravi; LAM, Monica S. Compilers – principles, techniques, & tools with Gradiance. Addison Wesley, 2007.
2. PRICE, Ana Maria de Alencar, TOSCANI, Simão Sirineo. Implementação de Linguagens de Programação: Compiladores. Editora Sagra Luzzatto, 2001.
3. LOUDEN, Kenneth C. Compiladores. Thomson, 2004.
QUESTÃO Nº 39
O conceito de Tipo de Dados Abstrato (TDA) é popular em linguagem de programação, Neste contexto, analise as afirmativas a seguir: I. A especificação de um TDA é composta das operações aplicáveis a ele,
de sua representação interna, e das implementações das operações. II. Dois mecanismos utilizáveis na implementação de um TDA em programas
orientados a objetos são a composição é a herança. III. Se S é um subtipo de outro T, então entidades do tipo S em um programa
podem ser substituídas por entidades do tipo T, sem alterar a corretude desse programa.
IV. O encapsulamento em linguagens de programação orientadas a objetos é um efeito positivo do uso de TDA.
É correto apenas o que se afirma em:
A. I B. II C. I e III D. II e IV E. III e IV
Gabarito: D
Tipo de questão: médio
Conteúdo avaliado: Estrutura de Dados e Programação Orientada a Objetos
Autora: Carmen Cecília Centeno
Comentário Para responder a questão é necessário o conhecimento de vários conceitos não só de estruturas de dados, mas também de programação orientada a objetos. Um tipo de dado abstrato (TDA) pode ser visto como a extensão dos tipos de dados primitivos, ou seja, a utilização dos tipos primitivos para se construir um novo tipo de dado. A especificação de um conjunto de dados, o relacionamento entre estes e as operações que podem ser realizadas por estes são denominadas TDA. A palavra abstrato se refere ao fato de que os dados, operações básicas e relacionamentos definidos estão sendo analisados independentemente de como estes serão implementados. O importante é o que será feito com o dados e não como será feito. O TDA torna um conjunto de variáveis soltas em uma entidade. Por exemplo, em um programa onde se deve definir uma carta de baralho, se utiliza variáveis para definir o naipe, cor , valor, etc... de cada carta. Utilizando o conceito de TDA se pode definir uma carta como uma entidade, contendo os valores de naipe, cor , valor, etc... Exemplo: estrutura Carta{ Naipe Cor Valor } A metodologia de tipo de dados abstrato foi incorporada à linguagem de programação orientada a objetos, permitindo o controle do acesso às informações de um tipo (composição), a herança e o polimorfismo. A programação orientada a objetos (POO) tem um vinculo direto com os tipos de dados abstratos que são implementados como uma classe. Uma classe é uma especificação dos dados que a formam e das operações que pode realizar. No exemplo anterior carta é definida como uma classe. Um objeto é uma instância de uma classe, ou seja, oito de ouro é uma objeto de carta. A combinação de dados e das operações relacionadas é chamada de encapsulamento de dados, o que permite a separação de aspectos internos e externos de um objeto. Um bom exemplo para entender a sua vantagem é que “você não precisa conhecer os detalhes de um circuito de um computador para utiliza lo, ele esta encapsulado pela sua carcaça”. Um outro conceito importante na POO é o de herança, que possui o mesmo sentido que a definição da palavra conforme um dicionário. Herança é o mecanismo pelo qual uma classe (subclasse) pode “herdar”, obter, as características de outra classe(superclasse), aproveitando seus comportamentos (métodos) e variáveis possíveis (atributos). Por exemplo: Mamífero é superclasse de Humano. Ou seja, um humano é um mamífero. Com estas definições é possível responder a questão acima.
Referências:
1. DROZDEK, Adam. Estrutura de Dados e Algoritmos em C++. Cengage Learning, 2002.
2. NYHOFF, Larry. C++ An Introduction to Data Structures. Prentice Hall, 1998.
3. CORMEM, Thomas, et al. Algoritmos – Teoria e Prática. Campus, 2002.
QUESTÃO Nº 42
Sabendo que a principal tarefa de um sistema será de classificação em domínios
complexos, um gerente de projetos precisa decidir como vai incorporar essa capacidade
em um sistema computacional a fim de torná-lo inteligente. Existem diversas técnicas
de inteligência computacional / artificial que possibilitam isso. Nesse contexto, a
técnica de inteligência artificial mais indicada para o gerente é
A lógica nebulosa.
B árvores de decisão.
C redes neurais artificiais.
D ACO (do inglês, Ant-Colony Optimization).
E PSO (do inglês, Particle Swarm Optimization).
Gabarito: C
Tipo de questão: Difícil
Conteúdo avaliado: Inteligência artificial e metaheurísticas
Autor: Sibelius Lellis Vieira
Comentário
A tarefa de classificação pode ser resolvida utilizando técnicas de árvores de decisão e
redes neurais artificiais (RNA). As técnicas de ACO e PSO podem ser utilizadas para
resolver problemas complexos de otimização, ao passo que a lógica nebulosa é
indicada para resolver problemas em que os parâmetros e variáveis são definidos de
forma imprecisa, difusa. A técnica de árvore de decisão resolve problemas de
classificação, mas é indicada para problemas comuns de classificação, enquanto as
RNA resolvem problemas com vários tipos de entrada e saída, podendo tratar
problemas de classificação não-lineares, sendo as mais indicadas para domínios
complexos.
Referências:
MICHAELEWICZ, Z. & FOGEL, D.B. How to solve it: modern heuristics, Springer,
2000.