Aprender programação é uma atividade bastante sedutora para quem gosta de tecnologia, seja para fins profissionais, como desenvolvimento de sistemas e aplicações, ou mesmo apenas para diversões e projetos pessoais. Entretanto, começar a estudar programação é uma atividade árdua e de difícil assimilação para a maioria, sobretudo para quem quer aprender a programar sozinho(a).
Muitos não aprendem a programar devido a ansiedade de querer aprender a usar ferramentas complexas, linguagens de programação avançadas, desenvolver sistemas cheios de recursos logo no início dos estudos. Não que isto seja ruim! Pelo contrário: esta ansiedade é uma excelente fonte de motivação para aprender mais. Porém, estudar várias coisas ao mesmo tempo sem antes possuir uma base sólida pode afetar drasticamente seu aprendizado em programação.
Outros, pelo que pude notar com quem estudei durante meu primeiro ano de curso de Informática, possuem dificuldade em assimilar o funcionamento da linguagem de programação com a maneira como o computador “entende” os comandos.
Portanto, mostrarei aqui os passos necessários que você precisa dar para começar a estudar programação (e que também foram os passos que segui), que certamente irão te ajudar a aprender a programar de maneira mais traquila!
Esqueça os códigos e foque na lógica
A princípio você pode achar este primeiro passo estranho, afinal, “como posso aprender a programar se não for escrevendo códigos”?
Esta é uma das principais armadilhas que prendem os estudantes de informática no início dos estudos. Para não cair nesta armadilha, tenha sempre em mente que escrever códigos é uma das últimas tarefas a serem feitas antes de construir um programa.
Antes de tudo, você deve trabalhar seu raciocínio lógico. Mais especificamente, sua lógica de programação. Em linhas gerais, isto significa generalizar a resolução de um problema e quebrá-la em pequenos passos (ou ações) necessários para se atingir o objetivo.
Para exemplificar, pense na seguinte situação: fritar um ovo. Encare isto como um problema, e pense: “Quais passos devo seguir para fritar um ovo?”. Assim, você acabará quebrando a resolução nos seguintes passos:
Pegar a frigideira. Pegar o óleo. Pegar os ovos. Colocar a frigideira sobre o fogão. Acender o fogão. Colocar o óleo na frigideira. Quebrar os ovos dentro da frigideira. Aguardar. Virar os ovos. Aguardar. Desligar o fogão.
Claro, este foi apenas um exemplo didático, mas, fazendo isto com problemas mais complexos envolvendo programação, você não apenas desenvolverá sua lógica, como também aprenderá a passá-la para o computador.
Aprenda sobre lógica booleana, variáveis, posições de memória…
Ainda longe dos códigos, depois de aprender a lógica, é necessário primeiro que você aprenda conceitos básicos de computação antes de pensar em colocar a mão no teclado, tais como lógica booleana, variáveis, posições de memória e ponteiros.
Didaticamente:
- Lógica booleana é uma maneira de pensar envolvendo apenas dois valores possíveis: verdadeiro ou falso, positivo ou negativo, 1 ou 0… Sua importância se deve ao fato de que o funcionamento dos computadores se baseia neste princípio.
- Variáveis e Vetores são “objetos” capazes de armazenar temporariamente determinado tipo de valor. Existem quatro tipos básicos, ou primitivos: inteiros, pontos flutuantes (ou float, números com casas decimais), literais (caracteres) e booleanos (1 ou 0, verdadeiro ou falso). Já vetores, são variáveis que possuem várias “posições”, podendo armazenar vários valores. Veja um exemplo de variáveis nas linguagens C/C++:
int inteiro = 1; float real = 0.5; char letra = 'A'; bool falso = false; bool verdadeiro = 1; int vetorDeInteiros[5] = [1, 2, 3, 4, 5];
- Posições de memória são espaços, geralmente na memória RAM, onde as variáveis, contendo seus valores, ficam alocadas.
- Ponteiros se parecem com variáveis, porém armazenam o endereço do espaço da memória onde as variáveis estão alocadas.
Futuramente farei um artigo específico sobre o tema.
Estude operadores, estruturas condicionais, laços de repetição, funções…
Assim como os idiomas, as linguagens de programação possuem estruturas que são comuns a maior parte delas, tais como condicionais, laços de repetição, e funções.
Em linhas gerais, os operadores são sinais usados para realizar algum tipo de operação lógica no algoritmo. Veja alguns exemplos:
- == Usado para verificar se dois valores são iguais.
- ! Usado para inverter um valor. Desta forma, !false é igual a true.
- != É usado para verificar se um valor é diferente de outro.
Já os condicionais são blocos de códigos que serão executados caso uma condição seja verdadeira (perceba a presença da lógica booleana). Veja um exemplo de uma estrutura condicional na linguagem Python:
variavel = 5 if variavel == 10: print("A variável é igual a 10") else: print("A variável não é igual a 10")
O algoritmo acima atribui o valor 5 à variável de nome “variável”, e a seguir verifica se seu valor igual a 10. Se for (if), exibe a mensagem “A variável é igual a 10”. Se não for (else), exibe “A variável não é igual a 10”.
Veja o mesmo algoritmo em um trecho de código em C++:
int variavel = 5; if (variavel == 10) { cout << "A variável é igual a 10"; } else { cout << "A variável não é igual a 10"; }
Os laços de repetição são blocos usados para repetir a mesma operação determinado número de vezes. Veja alguns exemplos em C++ (linhas iniciadas com // representam um comentário):
for(int i=0; i<10; i++) { cout << i; } // neste laço, a variável 'i' se inicia com o valor 0, // e seu valor é incrementado de 1 em 1, até chegar // em um valor menor que 10 e a cada execução, // o valor de 'i' é exibido. while(1 == 1) { cout << "Loop!"; } // Já neste caso, o bloco é executado enquanto // a condição dentro dos parênteses for verdadeira. // Como 1 sempre será igual a 1, temos um loop // infinito, em que será exibido loop em cada execução!
Por fim, as funções são blocos de códigos que você pode reutilizar em diversas partes de seu algoritmo. Veja um exemplo completo em C++:
#include <iostream> //ignore esta linha using namespace std; //esta também void funcao( ) { cout << "Me chamou?"; } int main ( ) { funcao( ); return 0; } // quando a função 'funcao( )' é chamada, // ela exibe a mensagem 'Me chamou?'
Futuramente também farei um artigo detalhado sobre o assunto.
Agora sim você pode programar… em uma linguagem didática!
Tendo estudado todos estes tópicos, você já é capaz de programar! Porém, nada de linguagens complexas ainda. O processo de aprendizagem de uma linguagem de programação é semelhante ao de aprender um novo idioma. Portanto, recomendo que você aprenda a partir de uma linguagem didática. Desta forma, você irá treinar o seu cérebro a pensar com linhas de código.
Para tanto, indico a linguagem Portugol, que foi baseada na linguagem Pascal e utiliza comandos em Português. Para que você programe nesta linguagem, indico também o programa VisuAlg.
Vamos aprender programação mais a fundo?
Depois de praticar com Portugol ou outra linguagem didática, você já está pronto(a) para aprender programação de verdade! Basta escolher uma linguagem e dominá-la, estudando a fundo seus conceitos e sua estrutura, além de praticar muito.
Como C++ é minha linguagem favorita, indico ela para que você comece a estudar depois do Portugol. Por ser uma linguagem bastante versátil, ela permite que você tenha bastante liberdade para codificar, oferecendo uma curva de aprendizado bem rápida.
Sugiro também que você resolva problemas de Maratonas de Programação, através de sites como o URI Online Judge, e o SPOJ Brasil.