Buscar

Slides de Aula I

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 187 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 187 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 187 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Unidade I
ESTUDOS DISCIPLINARES
Formação Especifica
Prof. Angel Martinez
 Enunciado (Enade 2008) 
A figura mostra 3 conjuntos – A, B e C – em que cada conjunto é 
representado, no diagrama de Venn, por um círculo no plano. Com 
relação aos conjuntos A, B e C, julgue os seguintes itens: 
Questão 1
Assinale a opção correta.
a) Apenas um item está certo.
b) Apenas os itens I e II estão certos.
c) Apenas os itens II e III estão certos.
d) Apenas os itens III e IV estão certos.
e) Apenas os itens II, III e IV estão certos.
Questão 1
 Introdução teórica
 Teoria dos conjuntos é o ramo da matemática que estuda as 
coleções de elementos e o relacionamento entre elas.
 O estudo moderno da teoria dos conjuntos começou com 
Georg Cantor e outros aproximadamente 1870.
 Um conjunto é um ente primitivo da matemática, ou seja, aceito 
sem definição, algo intuitivo.
Questão 1
Representação de conjuntos 
 A={1,2}; 2  A ; 
 B= ou B={} = Conjunto Vazio
   A e   B 
Questão 1
Diagrama de Venn ou Diagrama de Euler
1
2
A B
 União de conjuntos
 A={1,2,5} ; B={7,8,9}
 A  B = { 1,2,5,7,8,9} 
Questão 1
Interseção entre conjuntos 
 A  B = { 2, 5 }
Questão 1
Diferença entre Conjuntos
 A – B = {1,2,5}
 B – A = {7, 8, 9}
Questão 1
Algumas das propriedades de conjuntos
 Reflexiva 
 A  A = A ou A  A = A
 Associativa 
 A  (B  C) = (A  B)  C
 A  (B  C) = (A  B)  C
 Distributiva
 A  (B  C ) = (A  B)  (A  C)
 A  (B  C ) = (A  B)  (A  C)
Análise dos itens
 Colocamos números em cada um dos conjuntos.
Questão 1
Afirmação I 
I. Item incorreto.
 Justificativa. A união de A com B somente daria um conjunto 
vazio se tanto A quanto B fossem conjuntos vazios. 
Questão 1
Afirmação II
II. Item incorreto.
Justificativa. 
 Vamos resolver passo a passo:
 B  C = {5, 6}
 A – (B  C) = {1, 2, 4, 5} – {5, 6} = {1, 2, 4}
 (A – B) = {1, 4} 
 (A – C) = {1, 2}
 (A – B)  (A – C) = {1, 4}  {1, 2} = {1}
 Portanto {1, 2, 4} é diferente de {1} 
 e o item está incorreto.
Questão 1
Afirmação III
 Justificativa. Vamos resolver passo a passo:
 A = {1,2,4,5}
 (B  C) = {2, 3, 4, 5, 6, 7}
 A  (B  C) = {2, 4, 5}
 (A  B) = {2, 5}
 (A  C) = {4, 5}
 (A  B)  (A  C) = {2, 4, 5}
 Portanto {2, 4, 5} é igual a {2, 4, 5} 
 e o item está correto.
Questão 1
Afirmação IV
IV. Item incorreto.
 Justificativa. A interseção de A com A somente daria um 
conjunto vazio se A fizesse interseção com um conjunto vazio. 
 A regra é A  A = A e A   = .
Questão 1
Resposta
 Alternativa correta: A (o item III está correto e os demais itens 
estão incorretos).
a) Apenas um item está certo.
b) Apenas os itens I e II estão certos.
c) Apenas os itens II e III estão certos.
d) Apenas os itens III e IV estão certos.
e) Apenas os itens II, III e IV estão certos.
Questão 1
INTERVALO
Enunciado (Enade 2011)
 Com relação ao valor lógico, avalie as afirmações a seguir:
I. ¬ (p ^¬q)
II. p(qp)
III. (pv¬q) ¬p
IV. (p^q)v(¬p^¬q)
 É tautologia apenas o que se afirma em:
a) I. 
b) II. 
c) I e III.
d) II e IV.
e) III e IV.
Questão 2
Introdução teórica
 Proposição
 Quando nos expressamos em português por meio de frases 
com algum significado.
 Denominamos de proposição uma frase que possa ser dita 
verdadeira ou falsa.
Questão 2
Exemplos
A seguir, são dados dois exemplos de sentenças, uma verdadeira 
e uma falsa.
 O número 4 é par (sentença verdadeira).
 O número 6 é ímpar (sentença falsa).
Questão 2
 Operações lógicas e seus conectivos
 Negação (¬) - NÂO
 Conjunção (^) - E
 Disjunção (v) - OU
 Condicional () – SE(Implica)
Questão 2
Proposições compostas
 São proposições (frases) formadas pela união de proposições 
simples por meio de seus conectivos.
Exemplos:
 Não existe divisão por zero.
 O número 4 é par e o número 5 é ímpar.
 O número 7 é par ou ímpar.
Questão 2
 A tabela verdade é uma tabela que faz todas as combinações 
possíveis entre as proposições simples que compõe a 
proposição composta.
 Para analisarmos as proposições compostas, precisamos 
utilizar a tabela verdade, que verifica o valor lógico da 
proposição.
Questão 2
Negação (¬).
 A negação da proposição p é dada por ¬p. Sua tabela verdade 
está mostrada a seguir.
Questão 2
p ¬p
V F
F V
Conjunção (^).
 Considerando duas proposições p e q, a conjunção é dada por 
p^q. Sua tabela verdade está mostrada a seguir.
Questão 2
p q p^q
V V V
V F F
F V F
F F F
Disjunção (v).
 Considerando duas proposições p e q, a disjunção é dada por 
pvq. Sua tabela verdade está mostrada a seguir.
Questão 2
p q pvq
V V V
V F V
F V V
F F F
Condicional ()
 Considerando duas proposições p e q, a condicional é dada por 
pq. Sua tabela verdade está mostrada a seguir.
Questão 2
p q pq
V V V
V F F
F V V
F F V
Tautologia e contingência.
 Sempre que a tabela verdade resultar em verdadeiro é 
tautologia. 
 Sempre que a tabela verdade resultar em falso é contradição. 
 Se a proposição composta não é tautológica e não é uma 
contradição, então é contingência.
Questão 2
I. Afirmativa incorreta.
 Justificativa. Vejamos a tabela verdade a seguir.
 A expressão lógica é uma contingência.
Questão 2
p q ¬q p ^¬q ¬(p ^¬q)
V V F F V
V F V V F
F V F F V
F F V F V
II. Afirmativa correta. 
Justificativa. Vejamos a tabela verdade a seguir.
 Essa expressão lógica sempre resulta em verdadeiro, 
independentemente dos valores das proposições simples 
que a compõem. Concluímos, então, que essa 
expressão lógica é tautológica.
Questão 2
p q qp p(qp)
V V V V
V F V V
F V F V
F F V V
Resposta
 Alternativa correta: b).
Questão 2
p q qp p(qp)
V V V V
V F V V
F V F V
F F V V
III. Afirmativa incorreta.
 Justificativa. Vejamos a tabela verdade a seguir.
 A expressão lógica é uma contingência.
Questão 2
p q ¬q pv¬q ¬p (pv¬q) ¬p
V V F V F F
V F V V F F
F V F F V V
F F V V V V
IV. Afirmativa incorreta.
 Justificativa. Vejamos a tabela verdade a seguir.
 A expressão lógica é uma contingência.
Questão 2
p q ¬p ¬q p^q ¬p^¬q (p^q)v(¬p^¬q)
V V F F V F V
V F F V F F F
F V V F F F F
F F V V F V V
Resposta
 Alternativa correta: b).
