Arquivo da categoria: INFORMÁTICA

Resolução da Questão 66 de 2012

Sei que ler todas as “quase 400 páginas” é importantíssimo e saber bem os conceitos apresentados por Sommerville em seu livro sobre “Engenharia de Software”, até mesmo pelo Pressman também, mas aqui vai mais uma dica de como poderemos fazer uma questão dessas, claro se vier do mesmo jeito que veio ano passado.

 Questão 66 de 2012

 Com relação à área de Engenharia de Software, considere os seguintes modelos de processo:

I – XP (Extreme Programming)

II – BPM (Business Process Management)

III – FDD (Feature Driven Development)

IV – CRYSTAL

V – PMI (Project Management Institute)

São considerados modelos ágeis de processo em desenvolvimento de software:

(A) I, II e V.      (B) II, IV e V.     (C) II, III e IV.     (D) III e V.     (E) I, III e IV.

 

Pessoal usem o que sabem, por exemplo:

BPM = Gerenciamento de Processos de negócio → nada a ver com desenvolvimento de software.

PMI = Gerenciamento de projetos → Técnica de construção e controle de projetos.

 

Então se eliminarmos as duas das alternativas temos:

 

Letra A → não será, pois coloca a II entre as respostas certas;

Letra B → Não será pela mesma razão da A;

Letra C → Não será Pela mesma razão da A;

 

Ficamos então com a “D” e a “E”, sabendo que XP quer dizer programação extrema, provavelmente seria um processo ágil de desenvolvimento (e é) então na:

 

Letra D → Não será, pois falta colocar a alternativa I, então:

 

Resposta certa, alternativa E.

Espero ter ajudado alguém.

 

 

 

 

 

Resolução da Questão 67 de 2012

Bom pessoal, fiquei um pouco afastado, pois são muitas matérias a estudar, haja vista que sabemos que este concurso é muito puxado. Não sei se estou ajudando alguém, pois não tenho recebido recados sobre minhas postagens, mas sabendo que treinar é bom e compartilhar conhecimento é ainda melhor, vamos a mais uma resolução de questão.

Questão 67 de 2012

 Com relação à análise por ponto de função, técnica ou métrica, pela qual é possível medir o tamanho de um software a partir de suas funcionalidades e levando em consideração o ponto de vista do usuário, suponha que um determinado sistema apresente uma quantidade de pontos de função total e não ajustados iguais, respectivamente, a 1200 e 1500. Neste caso, qual seria o valor

do somatório de seu nível de influência (Fl)?

(A) 8

(B) 12

(C) 15

(D) 20

(E) 30

 Resolução → lembrando das seguintes fórmulas:

 FA = 0,65 + (0,01*NI); e

PFA = PFB * FA

Sabendo que:

FA= Fator de Ajuste

PFA = Ponto de Função Ajustado

PFB = Ponto de Função Bruto

NI = Nível de Influência

Já podemos fazer a questão, pois ele nos dá:

Ponto de função total = Ponto de Função Ajustado → 1200

Ponto de função não ajustados = ponto de função bruto → 1500

NI → ?

Jogando nas fórmulas teremos:

PFA = PFB * FA → PFA/PFB = FA → 1200/1500 = FA → 0,8 = FA

 

FA = 0,65 + (0,01 * NI) → 0,8 – 0,65 = 0,01 * NI → 0,15/0,01 = NI → 15

 

NI = 15, alternativa correta letra C

Espero ter ajudado alguém.

Resolução da questão 11 de 2008

Obs: O espaço que dei entre os grupos de colchetes (“[ ] [ ]”) não deve existir. Fi-lo apenas porque o segundo grupo de colchetes sempre estava sendo exibido na linha de baixo aqui no post quando eu nao dava o espaço entre eles. Portanto, fiquem atentos a isso.

Eis a questão:

11. Considere a seguinte declaração em linguagem C:

 

int a[ ] [3] = {1,2,3,4,5,6,7,8,9,10,11,12};

 

A instrução printf ( “%d”, *(a[1]+2)) irá retornar o valor:

(A) 2

(B) 3

(C) 5

(D) 6

