Manzano Home Site

Programação - Algoritmo


Segundo o dicionário Aurélio, o termo algoritmo é oriundo do idioma Latim das palavras algorismos ou algorithmos, que representam o conceito de algarismo. Este termo teve influência do idioma Grego através da palavra arithmós, que representa número.

Na área da matemática, este termo descreve o processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, regras formais para a obtenção do resultado, ou da solução do problema.

Na área de programação de computadores, este termo descreve o conjunto predeterminado e bem definido de regras e processos destinados à solução de um problema, com um número finito de etapas.

Desta definição, pode-se entender que Aurélio Buarque de Holanda Ferreira, define com bastante propriedade para os Profissionais da área de Tecnologia da Informação o que vem a ser de fato um algoritmo. Quando diz " conjunto predeterminado e bem definido de regras e processos destinados à solução de um problema, com um número finito de etapas ", descreve profundamente o conceito mais intimo do que vem a ser verdadeiramente um programa de computador. O conceito de programação está profundamente vinculado ao conceito de algoritmos.

Um algoritmo poderia ser grotescamente comparado a uma receita culinária. Uma receita é um programa de atividades que deve ser respeitada e cumprida passo-a-passo. Caso uma dos passos seja desconsiderado, a receita não dará certo.

Tipos de Algoritmos


Do ponto de vista computacional, pode-se estabelecer a existência de três tipos de algoritmos que são normalmente utilizados para programar-se um computador:

  • Algoritmo Gráfico – representação do raciocínio lógico através do uso de “diagramas de blocos” ou de “diagramas de quadros”. Os diagramas de blocos, erroneamente denominados “fluxogramas”, são também conhecidos como “modelo tradicional”, foram desenvolvidos pela entidade ANSI (American National Standards Institute) no ano de 1960, é formado por um conjunto de símbolos padronizados. Os diagramas de quadros são também conhecidos como “diagrama de Chapin” ou “diagramas N-S”, apresentados em 1973.
  • Algoritmo Descritivo – representação textual do raciocínio lógico em uma pseudo-linguagem, baseada nas técnicas de PDL (Programa Design Language). Esta forma de representação, permite estabelecer além de uma documentação do código de programa, a estrutura genérica para a codificação do programa em qualquer tipo de linguagem de programação.
  • Algoritmo Codificado – representação formal do algoritmo descritivo em uma determinada linguagem de programação, ou seja, o próprio programa.

Linguagem de Programação


Uma linguagem é um sistema de signos (símbolos) utilizados para proceder a comunicação entre um emissor e um receptor e vice-versa. Para que um computador funcione é necessário que este seja programado. A ação de programar um computador ocorre com a utilização de uma linguagem (de alto ou baixo nível). Isto significa dizer que, para um programador conseguir fazer com que um computador execute uma determinada ação, esta deverá ser programada através da utilização de uma linguagem de programação.

A linguagem de programação de baixo nível (assembly, cuidado para não confundir com assembler e nem tão pouco com linguagem de máquina) ocorre no nível do processador e exige um alto conhecimento da estrutura interna da máquina. Já uma linguagem de alto nível (COBOL, Basic, C, Pascal, Basic, ADA, Logo, Fortran, etc) exige um conhecimento interno de máquina menor, mas não o dispensa. O que difere uma linguagem de alto nível em relação a linguagem de baixo nível, é que as Linguagems de alto nível estão próximas da linguagem humana. É através do uso de uma determinada linguagem de programação que se consegue gerar um programa.

Programa de Computador


O programa de computador é a coleção de instruções logicamente ordenadas com a finalidade de atingir a um determinado objetivo. Quando um programa é apenas escrito em código, este é denominado programa fonte. O programa fonte é na verdade um arquivo em formato ASCII (lê-se asquí e não asqui 2), ou seja, formato texto puro contendo todo o código da programa.

