Google Developer Day

Ontem foi o Google Developer Day. Esta foi a primeira edição do evento no Brasil, e contou com umas 500 pessoas. Vi quase todas as palestras (só não vi a de Earth e a de Gadgets, tinha que voltar para Limeira :-( ), e gostei de todas elas. Abaixo minhas impressões sobre o evento.

1 – Local

Ruim para quem depende de transporte coletivo (como eu) e bom para quem viesse de avião ou morasse em São Paulo e tivesse um carro. A AMCHAM possui uma ótima estrutura física para eventos do gênero, é verdade, mas creio ser possível encontrar isso em lugares mais acessíveis (como o centro da cidade, ou a Paulista).

2 – Alimentação

Welcome Coffee realmente muito bom, com suco de laranja, café, doces e tortinhas salgadas. O almoço e os coffee-breaks também foram bons, mas no último coffee não tinha mais suco :(

3 – Palestra de Overview (Rodrigo Vale)

Muito boa a palestra, apesar de um pouco curta (creio que devido ao atraso inicial). Quem gostar de grafos, vai gostar da apresentação sobre “desafios do futuro” (não sei se disponibilizaram o material, pelo menos as palestras já estão no youtube). O palestrante ainda falou sobre como related-ads são uma ótima fonte de $$ e como a “liberdade de publicação” tornou a Internet popular.

4 – Palestra sobre a Google Ajax API (Chris Schalk)
Palestra muito interessante, uma das melhores, sobre como usar a Ajax API, que basicamente serve para o programador ter acesso a serviços de busca do google e leitura de feeds apenas programando javascript. Não gostei muito da tradução simultânea, e acabei assisitindo sem ela mesmo.

5 – Palestra sobre a AdWords API (Rodrigo Vale)

API para interagir com o serviço AdWords do Google. Basicamente, a idéia é que se desenvolvam aplicações que gerenciem contas do AdWords. Assim, todo mundo fica feliz: o anunciante, com aplicativos que facilitem a gerência de sua conta, o desenvolvedor, que poderá comercializar estes aplicativos e o Google, que teria pessoas desenvolvendo aplicações que vão aumentar o número de anunciantes.

6 – Palestra sobre a Maps API (Bruno Diniz)

API para construir aplicações usando os mapas do google. Totalmente javascript e relativamente fácil de usar, já vem com muitos recursos. Baseada em Listeners (alguém aí se lembrou do Swing?), o que é uma mão na roda para quem está acostumado com eles. Pra mim essa foi a melhor palestra.

7 – Palestra sobre o GWT (Chris Schalk)

Mais uma palestra do Chris, e mais uma vez sobre Ajax, agora o Google Web Toolkit (GWT). Este “kit” eu até já tinha estudado um pouco antes: fazer aplicações ricas para web em Java e depois converter tudo para javascript. Muito, muito legal. Com isso, é possível fazer aplicações ricas rapidamente sem se preocupar com os problemas do javascript.

8 – Adsense

Esta foi a última palestra que eu vi. Esta foi bem ao estilo “propaganda”. Palestra pouco técnica e bem comercial. Mesmo assim foi boa, passei a conhecer mais sobre como funciona o esquema do google adsense.

9 – Brindes

Não foi dessa vez q ganhei um google notebook! Hehe… Os bindes foram os de sempre: caneta, pasta, caderno e, é claro, camiseta.

Não deixem de conferir em http://code.google.com mais detalhes sobre as APIs.

Tao of Programing

Dizem que programação é uma ciência holística, que muitas vezes é preciso fé para que seu código comporte-se como esperado.

Se você nunca entendeu o poder da Iluminação  para codificar, leia: The Tao of Programming, e tudo ficará mais claro.

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.