(E) 10

 

Esse é o tipo de questão que refina nossos conhecimentos ao extremo e é por isso que as provas antigas da EsFCEx, em minha humilde opinião, eram extremamente difíceis. Essa questão exige muito conhecimento sobre vetores e ponteiros em C. Se você não domina esses assuntos, de uma olhadinha no livro “Estrutura de Dados usando C”. Ele pode auxiliar muito.

Vou tentar explicar como resolvê-la.

Quando declaramos o vetor int a[ ] [3] = {1,2,3,4,5,6,7,8,9,10,11,12};

estamos dizendo que teremos um vetor bidimensional (linhas x colunas) de 3 colunas. Só temos definida a quantidade de colunas, pois a mesma é representada pelo segundo grupo de colchetes “[3]”.

Não sabemos quantas linhas esse vetor tem, pois os colchetes que representam as linhas está em branco “[ ]”. O compilador então vai determinar isso na inicialização do vetor.

Então entendo que ele vai dividir tudo isso entre as chaves “{1,2,3,4,5,6,7,8,9,10,11,12}” em grupos de 3 colunas, para determinar as linhas, assim teremos 4 linhas.

Em tese, essa inicialização seria a mesma coisa que declarar:

int a[4] [3] = {1,2,3,4,5,6,7,8,9,10,11,12};

ou

int a[4] [3] = {(1,2,3),(4,5,6),(7,8,9),(10,11,12)};

Beleza até aqui… bom, vamos ao comando print da questão:

printf (“%d”, *(a[1] + 2));

 

Esse “*” serve pra identificar o valor que há dentro de um campo sendo apontado.

Segundo os materiais que consultei, temos as seguintes deduções:

*(a) = a[ ] = a[0]

*(a + 1) = a[1]

*(a + 2) = a[2]

*(a + 3) = a[3]

darei um exemplo:

considere o vetor vet[4] = {200, 10, 5, 1500};

Assim:

vet[0] = 200

vet[1] = 10

vet[2] = 5

vet[3] = 1500

Até ai é beleza, o problema vem na interpretação abaixo.

De acordo com a notação de ponteiros temos que:

 

vet[0]  = *(vet) = *(vet + 0) = 200

vet[1]  = *(vet + 1) = 10

vet[2]  = *(vet + 2) = 5

vet[3]  = *(vet + 3) = 1500

 

Esse raciocínio é para um vetor unidimensional. Porém temos nessa questão um vetor bidimensional.

No caso do exercício da prova, cada linha tem 3 colunas certo?

Independente de o vetor ser uni, bi, tri ou multidimensional, ele sempre vai ser organizado sequencialmente na memória.

Se considerarmos uma organização sequencial desses números teríamos que na posição:

Explicação

0 temos o número 1, na 1 temos o número 2, na 2 temos o número 3 <fim da primeira linha>

3 temos o número 4, na 4 temos o número 5, na 5 temos o número 6 <fim da segunda linha>

e o raciocínio continua até o fim de quarta linha.

Então, se estamos tratando de um vetor bidimensional, quando dizemos a[1] estamos dizendo que na notação de ponteiros temos:

* (  * (a + 1) + 0 ) que quer dizer * (  * (a + <numero da linha>) + <numero da coluna> ) isso porque agora estamos lidando com 2 dimensões no vetor.

Se fossemos traduzir de um modo grosseiro isso tudo, já que todo o vetor, independente de uni ou multidimensional é organizado sequencialmente, poderíamos dizer que:

a[1] ou *(a + 1) é a posição 3 do vetor (ver explicação). Mas ainda não estamos considerando o número das colunas. Se quiséssemos acessar o segundo elemento da segunda linha teríamos que somar mais duas posições à posição 3. Assim teríamos a posição 5, que é igual a 6

Quando você diz para o compilador, num vetor bidimensional, vá para a[0], ele irá para a posição 0… vá para a[1], ele irá para a posição 3… quando disser vá para a[2], ele irá para a posição 6, vá para a[3], ele irá para a posição 9…  colocando agora as colunas em jogo também, temos que quando dissermos vá para a[0] [0], ele irá para a posição 0… vá para a[0] [1], ele irá para a posição 1… a[0] [2], ele irá para a posição 2…
a[1] [0], ele irá para a posição 3… a[1] [1], ele irá para a posição 4…   a[1] [2], ele irá para a posição 5…  etc etc etc