Questão 2
p q qp p(qp)
V V V V
V F V V
F V F V
F F V V
INTERVALO
Enunciado (Enade 2008)
Considere a sentença a seguir.
 Se Maria for ao aniversário, João irá e ficará feliz, mas Maria 
ficará infeliz, ou, se João não for ao aniversário, Maria irá e 
ficará feliz, mas João ficará infeliz.
Considere as seguintes proposições: 
P: João vai ao aniversário; 
Q: Maria vai ao aniversário; 
R: João feliz; e 
S: Maria feliz. 
Questão 3
 Assinale a opção que contém fórmula de lógica proposicional 
com uma representação válida para a sentença proposta. 
Quanto à notação dos operadores, considere: junção = Λ; 
disjunção = V; negação = ¬; implica = →. 
Questão 3
Introdução teórica
 Álgebra das proposições, também conhecida por lógica 
proposicional é uma parte da matemática que trata de 
sentenças que possam ser ditas como verdadeiras ou falsas.
 Proposições compostas são aquelas formadas pela união de 
outras proposições por meio dos conectivos.
 X + 5 = 10; Não é uma proposição.
Questão 3
Questão 3
p ¬p
V F
F V
p q pvq
V V V
V F V
F V V
F F F
p q pq
V V V
V F F
F V V
F F V
NÃO E OU SE
p q p^q
V V V
V F F
F V F
F F F
Análise das alternativas 
a) Alternativa incorreta.
 Justificativa. Não reflete o proposto na questão, conforme segue.
 ((Maria vai ao aniversário implica que (João vai ao aniversário E 
João feliz)) implica que Maria não feliz).
 OU
 ((João não vai ao aniversário implica que (Maria vai ao aniversário 
E Maria fica feliz) implica que João feliz.)
 Está incorreto porque, no segundo caso, João está feliz 
enquanto que, na proposta da questão, ele fica infeliz.
Questão 3P: João vai ao aniversário; 
Q: Maria vai ao aniversário; 
R: João feliz; e 
S: Maria feliz. 
Se Maria for ao aniversário, João irá e 
ficará feliz, mas Maria ficará infeliz, ou, 
se João não for ao aniversário, Maria 
irá e ficará feliz, mas João ficará infeliz
b) Alternativa incorreta.
 Justificativa. Não reflete o proposto na questão, conforme 
segue.
 ((Maria não vai ao aniversário implica que (João vai ao 
aniversário E João feliz)) implica que Maria feliz).
OU
 ((João vai ao aniversário implica que (Maria vai ao aniversário E 
Maria fica feliz) implica que João não feliz).
 Está incorreto porque Maria não vai ao aniversário, enquanto 
que, nas duas situações da questão proposta, ela vai ao 
aniversário. Em uma, sente-se feliz (se João não for) 
e, na outra, sente-se infeliz (se João for).
Questão 3
P: João vai ao aniversário; 
Q: Maria vai ao aniversário; 
R: João feliz; e 
S: Maria feliz. 
Se Maria for ao aniversário, João irá e 
ficará feliz, mas Maria ficará infeliz, ou, 
se João não for ao aniversário, Maria 
irá e ficará feliz, mas João ficará infeliz
c) Alternativa correta.
 Justificativa. Reflete o proposto na questão, conforme 
detalhado a seguir.
 ((Maria vai ao aniversário implica que (João vai ao aniversário E 
João feliz)) implica que Maria não feliz).
 OU
 ((João não vai ao aniversário implica que (Maria vai ao 
aniversário E Maria fica feliz) implica que João não feliz).
 Está correto porque reflete exatamente o comportamento 
apresentado na questão, tanto da parte de João quanto da parte 
de Maria.
Questão 3
P: João vai ao aniversário; 
Q: Maria vai ao aniversário; 
R: João feliz; e 
S: Maria feliz. 
Se Maria for ao aniversário, João irá e 
ficará feliz, mas Maria ficará infeliz, ou, 
se João não for ao aniversário, Maria 
irá e ficará feliz, mas João ficará infeliz
d) Alternativa incorreta.
 Justificativa. Não reflete o proposto na questão, conforme 
segue.
 ((Maria não vai ao aniversário implica que (João vai ao 
aniversário E João feliz)) implica que Maria não feliz).
OU
 ((João não vai ao aniversário implica que (Maria vai ao 
aniversário E Maria fica feliz) implica que João não feliz).
 A segunda proposição está correta, mas a primeira não 
representa o comportamento proposto pela questão.
Questão 3
P: João vai ao aniversário; 
Q: Maria vai ao aniversário; 
R: João feliz; e 
S: Maria feliz. 
Se Maria for ao aniversário, João irá e 
ficará feliz, mas Maria ficará infeliz, ou, 
se João não for ao aniversário, Maria 
irá e ficará feliz, mas João ficará infeliz
e) Alternativa incorreta.
 Justificativa. Não reflete o proposto na questão, conforme segue.
 ((Maria vai ao aniversário implica que (João vai ao aniversário E 
João feliz)) implica que Maria feliz).
 OU
 ((João não vai ao aniversário implica que (Maria vai ao aniversário 
E Maria fica feliz) implica que João feliz).
 Está incorreto nos dois casos porque, no primeiro, Maria fica feliz 
com a ida de João, mas na questão proposta ela fica infeliz se João 
for. No segundo caso, João não vai e Maria fica feliz, mas João 
também fica feliz, o que contraria o fato de que João fica infeliz.
Questão 3
P: João vai ao aniversário; 
Q: Maria vai ao aniversário; 
R: João feliz; e 
S: Maria feliz. 
Se Maria for ao aniversário, João irá e 
ficará feliz, mas Maria ficará infeliz, ou, 
se João não for ao aniversário, Maria 
irá e ficará feliz, mas João ficará infeliz
Enunciado (Enade 2008)
 Os termos da sequência de Fibonacci são definidos por:
 Fibonacci(0) = 0 e Fibonacci(1) = 1
 Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)
 Uma solução recursiva para o cálculo do i-ésimo termo da 
sequência é dada pela função a seguir.
 1 função fibonacci(inteiro longo n)
 2 se((n=0) OU (n=1)) então
 3 retorne n
 4 senão
 5 retorne fibonacci(n-1) + fibonacci(n-2)
 6 fim se
 7 fim
Questão 4
Acerca da execução recursiva dessa função, assinale a opção 
incorreta.
a) À medida que o valor de n cresce, há um aumento no número de 
chamadas recursivas.
b) Na linha 4, a ordem de execução é calcular o valor para fibonacci(n-
1) e somente depois calcular o valor para 
fibonacci(n-2).
c) O método recursivo é o mais eficiente para o cálculo do i-ésimo
termo da sequência de Fibonacci, pois realiza duas chamadas por 
passo da recursão, cada uma mais simples do que a chamada 
original.
d) As condições de parada da recursão são: o valor de n é 0 ou o 
valor de n é 1.
e) O uso da recursão para o problema da série de Fibonacci não é 
indicado, pois ele gera rapidamente uma explosão de chamadas do 
método.
Questão 4
Introdução teórica 
 A sequência recebeu o nome do matemático italiano Leonardo 
de Piza, conhecido por Fibonacci, que no ano de 1202 escreveu 
a sequência abaixo:
 0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377 ...
 F(n) = F(n-1)+F(n-2);
 F(0)=0 e F(1) =1;
Questão 4
1 função fibonacci(inteiro longo n)
2 se((n=0) OU (n=1)) então
3 retorne n
4 senão
5 retorne fibonacci(n-1) + fibonacci(n-2)
6 fim se
7 fim
Questão 4
 Executando o algoritmo passo a passo.
Questão 4
Análise das alternativas (incorreta)
a) Alternativa incorreta.
 Justificativa. À medida que o valor de n cresce, há um aumento no 
