Conhecendo mais os Algoritmos
No nosso cotidiano estamos sempre resolvendo problemas, ou seja, sempre executando ações que nos levam a cumprir um objetivo para chegar a um resultado final.
Tomemos como exemplo uma situação simples que pode ocorrer no dia a dia: uma lâmpada queimada na nossa casa e que precisa ser substituída por outra. Temos então um problema que precisa ser resolvido, precisamos de ações que nos levem à solução do problema, sem nos darmos conta estamos trabalhando de forma algorítmica.
Mas o que seria um Algoritmo? Temos várias definições, entre elas destacamos algumas abaixo:
Conjunto de passos bem definidos, seguindo uma seqüência lógica, com objetivo de atingir um resultado;
A arte de escrever programas usando pseudocódigo ou uma linguagem específica de programação;
Algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um conjunto de passos (ações) que levam à solução de um determinado problema, ou então, é um caminho para a solução de um problema e, em geral, os caminhos que levam a uma solução são muitos (LOPES; GARCIA, 2002);
Um algoritmo, intuitivamente, é uma seqüência finita de instruções ou operações básicas (operações definidas sem ambigüidade e executáveis em tempo finito dispondo-se apenas de lápis e papel) cuja execução, em tempo finito, resolve um problema computacional qualquer que seja sua instância (SALVETI; BARBOSA, 1998, p. 5);
[...] o termo algoritmo, do ponto de vista computacional, pode ser entendido como um conjunto de regras formais, sequenciais e bem definidas baseadas no entendimento lógico de um problema a ser resolvido por um programador com o objetivo de transformar o problema em um programa que possa ser tratado e executado por um computador (MANZANO; OLIVEIRA, 2011, p. 32); e,
Os algoritmos fazem parte do dia-dia das pessoas. As instruções para o uso de medicamentos, as indicações de como montar um aparelho, uma receita de culinária são alguns exemplos de algoritmos. Um algoritmo pode ser visto como uma seqüência de ações executáveis para a obtenção de uma solução para um determinado tipo de problema (ZIVIANI, 2004, p. 1).
Qualidade de um bom Algoritmo
Para escrevermos um bom algoritmo precisamos seguir alguns passos importantes, desde a definição do problema até a sua resolução. Um bom algoritmo deverá de acordo com Paulo (2007?) ter:
Definição perfeita – deve descrever exatamente quais são as instruções que devem ser executadas e em que sequência. Deve ser tornado explícito o maior número possível de informações, pois a falta de alguma informação pode levar a uma interpretação errada do algoritmo;
Ausência de ambiguidade – não deve deixar dúvidas sobre o que deve ser feito. A ambiguidade acerca do que deve ser feito também pode levar a uma interpretação errada do algoritmo;
Eficácia – Conseguir resolver o problema em qualquer situação. Todas as situações de exceção que possam alterar o comportamento do algoritmo devem ser especificadas e tratadas; e,
Eficiência – Resolver o problema com o mínimo de recursos. Sempre se deve buscar aquele algoritmo que, dentre os diversos algoritmos que resolvam um mesmo problema, utilize a menor quantidade de recursos. No caso de algoritmos para processamento de dados, os recursos a serem considerados são espaços de memória (principal e auxiliar) e tempo de processamento (economia de CPU), entre outros.
Estratégias na construção de algoritmos
Para se construir um bom algoritmo precisamos traçar algumas metas para a resolução do problema em questão. De acordo com Paulo (2007?) é preciso:
- Especificar o problema claramente e entendê-lo completamente;
- Explicitar todos os detalhes supérfluos;
- Entrar no problema (envolver-se totalmente com o problema);
- Usar todas as informações disponíveis;
- Decompor o problema (Top-Down – Parta do problema geral até chegar aos problemas específicos); e,
- Usar o sentido inverso, se necessário (Bottom-Up – Parta dos problemas específicos até chegar ao geral).
Visão esquemática da construção de algoritmos
A figura 1 revela a visão esquemática para o desenvolvimento de algoritmos, levando-se em consideração a partir do problema, cinco fases a serem executadas. São elas: Análise Preliminar – entenda o problema com a maior precisão possível, identifique os dados; identifique os resultados desejados; Solução – desenvolva um algoritmo para resolver o problema; Teste de Qualidade – execute o algoritmo desenvolvido com dados para os quais o resultado seja conhecido. O ideal é que o universo dos dados tenha todas as combinações possíveis. Note que a qualidade de um algoritmo pode ser limitada por fatores como tempo para a sua confecção e recursos disponíveis; Alteração – se o resultado do teste de qualidade não for satisfatório, altere o algoritmo e submeta-o a um novo teste de qualidade; e, Produto Final – o algoritmo concluído e testado, pronto para ser aplicado (PAULO, 2007?).
Exemplos de algoritmos
Vejamos a seguir alguns exemplos de algoritmos.
Exemplo 1 – Problema: Algoritmo para ensinar uma pessoa a cortar as unhas dos pés
Algoritmo “CORTAR_UNHAS_DOS_PES”
– Início.
– Pegue o cortador de unha.
– Pegue uma bacia com água morna.
– Mergulhe os dois pés na água morna.
– Deixe os pés de molho na água morna por 5 minutos.
– Seque os pés.
– Corte as unhas.
– Fim.
Exemplo 2 – Problema: Calcular a média de quatro notas fornecidas pelo usuário utilizando Pseudocódigo
Algoritmo “CALCULAR_MEDIA_ARTIMETICA”
var
N1, N2, N3, N4, MEDIA: real
Inicio
escreva(“Digite a primeira nota: ”)
leia(N1)
escreva(“Digite a segunda nota: ”)
leia(N2)
escreva(“Digite a terceira nota: ”)
leia(N3)
escreva(“Digite a quarta nota: ”)
leia(N4)
MEDIA 🡪 (N1+N2+N3+N4)/4
escreva(“A média das notas é igual a: ”,MEDIA)
Fimalgoritmo
Exemplo 3 – Problema: Realizar a subtração de dois números inteiros fornecidos pelo usuário utilizando Diagrama de Blocos (DB)
Exemplo 4 – Problema: Realizar a soma de dois números inteiros usando o Computador Simplificado (CS)
CS “SOMA_DOIS_NROS_INTEIROS”
E1 – Pegue um cartão na bandeja e ESCREVA o seu valor em E16. E2 – Pegue um cartão na bandeja e ESCREVA o seu valor em E15.
E3 – Some o valor de E16 com o de E15 e ESCREVA o resultado em E14. E4 – IMPRIMA o conteúdo de E14.
E5 – PARE.
Exemplo 5 – Problema: Realizar a divisão de dois números inteiros usando a linguagem de programação C
#include <conio.h> #include <stdio.h> #include <stdlib.h>
//Programa para realizar a divisão de dois números inteiros int main(){
int n1, n2;
float r;
printf(“Digite o primeiro numero inteiro: ”); scanf(“%d”,&n1);
printf(“Digite o segundo numero inteiro: ”); scanf(“%d”,&n2);
r = n1/n2;
printf(“\nO resultado corresponde a: %2.2f”, r); getche();
return(0);
}
Com base no Exemplo 1 demonstrado no tópico 1.5 desta apostila, resolva os problemas abaixo da mesma forma:
1- Construa um conjunto de passos para ensinar uma pessoa a lavar os cabelos com xampu;
2- Construa um conjunto de instruções para ensinar uma pessoa a fritar um ovo;
3- Construa um conjunto de passos para descrever a sua vinda para a universidade;
4- Construa um conjunto de passos para ensinar uma pessoa a fazer um bolo de chocolate;
5- Construa um conjunto de passos que ensine uma pessoa a conquistar um namorado ou uma namorada.

Comentários
Postar um comentário