quinta-feira, 16 de junho de 2016

Colabore com esta idéia!!! Colabora TI



Colabora TI é blog que eu criei para repassar um pouquinho dos conhecimentos aprendidos durante a minha graduação em Sistemas de Informação. Comecei com alguns tópicos em C e Java, alguns temáticos como jogos, wordpress.

Se você que é da área de TI tiver interesse em colaborar com essa idéia e também postar conteúdo na área de TI fique a vontade para entrar em contato comigo pelo email: renan490@gmail.com

Tópicos como:
  • Programação em Java, C++, Python;
  • Controle de versão
  • Gerência de projetos
  • Desenvolvimento Ágil com XP, SCRUM
  • Desenvolvimento Web com HTML, CSS e JavaScript
  • Conhecimentos em Frameworks
  • Software embarcado em Arduino, Raspberry

São todos bem vindos. Hoje em dia na distância que estamos, temos tecnologia que rompe as barreiras. O blogspot permite que haja mais autores em um blog. Com mais autores podemos ter conteúdo mais diversificado e complementar. Há a possibilidade de planejarmos os novos conteúdos. Se houver interesse em participar do blog, não hesite em me contatar. See you!

sábado, 4 de junho de 2016

O GitHub e o software de código aberto - Aprendizado, profissionalismo e diversão

Todo desenvolvedor precisa estar em constante aprendizado. Tenho certeza que hoje se está muito mais fácil aprender a programar. Você pode aprender o que quiser de uma maneira prática, pois a web está cheia de conteúdos sobre programação.

Aprendendo a programar por meio de softwares de código aberto

Software de código aberto é o software de computador que possui o seu código fonte disponibilizado e licenciado com uma licença de código aberto no qual o direito autoral fornece o direito de estudar, modificar e distribuir o software de graça para qualquer um e para qualquer finalidade. Software de código aberto é muitas vezes desenvolvido de maneira colaborativa.

Muitos códigos que você pode estudar e melhorar estão disponíveis publicamente no Github. O github é uma rede social para programadores com mais de 15 milhões de pessoas e mais de 38 milhões de projetos.

Vamos testar o git?
Instale o git. Qual o seu sistema operacional? Sabendo disso você pular para instruções de instalação para o seu SO. Acesse este link. No Windows, você utilizará o Git Bash, que é o terminal de comandos do git. No Ubuntu você utilizará o terminal.

Vamos configurar o git. Digite o comando sem o $.

$ git config --global user.name "Nome Sobrenome" 

Isto vai configurar o seu nome. Então a cada commit saberemos quem comitou um novo código ou fez alguma alteração.

$ git config --global user.email "seu_email@email.com"

Você configurou o seu email.

Em cada um dos sistemas operacionais existe uma pasta padrão com suas pastas documentos, imagens, vídeos. Quando você está no terminal você nesta pasta com seu nome de usuário. No ubuntu por exemplo esta pasta está localizada dentro da pasta home e no Windows dentro da pasta user ou usuários. Dê uma olhada!

Explorando no terminal

Você pode usar o comando cd para se localizar no sistema de arquivos do seu sistema operacional.

cd + url - para ir a url desejada
cd .. - para voltar a uma pasta anterior

O comando ls lhe informa onde você está e que arquivos há na pasta onde você está. Vamos na prática!



Estou na minha pasta pessoal. Suponhamos que quero ir para a pasta documentos.




Agora quero ir em uma pasta específica literalmente.



Para voltar utilize  o cd..


Clonando projetos
 
Bem, já aprendemos sobre sóftware de código aberto, explorando no terminal. Agora vamos clonar projetos interessantes para o nosso estudo. Estou utilizando o terminal, se estiver no Windows use o git bash.

Há muitos projetos interessantes no GitHub.

Alguns exemplos:
Para clonar qualquer um destes repositórios e testar use o - git clone:



Clonei como exemplo o repositório da AlgaWorks.

Ah, muito interessante o Minecraft! Ele necessita do python e do pyglet instalado na máquina.

O processo é o mesmo:

git clone https://github.com/fogleman/Minecraft



Instale o python. E instale o pyglet (Leia o readme.md). Feito isso! No terminal ou prompt de comando do Windows e dentro da pasta do minecraft digite:

python main.py

Jogando Minecraft:


Conclusão

Explorar a Comunidade GitHub pode ser muito bom para seu aprendizado e profissionalismo, como também muito divertido (você encontra projetos simplificados do Minecraft e AngryBirds).

Referências

Software de Código Aberto - Wikipedia
Sobre o GitHub
Primeiros passos - instalando Git
Usando Git (e GitHub) no Windows | Douglas Matoso 

sexta-feira, 15 de janeiro de 2016

Como descobrir o tamanho de um vetor - Linguagem C

Sabemos que para descobrirmos o tamanho de um vetor de char ou String, basta usar o strlen da biblioteca <string.h>. Veja o exemplo:

#include <stdio.h>
#include <string.h>

int main(){
 char palavra[10];
 strcpy(palavra, "ColaboraTI");
 int tamanho;
 tamanho = strlen(palavra);
 printf("Tamanho do vetor de string: %d", tamanho);
 getchar();
}


Tamanho do vetor de string: 10

Através do comando strcpy que também é da biblioteca <string.h> é possível copiar a String para o nosso vetor palavra. E o comando strlen fica responsável por descobrir o tamanho utilizado da string palavra.