número de chamadas recursivas.
b) Alternativa incorreta.
 Justificativa. A execução de fibonacci(n-1) também é recursiva e, 
somente após concluída, chama-se fibonacci(n-2).
c) Alternativa correta.
 Justificativa. O método recursivo torna-se mais ineficiente com o 
aumento de n. Dependendo do valor de n, pode estourar toda 
memória do computador.
Questão 4
d) Alternativa incorreta.
 Justificativa. A condição de parada é sempre n=0 ou n=1.
e) Alternativa incorreta.
 Justificativa. Se n for muito grande, haverá uma explosão de 
chamadas de métodos e um StackOverflow. Um exemplo do 
cálculo de fibonacci para qualquer n dado. 
Questão 4
 Exemplo de código não recursivo.
Questão 4
INTERVALO
Enunciado (Enade 2011)
A pilha é uma estrutura de dados que permite a inserção/remoção de 
itens dinamicamente seguindo a norma de último a entrar, primeiro a 
sair. Suponha que para uma estrutura de dados, tipo pilha, são 
definidos os comandos:
 PUSH (p, n): Empilha um número “n” em uma estrutura de 
dados do tipo pilha “p”;
 POP (p): Desempilha o elemento no topo da pilha. 
Questão 5
 PUSH (p, 10)
 PUSH (p, 5)
 PUSH (p, 3)
 PUSH (p, 40)
 POP (p)
 PUSH (p, 11)
 PUSH (p, 4)
 PUSH (p, 7)
 POP (p)
 POP (p)
Questão 5
Considere que, em uma estrutura de 
dados tipo pilha “p”, inicialmente 
vazia, sejam executados os seguintes 
comandos:
Após a execução dos comandos, o elemento no topo da pilha “p” 
e a soma dos elementos armazenados na pilha “p” são, 
respectivamente:
a) 11 e 29.
b) 11 e 80.
c) 4 e 80.
d) 7 e 29.
e) 7 e 40.
Questão 5
Introdução teórica
 A Ciência da computação estuda as estruturas de dados, que 
são um modo particular de armazenamento e organização da 
memória do computador.
 Tem como objetivo o uso eficientemente, facilitando sua busca 
e alteração.
Questão 5
Alguns dos principais tipos de estrutura de dados.
 Vetores/arrays: são estruturas de dados lineares e estáticas.
 Lista: é uma estrutura de dados linear.
 Filas: são estruturas baseadas no princípio FIFO.
 Pilha: é uma estrutura de dados baseada no princípio LIFO.
 Árvore: mais de um elemento associado por nó.
 Tabela de hashing: usa-se um cálculo para achar/guardar etc.
Questão 5
Filas Exemplo de aplicação.
 Tráfego de Mensagens
 Primeiro a entrar primeiro a sair
Questão 5
0 1 2 3 4 5 6 7 8
dado dado dado dado dado dado dado dado dado
8 7 6 5 4 3 2 1 0
dado dado dado dado dado dado dado dado dado
Aplicação 1
Põe na Fila 1
Aplicação 2
Le da Fila 1
Aplicação 2
Põe na Fila 2
Aplicação 1
Le da Fila 2
 Pilha
 Pilha é uma estrutura de dados, isto é, uma forma particularde 
armazenar um conjunto numa certa ordem. Essa estrutura 
permite a inserção de novos itens ou a exclusão de itens 
existentes.
 A estrutura de dados do tipo pilha funciona analogamente a 
uma pilha de pratos. Caso precisemos adicionar um novo prato 
na pilha, devemos colocá-lo no topo, e para retirarmos um 
prato, também devemos extrair o prato que está no topo.
Questão 5
Questão 5
Questão 5
Questão 5
 Pilha de chamada de funções:
Questão 5
Inicio
Rotina 1
Fim
Rotina 1
Rotina 2
Fim
Rotina 2
Processamento
Fim
Início
Estrutura interna típica:
 Temos um índice para o topo da pilha.
 Um número interno que indica o tamanho máximo da pilha.
 Duas funções: uma para inserção e outra para retirada.
Questão 5
Índice 0 1 2 3 4 5 6 7 8
Conteúdo 13 21 34 45 56 67 78 89 91
Pilha
 A estrutura de dados do tipo pilha tem como característica a 
ordenação LIFO – Last In First Out, ou seja, a última informação a 
entrar é a primeira a sair.
Quando utilizamos a pilha, precisamos implementar pelo menos 
duas operações básicas: 
 A operação para empilhar/inserir um novo elemento no topo. 
 PUSH (empilhar).
 A operação de desempilhar/remover um elemento do topo. 
 POP (desempilhar).
 Há habitualmente as operações TOP e PULL.
 TOP: Le topo, PULL: Altera o topo.
Questão 5
 Atualmente nas aplicações práticas comuns não se costuma 
usar a PILHA, pois isso já estão embutidos nos banco de 
dados, sistemas operacionais etc.
 Em sistemas que necessitem de alta performance pode ser que 
seja necessário implementar uma pilha para o acesso a alguma 
camada de dados em memória controlada pela própria 
aplicação.
Questão 5
Análise da questão
 Executando os comandos considerados na questão, os elementos 
serão armazenados na pilha “p”, conforme mostra 
a figura.
Questão 5
7
4 4 4
40 11 11 11 11 11
3 3 3 3 3 3 3 3
5 5 5 5 5 5 5 5 5
10 10 10 10 10 10 10 10 10 10
PUSH (p, 10)
PUSH (p, 5)
PUSH (p, 3)
PUSH (p, 40)
POP (p)
PUSH (p, 11)
PUSH (p, 4)
PUSH (p, 7)
POP (p)
POP (p)
Após a execução de todos os 
comandos, o elemento 11 está no 
topo da pilha “p” e a soma de 
todos os elementos (11+3+5+10) 
resulta em 29. 
Alternativa correta: a).
ATÉ A PRÓXIMA!
Unidade I
ESTUDOS DISCIPLINARES
Formação Específica
Prof. Angel Martinez
Enunciado (Enade 2008)
Com relação ao código, considere 
que:
 a variável i é local e a variável 
Gn é global;
 não há nenhum tipo de 
documentação ou código fonte 
além do mostrado;
 a sub-rotina xis() faz parte de um 
programa;
o critério de aceitação do teste é: 
a sub-rotina xis() não entra em 
laço infinito.
Questão 6
Na situação apresentada, é correto:
I. aplicar testes de caixa branca 
às rotinas calc(), f1() e f2() e, 
em seguida, usar o resultado 
para fazer um teste de mesa 
da sub-rotina xis().
II. aplicar testes de caixa preta 
que forcem a chamada a xis() 
e depois medir a porcentagem 
de sucesso da sub-rotina xis().
III. aplicar testes de caixa preta 
isoladamente ao código objeto 
das sub-rotinas calc(), f1() e f2() 
antes de aplicar um teste que 
envolva a sub-rotina xis().
Questão 6
Assinale a opção correta.
a) Apenas um item está certo.
b) Apenas os itens I e II estão certos.
c) Apenas os itens I e III estão certos.
d) Apenas os itens II e III estão certos.
e) Todos os itens estão certos.
Questão 6
Introdução teórica. 
Teste caixa-branca.
 Um teste caixa-branca é aquele no qual a estrutura interna 
do software (código) é analisada. Baseia-se nos caminhos 
internos, na estrutura e na implementação do produto. 
Requer conhecimento do código do produto em um teste 
para ser aplicado. 
Questão 6
 No teste de caixa-branca, você conhece o código que está 
dentro da caixa.
Questão 6
BuscaBinaria
Inf = 0;
Sup=N-1;
Int K[]
Int chave
Int N
Inf <= Sup
Meio = (Inf+Sup)/2
Chave=k[meio] Retorna meio FIM
Sup = meio -1Chave <[meio]
inf = meio + 1
Retorna -1
F
V
V
F
V
Não Achou
Achou
Teste caixa-preta
 Não temos conhecimento do como o software foi desenvolvido