tudo isso para te explicar aquilo que escrevi acima, que:

* (  * (a + <numero da linha>) + <numero da coluna> )

é o modo de se caminhar no vetor através de ponteiros, em vetores bidimensionais.

Ou seja:

a[0] [0] = * (  * (a + 0 ) + 0 )

a[2] [1] = * (  * (a + 2 ) + 1 )

a[1] [0] = * (  * (a + 1 ) + 0 )

etc…

é confuso pra caramba… pelo menos eu acho… mas espero que tenham entendido… porque eu demorei quase 1 dia pra entender, rs

Vamos à questão:

printf (“%d”, *(a[1] + 2));

a[1] = *(a + 1) então temos printf (“%d”, *(*(a + 1) + 2)); Exatamente o método de ir para linha e coluna em vetores bidimensionais através do valor dentro dos ponteiros.

*(a + 1) = linha 1 = 4,5,6 (se déssemos um printf nisso iríamos obter apenas o número 4)

*(*(a + 1) + 2) =  linha 1 coluna 2

 

col 0         col 1      col2

linha 0         ——>                     1             2             3

linha 1         ——>                     4             5             6

linha 2         ——>                     7             8            9

linha 3         ——>                     10           11         12

 

Resposta D = 6

 

 

Abraços

Resolução da Questão 9 de 2008

Existe caminhamento em árvores binárias da seguinte forma:

 

PRÉ-ORDEM, EM-ORDEM e PÓS-ORDEM.

 

Em árvores binárias temos os nós filhos, os pais e a raiz.

Tipo, na árvore abaixo a raiz é a letra (nó) A e os nós B e C são filhos de A, beleza?

 

Então o caminhamento em árvore binária segue as seguintes ordens, OU SEJA, FAZ PRIMEIRO:

 

1ª REGRA – PRÉ-ORDEM ->  RAIZ, ESQUERDA e DIREITA;

2ª REGRA – EM-ORDEM -> ESQUERDA, RAÍZ e DIREITA; E

3ª REGRA – PÓS-ORDEM -> ESQUERDA, DIREIRA e RAIZ.

Vamos criar um memento para o que a questão quer e eu vou fazer de uma forma prática de compreensão.

 

Vamos à questão: 09 de 2008

 

Assinale a alternativa que representa uma ordem de caminhamento do tipo EM ORDEM para a árvore abaixo.

 

(A)     D – B – A – E – G – C – H – F – I

(B)     A – B – C – D – E – F – G – H – I

(C)     A – B – D – C – E – G – F – H – I

(D)     D – B – G – E – H – I – F – C – A

(E)     D – B – A – G – E – C – H – F – I

 

Ela quer caminhamento em árvore binária EM-ORDEM, então usaremos a 2ª REGRA, OU SEJA:

ESQUERDA, RAÍZ e DIREITA.

 

Montando a historinha, LEMBRE-SE SÓ LEMOS DADOS QUANDO FALARMOS RAIZ.

 

Começando da raiz da árvore, olhe para o nó “A” ele tem algo na ESQUERDA? SIM. ENTÃO VAMOS PARA LÁ.

 

Olhe para o nó “B”, ele tem algo na ESQUERDA? SIM. ENTÃO VAMOS PARA LÁ.

 

Olhe para o o nó “D” ele tem algo na ESQUERDA? NÃO. ENTÃO VAMOS PARA A RAÍZ. QUEM É A RAIZ? O NÓ “D”, ENTÃO O GUARDAMOS:

 

D

 

Olhemos agora para a DIREITA DO “D”, TEM ALGO? NÃO. ENTÃO VAMOS PARA O NÓ SUPERIOR, do qual JÁ VIEMOS DA ESQUERDA, ENTÃO QUANDO VOLTARMOS PARA ELE ESTAMOS FAZENDO A LEITURA DA RAÍZ ENTÃO O GUARDAMOS:

 

