sexta-feira, 14 de março de 2014

Ponteiros em Linguagem C

Como funcionam os ponteiros em C?

Essa é a pergunta campeã em sala de aula, por isso resolvi compartilhar aqui. Então vamos lá!

Se voltarmos à definição de variável, que é um espaço alocado na memória, podemos imaginar o seguinte:

1 - Quando declaramos uma variável, um espaço é reservado/alocado na memória do seu computador.
2 - Esse espaço que foi reservado/alocado tem um nome que foi dado pelo programador. Ex: int minha_variavel;
3 - Mesmo definindo um nome para a variável (no caso acima "minha_variavel") ela possui um endereço físico, por exemplo 0x4A1, que é o endereço de memória onde a variável, de fato, reside.

Pois bem, o que geralemente explico é que um ponteiro nada mais é do que uma variável que guarda o endereço de outra variável ou mesmo um endereço de memória. A imagem abaixo demonsta bem isso.


No caso acima, a variável "A" possui o valor "5" e o endereço de memória "0x3E8", já o ponteiro "p" possui o valor do "0x3E8" que é o endereço de "A" e possui seu próprio endereço "0x3C0".

Pronto, sabendo disso, podemos demostrar um algoritmo exemplo, mas antes precisamos saber a sintaxe de declaração de ponteiros, que para a linguagem C (o exemplo abaixo foi feito no DEV C++) é apenas colocar um asterísco antes do nome do ponteiro, como pode ser visto na linha 6 do algoritmo exemplo.

Seguindo o algoritmo exemplo, verificamos que na linha 8 a variável "a" recebe o valor inteiro 32, e na sequência (linha 9) o ponteiro "b" recebe o endereço de memória de "a" (o  & na linguagem C é o operador de endereço, retornando o endereço físico da variável), ou seja, "b" aponta para "a", por isso chamamos de ponteiro!

Por fim, fiz vários printf's para demonstrar o valor de cada um dos elementos envolvidos. Perceba que na linha 15 imprimo o ponteiro "b" precidido de um asterísco "*", que nesse caso significa que será impresso o conteúdo de quem o ponteiro "b" aponta (não confunda com o asterísco na declaração do ponteiro!).


  1. #include
  2. #include

  3. main(){
  4.  int a;
  5.  int *b;

  6.  a = 32;
  7.  b = &a;

  8.  printf("Eu sou o conteudo de A: %d\n", a);
  9.  printf("Eu sou o endereco de A: %x\n", &a);
  10.  printf("Eu sou o conteudo de B: %x\n", b);
  11.  printf("Eu sou o endereco de B: %x\n", &b);
  12.  printf("Eu sou o A através de B: %d\n", *b);

  13.  system("pause");
  14. }

É isso, espero que esse post ajude a entender nossos famosos ponteiros!

Um abraço!

terça-feira, 21 de janeiro de 2014

Aulas grátis de Ruby on Rails para iniciantes! #Updated

Olá Pessoal!

Olha eu voltando a postar algo por aqui. :)

Bem, acabei de lançar um novo projeto que deve interessar aos meus colegas desenvolvedores.

Pois bem, dias atrás comecei a publicar, no meu canal do youtube, uma série de aulas sobre Ruby on  Rails, dedicado à pessoas que estão iniciando na área.


A ideia inicial é postar vídeos de no máximo 15 minutos todas as sextas-feiras.

Desde já, agradeço a todos que estão enviando feedback, e peço que continuem enviando, pois são eles que motivam esse tipo de projeto.

Um abraço e boas aulas! ;)


#Update 07/02/2014

Aos interessados, fiz uma playlist no youtube para facilitar o acompanhamento.

sexta-feira, 12 de julho de 2013

Novo projeto no ar! (Site para resolução de questões de concurso público)

Boa tarde, amigos!

É com muito prazer que venho divulgar o mais novo site de resolução de concursos públicos! É ele, o site Mania de Concurseiro (www.maniadeconcurseiro.com.br).