Questão 6
Os parâmetros de 
entrada para os 
testes baseiam-se 
nos requisitos do 
programa apenas
Os parâmetros de 
entrada para os 
testes baseiam-se 
nos requisitos do 
programa apenas
Questão 6
 Arquivos Objeto
Questão 6
Programa.c.o
Arq01.c.o Arq02.c.o Arq03.c.o
A união dos 
arquivo objeto .o 
forma o 
executável
Programa.exe
Compilador
+
Linker
Análise dos itens 
I. Item incorreto.
Justificativa. Não é 
possível fazer o teste 
caixa-branca das rotinas 
calc(), f1() e f2() porque 
somente foi fornecido o 
código da sub-rotina Xis().
Questão 6
II. Item correto.
Justificativa. Gn é uma variável 
global e não temos ideia do seu 
valor. O mesmo acontece com o 
funcionamento das funções 
calc(), f1() e f2(). Só é possível 
descobrir executando a sub-
rotina Xis() (caixa-preta). A sub-
rotina Xis() vai rodar a primeira 
vez com i = 0, depois 
i = 1, i = 2 etc., até que o valor de 
i e Gn sejam iguais. Portanto, é 
um teste válido 
e possível de ser feito.
Questão 6
IV. Item incorreto.
 Justificativa. O teste 
caixa-preta é feito sobre um 
arquivo executável, página 
web ou biblioteca (jar ou DLL, 
por exemplo). Código objeto é 
um tipo de arquivo 
intermediário entre o 
código-fonte e o executável, o 
que torna esse item falso, pois 
não pode ser testado.
 Alternativa correta: 
a) (somente o item II 
é verdadeiro).
Questão 6
Enunciado (Enade 2008)
 Com relação ao algoritmo que manipula um vetor de inteiros, 
julgue os itens a seguir.
Afirmações
 Quando as variáveis I e J valerem, respectivamente, 0 e 1, a linha 
13 apresentará a sequência de valores 0, 2, 4, 3, 1.
 Quando as variáveis I e J valerem, respectivamente, 1 e 0, a linha 
13 apresentará a sequência de valores 0, 2, 3, 1, 4.
 Quando as variáveis I e J valerem, respectivamente, 1 e 2, a linha 
13 apresentará a sequência de valores 0, 2, 1, 3, 4.
Assinale a opção correta:
a) Apenas um item está certo.
b) Apenas os itens I e II estão certos.
c) Apenas os itens I e III estão certos.
d) Apenas os itens II e III estão certos.
e) Todos os itens estão certos.
Questão 7
Introdução teórica 
 O teste de mesa é um procedimento que simula a execução de 
um programa, sem utilizar o computador, apenas com lápis e 
papel (e borracha).
 Para tanto, devem identificar-se as variáveis a serem 
analisadas, as condições de teste e, por fim, montar-se uma 
tabela com esses itens e proceder a execução passo a passo 
do programa.
Questão 7
 Teste de mesa
Questão 7
Questão 7
 Quadro 1. Passo a passo
Passo Índices I e J e condição de 
parada de J
Teste SE 
V[J] > V[J+1]
Atualização de 
Valores
Vetor 
resultante
I J 3-I V[J] V[J+1] A V[J] V[J+1]
P1 0 0 3 2 0 2 0 2 V1
P2 0 1 3 2 4 - - - V2
P3 0 2 3 4 3 4 3 4 V3
P4 0 3 3 4 1 4 1 4 V4
P5 1 0 2 0 2 - - - V5
P6 1 1 2 2 3 - - - V6
P7 1 2 2 3 1 3 1 3 V7
Questão 7
 Quadro 2. Vetores resultantes
Vetor I,J 0 1 2 3 4
V0 inicio  [ 2 0 4 3 1 ]
V1 0,0  [ 0 2 4 3 1 ]
V2 0,1  [ 0 2 4 3 1 ]
V3 0,2  [ 0 2 3 4 1 ]
V4 0,3  [ 0 2 3 1 4 ]
V5 1,0  [ 0 2 3 1 4 ]
V6 1,1  [ 0 2 3 1 4 ]
V7 1,2  [ 0 2 1 3 4 ]
Questão 7
Questão 7
Análise dos itens 
I. Item correto. 
I , J = 0,1 ; V= [0, 2, 4, 3, 1]
II. Item correto. 
I , J = 1,0 ; V=[0, 2, 3, 1, 4]
III. Item correto 
I,I=1,2 ; V= [0,2,1,3,4]
 Alternativa correta: e) (todos os itens estão corretos).
Questão 7
INTERVALO
Enunciado (Enade 2008)
O código abaixo:
Questão 8
a) não apresenta erros de nenhum tipo.
b) apresenta erros de atribuição de tipo inválido, divisão por zero 
e expressão relacional inválida.
c) apresenta erros de atribuição de tipo inválido, divisão por zero 
e estrutura condicional.
d) apresenta erros de estrutura condicional e expressão 
relacional inválida.
e) apresenta somente erro de divisão por zero.
Questão 8
Introdução teórica 
 Númerosinteiros podem ser positivos ou negativos, porém sem 
casas decimais. Exemplos: 0, 2, -1.
 Números reais são aqueles que possuem casas decimais, 
podendo ser positivos ou negativos. Exemplos: 1.2, 15, -13.3, 0.
 Tipo literal, alfanumérico ou simplesmente string, é uma 
sequência de caracteres contendo letras, números e/ou símbolos 
especiais e, de regra, sempre entre aspas duplas. Exemplos: 
“Qual?”, “ “, “AbCdEfGhI”, “1+2=3”.
 Tipo lógico é usado para representar apenas dois valores 
possíveis: verdadeiro ou falso. Exemplo: T – true, verdadeiro, 
F – false, falso.
Questão 8
 Identificação dos tipos de variáveis.
Questão 8
Tipo de Dado Inteiro Real Literal Lógico
varA X
varB X
varC X
varF X
varS X
varL X
Trocas de dados e comparações
 Todo número inteiro é real, mas nem todo real é inteiro.
 Em princípio não podemos comparar tipos de dados diferentes 
sem efetuar uma conversão.
Questão 8
 Comparando uma string
com um valor numérico, 
logo é uma expressão 
relacional inválida.
 Divisão por zero, pois varC foi 
inicializado com zero na linha 11.
 Atribuição inválida, pois, 
de regra, ao dividir-se um 
número real por inteiro, o 
resultado é real, logo não 
poderia ser atribuído o 
resultado da operação a um 
inteiro.
 Inicialização das Variáveis.
 Declaração das variáveis.
Análise das alternativas
a) Alternativa incorreta. 
 Justificativa. Há vários erros.
b) Alternativa correta.
 Justificativa. Os três erros são apresentados nas linhas 13, 14 e 
16.
c) Alternativa incorreta.
 Justificativa. A expressão relacional é que está errada 
na linha 13.
Questão 8
a) não apresenta erros de nenhum tipo.
b) apresenta erros de atribuição de tipo inválido, divisão por zero e 
expressão relacional inválida.
c) apresenta erros de atribuição de tipo inválido, divisão por zero e 
estrutura condicional.
d) Alternativa incorreta.
 Justificativa. Faltou, por exemplo, identificar o erro de divisão 
por zero.
e) Alternativa incorreta.
 Justificativa. Faltou 
identificar os outros erros.
Questão 8
d) apresenta erros de estrutura condicional e expressão relacional 
inválida.
e) apresenta somente erro de divisão por zero.
Enunciado (Enade 2008)
 Os métodos de projeto e análise de algoritmos são necessários 