D – B

 

Olhe para a DIREITA DE “B” TEM ALGO LÁ? NÃO. ENTÃO VAMOS PARA O NÓ “A”, DA QUAL JÁ VIEMOS DA ESQUERDA, ENTÃO ESTEREMOS LENDO O NÓ RAIZ, ENTÃO O GUADAMOS:

 

D – B – A

 

Agora olhe para a DIREITA DE “A”, TEM ALGO, SIM. ENTÃO VAMOS. CHEGAMOS EM “C”, TEM ALGO NA ESQUERDA DE “C”? SIM. ENTÃO VAMOS PARA LÁ.CHEGANDO EM “E”, TEM ALGO A ESQUERDA DE “E”? NÃO. ENTÃO DEVEREMOS, DE ACORDO COM A 2ª REGRA LER A RAIZ E GUARDA-LA:

 

D – B – A – E

 

JÁ SABEMOS QUE A RESPOSTA CERTA É A LETRA A, MAS VAMOS ATÉ ACABAR A ÁRVORE.

 

DEPOIS DE LER A RAIZ “E”, TEM ALGO À SUA DIREITA? SIM. ENTÃO VAMOS PÁRA LÁ. CHEGANDO EM “G” TEM ALGO À ESQUERDA DE “G”? NÃO. ENTÃO VAMOS LER E GUARDAR A RAÍZ:

 

D – B – A – E – G

  

TEM ALGO À DIREITA DE “G”? NÃO. ENTÃO VOLTEMOS A RAÍZ. A RAIZ JÁ FOI LIDA? SIM PASSAMOS PARA A RAIZ SUPERIOR. A RAIZ “C”, DEVEMOS GUARDA-LA:

 

D – B – A – E – G – C

 

HÁ ALGO À DIREITA DE “C’? SIM. ENTÃO VAMOS PARA LÁ.

 

CHEGANDO EM “F”. HÁ ALGO À ESUQRDA DE “F’? SIM. ENTÃO VAMOS PARA LÁ.

 

CHEGANDO EM “H”, TEM ALGO À ESQUERDA DE “H’? NÃO. ENTÃO VOLTAMOS À RAIZ QUE É O “H” E O GUARDAMOS:

 

D – B – A – E – G – C – H

 

HÁ ALHO À DIREITA DE “H”? NÃO. ENTÃO VAMOS PARA A RAIZ “F”, QUE DEVERÁ SER GUARDADA:

 

D – B – A – E – G – C – H – F

 

E FINALMENTE VAMOS PARA O NÓ “I” QUE NÃO TEM NADA NA SUA ESQUERDA E IRÁ LER “I” FICANDO O CAMINHAMENTO ASSIM:

 

D – B – A – E – G – C – H – F – I

 

ALTERNATIVA CORRETA – > LETRA A.

 

ESPERO TER AJUDADO A TODOS. VAMOS À LUTA.

 

 

 

 

Resolução da Questão 54 de 2009

Vamos brincar um pouco com aritmética binária? Bom caiu em várias provas então isso é ponto que não se deve perder de maneira alguma.

 Questão 54 de 2009

 Convertendo o número 1000,0101b para decimal (em que b indica que o número está em binário), obteremos:

 (A) 4,3125      (B) 4,5      (C) 8,25      (D) 8,3125      (E) 8,5

Fazendo as conversões de forma separada temos que calcular a parte inteira primeiro depois a parte fracionária, vamos lá:

 Parte inteira 1000 →8, já não marcaríamos as letras A e B,

 Agora vamos para a parte fracionária,

,0101 → 2-¹ . 0 + 2-² .1 + 2-³.0 + 2-⁴ .1 → 0 + 0,25 + 0 + 0,0625 = 0,3125

Concatenando as parte temos o número 8,3125, alternativa D.

Espero ter ajudado!

Resolução da Questão 40 de 2012

Quanto mais a gente estuda, mas a gente sabe que tem que estudar mais, não é pessoal?

Tento seguir sempre o ensinamento de Isaac Newton, no qual ele fala “Vejo, o que vejo, pois subi nos ombros de gigantes”

