Módulo V - Algorítmos pag. 4/7

HISTÓRICO

fig201Desde os tempos mais remotos o homem procura tornar seu trabalho repetitivo mais fácil e mais eficiente. Boa parte desse trabalho, de um modo ou de outro, envolve números e suas operações básicas (adição, subtração, multiplicação e divisão), mas se considerarmos esses números como parte de um processo, por si só, de nada valem, assim como, por analogia, os grãos de café, o minério de ferro ou petróleo crus, sem o devido processamento tem pouco ou nenhum valor real. Considerando isso, vemos que o homem sempre teve a necessidade de processar dados visando torná-los úteis como elementos de informação, e sempre buscou novos métodos e tecnologias para resolver esses problemas.

Para um conjunto de passos perfeitamente definidos que visam a solução de um determinado problema damos o nome de ALGORITMO, e a esse algoritmo codificado de forma que um computador possa executar seus passos denominamos PROGRAMA DE COMPUTADOR (software).

SISTEMA DE PROCESSAMENTO DE DADOS

Processamento de Dados é a coleta, o processamento e a distribuição de fatos e algarismos para atingir um resultado desejado. Os equipamentos (aparelhos) e os procedimentos com que o resultado é alcançado formam um sistema de processamento de dados.

Independentemente da espécie de processamento de dados ou da espécie de equipamento usado, todos os sistemas de processamento de dados envolvem, pelo menos, três elementos básicos:


1. os dados da fonte, ou entrada, que entram para o sistema;
2. processamento ordenado e planejado dentro do sistema; e
3. resultado final, ou saída, do sistema.

Solucinando os Problemas

A programação de computadores é a tarefa de desenvolver um programa (software). Essa tarefa definitivamente não é difícil, mas precisa ser realizada meticulosamente. Envolve muito mais do que apenas codificar instruções. Para usar o computador como uma ferramenta de trabalho, eficaz e eficiente, na solução de problemas, alguns passos devem ser efetuados criteriosamente:


Definir o problema
– descrevendo o problema, os dados de entrada associados ao problema e os resultados desejados, em português corrente, tão clara e completamente quanto possível.


Planejar um algoritmo de solução
– decidindo como proceder na solução do problema; desdobrando a tarefa em operações específicas que o computador possa executar.


Codificar a solução
– redigindo um programa para dirigir o computador na execução das operações identificadas no algoritmo de solução.


Testar o programa
– depurando e testando o programa codificado, para assegurar que os resultados desejados são fornecidos como saída.


Completar a documentação
– reunindo e verificando todos os documentos associados ao programa, e juntando-os num manual de desempenho que possa ser consultado por qualquer um que necessite saber a respeito do programa.

Esses passos são seqüenciais e devem ser totalmente exauridos, ou seja, somente se executa a próxima etapa uma vez que a anterior tenha sido cumprida com o mínimo de erros. É comum um programador ao testar o programa, perceber que o algoritmo não foi bem elaborado, ou ainda que o problema não foi perfeitamente definido. Parece uma incongruência escrever uma solução para o problema errado, mas acredite, talvez seja esse o erro mais comum nessa profissão.

DEFINIR O PROBLEMA

A solução de um problema através de um programa de computador é usualmente, caracterizada por um conjunto incompleto e não organizado de propriedades, que imaginamos que o programa deva vir a ter, mais ainda, a concepção do programa tende a depender da pessoa que o concebeu. Essa concepção (descrição da solução) deve ser documentada de uma forma organizada, para que possamos ter uma definição precisa do problema a ser resolvido. Esse documento deve induzir em seus leitores, o mesmo entendimento do problema a ser resolvido.

Neste ponto devemos considerar o conceito de programação estruturada como ferramenta essencial para tratamento da complexidade de problemas.

Nossa ferramenta mental para tratar da complexidade é a abstração. Um problema complexo não deve ser imediatamente tratado a nível máximo de detalhes.

Um método bastante utilizado é o “Top-Down” o qual consiste em decompor o problema principal (Problema P) em pequenos subproblemas (P1, P1_1, P2, P2_1...Pn) de forma que, ao resolvermos, esses o problema como um todo já estará resolvido.

A decomposição em subproblemas deve ser feita até que as subsoluções estejam expressas em um nível de ações elementares, podendo ser executadas por um ser humano ou uma máquina.

A programação estruturada é apenas uma metodologia de trabalho, na realidade é mais um estilo no qual o problema deverá ser especificado, podendo inclusive ser aplicada em conjunto com outras metodologias, como por exemplo a PROGRAMAÇÃO ORIENTADA A EVENTOS OU A OBJETOS.

Por exemplo: se precisarmos calcular a média das notas tiradas em uma prova por uma determinada turma, como deveríamos proceder usando a técnica anteriormente ensinada?

Bem, o nosso maior problema (P) é calcular a média, mas o que precisamos para chegar até esse ponto?

Primeiro precisamos saber o total de alunos da turma (P1), depois temos que saber a soma de todas as notas da turma (P2) e finalmente temos que dividir a soma das notas pelo total de alunos; assim temos que P = P2/P1, ou seja devemos primeiro resolver como calcular os totais de alunos e notas e só então , teremos meios de saber a média da turma.

PLANEJAR UM ALGORITMO DE SOLUÇÃO

“O conceito central da programação e da ciência da computação é o conceito de algoritmo, isto é, programar é basicamente construir algoritmos” esta frase, dita por Niklaus Wirth, (um dos precursores da programação de computadores como ciência e criador da linguagem Pascal), sintetiza todo este capítulo, todavia podemos estendê-la e ir muito mais além.

fig205Se aplicarmos esses conceitos no nosso dia-a-dia, veremos que diariamente criamos uma série de algoritmos para resolver os mais diversos problemas, desde um atalho para não chegarmos atrasados ao emprego até a utilização de um telefone.

A cada vez que nos deparamos com um problema, de qualquer natureza, intuitivamente realizamos um algoritmo para resolvê-lo. Todavia, para ser utilizado como ferramenta de trabalho esse conceito deve ser estudado com mais detalhe, o que faremos a seguir.

Um algoritmo é um texto direcionador (tal qual uma receita de bolo), onde cada linha contém uma ação primitiva. A função do algoritmo, quando executado, é a de agir (operar) sobre os dados, transformando-os em informações úteis.

Logo construir um algoritmo é descrever um padrão inalterável de comportamento, a partir de ações primitivas, possibilitando a reprodução de um evento a cada execução do algoritmo

ICEA/EAD © 2005
Instruções