A ideia do site é ajudar a todos que precisam estudar para concursos públicos através da resolução de questões de provas já realizadas. Para isso, todos os internautas podem contribuir enviando questões para o site e em contrapartida recebem uma pontuação, que pode ser trocada facilmente por acesso VIP, por exemplo.

A colaboração dos internautas visa contruirmos a maior base de questões de concurso para que todos desfrutem do bem maior, o estudo e o sucesso na aprovação do concurso desejado.

Além disso o site foi desenvolvido com o objetivo de ser rápido e eficiente na pesquisa e resoluções das questões, afinal, perder tempo é a última coisa que um concurseiro quer.

Em se tratando de serviços extras o site conta com os simulados, que são provas criadas pelo próprio usuário e que podem ser respondidas online ou ter um PDF gerado e baixado para que o aluno estude off-line, ou ainda, para que um professor possa passar para sua turma as questões de determinado concurso.

Enfim, queremos que o Mania de Concurseiro seja uma referência quando se tratar do ecossistema para estudos de concurso público.

É isso... Esperamos que ele ajude bastante aos atuais e futuros concurseiros!

[]'s

quarta-feira, 3 de julho de 2013

Novo Layout 2013

É isso aí!
Como de costume, uma mudança anual no layout do site. Dessa vez um tema bem dinâmico.
Lembrando que o blog agora já tem 6 aninhos... Como o tempo passa rápido, hein!?
Espero que apreciem! :)



[]s

terça-feira, 14 de maio de 2013

SWEBOK Traduzido para o português / PT-BR

Resolvi fazer esse post apenas para registrar um projeto que iniciei e participei em 2008 e até hoje ainda rende bons olhos.

Estou falando do Projeto SWEBOK, um documento tido como "O manual do Eng. de Software", traduzido para o PT-BR, que hoje ainda encontra-se no Wikidot (http://esl20081.wikidot.com/) e contou com a ajuda de diversas pessoas para que pudéssemos concluir toda a tradução.




Só contextualizando, esse projeto eu iniciei quando fiz minha pós-graduação em Eng. de Software em 2008 na UFLA. A princípio, a ideia foi dividir o documento em partes onde cada aluno ficaria responsável pela tradução de uma porção do texto, ou mesmo um capítulo todo, e foi isso que fizemos, chegando a traduzirmos 80% do total na época.

Juntando-se a isso, minha orientadora do TCC da época, Ângela Alves, ao ver o trabalho gostou da iniciativa e incentivou diversas outras turmas a ajudarem e a fazerem o mesmo com outras publicações.

Pois bem, estamos em 2013 e ainda hoje temos novos alunos e colaboradores entrando no projeto e contribuindo de alguma forma.

Gostaria então de agradecer a todos que participaram e participam desse "movimento" que tem ajudado bastante gente.

É como costumo dizer, "Ninguém melhor que todos juntos!"

Um abraço!

quinta-feira, 7 de fevereiro de 2013

Ajustando as tags MP3 para aparecerem no display do som do seu carro, via bash/shell

Recentemente um colega precisou ajustar os MP3 dele para que fosse possível ver no display do som do seu carro o nome completo da banda/música. Pois bem, para isso ele utilizou o script abaixo que pega o nome do arquivo e injeta na TAG MP3 do próprio aquivo.




#! /bin/bash
oIFS=$IFS
IFS=$'\n'

find . -name '*.mp3' | while read -r i; do

      TITLE=`basename $i .mp3`

      echo $TITLE

      id3tag --song="$TITLE" $i

done

IFS="$oIFS"


Fica a dica! :)

terça-feira, 22 de janeiro de 2013

Samsung Auto Backup / Runtime Error / C++ Runtime Library Error

Pra quem está tendo dificuldades em fazer funcionar o Samsung Auto Backup, onde o mesmo informa o erro abaixo...



...fica a dica que para o mesmo voltar a funcionar, basta desinstalar a atualização KB2698365 (http://social.technet.microsoft.com/Forums/en/w7itprosecurity/thread/74957f74-3d28-41f6-b039-9fdd84fe48f3), e voilá! tudo volta ao normal! :)

[]s