Em mais uma resolução voltada para a aritmética binária, vamos resolver a questão abaixo:

Questão 40 de 2012

Considerando a aritmética binária, a operação A << B representa o deslocamento de “B” bits à esquerda sobre um número “A” binário. A alternativa que representa uma fórmula matemática equivalente ao resultado final sobre esta mesma operação, porém em uma base decimal é

(A) A / 2^B       (B) 2^B / A       (C) 2^B x A       (D) B^A       (E) A^B

Vamos lá, sabendo-se que esse tal de encaminhamento é: Inserir zeros, em fila, onde os sinais apontam (sempre são duas setas, que são os sinais de maio > e menor < ).

Olhando para a questão ele vai inserir zeros no sentido: da direita para a esquerda.

Se imaginássemos um número, tipo 5 em decimal que fica 0101 em binário e quiséssemos inserir 2 bits (0) a esquerda, ficaríamos com o número 010100 que em decimal é 4 + 16 = 20, então vamos olhar as alternativas:

(A) A / 2^B → 5 / 2² → 5 / 4 → nunca vai dar o valor 20

(B) 2^B / A → 2² / 5 → 4 / 5 → nunca vai dar o valor 20

(C) 2^B x A → 2² x 5 → 4 x 5 = 20 → Resposta certa letra C.

Podem conferir o gabarito!

Espero ter ajudado.

Resolução da Questão 63 de 2011

Estruturas de dados são questões que podem cair na prova do ano que vem, pois sempre elas estão aparecendo, e não é muito interessante sabermos alguns conceitos ou mesmo resolver algumas questões referentes a pilhas, filas e árvores, vamos a uma que caiu em uma prova?

                             Questão 63 de 2011

                            Sabe-se que T é uma estrutura de dados do tipo PILHA e as operações PUSH (s) e POP(s) são comandos respectivos para  empilhar  e  desempilhar  um  bit “s” (0 ou 1) nesta estrutura. Supondo-se que o conjunto de bits armazenados na estrutura T representa um número binário qualquer, cujo bit menos significativo é o elemento de base da pilha e o bit mais significativo é o elemento de topo, a realização da operação PUSH (1):

(A) divide por 2 o valor binário anteriormente armazenado na pilha.

(B) soma 1 ao valor binário anteriormente armazenado na pilha.

(C) multiplica por 2 o valor binário anteriormente armazenado na pilha.

(D) soma 2^n-1 ao valor binário anteriormente armazenado na pilha, sendo “n” a quantidade atual de elementos da pilha após a operação efetuada.

(E) diminui em 2^n-1 o valor binário anteriormente armazenado na pilha, sendo “n” a quantidade atual de elementos da pilha após a operação efetuada.

Gente, o que é uma pilha? É só lembrar da pilha de pratos que a gente lava todo o dia para a nossa esposa (para as mulheres da área de TI isso não serve) hheheeh. São situações em que nós colocamos algo um em cima do outro.

A questão fala das funções do PUSH e do POP, até aí tranquilo é isso mesmo.

Aí ele diz que tem uma pilha com um número binário qualquer, então pense em um número, eu vou pensar no número 11 em decimal que fica “1011” em binário. Ele também diz que o número menos significativo é o da base e o mais significativo é o do topo, sabendo que o algarismo “1” que está antes do zero, da esquerda para a direita é o mais significativo e o último, encostado em outro um, lá na direita é o bit menos significativo temos:

           1 -> bit mais significativo

           0

           1 

           1 -> bit menos significativo

Daí ele diz que faz PUSH (1), então fica assim:

           1 -> O um que foi colocado pelo PUSH

           1 -> bit mais significativo

           0

           1 

           1 -> bit menos significativo

Ficamos com um número 11011 = 27 em decimal.

Tínhamos 11, agora temos 27. Poderíamos fazer todos os cálculos mas vamos para o certo logo.

Letra D, ela fala que: soma 2^n-1 ao valor anteriormente armazenado na pilha sendo que o “n” é a quantidade atual de elementos da pilha, então

