Antes de te responder “o que é um Algoritmo?”, você já parou para observar como nós, seres humanos, tomamos decisões? Por exemplo, quando você vai atravessar uma rua andando… O que você normalmente faz? Literalmente e inconscientemente você cria uma espécie de “script”, passos que você vai seguir antes de atravessar a rua. Algo mais ou menos assim:
- Você para na margem da calçada
- Olha para um lado
- Olha para o outro lado
- Neste momento, você já tem a resposta para a pergunta: é seguro atravessar agora?
- SE “sim”, você atravessa
- CASO CONTRÁRIO “não” , você espera o momento adequado
Esses passos vira um “Algoritmo” que você segue inconscientemente. Ou seja, vira uma sequência de passos muito bem definidos que você pode seguir. Essa é a definição simplificada de Algoritmo.
Visitando a área da matemática, temos um Algoritmo como: “processo de cálculo que, por meio de uma sequência finita de regras, raciocínios e operações, aplicada a um número finito de dados, leva à resolução de grupos análogos de problemas”. Essa definição atende bem o conceito de algoritmo no contexto voltado para a informática. Na informática temos um algoritmo como: “conjunto de regras, operações e procedimentos, definidos e ordenados modelado para solucionar algum tipo de problema em um número finito de etapas”.
Definir esses scripts de passos, obviamente não é coisa nova. Para você ter uma ideia, a palavra “algoritmo” só veio surgir na Idade Média derivado de um matemático chamado Mohammed ibn Musa al-Khwarizmi (780-850) . Ele tem uma vasta obra sobre o sistema de numeração indo-arábico.
“Quando povoaram o norte da África e parte da Espanha, os árabes ocidentais introduziram os símbolos hindus, que deram origem aos símbolos que conhecemos hoje, os símbolos indo-arábicos, e ao sistema de numeração conhecido como Sistema de Numeração Decimal.”
Caso você precise conhecer um pouco mais sobre os sistemas de numerações, temos o artigo Sistema de numeração: Binário, Octal, Decimal e Hexadecimal onde você vai encontrar mais detalhes.
Pensar sobre algoritmo é parte sumária para você evoluir como programador. Existem vários mecanismos que você pode utilizar para representar esses passos ordenados e conseguir enxergar claramente qual problema nosso algoritmo tenta resolver. Podemos citar os mais comuns como Descrição Narrativa, Pseudocódigo e Fluxogramas
Descrição Narrativa
O exemplo que fizemos no início deste artigo representa um algoritmo na forma de Descrição Narrativa. Estamos utilizando literalmente a nossa linguagem natural para representar os passos, porém, pode gerar algumas confusões de interpretação. Por exemplo, você pode utilizar uma frase que para você faz sentido, mas para outra pessoa que estiver lendo, não vai ser tão claro assim ou simplesmente a pessoa pode entender totalmente errado. Por este motivo, foram criadas outras ferramentas como o caso do Fluxograma, que representa esses passos utilizando elementos visuais em diagramas que vão representar fielmente a intenção de sua ação e sua finalidade.
Representar um algoritmo através de Fluxograma
O fluxograma resolve muito o problema da interpretação, como exemplo quando utilizamos uma descrição narrativa, porém simplifica tanto que em alguns momentos fica faltando mais detalhes para completar o entendimento das partes. Mas, no geral, é bem mais positivo utilizarmos um Fluxograma para representar nosso algoritmos do que simplesmente em texto puro.
Agora vale uma ressalva aqui. Tudo isso parece coisa moderna, não é? Para você ter uma ideia, em 1921, Frank e Lillian Gilbreth, engenheiros industriais apresentaram o “gráfico de fluxo de processos” à Sociedade Americana de Engenheiros Mecânicos (ASME, em inglês). Esses diagramas são largamente utilizados pelo mercado e conhece-los, vai te dar uma vantagem competitiva muito grande frente ao mercado de trabalho.
Porque os Fluxogramas são tão eficientes?
Quando você pensa sobre um determinado problema, existe uma ordem natural que você deve seguir de modo que você consiga enxergar em uma linearidade a sua execução e em que momento o fluxo vai seguir outros caminhos. Ou seja, você pega um problema qualquer, traça um início e um fim e no meio desse percursos você pode ter um controle de fluxo, como no nosso exemplo, SE “sim”, você atravessa, CASO CONTRÁRIO você espera o momento adequado. Além disso, você pode ter vários elementos que vão ajudar a conduzir essas decisões. E quando estamos pensando em fluxogramas voltados para esse mundo informatizado, temos elementos comuns que vão representar esses artefatos, como exemplo temos a definição se é uma ação dentro do processo, se é a representação de alguma entrada, saída ou armazenamento de dados, além de linhas que vão representar esse caminho do fluxo que pode ter até elementos que representam o sentido deste caminho. Veja alguns símbolos que o fluxograma nos permite utilizar:
Vamos ver como utilizar estes símbolos para representar nosso exemplo de “atravessar a rua”. Faça uma comparação deste fluxograma a seguir com a narração descritiva e observe os elementos visuais. O Fluxograma facilita muito na compreensão do domínio do problema.
“O domínio de um sistema compreende a área e qual problema de negócio ele pretende resolver.”
O que é pseudocódigo?
O pseudocódigo, podemos dizer que é uma forma genérica para representar um algoritmo que muito se assemelha ao código das linguagens de programação moderna, porém, descrito na nossa língua mãe. Como você sabe, as principais linguagens de programação utilizam-se de declarações de termos em inglês. Com o uso de pseudocódigo, conseguimos representar nossos algoritmos escrevendo, por exemplo, em português e de forma estruturada, como se estivéssemos programando, só quem utilizando nossa língua.
O tema sobre pseudocódigo é bem vasto, para agora, vamos ficar nessa parte conceitual e para exemplificar, vamos imaginar um problema simples, como é o caso de criarmos uma calculadora que recebe 2 números, efetua a soma e exibe o resultado na tela. Em uma linguagem de programação, por exemplo, em Javascript, ficaria mais ou menos assim:
var n1 = parseInt(prompt("Enter first number")); var n2 = parseInt(prompt("Enter second number")); var sum = n1 + n2; console.log("Sum = " + sum);
Como ficaria esse exemplo utilizando pseudocódigo? O algoritmo será o mesmo, porém representado de outra maneira. Veja o exemplo a seguir:
algoritmo “somar dois números”
algoritmo "somar dois números" var n1, n2, soma: real inicio escreva("digite um número ") leia(n1) escreva("digite outro número ") leia(n2) soma <- n1 + n2; escreva(" soma = ", soma) fimalgoritmo
Conclusão
Perceba que temos várias formas para representar um algoritmo, porém, se você não tiver um entendimento de como estruturar o seu pensamento sistêmico com o que você quer desenvolver como solução, não vai adiantar muito utilizar qualquer que seja os recursos ou ferramentas. Ressaltando, exercite bastante o seu pensamento sistêmico antes de sair tentando criar algoritmos.
Conheça nosso projeto onde vamos conseguir te levar para um nível bem alto como programador. Você vai se se diferenciar e ter um valor muito maior profissionalmente quando conseguir conquistar sua “Liberdade Tech”, conheça o projeto Let’s Dev Tech.
Confiança Sempre!!!
Fontes:
Seja o primeiro a comentar