36

eBook: Ciência da Computação e Engenharia da Computação

Embed Size (px)

DESCRIPTION

Enade 2014 PUC Goiás

Citation preview

Page 1: eBook: Ciência da Computação e Engenharia da Computação
Page 2: eBook: Ciência da Computação e Engenharia da Computação
Page 3: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 4: eBook: Ciência da Computação e Engenharia da Computação

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

Page 5: eBook: Ciência da Computação e Engenharia da Computação

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:

Page 6: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 7: eBook: Ciência da Computação e Engenharia da Computação

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

Page 8: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 9: eBook: Ciência da Computação e Engenharia da Computação

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é

Page 10: eBook: Ciência da Computação e Engenharia da Computação

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

Page 11: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 12: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 13: eBook: Ciência da Computação e Engenharia da Computação

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

Page 14: eBook: Ciência da Computação e Engenharia da Computação

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:

Page 15: eBook: Ciência da Computação e Engenharia da Computação

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

Page 16: eBook: Ciência da Computação e Engenharia da Computação

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

Page 17: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 18: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 19: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 20: eBook: Ciência da Computação e Engenharia da Computaçã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.

Page 21: eBook: Ciência da Computação e Engenharia da Computação

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).

Page 22: eBook: Ciência da Computação e Engenharia da Computação

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

Page 23: eBook: Ciência da Computação e Engenharia da Computação

QUESTÃO Nº 23

Gabarito: C

Tipo de questão: Fácil

Page 24: eBook: Ciência da Computação e Engenharia da Computação

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

Page 25: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 26: eBook: Ciência da Computação e Engenharia da Computação

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

Page 27: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 28: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 29: eBook: Ciência da Computação e Engenharia da Computação

QUESTÃO Nº 38

Page 30: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 31: eBook: Ciência da Computação e Engenharia da Computação

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

Page 32: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 33: eBook: Ciência da Computação e Engenharia da Computação

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.

Page 34: eBook: Ciência da Computação e Engenharia da Computação
Page 35: eBook: Ciência da Computação e Engenharia da Computação
Page 36: eBook: Ciência da Computação e Engenharia da Computação