Árvores!

Demorou, vou assumir, mas finalmente eu programei mais uma estrutura de dados simples, a árvore. Vou preparar uma explicação sobre o que é uma árvore em computação (essa pode ser um pouco complexa) e assim que eu tiver eu posto aqui, mas por enquanto vocês podem ver o código no svn (http://svn.geekvault.org/c/trees)

Have fun.

Incluindo cabeçalhos de forma segura em C

Certo dia eu estava conversando com um amigo meu sobre C e ele me falou que a coisa que ele mais odiava era ter que tomar cuidado com a ordem dos include que ele fazia quando iniciava um projeto em C. Ora, vamos pensar um pouco, se você incluir duas vezes o cabeçalho stdio.h por exemplo, em dois arquivos diferentes, e incluir os dois, não da erro certo?
Continue reading →

Estrutura de dados 2 – Lista

Quem nunca teve o problema clássico de ter que armazenar uma quantidade X de valores, sem limite máximo e com buscas, remoção e adição em qualquer lugar de forma rápida? Pois bem as listas estão ai exatamente para isso. Claro, poderíamos criar um vetor com um número X, e caso precisa-se, utilizaríamos realloc() para aumentar o vetor. Porém, qualquer coisa que fizéssemos com um vetor (ordernar, busca, remoção, adição) é muito custosa, uma lista ligada nos permite fazer isso de forma rápida, customizáda, e econômica. Vamos explicar aqui a lista duplamente ligada, uma das mais completas, porém vamos mostrar também a teoria de suas variações (lista ligada e lista circular).
Continue reading →

Estrutura de dados 1 – Pilha

Uma das coisas mais importantes e pesquisada na programação é a representação de dados no computador, essa área tem o nome de estrutura de dados, sendo uma das áreas principais no estudo da programação para computadores. Existem vários tipo de estrutura de dados clássicos, cada um com sua utilização, hoje vamos estudar como funciona a Pilha.
Continue reading →

I’m alive and doing well…

Pessoal, eu não morri não, isso se chama final de semestre na faculdade. Mas aos poucos as coisas ficam mais tranquilas.
Até lá, fiquem com a documentação do servidor Bucket Sort, eu demorei para lançar esse código pois era para um trabalho da faculdade, mas agora, ainda não 100% pronto, mas, lá está, assim que eu tiver tempo eu explico com calma a idéia ok? A documentação está aqui.

Arquivos temporários em C

Ola, eu não esqueci de vocês não, apenas estou sem tempo com o final de semestre na faculdade. Então, para não deixar vazio, vamos mostrar como criar arquivos temporários em C.
Arquivos temporários são utilizados para uma vasta gama de utilidades, sendo que a mais comum é a comunicação entre processos. Isso mesmo, você leu direito, para dois processos se comunicarem é mais do que comum utilizarmos arquivos temporários. Isso quer dizer, por exemplo, que a maravilhosa função pipe() nada mais é do que uma criação de arquivos temporários. Continue reading →

Tutorial C – Parte 1 – Introdução

O que é um programa de computador? Antes de aprendermos a programar em uma linguagem que não seja algum tipo de script (.php, .bat ou shell script por exemplo), vamos discutir o que um programa de computador realmente faz. Em uma frase, um programa de computador é:

“Uma seqüência de instruções binárias para o processados executar e enviar resultado para o Kernel do Sistema Operacional, que irá então tratar o resultado como deve.”

Continue reading →

C e strings do teclado

Quando eu comecei a programar em C, eu sempre tive a curiosidade de por que eu não poderia fazer isso:

char buff[];
scanf(“%s”,&buff);

para pegar uma string de qualquer tamanho do teclado. Obviamente isso não funciona em C, já que em C você precisa manipular a memória na forma mais básica possível, depois que aprendi a utilizar malloc() e realloc(), isso ficou simples.
A idéia é bem simples:
1)Inicializar uma pequena string vazia
2)entrar em um loop que vai fazer (até encontrar ‘\n’):
1.pegar um caractere por vez e armazenar em uma variável temporária
2.contar o tamanho (atualizado) da string digitada
3.se o tamanho for maior que o incial:
1.reallocar a memória com 2 a mais(um para o caractere, um para o final)
4.Colocar o caractere recebido, no final da string
Claro que tudo isso tem que ser feito com muito cuidado para não estourar a memória e tudo isso que já sabemos.
Vamos ao código então, ele é bem simples, e adaptar em uma função para o seu programa em C fica praticamente patético (apenas coloque um return *buff; no final ;) ).
Continue reading →