segunda-feira, 27 de janeiro de 2014

Finanças - Teorema de Bayes na HP-12C

Na Wikipédia vemos que em teoria da probabilidade o Teorema de Bayes (criado por Thomas Bayes) mostra a relação entre uma probabilidade condicional e a sua inversa; por exemplo, a probabilidade de uma hipótese dada a observação de uma evidência e a probabilidade da evidência dada pela hipótese. Concursos adoram a Estatística Bayesiana pois permite a associação de uma probabilidade a qualquer grau de crença ou incerteza sobre uma quantidade aleatória, evento ou hipótese.

Sua fórmula é dada por:
P(X|V) = P(X ∩ V)
           P(V)
Calma que a coisa não é tão feia assim, vamos começar com um problema, em uma Empresa de Informática existem 3 tipos de profissionais Analistas, Desenvolvedores e Testadores, o índice de falta mensal (para o IFM é anotado simplesmente se o funcionário falta ou não durante o período de um mês e não a quantidade de faltas) entre eles varia conforme a seguinte tabela:

Profissionais IFM
Analistas 440 13
Desenvolvedores 860 28
Testadores 520 72

OK, os testadores são os que mais faltam, mas isso é apenas um exemplo e não precisa brigar comigo. Vamos agora adicionar mais alguns dados interessantes nessa tabela, usando a HP12C podemos obter os valores em percentual. Primeiro vamos adicionar mais uma coluna da tabela com o somatório desses valores:

Total 1820 113

E podemos completar nossa tabela com a seguinte sequência para adicionarmos os percentuais:
Digite o total a coluna do N° Profissionais (i.e: 1820)
Pressione STO 0
Pressione o primeiro valor (i.e: 440)
Pressione %T (aparece o resultado: 24,18%)
Pressione RCL 0
Pressione o segundo valor (i.e: 860)
Pressione %T (aparece o resultado: 47,25%)
Pressione RCL 0
Pressione o terceiro valor (i.e: 520)
Pressione %T (aparece o resultado: 28,57%)
Continue este procedimento com a coluna do IFM (não modifique o valor gravado em STO 0) para completar a tabela da seguinte forma:

Profissionais IFM % Profissionais % IFM
Analistas 440 13 24,18% 0,71%
Desenvolvedores 860 28 47,25% 1,54%
Testadores 520 72 28,57% 3,96%
Total 1820 113 100% 6,21%

Devemos lembrar que o percentual de faltas é obtido em relação ao todo, lê-se assim: Dos 1.820 profissionais da empresa 6,21% faltam no mês.

Vamos obter mais alguns dados através do Teorema de Bayes, queremos saber qual a chance de contratarmos um Desenvolvedor que tenha pelo menos uma falta no mês:
28 ENTER       -> Total de Desenvolvedores com pelo menos uma falta
1820 ÷         -> Total de Profissionais da Empresa
Aparece no visor o resultado 0,015 ou 1,5% de chance, isso então significa que 98,5% dos desenvolvedores que contratarmos não faltarão nenhuma vez no mês, certo? Infelizmente não pois nem todo profissional é desenvolvedor, se quisermos saber isso, basta:
860 ENTER      -> Total de Profissionais que são desenvolvedores
28 -           -> Retirada dos desenvolvedores que faltaram
1820 ÷         -> Total de Profissionais da Empresa
E temos que a chance de obtermos um desenvolvedor que não faltará é de 0,457 ou 45,70% pode-se dizer que é quase metade das possibilidades. Divirta-se realizando outras estastísticas.

Obrigado e até a próxima
Fernando Anselmo

sábado, 18 de janeiro de 2014

Gimp - Criando um Reflexo de Água

Vamos retomar nossas aulas com o Gimp, recomendo que (se não viu acesse as outras aulas). Nesta aula vamos criar um interessante efeito de reflexo de água que pode ser bem útil para vários tipos de imagem. Siga os passos:

