domingo, 17 de fevereiro de 2013

Algoritmos e Programação - Algoritmos


Olá a todos. Hoje vou começar uma série de posts com o objetivo de ensinar Algoritmos e Programação. Quando tive essa matéria na universidade, aprendi A&P em uma pseudo-linguagem que consistia em um português estruturado. Como achei isso uma perda de tempo, resolvi ensinar Algoritmos aqui no blog direto em uma linguagem útil, a Linguagem C. Se você não entendeu nada dessa introdução, não se preocupe... nosso objetivo é ensinar. A bibliografia da série estará fundamentalmente baseada no livro de Herbert Schildt: C Completo e Total, 3ª Edição, editora Pearson. Caso você queira aprender a programar em C (já que a ideia do blog, por enquanto, é ensinar somente algoritmos), recomendo que adquira esse livro, que é muito bom. Vamos ao post então...

Vamos começar definindo: Algoritmo é uma palavra que, segundo a Wikipédia, vem do sobrenome do matemático persa Mohamed bem Musa Al-Khwarizmi. Um algoritmo é uma sequência finita de passos que podem ser realizados numa quantidade finita de tempo, para chegar a um propósito, que pode ser resolver um problema. Lembre-se disso: Algoritmo é uma sequencia de passos para chegar a um resultado.

Vou explicar melhor aquela coisa do "finito". Imagine que você queira fazer um bolo. Então o resultado que você quer alcançar é este: ter o bolo pronto para poder comê-lo. O algoritmo para fazer o bolo se chama 'receita', que você procurou no Google ou viu no programa da Ana Maria Braga. Imagine que, para fazer o bolo, você tenha que fazer infinitas etapas (ou seja, o algoritmo demanda infinitos passos). Neste caso, você nunca vai chegar a ter o bolo pronto, pois nunca terminará de fazê-lo. Se você nunca chega no seu objetivo, então a sequência de passos não é um algoritmo.

Agora imagine que a receita tenha uma sequencia finita de passos, mas que um dos passos demanda uma quantidade infinita de tempo, como por exemplo, mexa a massa infinitamente. Neste caso, novamente, você nunca alcançará o objetivo de ter o bolo pronto e, portanto, a sequência de passos não define um algoritmo.

Portanto, está explicado. Algoritmo é uma sequência de passos finitos com duração finita que permite obter um resultado. Exemplos de algoritmos: receitas, tutoriais de qualquer coisa, alguns manuais, etc...

Pois bem, com o advento da computação, foi percebido que o computador poderia ser usado para fins úteis, além do entretenimento e pornografia. O computador poderia resolver problemas como calcular a trajetória de mísseis, achar um arquivo através de uma engine de buscas e, inclusive, descobrir a resposta para a vida, o universo e tudo mais (42).

Mas para o computador resolver todos os problemas que não existiam antes dele, era preciso ensiná-lo a fazer as coisas. E o ato de ensinar um computador a fazer algo é chamado de programação. Programar um computador nada mais é que ensiná-lo um algoritmo em uma determinada linguagem de programação. E existem muitas linguagens de programação, cada uma com suas vantagens, desvantagens e aplicações específicas. Dentre as linguagem, eu cito a linguagem Assembly, C, C++, Java, MATLAB,etc...

A diferença entre linguagens é muita. Enquanto algumas linguagens conseguem comunicar diretamente com o hardware da máquina (mexer em bits de registradores, por exemplo), dentre elas o Assembly e o C, outras servem para criar aplicativos, e não lidar tanto com hardware, como Java. MATLAB, por exemplo, é uma linguagem com recursos específicos para lidar com simulação e problemas matemáticos.

Cada linguagem é diferente. São recursos diferentes e propósitos diferentes. Porém a linguagem é a parte mais fácil do processo de programação. O mais difícil é o algoritmo, que basicamente se aplica para qualquer linguagem. Um programa que coloque uma lista em ordem crescente seria diferente em C e Java, mas ambos poderiam ter a mesma ideia, basicamente a mesma sequencia de passos, ou seja, o mesmo algoritmo. Ao resolver um problema de programação, a parte mais trabalhosa é pensar em como resolver. Uma vez pensado no algoritmo que chega ao resultado esperado, se vamos implementá-lo em C ou em Java depende dos nossos conhecimentos e do tipo de aplicação em que o problema está inserido.

Post curto, só para introduzir o assunto. Vamos ficar por aqui hoje, embora eu tenha ficado com vontade de escrever muitas outras coisas. Recomendo, quem pretende seguir os posts sobre Algoritmos, que baixe o programa DEV C++ de graça no site da Bloodsheed Software, observando se a versão dele é compatível com seu sistema operacional. Basicamente o DEV C++ é o programa que irá permitir compilar e rodar os programas que você criar em C. Por enquanto é isso. Vou ficar por aqui, pois estou com fome, e vou executar um algoritmo para fazer um molho branco para uma massa. Um abraço e vamos, juntos, estudar e desbravar um pouco do vasto mundo da PROGRAMAÇÃO. Até nossa próxima aventura...


Imagem meramente ilustrativa...

2 comentários:

  1. muito bom o conteúdo do seu blogger sobre programação, estou ansioso para ler
    mais...

    ResponderExcluir