Blog Bugginho Academy

Não consigo aprender algoritmos, e agora?

Se você já se sentiu meio pra baixo, achando que nunca vai aprender a criar seus próprios algoritmos, não se desespere, você não está sozinho nessa e o seu problema tem solução.

Por incrível que pareça, muitos estudantes de TI tem mais dificuldade em abstrair e descrever soluções do que aprender uma linguagem de programação e por conta disso, muitos estudantes acabam abandonando o curso nos primeiros semestres.

Parte desse problema se dá porque a gente desde pequeno aprende a estudar da maneira errada. Muita gente simplesmente “decora” o assunto ao invés de entende-lo. E isso até dá certo com algumas coisas na escola, mas em desenvolvimento de software um problema por mais que seja parecido com outro pode ter soluções completamente diferentes.

Mas, ai vão algumas dicas para você começar a resolver seus problemas sem esquentar a cabeça:

Tente entender o problema

Sempre que você for exposto a um problema, tente entendê-lo:

  • O que eu preciso descobrir, calcular ou analisar?
  • Quais dados eu tenho à minha disposição? Eles são suficientes para eu resolver o meu problema?
  • As condições impostas são suficientes?
  • Escreva em um papel tudo que você imagina que será feito nesse algoritmo

Crie uma estratégia para solucionar o seu problema

Lembre-se que algoritmo não tem nada a ver com linguagem de programação, mas sim com raciocínio

  • Pensei: Eu já fiz algo parecido com isso? Será que a solução que eu utilizei da última vez, serve para esse problema, mesmo que parcialmente?
  • Quando o problema for muito complexo, tente quebra-lo em partes menores e vá solucionando essas partes de forma isolada
  • Tente enxergar o problema com “os seus olhos”. As vezes o problema, da forma que foi exposto por outra pessoa, pode não ficar tão claro para você

Mão na massa

  • Escreva o seu algorítimo em português mesmo ou em portugol e vá analisando todas as possibilidades
  • Verifique se cada parte do que você fez está funcionando corretamente, ou seja, se pergunte: “Se eu informar o valor X, o resultado está sendo Y?”
  • Desenhe o Fluxograma de tudo que precisa ser feito
  • Sempre tenha um teste de mesa para lhe auxiliar, ou seja, escreva em um papel algumas possibilidades de retorno da sua função. Ex: Você está fazendo uma função que soma 2 número. Escreva em um papel: “Se eu informar 4 e 2 o resultado tem que ser 6”.

Melhore o seu código

No primeiro momento, não se preocupe muito com desempenho, legibilidade ou com um código enxuto e conciso. Apensas faça ele funcionar corretamente. Uma vez que ele já foi testado e já está funcionando, comece a melhora-lo.

  • O que eu posso fazer para melhorá-lo?
  • É possível reduzir o número de passos ou de dados?
  • É possível melhorar o desempenho dele?

 

Colocando as dicas em prática

Um exemplo básico: “Crie um algoritmo que receba do usuário um nome e analise se aquele nome já encontra-se armazenado em uma determinada lista. Caso o nome não esteja presente, insira-o na lista, caso contrário, informe ao usuário que o nome já encontra-se cadastrado na lista

Praticamente todas as linguagens de programação já dispõe de métodos prontos para realizar essa tarefa de uma maneira bem simples e rápida, porem não é esse o nosso objetivo, apenas queremos estudar como construir nossos próprios algoritmos.

O que eu preciso descobrir, calcular ou analisar?
Bem, precisamos descobrir se um determinado nome está presente em uma lista

Quais dados eu tenho à minha disposição? Eles são suficientes para eu resolver o meu problema?
Os dados que eu tenho à minha disposição por hora é só uma lista, que não foi informado se nela contém algum item, então, vou inferir que ela está vazia.

As condições impostas são suficientes?
Sim, não vejo nenhum problema nem limitação imposta pelo enunciado. Você vê?

Escreva em um papel tudo que você imagina que será feito nesse algoritmo

  • Vou definir uma lista vazia
  • Vou solicitar um nome do usuário
  • Vou comparar se aquele nome está presente na minha lista
  • A depender do resultado no passo anterior eu vou ou alertar o usuário ou cadastrar o valor na lista

Quando o problema for muito complexo, tente quebra-lo em partes menores e vá solucionando essas partes de forma isolada
Aqui eu vou quebrar o meu algoritmo em algumas partes.

Definindo a lista

Vou utilizar a linguagem Python, mas a lógica é a mesma para qualquer linguagem de programação

Eu sei que a lista precisa estar vazia, mas lembre-se, precisamos resolver um problema de cada vez, então já iniciaremos nossa análise com nossa lista contendo alguns itens. Isso nos ajudará muitos.

Obtendo os dados do usuário

Verificando se o nome informado encontra-se na lista

Imprimindo a lista atualizada (caso o nome seja inserido)

Vamos analisar o nosso código:

O nosso código já obtêm um nome informado pelo usuário? Sim
O nosso código já verifica se esse nome está na lista? Sim
O nosso código já insere o nome na lista, caso ele já não esteja cadastrado? Sim

O que podemos fazer agora?

Melhore o seu código

O primeiro problema que precisamos resolver é que o nosso programa só lê um nome e encerra. Se o usuário quiser informar mais um nome, não é possível. Vamos resolver isso:

Mas se continuarmos analisando nosso código, veremos que ainda dá para melhorar ele. Que tal separar cada operação numa função separada?

Imprime todos os elementos da lista

Verifica se um item está contido na lista

Nosso código ficou assim:

Agora você pode “esvaziar” sua lista e testar seu código. Viu como é bem simples criar um algoritmo? Tenha sempre em mente que essa não é a única forma de escrever esse algorítimo, você pode pensar na sua própria solução, talvez fica até mais enxuto que esse 🙂

É isso, por hoje é só, pessoal!!!

Danilo Inácio

2 comentários

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  • Uma dica:
    Você acabou falando “popular uma lista”,um termo técnico para quem é mais experiente. Acredito que poderia dizer: “Os dados que eu tenho à minha disposição por hora é só uma lista, que não foi informada se contém nomes ou não, então, vou supor que ela está vazia.”

Your Header Sidebar area is currently empty. Hurry up and add some widgets.