1. Obter uma imagem que ache interessante
2. Duplicar a camada, na janela Layers clicar com o botão direito do mouse e selecionar "Duplicate Layer"
3. Selecionar a camada original e no menu principal selecionar Image | Canvas Size, modificar a propriedade Height para perto do dobro do tamanho e a propriedade Resize Layers para "Image-sized Layers".
4. Selecionar a camada de cópia e no menu principal selecionar Layer | Transform | Flip Vertically.

O resultado será uma imagem de cabeça para baixo da imagem original. Agora vem a parte mais divertida (e criativa):

5. Selecionar a ferramenta Blend (L). Definir o grau de opacidade (Opacity - algo em torno de 60 a 70) e posicionar o mouse no centro (ou mais abaixo) da segunda imagem, segurar o botão, arrastar até o final e soltar.
6. Para finalizar com um efeito de distorção de água, podemos utilizar um dos seguintes filtros (ou mesmo combiná-los):
    a. No menu principal selecionar Filter | Blur | Gaussian Blur.
    b. No menu principal selecionar Filter | Distorts | Ripple. Se for utilizar este, recomendo utilizar a ferramenta Smudge (S) para arrumar os cantos.
7. Também é possível brincar um pouco com a cor para obter mais efeitos interessantes. No menu principal selecionar Colors | Hue-Saturation, diminua o valor das propriedades Lightness e Saturation.

E pronto como resultado temos efeito de reflexo de água, este efeito é ideal para ser aplicado em frases (em campos textos) e fotos claras ou escuras.

Obrigado e até a próxima
Fernando Anselmo

quinta-feira, 16 de janeiro de 2014

Historinhas - Quanto vale sua hora?

Sei que faz tempo que não publico nenhuma historinha, mas sabe como é, o tempo não dá perdão a ninguém. Pensando em tempo e dedicação me lembrei dessa historinha...

FILHO: Pai, posso fazer uma pergunta?
PAI: Sim, claro, o que é?
FILHO: Pai, quanto você ganha em uma hora?
PAI: Isso não é da sua conta, por que você pergunta uma coisa dessas?
FILHO: Eu só quero saber, por favor me diga, quanto você ganha em uma hora?
PAI: Se você quer saber, eu ganho R$ 100 por hora.
FILHO: Oh! - e baixa a cabeça. - Pai, posso pedir por favor R$ 50,00? - E, O pai se enfurece.
PAI: Se a única razão que você perguntou é essa , para conseguir algum dinheiro e comprar mais um brinquedo ou alguma outra coisa sem sentido?
PAI: Vá direto para o seu quarto, para a cama e pense o por que você está sendo tão egoísta. Eu trabalhando duro todos os dias para ver tal comportamento infantil.

O menino foi calado para o seu quarto e fechou a porta. O homem sentou e começou a ficar ainda mais nervoso sobre as questões do menino e pensou: "Como ele ousa fazer tais perguntas só para conseguir algum dinheiro?". Depois de cerca de uma hora, o homem tinha se acalmado e começou a pensar mais friamente: "Talvez houvesse algo que ele realmente precisasse comprar com esses R$ 50 ,e ele realmente não pedia dinheiro com muita freqüência". O homem então foi até a porta do quarto do menino e abriu a porta.

PAI: Você está dormindo, meu filho?
FILHO: Não pai, estou acordado.
PAI: Eu estive pensando, talvez eu tenha sido muito duro com você antes. Tive um longo dia, e não deveria ter descontado meu stress em você aqui estão os R$ 50,00 que você pediu... - O menino se levantou sorrindo.
FILHO: Oh, obrigado pai!

Então, tirando seu travesseiro ele puxou mais alguns trocados amassados. O homem viu que o menino já tinha algum dinheiro e começou a se enfurecer novamente. O menino lentamente contou o dinheiro, e em seguida olhou para seu pai.

PAI: Por que você quer mais dinheiro se você já tem?
FILHO: Porque não tinha o suficiente, mas agora tenho. Papai, aqui tem R$ 100,00 posso comprar uma hora do seu tempo? Por favor, venha para casa amanhã mais cedo pois gostaria de jantar com você.