Para descobrir o tamanho de um vetor do tipo inteiro declarado em uma mesma função, por exemplo, você precisa usar o comando sizeof da biblioteca <stdio.h> através do algoritmo:

#include <stdio.h>

int main()
{
    int array[] = { 0, 1, 2, 3, 4, 5, 6 };
    printf("Length of array: %d\n", (int)( sizeof(array) / sizeof(array[0]) ));
}


Entendendo este código... Temos um array com 7 posições { 0, 1, 2, 3, 4, 5, 6 }. Cada posição equivale a 4 bits, pois estamos trabalhando com inteiros. Inteiros suportam números de até 4 bits. Como há 7 posições em um vetor de inteiros, o nosso vetor possui 28 bits. Este algoritmo descobre através do tamanho do vetor (28 bits) dividido pelo tamanho de cada posição do vetor (4 bits) que dará 7.

Tamanho do vetor: 7

O problema de usar este método para descobrir o tamanho do vetor é que ele só funciona com vetores declarados na mesma função. Ele não funciona com vetores declarados em uma função local que são passados por parâmetro em outra função. Não funciona!

Com base nisto descobri alguns métodos que funcionam localmente e que não funcionam se passados por parâmetro em outra função e métodos que funcionam das duas formas. Na verdade são 4 métodos para descobrir o tamanho de um vetor que apresento aqui.

Vamos lá! Veja o código:

#include <stdio.h>
#include <stdlib.h>
void metodo1(int arr[]){
    printf("\nMetodo 1");
    int result = *(&arr+1)-arr;
    printf("\nMETODO 1 - Resultado *(&arr+1)-arr: %d",result);
}
void metodo2(int arr[]){
    printf("\n\nMetodo 2");
    int res = sizeof(*(&arr));
    printf("\nResultado sizeof(*(&arr)): %d",res);
    int resu = sizeof(*(&arr+1));
    printf("\nResultado sizeof(*(arr+1)): %d", resu);
    int tamanho = res/resu;
    printf("\nMETODO 2 - Resultado de res/resu: %d",tamanho);
    printf("Numero: %d",(arr));
}

void metodo3(int arr[]){
    printf("\n\nMetodo 3");
    int *inicio;
    int *fim;
    int count=0;
    for (inicio = *(&arr), fim = *(&arr+1); inicio<fim; inicio++){
        count++;
        printf("\ninicio: %d",inicio);
    }
    printf("\nMETODO 3 - Count eh igual a: %d",count);
}

void metodo4(int arr[]){
    printf("\n\nMetodo 4");
    int *n = *(&arr+1);
    printf("\n\nResultado &arr+1: %d",*n);
    int *n1 = *(&arr);
    printf("\nResultado &arr: %d",*n1);
    int g = n-n1;
    printf("\n\nMetodo 4- Resultado de n-n1: %d",g);
}

int main(){
    int arr[12] = {1};
    int opcao;
    do{

    printf("MENU: ");
    printf("\n\n1 - Metodo 1");
    printf("\n2 - Metodo 2");
    printf("\n3 - Metodo 3");
    printf("\n4 - Metodo 4");
    printf("\nOpcao: ");
    scanf("%d",&opcao);
  
    switch(opcao){
        case 1: metodo1(arr);
      
        break;
        case 2: metodo2(arr);
        break;
        case 3: metodo3(arr);
        break;
        case 4: metodo4(arr);
    }
    getchar();
    getchar();
    system("cls");
  
    }while(opcao!=5);
  
}


Bem! O método 1 foi proposto nesta página How to find size of an array in C without sizeof.

Arjun Sreedharan faz todo um estudo sobre como funciona a alocação de um
 vetor na memória. Você pode se aprofundar se quiser conferindo o artigo
 dele. O método 1 funciona perfeitamente.

Metodo 1
METODO 1 - Resultado de *(&arr+1)-arr: 12

O método 2 é aquele mesmo que já expliquei sobre o uso do sizeof. A
diferença é porque foi usado o conhecimento de ponteiros.
sizeof(*(&arr)) é equivalente a sizeof(array) e sizeof(*(&arr+1)
 é equivalente a sizeof(array[0]). O método 2 estamos trabalhando
diretamente com os endereços diferente do uso do sizeof que expliquei
anteriormente. Este método não funciona como desejado.

Metodo 2
Resultado sizeof(*(&arr+1):4
METODO 2 - Resultado de res/resu: 4

O método 3 usa do conhecimento de que se &arr é igual ao endereço da
 primeira posição do vetor(arr[0]) e &arr+1 é o endereço da primeira
 posição do próximo vetor que fica vizinho a ele na memória(digamos
arr1[0] que foi alocada pelo SO vizinho ao vetor arr). O método 3 usa um
 for para passar de posição em posição do vetor arr. Há uma variável
contadora que conta quantas posições foram encontradas no vetor. Ele dá
todos os endereços entre &arr e &arr+1. A última linha do
resultado é esta:

METODO 3 - Count eh igual a 12

O método 3 funciona perfeitamente. O método 4 é semelhante ao método 1 tanto que se baseia nele.



Valeu, galera! Testem o código!

Estou usando o Dev-C++ 5.5.3 com o compilador MinGW GCC. Até mais!
Related Posts Plugin for WordPress, Blogger...