Para tornar-se funcional este necessita ser compilado (traduzido para linguagem de máquina). O programa compilado é denominado programa objeto. Porém para que o programa objeto seja usável este necessita ser ligado as rotinas de execução do Sistema Operacional, denominadas runtime. Quando um programa objeto é ligado a uma runtime, este torna-se um programa executável. Normalmente estas tarefas ficam transparentes dependendo do compilador em uso. Pois o próprio compilador gera o programa executável a partir do programa fonte sem que o programador perceba isto.

No tópico Linguagem de Programação foi feita uma observação para não confundir assembly com assembler. Assembly é a linguagem de baixo nível. Assembler é o programa que permite ao programador montar (semelhante a um compilador) o código assembly e compilá-lo.

Porém nem todos os chamados compiladores são compiladores de fato. Um compilador é o tipo de programa que ao compilar um programa fonte (em linguagem de alto nível) o transforma em linguagem de máquina. Se houver a tentativa de descompilá-lo a fonte obtida estará escrita em código assembly. São exemplos de compiladores puros (Delphi e Turbo Pascal - para a linguagem PASCAL) e (Visual C, Visual C++, Turbo C, Turbo C++, Borland C, Borland C++) para as Linguagems C e C++.

Existem alguns chamados compiladores, que na verdade são pseudo-compiladores. Um pseudo-compilador também gera programas executáveis, porém o objeto gerado não está traduzido para a linguagem de máquina. Se houver a tentativa de descompilar se conseguirá o código fonte original. São exemplos de pseudo-compiladores a linguagem de gerenciamento de banco de dados Clipper para bancos de dados padrão dBase e a linguagem de programação do ambiente Visual Basic (pelo menos até a versão 5).

Lógica de Programação


Para tornar-se um programador é necessário aprender a fazer uso da lógica de programação. É necessário entender como um computador manipula as informações em sua memória e as direciona através do processamento. Este conhecimento é adquirido com muito treino e persistência intelectual, pois o futuro programador terá que direcionar a sua mente, o seu pensamento com este objetivo.

Para alguns este aprendizado é fácil, para outros um tanto complexo. Porém um fato é verdadeiro, uma pessoa aprende realmente a programar quando esta realmente a fim de fazer isto. Ou seja, quanto mais difícil de solucionar for o problema, ali estará ela tentando resolvê-lo sem se cansar. Por outro lado, existem aqueles que a sombra do primeiro problema se descabelam e não conseguem fazer absolutamente nada. Na verdade para se aprender a programar é necessário possuir uma mudança de pensamento, e considerar a programação algo tão trivial como andar de bicicleta ou mesmo dirigir.

Outro ponto a ser considerado é o fato de se aprender a programar utilizando-se as técnicas de algoritmos primeiro. Tendo sido desenvolvida a habilidade de montar os algoritmos, passa-se para a fase de codificá-los em uma determinada linguagem de programação.

Programação de Computadores


Muitos profissionais separam erroneamente o conceito de algoritmos do conceito de programa de computador. Um programa de forma genérica é definido como sendo, segundo o próprio Dicionário Aurélio " seqüência de instruções ou declarações expressas em uma linguagem de programação, com o objetivo de obter um resultado específico. Assim sendo, um programa de computador escrito em uma determinada linguagem, é por si só um algoritmo.

Todo computador para funcionar necessita ser controlado por um programa. O Sistema Operacional de um computador é o programa responsável por controlar todas as funções a serem desempenhadas em nível operacional. Assim sendo, se você deseja controlar um computador e direcionar o seu funcionamento, necessitará programá-lo.

Ambiente de Programação


Outro conceito que causa muita confusão é saber a diferença entre ambiente de programação e linguagem de programação. É comum ouvir-se dizer que programa-se em Clipper, Delphi, Visual Basic, etc. Porém ninguém programa nestas Linguagems, simplesmente por elas não existirem. As referências Clipper, Visual Basic, Visual C, Delphi, Turbo Pascal e outras são referências feitas aos ambientes de programação. O ambiente de programação é a ferramenta que facilita a utilização da linguagem de programação. Só para dar uma rápida idéia o ambiente Visual Basic utiliza a linguagem Structure Basic (Basic Estruturado) e o ambiente Delphi utiliza a linguagem Object Pascal (Pascal Orientado a Objetos).