Google Jokes

Outro dia, enviei para alguns amigos algumas piadas do Google de primeiro de abril. Eu costumo guardá-las, pois muita gente desconhece as piadas googleanas, e sempre ficam supresas com um Google MentalPlex ou GMail Paper.

Eis a lista com os que eu conheço:

Google Romance

Google MentalPlex

TiSP

Google Gulp 

PigeonRank

Lunar Job

Infinity+1 

GMail Paper

Algoritmos de Ordenação (parte I)

Algoritmos de ordenação é uma área com extenso material. Independente da linguagem, saber a melhor forma de ordenar um vetor traz bons ganhos de performance de seu código.

Alguns algoritmos, como o bubble sort, são simples e intuitivos. Estes boa parte dos programadores conhece, mas sua performance está entre as piores, por exigir muitas iterações. Outros, como o Quick sort, são mais complexos, menos intuitivos, mas produzem bons resultados, tendo ganho significativo na performance do código.

Vamos ver alguns algoritmos:

Bubble Sort:

O mais simples e intuitivo dos algoritmos. A idéia é percorrer o array várias vezes, comparando sempre um termo com o próximo, e trocando-os de lugar no vetor caso o primeiro seja maior que o segundo. A performance deste algoritmo é ruim, sendo sua compexidade da ordem de O(n²).

Exemplo de código:

int bubble(vetor vet)
{

int i, j, aux_troca, num_ops;

num_ops=0;

for(i=0;i<tam-1;i++)
{
for(j=0;j<tam-1-i;j++)
{
if(vet[j]>vet[j+1])
{
aux_troca = vet[j];
vet[j] = vet[j+1];
vet[j+1] = aux_troca;
}

num_ops++;
}
}

return(num_ops);
}

Até o próximo post!
Links

http://linux.wku.edu/~lamonml/algor/sort/sort.html

http://www.geocities.com/SiliconValley/Network/1854/Sort1.html

Vetores (arrays) em C

Mia um artigo sobre C…

Quando declaramos uma variável no C (como int) e a inicializamos, o computador reserva na memória um espaço para ela. Na verdade, a variável é esse espaço.

Um vetor (também conhecido como array) seria um espaço com múltiplos espaços menores dentro. Assim, um vetor int[10] seria como 10 ints, sendo estes guardam dados de forma contínua na memória.

Um exemplo:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>


#define len 3


int main(void)
{
int vetor[len];
int vetorInicializado[len] = {0,1,2};
int contador;


for(contador=0;contador<len;contador++)
{
printf("Tente adivinhar o numero na posicao %d: ",contador);
scanf("%d",&vetor[contador]);
}


for(contador=0;contador<len;contador++)
{


if(vetor[contador]==vetorInicializado[contador])
{
printf("Acertou na posicao %d\n",contador);
}
else{
printf("Errou na posicao %d",contador);
}
}


getch();
}

Percebam que na declaração, incluímos já os valores em vetorInicializado[3]. A inclusão só pode ser feita dessa forma (com os termos entre chaves) durante a declaração da variável. Depois disso, apenas termo a termo.

O índice [] da matriz indica a posição da variável que você quer trabalhar no array. Este número vai de zero ao tamanho-1 do vetor.

Acentos em C

Uma das coisas que muitos principiantes perguntam, é como colocar acentos em C.

Não é nada extremamente complicado, mas seu programa dependerá da tabela ascii do computador em que rodar.

Um pouco de código:



#include<stdlib.h>
#include<stdio.h>
#include<conio.h>


int main(void)
{
int i=0;

printf("Tabela ascii!\n\n");

for(i=0;i<255;i++)
printf("%d %c\t",i,i);

getch();
return(0);
}

O código acima gera a tabela ascii do sistema. O número ascii representa um caractere (como “a”, “x”, !, “à”, entre outros) que pode ser exibido em seu programa, para isso basta colocar “%c” na máscara e o número ascii correspondente, do jeito que foi feito no exemplo.

Hora de cortar a faixa

Finalmente inicio meu blog!

Sempre pensei em ter um. Achava “necessário” até. Um bom jeito de se propagar idéias, informações, novidades, o que viesse na telha.

Começar algo é sempre difícil. Mas também pode ser bem divertido. Será preciso um pouco (tá bom, muito) de regularidade, para manter o blog atualizado e os leitores (será que estes existirão?) felizes.

17/04/2007 – Dia de fundação do meu blog, meu primeiro post, e meu aniversário.

Faixa cortada.