Prévia do material em texto
Unidade I
ESTUDOS DISCIPLINARES
Formação Especifica
Prof. Angel Martinez
Questão 1
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
Diagrama de Venn ou Diagrama de Euler
1
2
A B
Questão 1
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}
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)
Questão 1
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.
INTERVALO
Questão 2
Enunciado (Enade 2011)
Com relação ao valor lógico, avalie as afirmações a seguir:
I. ¬ (p ^¬q)
II. p(qp)
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.
p ¬p
V F
F V
Questão 2
Conjunção (^).
Considerando duas proposições p e q, a conjunção é dada por
p^q. Sua tabela verdade está mostrada a seguir.
p q p^q
V V V
V F F
F V F
F F F
Questão 2
Disjunção (v).
Considerando duas proposições p e q, a disjunção é dada por
pvq. Sua tabela verdade está mostrada a seguir.
p q pvq
V V V
V F V
F V V
F F F
Questão 2
Condicional ()
Considerando duas proposições p e q, a condicional é dada
por pq. Sua tabela verdade está mostrada a seguir.
p q pq
V V V
V F F
F V V
F F V
Questão 2
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.
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
Questão 2
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.
p q qp p(qp)
V V V V
V F V V
F V F V
F F V V
Questão 2
Resposta
Alternativa correta: b).
p q qp p(qp)
V V V V
V F V V
F V F V
F F V V
Questão 2
III. Afirmativa incorreta.
Justificativa. Vejamos a tabela verdade a seguir.
A expressão lógica é uma contingência.
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
Questão 2
IV. Afirmativa incorreta.
Justificativa. Vejamos a tabela verdade a seguir.
A expressão lógica é uma contingência.
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
Questão 2
Resposta
Alternativa correta: b).
p q qp p(qp)
V V V V
V F V V
F V F V
F F V V
INTERVALO
Questão 3
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
p ¬p
V F
F V
p q pvq
V V V
V F V
F V V
F FF
p q pq
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
Questão 3
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.
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
Questão 3
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).
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
Questão 3
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.
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
Questão 3
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.
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
Questão 3
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.
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
Questão 4
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.
INTERVALO
Questão 5
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)
Considere que, em uma estrutura de
dados tipo pilha “p”, inicialmente
vazia, sejam executados os seguintes
comandos:
Questão 5
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 estruturasde 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
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
Questão 5
Pilha
Pilha é uma estrutura de dados, isto é, uma forma particular
de 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:
Inicio
Rotina 1
Fim
Rotina 1
Rotina 2
Fim
Rotina 2
Processamento
Fim
Início
Questão 5
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.
Índice 0 1 2 3 4 5 6 7 8
Conteúdo 13 21 34 45 56 67 78 89 91
Questão 5
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.
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
Questão 6
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.
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
Questão 6
Arquivos Objeto
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
Questão 6
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).
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.
Questão 7
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 seremanalisadas, 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
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
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).
INTERVALO
Questão 8
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úmeros inteiros 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.
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
Questão 8
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.
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.
Questão 8
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.
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.
Questão 9
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.
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.
Questão 9
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.
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.
Questão 9
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.
c) O método Guloso nem
sempre encontra a
solução ótima, mas faz
sempre a melhor
escolha momentânea.
Questão 9
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.
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
Questão 10
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 10
Busca 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.
Índice 0 1 2 3 4 5 6 7 8
Conteúdo 13 21 34 45 56 67 78 89 91
Questão 10
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.
Índice 0 1 2 3 4 5 6 7 8
Conteúdo 13 21 34 45 56 67 78 89 91
Questão 10
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.
Índice 0 1 2 3 4 5 6 7 8
Conteúdo 13 21 34 45 56 67 78 89 91
Questão 10
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.
Í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.
Questão 10
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.
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.
Questão 10
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.
a) Alternativa correta.
INTERVALO
Questão 11 (discursiva)
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
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
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.
Questão 11
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
I J C M[I,J]
0 0 1 1
0 1 2 2
0 2 3 3
0 3 4 4
Questão 11
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.
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
Questão 11
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
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
Questão 11
O programa Java abaixo pode ser usado para verificar os
resultados apresentados:
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
Questão 12 – Enunciado
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:
Fonte: Enade 2011.
Questão 12 – Extreme Programming
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.
Extreme Programming (XP)
Princípios Básicos do XP:
Feedback rápido
Assumir a simplicidade
Mudanças incrementais
Abraçar a mudança
Trabalho de qualidade
XP – As 12 práticas
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 – Problemas do processo
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.
Análise da Questão
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.
INTERVALO
Questão 13 – Enunciado
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:
Fonte: Enade 2008.
Processo Unificado – RUP
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.
RUP – Restrições
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.
Análise da Questão
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.
INTERVALO
Questão 14 – Enunciado
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.
Fonte: Enade 2008.
Questão 14
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ção correta.
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.
Processo Unificado – Características
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 – RUP
Fonte: Livro-texto.
Processo Unificado – RUP
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.
Análise das Asserções
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.
INTERVALO
Questão 15 – Enunciado
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.
Fonte: Enade 2008.
RUP – Requisitos
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.
Análise das alternativas
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).
Indicações Bibliográficas
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ção ao RUP. São Paulo: Ciência
Moderna, 2003.
ATÉ A PRÓXIMA!