para o desenvolvimento de algoritmos 
eficientes, pois eles permitem que se resolvam problemas 
computacionais, reduzindo complexidade e tempo de execução. 
Acerca desses métodos, assinale 
a opção incorreta.
Questão 9
a) A abordagem de Divisão e Conquista propõe dividir o problema em 
vários subproblemas, resolvendo-os e combinando suas soluções 
para criar a solução final do problema original.
b) A Programação Dinâmica é uma técnica tipicamente aplicada 
a problemas de otimização em que pode haver várias 
soluções possíveis.
c) O método Guloso nem sempre encontra a solução ótima, mas faz 
sempre a melhor escolha momentânea.
d) A Programação Dinâmica e o Método Guloso têm em comum o fato 
que se aplicam a problemas em que se observa a existência de 
sobreposição de subproblemas, ou seja, subproblemas que 
se repetem.
e) Os métodos de Divisão e Conquista e Programação Dinâmica 
apresentam a mesma eficiência quando resolvem problemas 
combinando soluções de subproblemas dependentes uns 
dos outros.
Questão 9
Introdução teórica 
 Estratégia: é uma palavra com origem no termo grego strategia, 
que significa plano, método, manobras ou estratagemas usados 
para alcançar um objetivo 
ou resultado específico.
 Método de Divisão e Conquista.
 Programação Dinâmica.
 Método Guloso.
Questão 9
Método de Divisão e Conquista
 Divide o problema em duas ou mais partes, criando 
subproblemas menores. 
 Os subproblemas são resolvidos recursivamente, usando 
novas divisões e conquistas. 
 Caso os subproblemas sejam suficientemente pequenos, serão 
resolvidos de forma direta.
 Programação Dinâmica (PD) é uma estratégia de projeto de 
algoritmos, tipicamente empregada para resolver problemas de 
otimização (mas não só), pela análise de uma sequência de 
problemas mais simples do que o problema original.
A aplicação da PD baseia-se fundamentalmente naquele que é 
conhecido como Princípio de Otimalidade de Bellman:
 “Uma política de decisões ótimas só pode ser formada por 
subpolíticas ótimas.”
Questão 9
Análise
 O método Guloso é uma estratégia de projeto de algoritmos que 
tenta resolver o problema fazendo uma escolha que parece ser 
a melhor solução para o momento. A cada etapa encontra uma 
solução que parece a solução ótima para uma parte do 
problema presumindo que ao final encontrará a melhor solução 
para o problema global.
Questão 9
Análise das alternativas 
(assinale a opção incorreta)
a) Alternativa incorreta.
 Justificativa. Trata-se da 
definição clássica do método 
Divisão e Conquista.
b) Alternativa incorreta.
 Justificativa. A Programação 
Dinâmica aplica-se, 
principalmente, a problemas 
de otimização combinatória.
Questão 9
a) A abordagem de Divisão 
e Conquista propõe dividir 
o problema em vários 
subproblemas, resolvendo-os 
e combinando suas soluções 
para criar a solução final do 
problema original.
b) A Programação Dinâmica 
é uma técnica tipicamente 
aplicada a problemas de 
otimização em que pode haver 
várias soluções possíveis 
combinatória.
c) Alternativa correta.
 Justificativa. O método Guloso 
nem sempre faz a melhor opção 
momentânea. Ele escolhe um 
subconjunto do problema que satisfaça 
determinada restrição. Essa função 
viável é chamada de Solução Ótima, 
mas o algoritmo nem sempre tende 
para uma solução ótima. Somente 
alguns problemas, que possuem a 
propriedade de escolha gulosa, têm 
uma solução global ótima, alcançada a 
partir de um conjunto 
de soluções locais ótimas. 
Questão 9
c) O método Guloso nem 
sempre encontra a 
solução ótima, mas faz 
sempre a melhor 
escolha momentânea.
d) Alternativa incorreta.
 Justificativa. Os dois métodos 
podem trabalhar em 
subproblemas que se repetem.
e) Alternativa correta.
 Justificativa. Embora o método 
Divisão e Conquista resolva, 
recursivamente, problemas 
combinando subproblemas 
independentes, a Programação 
Dinâmica trata de subproblemas 
que não são necessariamente 
diferentes. Portanto, eles não 
apresentam a mesma eficiência.
Como há duas alternativas corretas 
(C e E), a questão foi anulada.
Questão 9
d) A Programação Dinâmica 
e o Método Guloso têm 
em comum o fato de que se 
aplicam a problemas em que 
se observa a existência 
de sobreposição de 
subproblemas, ou seja, 
subproblemas que se repetem.
e) Os métodos de Divisão e 
Conquista e Programação 
Dinâmica apresentam a 
mesma eficiência quando 
resolvem problemas 
combinando soluções de 
subproblemas dependentes 
uns dos outros.
INTERVALO
Enunciado (Enade 2008)
 O algoritmo representado pelo pseudocódigo está incompleto, 
pois faltam 3 linhas de código. A função busca desse algoritmo 
recebe um vetor ordenado de forma crescente e um valor a ser 
pesquisado. A partir disso, essa função verificará se o número 
armazenado no ponto mediano do vetor é o número procurado. 
Se for o número procurado, retornará o índice da posição do 
elemento no vetor e encerrará a busca. Se não for, a função 
segmentará o vetor em duas partes a partir do ponto mediano, 
escolherá o segmento no qual o valor procurado está inserido e 
o processo se repetirá. 
Questão 10
Alternativas
 A partir dessas informações, assinale a opção que contém os 
comandos que completam, respectivamente, as linhas 6, 8 e 12 
do algoritmo.
Questão 10
Introdução teórica 
 Sistemas de busca nunca estiveram com tanta evidência como 
atualmente.
 Quase todos os sites atuais fornecem alguma forma de busca 
de informação.
 Muitos possuem máquina de busca, as SEO (Search Engine
Optimization – Otimização para Ferramentas de Busca).
Questão 10Busca sequencial – vetor de inteiros desordenado
Exemplo:
 V[]=[ 13, 67, 1, 0, 100, 18, 7, 32, 9]
 Buscando pelo número-chave = 0 4 iterações (índice)
 Buscando pelo número-chave = 13 1 iterações (índice)
 Buscando pelo número-chave = 9 9 iterações (índice)
 Buscando pelo número-chave = 15 9 iterações (-1)
Questão 10
Algoritmos de ordenação
Métodos simples:
 Exemplo: Bubble sort – Ordenação Bolha.
Métodos complexos:
 Quicksort – desenvolvido em 1960, aproximadamente.
 Usa a estratégia de divisão e conquista para ser eficiente.
Questão 10
 Busca binária – em um vetor de inteiros ordenado.
 A cada iteração divide o vetor em duas partes e despreza uma.
 Começa sempre pelo meio do vetor.
Exemplo: buscando o número 56. 
 Índice inicial = 0, índice final = 8, índice metade = (8+0)/2=4.
 Nesse caso, acharia de imediato e retornaria índice 4.
Questão 10
Índice 0 1 2 3 4 5 6 7 8
Conteúdo 13 21 34 45 56 67 78 89 91
Exemplo: buscando o número 21. 
 Índice inicial = 0, índice final = 8, índice metade = (8+0)/2=4.
 Nesse caso, o valor procurado não está na posição 4.
 Então, no caso, vou buscar na metade inferior do vetor.
 Alterando apenas índice final = índice metade – 1 = 4 – 1 = 3.
 E refaço a operação.
Questão 10
Índice 0 1 2 3 4 5 6 7 8
Conteúdo 13 21 34 45 56 67 78 89 91
Exemplo: buscando o número 89. 
 Índice inicial = 0, índice final = 8, índice metade = (8+0)/2=4.
 Nesse caso, o valor procurado não está na posição 4.
 Então, no caso, vou buscar na metade superior do vetor.
 Alterando apenas índice inicial = índice metade + 1 = 4 + 1 = 5.
 E refaço a operação.
