sexta-feira, 23 de novembro de 2012

Como realizar o FULL OUTER JOIN no MySQL

O comando OUTER JOIN não faz parte do mysql, no entanto existme inúmeras maneiras de se fazer isso no mysql, vou colocar o exemplo mais prático.

Através do método UNION ALL e da exclusão do JOIN.

Uma maneira de fazer  UNIÃO incluir apenas os duplicados que eu quero é usar uma exclusão JOIN para eliminar qualquer coisa a partir do segundo resultado que já está incluído no primeiro. Como segue:

Este manipula linhas duplicadas corretamente e não incluir qualquer coisa que não deveria. É necessário usar UNION ALL. Isto poderá ser significativamente mais eficiente em grandes conjuntos de resultados, uma vez que não há necessidade de classificar e remover duplicatas.



select * from apples as a
   left outer join oranges as o on a.price = o.price
union all
select * from apples as a
   right outer join oranges as o on a.price = o.price
where a.price is null;
fonte: http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/

quarta-feira, 7 de novembro de 2012

Capturar tela no MAC e escolher formato de saída!


Como tirar um print screen no seu Mac!

Post interessante: Republicando.

Ok, talvez você seja um expert no Mac OS e acha que essa é uma dica que todo mundo já sabe. Você está enganado!
Recentes usuários de Windows acostumados com a tecla de “print screen” quando migram para o Mac não sabem como fazer. Também tem muita gente que já usa Mac há um tempão e não sabe o jeito mais fácil de utilizar, então vamos as dicas….
Existem 3 comandos básicos no Mac para você fazer o screenshot, são eles:
  • Command + shift + 3 – Captura a tela inteira e salva no seu Desktop com a extensão “.png”;
  • Command + shift + 4 - Ao dar esse comando, seu cursor irá se transformar em um tipo de alvo, selecione e arraste para demarcar a área desejada do print e o arquivo será salvo também no seu Desktop com a extensão “.png”;
  • Command + shift + 4 + Barra de Espaço – Ao utilizar esse comando, seu cursor irá se transformar em uma câmera, selecione a janela que você deseja e o print vai ser da janela que você selecionou, também irá ser salvo no seu Desktop com a extensão “.png”.
Curiosidades:
  • Troque a tecla Command por Control e o Mac vai guardar seu print no clipboard e não mais no seu Desktop. Para utilizar a imagem depois, basta dar Command+V no local desejado. (Como no print screen do windows);
  • Para trocar o formato de .png para .pdf por exemplo, digite no terminal do seu Mac: defaults write com.apple.screencapture type pdf. Depois reinicie seu Mac para as alterações surtirem efeito.

domingo, 4 de novembro de 2012

Multiplicação de Raiz em C


Um grande exemplo de código que multiplica matrizes em C com comentarios.

No entanto antes eu gostaria de demonstrar rapidamente o cálculo de multiplicação de matriz para poder entendermos o código em C:

Multiplicação de Matrizes:


A multiplicação de matrizes é realizada de acordo com a seguinte condição: o número de colunas da 1ª matriz deve ser igual ao número de linhas da 2ª matriz. Observe alguns modelos de matrizes que podem ser multiplicadas, considerando o formato m x n.

A4x3 * B3x1

A4x2 * B2x3

A1x2 * B2x2

A3x4 * B4x3

Nesse modelo de multiplicação, os métodos são mais complexos. Dessa forma, precisamos ter muita atenção na resolução de uma multiplicação de matrizes. Vamos através de exemplos, demonstrar como efetuar tais cálculos. A operação deverá ser feita multiplicando os membros da linha da 1º matriz pelos membros da coluna da 2º matriz, onde os elementos devem ser somados, constituindo um único item posicional da matriz.Observe um modelo padrão de multiplicação:



Exemplo 1




Realizamos uma multiplicação entre uma matriz A de ordem 2 x 3 por uma matriz B de ordem 3 x 2. Observe que a condição “o número de colunas da 1ª matriz deve ser igual ao número de linhas da 2ª matriz”, foi válida, pois 3 = 3. O interessante é que a matriz, produto da multiplicação, é de ordem 2 x 2, isto é, 2 linhas e 2 colunas, possuindo o mesmo número de linhas da 1ª e o mesmo número de colunas da 2ª.

Portanto, todas essas condições são observadas na multiplicação entre matrizes. Caso alguma dessas condições não seja válida, a operação da multiplicação estará efetuada de forma incorreta. Sempre que realizar multiplicação entre matrizes, faça de forma atenciosa, desenvolvendo completamente o processo, procurando não utilizar meios diretos para obter o resultado. 

fonte: http://www.brasilescola.com/matematica/multiplicacao-matrizes.htm

Agora segue o Código em C para multiplicação de Matrizes, dado a entrada de uma matriz A e B a serem multiplicadas:



#include


main()
{

//Definição de variaveis
int i, j, l, c, l1, c1, X;

//Entrada de dados
printf("\n Informe a quantidade de linhas da matriz A : ");
scanf("%d",&l);
printf("\n Informe a quantidade de colunas da matriz A : ");
scanf("%d",&c);
printf("\n Informe a quntidade de linhas da matriz B : ");
scanf("%d",&l1);
printf("\n Informe a quantidade de colunas da matriz B : ");
scanf("%d",&c1);
float matrizA[l][c],matrizB[l1][c1],matrizC[c][l1],Aux=0;
if(c==l1)
{
for(i=0; i{
         for(j=0; j         {
         printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da Matriz A: ", i+1, 167, j+1, 167);
         scanf("%f", &matrizA[i][j]);
         }
         printf("\n");
         }
for(i=0; i{      
         for(j=0; j         {
         printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167);
         scanf("%f", &matrizB[i][j]);
         }
         printf("\n");
         }
printf("---------------------------- 1 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i{      
         for(j=0; j         {
         printf("%6.f", matrizA[i][j]);
/* "%6.f" significa para eliminar 6 casas decimais dos componentes dados */
         }
         printf("\n\n");
         }
printf("---------------------------- 2 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i{
         for(j=0; j         {
         printf("%6.f", matrizB[i][j]);
         }
         printf("\n\n");
         }
//Processamento e saida em tela
for(i=0; i{
         for(j=0; j         {
                  matrizC[i][j]=0;
                  for(X=0; X                  {
                  Aux += matrizA[i][X] * matrizB[X][j];
                  }
                  matrizC[i][j]=Aux;
                  Aux=0;
                  }
                  }
                  printf("\n\n");
printf("---------------------------- 3 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i{
         for(j=0; j         {
         printf("%6.f", matrizC[i][j]);
         }
         printf("\n\n");
         }
         printf("\n\n");
         }
else
{
printf("\n\n Nao ha com multiplicar as matrizes dadas \n\n");
}


}



fim do código

fonte: http://forum.clubedohardware.com.br/multiplicacao-matrizes-c/546890

http://macboypro.wordpress.com/2009/05/20/matrix-multiplication-in-c-using-pthreads-on-linux/