Sites para treinar lógica de programação e resolução de problemas

Oi pessoal,

Tempos atrás postei um artigo sobre como melhorar sua habilidade de programação e resolução de problemas. Hoje venho aqui deixar alguns links de alguns sites que uso para treinar lógica de programação.

Afinal, não importa se você tem 1, 5, 10 ou 20 anos de carreira em TI, você SEMPRE tem algo a aprender ou algo a melhorar. Gosto desses sites justamente por isso, por ter a oportunidade de aprender alguma técnica de programação nova.

http://www.cse.buffalo.edu/~pn33/img/portfolio/algorithm.png

Outra coisa que gosto desses sites é que me ajudaram a escrever código com mais qualidade e mais otimizado. Quando você tem um problema e cria um algoritmo para resolver esse problema, existem N maneiras de se fazer isso. Mas com o tempo você percebe que pode otimizar mais o algoritmo, e você percebe maneiras do seu algoritmo ser executado mais rápido, e isso é muito legal!

Seguem alguns links de onde curto resolver problemas:

  • UVA: site que reúne um conjunto de problemas bem legal, dos mais variados assuntos: adhoc, programação dinâmica, backtracking, etc. Também tem os problemas usados em maratonas de programação regionais e mundiais. Pode submeter os problemas com C/C++, Java.
  • SPOJ: similar so UVA e tem tradução para o português.
  • TopCoder: vários problemas legais também. De vez em quando tem campeonato de programação patrocinado por grandes empresas, como NASA, Yahoo, Google. Se você vence, ganha uma graninha e pode ganhar até um emprego nessas empresas grandes também.
  • Project Euler: problemas matemáticos onde você só precisa entrar com a resposta. Mas o legal é criar um algoritmo para poder descobrir essa resposta.
  • CodingBat: é um site voltado para iniciantes que queiram praticar Java e/ou Python.
  • Coderbyte: também tem uma série de problemas, e já oferece um ambiente para você codificar e testar o seu algoritmo antes de submeter.
  • CodeChef: também é um juiz online como o SPOJ e UVA. Pode submeter a solução em várias linguagens: C/C++, Java, Phyton, Go, Lisp, PHP, entre outras.
  • Hacker Rank: também é um juiz online e pode submeter as soluções em diversas linguagens.
  • URI: também é um juiz online e pode submeter as soluções em diversas linguagens. Disponível em português. Tem problemas separados por tipo (fácil, Strings, estrutura de dados, grafos, etc).
  • CodinGame: resolução de problemas através de puzzels e joguinhos. Suporta várias linguagens e é bem legal!

E se você buscar por "programming problems" ou "programming online judge" ou "programming challenges" você ainda encontra muitos outros sites!

Se o inglês não anda afiado, a melhor opção é o SPOJ e o URI. :)

Conhece mais algum ou quer deixar alguma dica? Deixe nos comentários que vou atualizando o post com as dicas também!

Até a próxima e bons códigos! :)