Questão 10
Índice 0 1 2 3 4 5 6 7 8
Conteúdo 13 21 34 45 56 67 78 89 91
Exemplo: buscando o número 200.
 Índice inicial = 0, índice final = 8, índice metade = (8+0)/2=4.
 Inicio a busca, vai acontecer do índice inicial ficar maior índice 
final, então, paro a busca e retorno, por exemplo, -1.
Questão 10
Índice 0 1 2 3 4 5 6 7 8
Conteúdo 13 21 34 45 56 67 78 89 91
Algoritmo da questão.
Entendendo o papel de cada variável no algoritmo C, F, K , M e V.
 C – contém o índice da posição inicial do vetor.
 F – contém o índice da posição final do vetor.
 K – contém o valor a ser pesquisado no vetor.
 M – contém o índice no ponto mediano do vetor, que é 
conseguido pela média entre C e F: (C + F)/ 2.
Questão 10
 V[M] – contém o valor do vetor no ponto médio em determinado 
momento.
Algoritmo de busca
 O algoritmo busca comparar o valor em V[M] com a variável K, 
que contém o valor a ser buscado. 
 Após entra no laço.
 É feita um operação 
que não sabemos.
 Depois vê-se que 
o índice final é 
alterado, ou seja, 
escolhendo para 
qual metade vai.
Questão 10
a) Alternativa correta.
INTERVALO
Enunciado (Enade 2008)
 Considerando a execução 
do algoritmo apresentada, 
faça o que se pede a 
seguir.
 Apresente os dados da 
matriz M ao término da 
execução da linha 12. 
 Apresente os dados da 
matriz M ao término da 
execução da linha 19. 
Questão 11 (discursiva)
Passo 1
 Identificar a variáveis
 M[0..2][0..3]
 É uma matriz de duas 
dimensões, um total de 
12 elementos 3x4
 I, J e C são variáveis 
inteiras.
Questão 11
Passo 2
 Perceber como é a 
estrutura aproximada do 
código.
 Temos dois pares de 
loops aninhados.
Questão 11
Questão 11
 Apresente os dados da 
matriz M ao término da 
execução da linha 12. 
 O ponto a ser observado é 
que a questão não solicita a 
verificação dos resultados ao 
final de cada loop. 
 Apresente os dados da 
matriz M ao término da 
execução da linha 19. 
Um ponto importante é 
presumir que as variáveis 
numéricas são inicializadas 
com zero. Portanto, a matriz 
bidimensional, após a linha 3, 
tem o seguinte formato:
 0 0 0 0
 0 0 0 0
 0 0 0 0
Questão 11
O valor inicial da variável C 
foi determinado como sendo 
zero.
Dentro do primeiro par de 
loops, a variável C é 
incrementada em 1.
A cada iteração do loop, 
o valor de C é atribuído
à matriz M.
Questão 11
Quadro 1. Evolução do 
processamento até a linha 12.
Portanto, a saída da matriz após a 
linha 12 é a seguinte:
 1 2 3 4
 0 0 0 0
 0 0 0 0
Questão 11
I J C M[I,J]
0 0 1 1
0 1 2 2
0 2 3 3
0 3 4 4
 Loop inferior.
 A matriz M chegará 
totalmente preenchida no 
par de loops inferiores.
 Exatamente com o 
incremento da variável C.
Questão 11
Quadro 2. Evolução do 
processamento até a linha 13.
Questão 11
I J C M[I,J]
0 0 1 1
0 1 2 2
0 2 3 3
0 3 4 4
1 0 5 5
1 1 6 6
1 2 7 7
1 3 8 8
2 0 9 9
2 1 10 10
2 2 11 11
2 3 12 12
Portanto, a matriz que é a 
entrada para o 
processamento 
do loop inferior é:
 1 2 3 4
 5 6 7 8
 9 10 11 12
Questão 11
 A atribuição é feita trazendo o 
dado que se encontra na 
posição M[2-I][3-J] para a 
posição M[I][J].
 1 2 3 4
 5 6 7 8
 9 10 11 12
 O ponto de atenção é o 
momento em que é pedida a 
visualização da matriz na linha 
19. 
Questão 11
 Como tanto I quanto J valem 0 (zero), nesse momento do 
processamento, a posição é M[2][3], porque 2-0=0 e 3-0=3. Essa 
é a posição de origem. A posição de destino é M[0][0].
O valor que se encontra em M[2][3] é 12. Esse valor será colocado 
em M[0][0]. Com isso, a matriz fica conforme abaixo:
 12 2 3 4
 5 6 7 8
 9 10 11 12
Questão 11
 Código escrito na Linguagem C comparado com o pseudocódigo.
 Com um break point, vê-se que nem sempre se pode presumir 
que a matriz é inicialmente zerada, depende do compilador 
essa ação.
Questão 11
 Com um break point, vê-se que o compilador (C#) zerou as 
variáveis bem como a matriz é inicialmente zerada.
Questão 11
 Com um break point, vê-se que o compilador (C#) zerou as 
variáveis bem como a matriz é inicialmente zerada.
Questão 11
Questão 11
O programa Java abaixo pode ser usado para verificar os 
resultados apresentados:
Questão 11
 Para ver o resultado do primeiro par de loop, execute o programa 
abaixo, que inclui a visualização da matriz no ponto exato após a 
linha 12.
package enade; 
public class Main { 
 public static void main(String[] args) { 
 int M[][] = new int[3][4]; 
 int c = 0; 
 for (int I = 0; I < 3; I++) { 
 for (int J = 0; J < 4; J++) { 
 c = c + 1; 
 M[I][J] = c; 
 } 
 System.out.println(M[0][0] + " " + M[0][1] + " " + M[0][2] + " " + 
M[0][3]); 
 System.out.println(M[1][0] + " " + M[1][1] + " " + M[1][2] + " " + 
M[1][3]); 
 System.out.println(M[2][0] + " " + M[2][1] + " " + M[2][2] + " " + 
M[2][3]); 
 System.out.println(" "); 
 return; 
 } 
 for (int I = 0; I < 3; I++) { 
 for (int J = 0; J < 4; J++) { 
 c = M[2 - I][3 - J]; 
 M[I][J] = c; 
 } 
 } 
 } 
} 
 Para ver o resultado do segundo par de loops, execute o 
programa a seguir, que inclui a visualização da matriz no ponto 
exato após a linha 19.
package enade; 
public class Main { 
 public static void main(String[] args) { 
 int M[][] = new int[3][4]; 
 int c = 0; 
 for (int I = 0; I < 3; I++) { 
 for (int J = 0; J < 4; J++) { 
 c = c + 1; 
 M[I][J] = c; 
 } 
 } 
 for (int I = 0; I < 3; I++) { 
 for (int J = 0; J < 4; J++) { 
 c = M[2 - I][3 - J]; 
 M[I][J] = c; 
 System.out.println(M[0][0] + " " + M[0][1] + " " + M[0][2] + " 
" + M[0][3]); 
 System.out.println(M[1][0] + " " + M[1][1] + " " + M[1][2] + " 
" + M[1][3]); 
 System.out.println(M[2][0] + " " + M[2][1] + " " + M[2][2] + " 
" + M[2][3]); 
 System.out.println(" "); 
 return; 
 } 
 } 
 } 
}ATÉ A PRÓXIMA!
Unidade I
ESTUDOS DISCIPLINARES
Formação Específica
Prof. André Luiz
 Várias técnicas relacionadas à programação extrema (XP) são 
diretamente ligadas ao código, incluindo a refatoração, 
programação em pares e integração contínua. A programação 
em pares é a prática preferida dos desenvolvedores XP 
trabalhando em pares em um computador.
A programação em pares auxilia no desenvolvimento de código de 
melhor qualidade quando os pares:
Questão 12 – Enunciado
Fonte: Enade 2011.
a) Elaboram e utilizam padrões de codificação conjuntamente, os quais, 
quando utilizados corretamente e apropriadamente, reduzem 
problemas individuais.
b) Estão acostumados ao desenvolvimento e à propriedade coletiva, 
limitando-se a fazer pequenas mudanças na ocorrência de erros 
em tempo de execução.
c) Minimizam os riscos de insucesso no projeto por meio da utilização 
de ferramentas para a geração automática de testes funcionais e 
protótipos de interface.
d) Escrevem testes em separado e discutem os resultados 
posteriormente, o que dá a eles a chance de se sintonizarem antes de 
começarem a implementação.
e) Trabalham em projetos complexos onde a codificação seja 
desenvolvida de forma conjunta, minimizando erros e 
agregando valor onde quer que o sistema necessite.
Questão 12 – Extreme Programming
 Princípios Básicos do XP:
 Feedback rápido
 Assumir a simplicidade
 Mudanças incrementais
 Abraçar a mudança
 Trabalho de qualidade