O pai foi esmagado. Ele colocou os braços em volta de seu filho, e pediu o seu perdão. Isto é apenas uma pequena lembrança a todos vocês que trabalham arduamente na vida para não permitir que o tempo passe através dos nossos olhos sem ter passado algum tempo com aqueles que realmente nos importam.

Obrigado e até a próxima
Fernando Anselmo

terça-feira, 7 de janeiro de 2014

Curiosidade - Conhece Malbolge?

Malbolge, foi criada para ser a linguagem mais difícil de ser programada (e pensava que era Python ou Assembly). Sério mesmo, não estou brincando, essa coisa foi criada por Ben Olmstead em 1998, como (pode rir) uma Linguagem de Programação Esotérica.


Isso mesmo, a mente criativa desse doido criou uma linguagem que é um misto entre "não sei o que" e "sei lá o que", não me acredita? Aqui está um programa que vai mostrar a palavra "Hello World":
('&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>}=<M:9wv6WsU2T|nm-,jcL(I&%$#"
`CB]V?Tx<uVtT`Rpo3NlF.Jh++FdbCBA@?]!~|4XzyTT43Qsqq(Lnmkj"Fhg${z@>
Muito fácil isso não? Já esse outro simples programa:
(=<`$9]7<5YXz7wT.3,+O/o'K%$H"'~D|#z@b=`{^Lx8%$Xmrkpohm-kNi;
gsedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543s+O<oLm
Mostra a mesma frase mas escrita da seguinte forma "HEllO WORld". Creia-me quando digo que não estou brincando, isso aí em cima é realmente um programa escrito nessa linguagem, por mais esquisito que possa parecer (não lhe aconselho a nem tentar interpretá-lo). Se deseja testar, este site possui um emulador onde é possível executar os programas.

Vejamos algumas curiosidades sobre essa linguagem:

  • Porque este maravilhoso nome? Bem, espero que tenha gostado do último livro de Dan Brown e a curiosidade de ler "O Inferno de Dante", pois bem o oitavo círculo do inferno é conhecido como Malebolge. Só que o criador da linguagem foi um pouco mais além, talvez por um erro de grafia, a palavra Malbolge foi utilizada para representar o sexto inferno no jogo Dungeons and Dragons.
  • Porque essa linguagem está se tornando conhecida? Existe uma série que passa no canal CBS chamada "Elementary" e no 10º Episódio da 1ª Temporada, a linguagem foi utilizada como pista para achar o assassino. 
  • Como posso executar programas? Neste site pode-se encontrar um compilador, interpretador e depurador feito em Java.
  • Como a linguagem trabalha? Com pilhas de memória e variáveis (como disse algo bem esotérico tentar entender).
  • Preciso aprender a programar nisso? Só se for por pura curiosidade (e muita falta do que fazer pois não vale o esforço), não creio que nem em um futuro muito distante vá existir qualquer demanda para contratar programadores para desenvolverem aplicações comerciais com essa linguagem (talvez no máximo 1 aviso de emprego - e para contratar apenas quem a criou).
  • É possível encontrar documentação para aprender essa linguagem? Existem vários sites disponibilizando programas (tudo ainda é muito novo) e tentando ensinar como programar (sem piada, Assembly torna-se brincadeira de criança perto disso), mas mesmo com todos esses avisos e deseja tentar quebrar a cabeça para aprender, então recomendo que comece pela Wikipedia.
Depois disso façamos apenas um acordo, nunca mais reclame das expressões regulares de Perl, do trabalho em memória de Assembly, da endentação de Python ou mesmo das milhares de classes existentes de Java. Porque existe inferno muito pior lá fora e perto dela essas outras não chegam nem ao status de purgatório. Como último endereço, o site 99Bottles disponibilizou em várias linguagens o programa que mostra a música 99 Garrafas completa, veja como fica em Malbolge e depois compare com as outras.

Obrigado e até a próxima
Fernando Anselmo