1_Visão geral do algoritmo
Introdução
Para começar a falar de algoritmos é necessário começar pela definição: “Algoritmos são um conjunto finito de instruções ordenadas cujo objetivo é resolver um problema” existem várias definições mas o significado é sempre o mesmo.
Vamos comparar como o algoritmo funciona com uma receita de torta, onde a realização da torta é o problema que queremos resolver. Para começar, deve estar claro qual é o problema, qual torta gostaríamos de fazer? Quais ingredientes precisamos? O bolo é para quantas pessoas? Depois de analisar tudo, podemos começar com a preparação.
Seguindo a receita, juntam-se os elementos pela ordem indicada, por exemplo, primeiro o leite com a farinha e o açúcar, depois o fermento e por fim uma pitada de sal.
É um conjunto precisamente finito de etapas, cujo objetivo é resolver o problema, que é cozinhar o bolo.
Se seguirmos todos os passos sem nenhuma alteração, em teoria, o bolo deve ser sempre o mesmo. Na informática, o funcionamento de um algoritmo é semelhante, existem muitos pequenos passos, geralmente de natureza estritamente matemática que, se seguidos da mesma forma, permitem chegar ao mesmo resultado. Se, por outro lado, mudarmos um dos ingredientes, o resultado será diferente na receita e na informática.
Etapas a realização de um algoritmo envolve duas fases:
● Fase de planeamento , onde se estudam os vários passos e se esboça a primeira estrutura do algoritmo, como quando se colocam todos os ingredientes na mesa, pelo que ainda não estamos a cozinhar mas a planear o que usar e fazer.
Na ciência da computação as etapas são:
- Pseudocódigo , onde os algoritmos estão em linguagem natural. Todos podem entendê-lo sem ser um especialista.
- Snippet , é como o pseudocódigo, mas mais semelhante à linguagem de programação. Se o snippet for criado, o pseudocódigo não será, e apenas um especialista poderá criá-lo.
- Plano de execução , qual processo será executado primeiro? Quais são os próximos? Alguns deles podem ser executados juntos? Pensando na receita da torta, pode ser que precise de um tempo para pré-aquecer o forno ou deixar a massa descansar, então posso fazer mais alguma coisa durante esse tempo?
Requisitos
Algoritmos produzem cálculos e precisam de dados na entrada para funcionar. Essas duas variáveis podem nos levar a:
- Algoritmos de alta intensidade de dados , que exigem muitos dados de entrada, mas não precisam de muitos cálculos;
- Algoritmos de alta intensidade de cálculo , requerem grande necessidade de recursos, mas não grande necessidade de dados;
- Algoritmos intensivos de dados e cálculos , têm uma grande necessidade de dados e cálculos.
Quando um algoritmo é considerado funcional? Um algoritmo deve sempre ter três características para ser funcional. Tem que ser:
- Correto , ele deve retornar as respostas certas.
- Compreensível , o mais descomplicado possível.
- Eficiente , não precisa demorar muito, mesmo que correto não é possível esperar milhares de anos por uma resposta, mas mesmo um dia é inaceitável para a maioria dos algoritmos.
O tempo que leva para rodar um algoritmo é um assunto sentido na comunidade de informática, então não faltam formas de avaliar a velocidade dele:
● Estimativa de desempenho , uma média é feita entre a execução mais rápida e a mais lenta. Se as avaliações estiverem corretas, a execução nunca deve passar pela pior avaliação.
● Big O , este indicador avalia o tempo que leva para cada operação e pode assumir estes valores:
- 1 = a complexidade é constante , o tempo não muda com base nos dados. Então se eu colocar 10 ou 20 gramas de fermento no bolo o cozimento será sempre de 10 minutos.
- N = o tempo muda com base nos dados , então digamos que se eu colocar 10 gramas de fermento no bolo levará 10 minutos para cozinhar enquanto se colocar 20 gramas levará 20 minutos para cozinhar.
- N 2 = o tempo é proporcional ao quadrado da entrada . Então se dessa vez com 10 gramas demorar 10 minutos se eu colocar 20 gramas o bolo vai demorar 40 minutos para assar.
- Logn = é proporcional ao logaritmo do tamanho da entrada . Você me pegou sem um exemplo culinário para propor neste caso. Só sei que nesse caso toda vez que eu insiro um dado, o tempo de execução do algoritmo diminui.
explicabilidade
Para concluir, um algoritmo deve ter uma última característica: deve ser explicável. Quem consulta o código do algoritmo deve entender como cada parte afeta o resultado final. Hoje bancos, estados, instituições de treinamento e empresas utilizam algoritmos para tarefas que impactam a vida das pessoas, como descartar um currículo ou encaminhá-lo para a próxima etapa de seleção, conceder um financiamento imobiliário ou cuidar da fiscalização. E essas são apenas algumas das tarefas executadas por um algoritmo.
A compreensibilidade é, portanto, essencial para evitar que alguns grupos de pessoas sejam discriminados voluntária ou involuntariamente. Facilitar o acesso de algumas pessoas a uma hipoteca modificando um Algoritmo é extremamente simples para um especialista, então os Algoritmos devem ser compreensíveis.
Um dos métodos de avaliação é trabalhar as variáveis utilizadas. Se você alterar uma variável, é possível compreender como essa variável afeta o Algoritmo, então a área de influência da variável é mapeada.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)