Extreme Programming (XP)
 Processo de Planejamento (Planning Game)
 Releases Curtos
 Metáfora
 Projeto (Design) Simples
 Testes
 Refactoring
 Gerenciar a qualidade
 Programação em Pares
 Propriedade Coletiva do Código
 Integração Contínua
 Semana de 40 Horas
 On-Site Customer (Cliente sempre presente)
XP – As 12 práticas
 Não haver nenhuma documentação do projeto.
 Trabalhar somente com recursos de nível sênior é mais 
caro e difícil.
 Difícil controle para projetos grandes.
 Software é construído para o “agora”.
 Mudança cultural.
XP – Problemas do processo
 O trabalho de elaboração de código e o trabalho da 
determinação dos padrões de codificação são feitos em 
conjunto, o que contribui para reduzir problemas individuais. 
Alternativa correta: A.
Análise da Questão
INTERVALO
 Um analista foi contratado para desenvolver um sistema de 
pesquisa de DVDs em lojas virtuais. O sistema deverá solicitar ao 
usuário um título de DVD, que será usado para realizar a pesquisa 
nas bases de dados das lojas conveniadas. Ao detectar a 
disponibilidade do DVD solicitado, o sistema armazenará 
temporariamente os dados das lojas (nome, preço, data prevista 
para entrega do produto) e exibirá as informações ordenadas por 
preço. Após analisar as informações, o cliente poderá efetuar a 
compra. O contratante deverá testar algumas operações do 
sistema antes de ele ser finalizado. Há tempo suficiente para que o 
analista atenda a essa solicitação e efetue eventuais modificações 
exigidas pelo contratante.
Com relação a essa situação, julgue os itens a seguir quanto ao 
modelo de ciclo de vida:
Questão 13 – Enunciado
Fonte: Enade 2008.
I. O entendimento do sistema como um todo e a execução 
sequencial das fases sem retorno produzem um sistema que 
pode ser validado pelo contratante.
II. A elaboração do protótipo pode ser utilizada para resolver 
dúvidas de comunicação, o que aumenta os riscos de 
inclusão de novas funcionalidades não prioritárias.
III. A definição das restrições deve ser a segunda fase a ser 
realizada no desenvolvimento do projeto, correspondendo à 
etapa de engenharia.
IV. Um processo iterativo permite que versões progressivas mais 
completas do sistema sejam construídas e avaliadas.
Estão certos apenas os itens:
a) I e II b) I e III c) II e III d) II e IV e) III e IV.
Processo Unificado – RUP
 As restrições de projeto são requisitos de sistema capturados 
durante a fase de requisitos, nas etapas de concepção e de 
elaboração do sistema, conforme o processo RUP (Rational 
Unified Process). 
 As restrições de projeto não podem ser confundidas com 
os objetivos do sistema, embora estejam diretamente 
relacionados. Um objetivo pode não ser alcançado devido 
a uma restrição que o limita ou o impede. Vejamos alguns 
exemplos:
 é objetivo do sistema permitir o acesso de fornecedores 
externos via internet, mas restrições de segurança não 
permitem.
RUP – Restrições
 o sistema tem de ler dados de um leitor de cartão de um modelo 
específico, mas o fabricante não fornece o driver necessário para o 
sistema operacional no qual o sistema será executado.
 O protótipo é uma simplificação do sistema a ser desenvolvido, 
feito para permitir ao usuário antever, verificar, experimentar e 
validar o sistema futuro antes que ele seja realmente construído. 
Pode ser usado:
 para a demonstração de uma visão do sistema aos usuários;
 para a validação dos requisitos;
 para a clarificação de requisitos vagos, imprecisos ou 
indefinidos;
 como meio de comunicação entre os membros da equipe e 
usuários.
RUP – Restrições
 Um processo iterativo e incremental é oposto ao antigo 
desenvolvimento sequencial. Cada passagem completa pelo 
processo é uma iteração, e cada nova iteração deve adicionar um 
ou vários novos incrementos. Desse modo, ao final de todas as 
iterações o sistema estará pronto. 
 Algumas vantagens do processo iterativo em relação ao processo 
sequencial são:
 redução dos riscos de se fazer toda uma etapa e não mais 
retornar a ela;
 aceleração no tempo de desenvolvimento porque serão 
trabalhados escopos menores e claros;
 possibilidade de sofrer menor impacto devido às constantes 
alterações e atualizações pedidas pelos usuários, facilitando a 
adaptação e mudança dos requisitos.
RUP – Restrições
I. Item incorreto.
 Justificativa. A execução sequencial das fases, sem retorno, 
não capturará as alterações e correções identificadas nas fases 
posteriores, sejam elas originadas internamente pelos usuários 
ou externamente por mudanças em legislações e regras.
II. Item correto.
 Justificativa. O protótipo facilita a resolução de dúvidas de 
comunicação, mas também dá ao usuário a oportunidade de 
criar novas necessidades (prioritárias ou não) porque ele tem 
uma antevisão do que será o sistema.
Análise da Questão
III. Item incorreto.
 Justificativa. Na etapa de engenharia o objetivo é ter uma visão 
global do sistema como um todo (incluindo hardware, software, 
equipamentos e pessoas envolvidas). O detalhamento das 
restrições é feito em etapas posteriores.
IV. Item correto.
 Justificativa. O item IV está correto porque o processo iterativo 
permite versões progressivas mais completas por meio de 
incrementos. A cada iteração, uma nova versão produtiva é 
completada e aproxima-se mais do objetivo final de 
desenvolvimento do produto.
Alternativa correta: D.
Análise da Questão
INTERVALO
 O Rational Unified Process (RUP) é um processo de engenharia 
de software cujo objetivo é assegurar a produção de software
de alta qualidade, satisfazendo as necessidades dos usuários 
no prazo e nos custos previstos. O RUP contém uma estrutura 
que pode ser adaptada e estendida, pois é formado por duas 
estruturas principais, denominadas dimensões, que 
representam os aspectos dinâmicos e estáticos do processo. O 
aspecto dinâmico é expresso em ciclos, fases, iterações e 
marcos. O estático, por sua vez, contém as disciplinas, os 
fluxos, os artefatos e os trabalhadores. 
 Com base na iteração do RUP, julgue as asserções a seguir.
Questão 14 – Enunciado
Fonte: Enade 2008.
 A cada iteração das fases do RUP geram-se ou não artefatos de 
software 
PORQUE
 Os artefatos produzidos dependem da ênfase que é dada a cada 
disciplina.
 Assinale a opçãocorreta.