2^n-1 = 2^5-1 = 2^4 = 16, somamos 16 ao 11 que tínhamos, 16 + 11 = 27. Podem ver a alternativa certa é a “D”, espero ter ajudado! 

DICAS DE UM APROVADO (2011)

PREPARAÇÃO PARA DISCIPLINAS GERAIS

Sobre a preparação para as disciplinas de gerais, além das aulas no cursinho, adquiri alguns títulos para complementar o estudo:

 

HISTÓRIA:

*FAUSTO, Boris. História do Brasil.2002

BRAICK, Patrícia Ramos. História: das cavernas ao terceiro  milênio.2007

VICENTINO, Cláudio; DORIGO, Gianpaolo. História Geral e do Brasil. 2010.

 

GEOGRAFIA:

*COELHO, Marcos de A.; TERRA, Lygia. Geografia do Brasil, 2002.

*SENE, Eustáquio de. Geografia Geral e do Brasil: espaço geográfico e globalização. 2002.

* 03 livros da Bibliografia do concurso em 2011.

 

PREPARAÇÃO PARA ESPECÍFICA – INFORMÁTICA

 

Meu primeiro passo antes de começar a estudar a parte específica de informática, foi analisar o padrão das provas dos anos anteriores. Este passo serve também para as disciplinas gerais. Fiz isso da seguinte maneira:

– Imprimi as provas dos anos anteriores desde 2006;

– Recortei questão por questão (dá certo trabalho);

– Separei as questões por assunto da bibliografia;

– A partir daí já pude observar o padrão estatístico cobrado pela banca do concurso, isto é, quantidade de questões por conteúdo, conteúdo mais cobrado, conteúdos que sempre são cobrados…

 

Após esse período de análise da prova, pude planejar investimento em material didático (livros), plano de estudos, estimativa de horas de estudo de cada disciplina/conteúdo, etc. O próximo passo foi reunir o material que eu precisaria para colocar a mão na massa. Como não tinha tanto dinheiro para investir em livros e também por morar em uma cidade conhecida nacionalmente como a “cidade universitária”, primeiramente, procurei as obras nas bibliotecas das várias instituições de ensino superior que aqui existem. Os livros que não consegui encontrar nas bibliotecas, procurei na internet (mesmo em Inglês). No final, precisei comprar apenas um livro da parte específica.

 

Comecei estudando, obviamente, os conteúdos que mais eram cobrados (maior número de questões) nas provas anteriores (Redes, Linux, Java, etc.). Claro que contribuiu bastante o fato de trabalhar há 4 anos na área como programador e há 2 anos como Analista de Sistemas (esta experiência profissional me poupou algumas horas de estudo, certamente). Após isto, busquei aprender os conteúdos das questões que sempre aparecem na prova da EsFCEx (Padrões de projeto, Análise de ponto de função, Lógica computacional, etc).

 

Obs.: Para cumprir meu plano de estudos da parte específica, precisei pedir férias na empresa que trabalho.

 

METODOLOGIA DE ESTUDO

 

Ao invés de fazer resumos dos conteúdos que estava estudando, optei por trabalhar com MAPAS CONCEITUAIS (utilizei a ferramenta CmapTools para confeccionar meus mapas – http://cmap.ihmc.us/ , mas pode ser feito à mão mesmo). Após ler o conteúdo uma vez, relia (pelo menos mais uma vez) e anotava os principais conceitos, depois confeccionava o mapa.

 

A Confecção do mapa pode ser um pouco dispendiosa, mas o tempo que você perde montando o mapa é diretamente proporcional ao tempo que você ganha quando vai revisar o conteúdo. Sem contar que os mapas podem ir sendo incrementados e aperfeiçoados ao longo da preparação. Outro pró é que enquanto você esta montando o mapa, você está estudando. Para montar os mapas podem ser usadas cores, imagens, etc.

 

Obs.: Fica a dica para o uso de mapas conceituais para qualquer novo conhecimento a ser agregado. Para verificar exemplos de mapas, clique sobre as figuras abaixo para ampliá-las.

 

Grande abraço e boa sorte a todos.

 

Daniel Pinheiro Vargas – 2º colocado (2011) – Informática – Santa Maria / RS