CONCEITO A palavra algoritmo, à primeira vista, parece-nos estranha. Embora possua designação desconhecida, fazemos uso constantemente de algoritmos em nosso cotidiano: a maneira como uma pessoa toma banho é um algoritmo. Outros algoritmos frequentemente encontrados são:

instruções para se utilizar um aparelho eletrodoméstico;

uma receita para preparo de algum prato;

guia de preenchimento para declaração do imposto de renda;

a regra para determinação de máximos e mínimos de funções por derivadas sucessivas;

a maneira como as contas de água, luz e telefone são calculadas mensalmente; etc.

São vários os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui: “Um conjunto finito de regras que provê uma seqüência de operações para resolver um tipo de problema específico” [KNUTH] “Seqüência ordenada, e não ambígua, de passos que levam à solução de um dado problema” [TREMBLAY] “Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema” [AURÉLIO]

POR QUE PRECISAMOS DE ALGORITMOS ? Vejamos o que algumas pessoas importantes, para a Ciência da Computação, disseram a respeito de algoritmo: “A noção de algoritmo é básica para toda a programação de computadores”. [KNUTH - Professor da Universidade de Stanford, autor da coleção “The art of computer programming”] “O conceito central da programação e da ciência da computação é o conceito de algoritmo”. [WIRTH - Professor da Universidade de Zurique, autor de diversos livros na área e responsável pela criação de linguagens de programação como ALGOL, PASCAL e MODULA- 2] A importância do algoritmo está no fato de termos que especificar uma seqüência de passos lógicos para que o computador possa executar uma tarefa qualquer, pois o mesmo por si só não tem vontade própria, faz apenas o que mandamos. Com uma ferramenta algorítmica, podemos conceber uma solução para um dado problema, independendo de uma linguagem específica e até mesmo do próprio computador.

CARACTERÍSTICAS Todo algoritmo deve apresentar algumas características básicas: ter fim;

não dar margem à dupla interpretação (não ambíguo);

capacidade de receber dado(s) de entrada do mundo exterior;

poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo;

ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito).

Algoritmos podem ser representados, dentre outras maneiras, por: DESCRIÇÃO NARRATIVA Faz-se uso do português para descrever algoritmos. EXEMPLO: Receita de Bolo: Providencie manteiga, ovos, 2 Kg de massa, etc.

Misture os ingredientes Despeje a mistura na fôrma de bolo Leve a fôrma ao forno Espere 20 minutos Retire a fôrma do forno Deixe esfriar Prove VANTAGENS:

o português é bastante conhecido por nós; DESVANTAGENS:

imprecisão;

pouca confiabilidade (a imprecisão acarreta a desconfiança);

extensão (normalmente, escreve-se muito para dizer pouca coisa).

FLUXOGRAMA Utilização de símbolos gráficos para representar algoritmos. No fluxograma existem símbolos padronizados para início, entrada de dados, cálculos, saída de dados, fim, etc. VANTAGENS:

Uma das ferramentas mais conhecidas;

Figuras dizem muito mais que palavras;

Padrão mundial DESVANTAGENS:

Faz com que a solução do problema já esteja amarrada a dispositivos físicos;

Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-los;

Complica-se à medida que o algoritmo cresce.

Consiste na definição de uma pseudolinguagem de programação, cujos comandos são em português, para representar algoritmos. EXEMPLO: Algoritmo CALCULA_DOBRO início Leia NUM

DOBRO 2 * NUM Escreva DOBRO fim

VANTAGENS: Independência física da solução (solução lógica apenas);

Usa o português como base;

Pode-se definir quais e como os dados vão estar estruturados;

Passagem quase imediata do algoritmo para uma linguagem de programação qualquer. DESVANTAGENS:

Exige a definição de uma linguagem não real para trabalho;

Não padronizado.

FUNCIONAMENTO DO NOSSO COMPUTADOR Todos os computadores, independentemente dos seus tamanhos, são conceitualmente semelhantes ao esquema da figura anterior (há algumas diferenças, mas não trataremos aqui dos casos especiais). Resumidamente, podemos afirmar que existem 4 (quatro) operações básicas que qualquer computador pode executar: a) operações de entrada e saída: ler dados do teclado e escrever dados na tela são exemplos destas operações. Elas servem para introduzir dados na memória do nosso computador e exibir dados que já estejam lá armazenados; b) operações aritméticas: são utilizadas na realização de operações matemáticas (adição, subtração, multiplicação e divisão); c) operações lógicas e relacionais: têm aplicabilidade em comparações, testes de condições lógicas (2 > 6 ? X = Y ?); d) movimentação de dados entre os vários componentes: as operações aritméticas são executadas na Unidade Lógica e Aritmética, necessitando da transferência dos dados para essa unidade e da volta do resultado final para ser guardado na memória.

RESOLVENDO UM PROBLEMA Suponha que queiramos resolver o seguinte problema: a partir de dois números que serão informados, calcular a adição dos mesmos. Se você fosse encarregado de efetuar essa tarefa, seria bem provável que utilizasse os passos a seguir: a) saber quais são os números; b) calcular a soma dos números; c) responder à questão com o valor do resultado. Vejamos como seria resolvido esse mesmo problema em termos das operações básicas citadas anteriormente: a) operação de entrada de dados dos números ; b1) movimento do valor dos números entre a memória e a ULA; b2) operação aritmética de somar os 2 números; b3) movimentação do resultado da ULA para guardar na memória; c) operação de saída do resultado, que está guardado na memória, para o dispositivo de saída desejado. Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na operação matemática, não sendo explicitados. Em resumo, pode-se dizer que escrever algoritmos ou, em última análise, programar, consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operações básicas citadas. Esses passos que compõem o algoritmo são denominados de comandos. Os comandos de uma linguagem de programação podem estar mais próximos da máquina (linguagens de baixo nível) ou serem mais facilmente entendidos pelo homem (linguagens de alto nível). A sequencia de operações básicas, dada anteriormente, para resolver o problema de adicionar dois números, está em uma linguagem de baixo nível para o nosso computador hipotético. Em uma linguagem de alto nível teríamos um resultado assim: Leia X,Y

SOMA X + Y Escreva SOMA

Comentários