Questão 14
a) As duas asserções são proposições verdadeiras e a segunda é 
uma justificativa correta da primeira.
b) As duas asserções são proposições verdadeiras e a segunda 
não é justificativa 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 são proposições falsas.
Questão 14
 Baseado em casos de uso
 Centrado em arquitetura
 Modela o software utilizando a UML
 Desenvolve software iterativamente
 Gerencia requisitos
 Verificação contínua da qualidade
Processo Unificado – Características
Processo Unificado – RUP
Fonte: Livro-texto.
 Uma iteração inclui as atividades de desenvolvimento que levam à 
liberação de um produto – uma versão do produto estável e 
executável junto com qualquer outro elemento periférico 
necessário para usar esse release. Logo, uma iteração de 
desenvolvimento pode ser comparada a uma passagem completa 
por todas as disciplinas, ou, pelo menos, requisitos, análise e 
design, implementação e teste. Os critérios de avaliação são 
estabelecidos quando cada iteração é planejada. O release planeja 
a capacidade demonstrável. A duração de uma iteração depende 
do tamanho e da natureza do projeto, mas é provável que diversos 
builds sejam construídos em cada iteração, do modo especificado 
no plano de integração do build para a iteração.
Processo Unificado – RUP
 A cada iteração, os artefatos são atualizados, de maneira similar a 
um software “em crescimento”. Em vez de desenvolver artefatos 
uns após os outros, como em um pipeline, eles são desenvolvidos 
por meio do ciclo, apesar 
das taxas diferentes.
 Um artefato é um produto de trabalho final ou intermediário 
produzido e usado durante o projeto. Pode ser um documento ou 
um modelo, como o Documento de Arquitetura de Software, as 
Especificações Suplementares e o Diagrama de Caso de Uso.
 Os artefatos são utilizados nas disciplinas do RUP. Uma disciplina 
mostra todas as atividades que devem ser realizadas para produzir 
determinado conjunto de artefatos.
Processo Unificado – RUP
 Vantagens:
 Tolerância às mudanças de requisitos.
 Elementos de um software são integrados progressivamente 
 Incorpora formalmente a gerência de projeto ao ciclo.
 Problema:
 Cliente não aceita o processo iterativo.
 Complexidade de suas fases e fluxos.
 Indispensáveis que os profissionais sejam capacitados 
no processo.
Processo Unificado – RUP
I. Asserção falsa.
 Justificativa. A cada iteração, geram-se vários artefatos. 
Não são opcionais, são mandatórios.
II. Asserção verdadeira.
 Justificativa. Cada artefato é escolhido em função da ênfase ou 
do peso de cada disciplina. Projetos de curta duração não 
gerarão vários artefatos, que seriam produzidos em um projeto 
com alguns anos de duração. Portanto, a quantidade de 
artefatos pode variar dependendo do ciclo de vida empregado, 
que pode ser incremental, evolutivo, liberação incremental ou 
design principal.
Alternativa correta: D.
Análise das Asserções
INTERVALO
Com relação à forma como o RUP trata a análise de requisitos, assinale a 
opção correta.
a) A análise de requisitos ocorre na fase de construção, quando são 
descritos todos os casos de uso, e em seguida modelados por meio 
de diagramas de casos de uso UML.
b) A análise de requisitos ocorre na fase de elaboração, em que são 
feitas entrevistas com usuários e definição do escopo do projeto.
c) A maior parte da análise de requisitos ocorre durante a fase de 
elaboração.
d) Por se tratar de um processo iterativo e evolutivo, a análise de 
requisitos ocorre na fase de construção juntamente com a 
programação, o que permite que os requisitos sejam revistos.
e) A análise de requisitos deve acontecer antes da programação e testes 
do sistema, não podendo sofrer alterações a partir do momento que 
estejam definidos.
Questão 15 – Enunciado
Fonte: Enade 2008.
 A análise de requisitos ocorre durante todo o ciclo de vida de 
software do RUP, mas com diferente ênfase em cada fase. A 
maior parte do trabalho referente a requisitos ocorre nas fases 
de iniciação e elaboração. Mas é na fase de elaboração que 
ocorre a maior quantidade de trabalho. Na fase de construção e 
na fase de transição o trabalho decresce muito.
 A meta da fase de iniciação é atingir o consenso dos 
envolvidos sobre os objetivos do ciclo de vida do projeto. 
Um de seus objetivos principais é estabelecer o escopo do 
software do projeto e as condições limite, incluindo uma visão 
operacional, critérios de aceitação e o que deve ou não estar no 
produto.
RUP – Requisitos
 A meta da fase de elaboração é assegurar que os planos de 
projeto traçados, a arquitetura e os requisitos estejam estáveis o 
suficiente para autorizar a programação e o desenvolvimento. 
Estabelece uma compreensão sólida dos casos de uso mais 
críticos que conduzem às decisões de arquitetura e de 
planejamento. 
 Na fase de elaboração, são feitas várias atividades em requisitos, 
dentre elas a descrição detalhada dos fluxos de eventos dos 
casos de uso de maneira que os clientes e usuários possam 
compreender.
 A meta da fase de construção é esclarecer os requisitos restantes 
e concluir o desenvolvimento do sistema com base na arquitetura 
baseline escolhida. Um de seus objetivos principais é atingir 
versões úteis do produto com qualidade, eficiência e rapidez. 
RUP – Requisitos
 Conforme o RUP, as finalidades da disciplina requisitos são:
 estabelecer e manter concordância com os clientes e outros 
envolvidos sobre o que o sistema deve fazer;
 oferecer aos desenvolvedores do sistema uma compreensão 
melhor dos requisitos do sistema;
 definir as fronteiras do sistema (ou delimitar o sistema);
 fornecer uma base para planejar o conteúdo técnico das 
iterações;
 fornecer uma base para estimar o custo e o tempo de 
desenvolvimento do sistema;
 definir uma interface de usuário para o sistema, focando nas 
necessidades e metas dos usuários. 
RUP – Requisitos
a) Alternativa incorreta.
 Justificativa. A análise de requisitos ocorre em todas as fases do 
RUP, majoritariamente na elaboração. Alguma análise de 
requisitos ocorre na fase de construção, mas é muito reduzida se 
comparada com a fase de elaboração. A descrição de todos os 
casos de uso é feita na elaboração, bem como a subsequente 
modelagem destes casos de uso no diagrama correspondente.
b) Alternativa incorreta.
 Justificativa. A análise de requisitos também (e principalmente) 
ocorre na fase de elaboração. Nessa fase, são conduzidas 
entrevistas com os usuários para o esclarecimento e o 
detalhamento dos casos de uso. A definição do escopo do projeto 
é feita na fase de iniciação.
Análise das alternativas
c) Alternativa correta.
 Justificativa. A maior parte da análise de requisitos é realmente 
feita na fase de elaboração, com algumas alterações e 
complementos realizados em fases posteriores.
d) Alternativa incorreta.
 Justificativa. A análise de requisitos é um processo iterativo e 
evolutivo, ocorrendo em todas as fases, majoritariamente na 
elaboração. Alguns requisitos podem ser revistos na fase de 
construção, mas eles não ocorrem nesta fase em paralelo com 
a programação. 
Análise das alternativas
e) Alternativa incorreta.
 Justificativa. A análise de requisitos ocorre antes da 
programação e de testes do sistema. Mas eles podem sofrer 
alterações em fases posteriores porque requisitos sofrem 
modificações tanto por parte dos usuários (modificações do 
negócio) quanto externamente (alterações de leis e 
regulamentos).
Análise das alternativas
 PRESSMAN, R. S. Engenharia de software. 6. ed. São Paulo: 
McGraw-Hill, 2006. 
 SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: 
Pearson, 2007.
 KRUCHTEN, P. Introduçãoao RUP. São Paulo: Ciência 
Moderna, 2003. 
Indicações Bibliográficas
ATÉ A PRÓXIMA!

Continue navegando