Executando verificação de segurança...
7

Como vocês desenvolveram a lógica de programação?

Boa tarde! Sou novo aqui e aspirante à programador.
Estudo sozinho em casa, foco principalmente na base (Lógica, sintaxe, estrutura, otimização etc), faço uma mescla de conteúdos: curso online gratuito, testes/"projetos" e leitura/consulta da documentação. Recentemente descobri alguns exercícios de lógica de programação, focando nos comandos básicos (comandos de condição, múltipla escolha, repetição), matrizes e vetores.

Quero saber sobre exercícios de lógica de programação disponíveis na internet e outros métodos que posso usar para aprender programação; e claro principalmente a pergunta inicial: Como vocês aprenderam a lógica de programação/programar?

OBS: Tenho um bom tempo livre para aprender e quero intensificar os estudos.

8

Resposta simples: estudando.

Você pega um livro, vê como faz e faz. Faz muito. Estudar é o processo completo. Só ler a teoria não é estudar, só praticar não é estudar.

A resposta mais completa começa dizendo que o termo "lógica de programação" é polêmico, para dizer o mínimo.

Lógica é lógica. Se quer desenvolver isso, é matemática, é aprendizado contínuo, é entender a relação entre as coisas, as ações e consequências disso. Não existe a pessoa aprender programação sem saber lógica.

Eu já pesquisei e até hoje nunca encontrei um local que explique o que é a tal "lógica de programação", mesmo os livros que possuem esse termo no título não explicam o que ele significa. Eles explicam o que é fazer algoritmo. Não confio muito em quem usa termos erros. Em inglês não se usa esse termo. Então vou entender que quer saber como fazer construção de algoritmos.

Então, sabendo lógica dentro do estudo normal que aprende na escola e no dia a dia da vida, você precisa aprender programação, ou seja, precisa aprender como usar as variáveis, operadores, funções, tipos de dados, conjuntos, e outras coisas, que são conceitos matemáticos que a pessoa já deveria saber, além de alguns comandos específicos que embora tenha em matemática não é muito usado, que é o tal controle de fluxo do algoritmo e são apenas três: sequência, seleção e desvio.

E aí vai aprendendo desenvolver algoritmos que é receber dados, manipulá-los e entregar um resultado. Vai vendo o que já foi feito e vai exercitando, cada vez com problemas diferentes mais difíceis. Vai treinando cada uso matemático, provavelmente em uma linguagem de progranação.

Hoje eu tenho dúvidas se deveria aprender com uma "linguagem falsa", tipo Portugol, fluxograma ou algo do tipo. Não tenho dados que indicam se isso é melhor ou pior.

Um erro comum que as pessoas fazem é pedir para outras pessoas fazerem para elas em vez de aprender fazer por conta própria. Quem faz isso está trapaceando. Trapaceando quem? A si própria, está se enganando fingindo que está aprendendo quando na verdade está só decorando coisas prontas, e isso é tudo, menos programar.

Então você está pegando exercícios que pedem para você criar algoritmos. Ou seja, pede para exercer seu conhecimento matemático. Programação é a matemática aplicada em cada momento. É ridículo quando alguém fala que não precisa de matemática para programar, porque mostra que ela não tem a menor ideia do que é programação.

Programação pura mesmo é sintaxe e semântica das linguagens, além de usar ferramentas. Mas só isso não é programar. Programar é criar soluções antes de tudo, é criar algoritmos, depois você codifica em alguma linguagem para instruir o computador a fazer algo. A tal "lógica de programação" é criar a solução para o problema, é o que todo mundo aprende ou deveria ter aprendido na matemática. Não importa fórmula, é a capacidade de criar suas próprias fórmulas sabendo os primitivos da matemática e do controle e fluxo de um algoritmo.

A dificuldade das pessoas em aprender programação está sempre ligada em não entender a matemática corretamente. Não entender a relação de números e outros dados e como cada ação gera uma consequência e ter capacidade de encadear essas ações para ir mudando dados para alcançar o resultado esperado.

Saber decompor problemas complexos em problemas menores para ir passo por passo é outra característica importante, e é matemática também.

O segredo é nunca fazer nada sem entender o que está acontecendo, em cada detalhe. Toda vez que for para o próximo passo sem entender vai deixando buracos na sua formação.

Precisa pegar muito exercício mesmo. E aí vem outro ponto que empaca muita gente. Para entender o enunciado de um problema para entender o que tem que fazer precisa de interpretação de texto. Novamente é o básico do básico, não é programação. Interpretando corretamente achar a solução entra a matemática.

Só para completar, no futuro você terá que criar até o enunciado dos problemas. Em trabalho real ninguém te diz qual é o problema, você tem que se virar para descobrir, eventualmente entrevistando o usuário que não entende nada do que ele precisa, e terá que produzir, mesmo que informalmente, o que é o enunciado. Então programar além de exercício envolve criar problema baseado em uma realidade para depois criar a solução. Mas isso não importa no contexto aqui.

Não pode focar no resultado, tem que focar no processo. Tem que fazer muito teste de mesa. E aprender como o computador funciona, porque você está escrevendo o que ele deve fazer, não tem como fazer isso bem sem entender essas minúcias. Precisa saber os fundamentos, os conceitos que vai usar, não é só dar o resultado.

Se não conseguir fazer isso, precisa resolver o problema anterior de formação, não é a programação que fará isso para você. Até tem quem força tanto a programação que acaba resolvendo em parte o problema anterior, mas dá muito mais trabalho e nem todo mundo consegue.

Ler códigos simples prontos para dar ideias, e entender o que está acontecendo, fazendo teste de mesa ajuda bem, mas isso não pode se perpetuar, não pode exagerar.

Nem sonhe em pegar coisas mais avançadas antes de ter o básico muito forte. Não parece que o autor original cometerá esse erro, mas muita gente faz. è um erro tentr pegar coisas complexas enates de dominar o simples só porque é mais agradável ver um resultado cheio de coisa. Fica parecendo índico deslumbrado com espelinho (ou cara pálida deslumbrado com ChatGPT).

Eu aprendi quando não tinha internet, cursos, outras pessoas na área, ou até livros não era fácil achar, pelo menos bons.

Ah, eu aprendi programação mais facilmente porque eu já fazia isso na matemática. Eu não fazia como o professor ensinava, eu inventava minhas próprias formas de resolver o problema. Isso é programar, não decorar fórmulas. Então, mais uma vez, não caia na armadilha de decorar receitas de bolo, aprenda criar. Se você treinar o erro é ele que fará para sempre.

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

1

Poxa gostei bastante da sua resposta, sempre vejo sêniors batendo na tecla de como o conhecimento em matemática é crucial na jornada!!
Porém a matemática é um campo enorme e gigantesco hehehe, então quais tópicos da maetmática são essenciais para evoluir como um programador que consegue entender melhor como a programação funciona, e buscar resolver melhor os problemas, concatenando os conhecimentos em matemática e programação?

2

Obrigado, senta o like aí :D

O básico, nada de especial, nada de avançado. Entender os números e suas relações. Aritmética, álgebra, funções, matrizes, técnicas básicas, premissas e consequências, como pegar fatos e encontrar suas implicações e alcançar resultados. Nada avançado para program,ação, o avançado e fçormulas específicas só é necessário para domínios específicos. O que tem de mais espefício que não se costuma aprender na escola é álgebra booleana.

3

Eu comecei fazendo coisas básicas em programação sem interface gráfica. Comecei pelos exemplos mais simples, como definir a classificação do IMC da pessoa de acordo com a entrada de dados, ou se é "criança / adulto / idoso". Depois fui progredindo para uma lógica mai elaborada. Acho que estou pulando alguma etapa aqui, mas os exemplos que me lembro são jogos já com interface gráfica: jogo da velha, jogo da memória, jogo da forca.

Existem outras situações também como definir qual o maior ou menor valor dado uma entrada de dados em lista, criar um programa sem interface gráficas mas que possui menus e submenus, a torre de Hanói e o problema do caixeiro-viajante (esse já é algo mais avançado).

Eu fiz muitas coisas diferentes antes de entrar no Ensino Técnico. Quando fui para o Técnico, fiz mais "muitas" coisas. E na faculdade fiz outro tanto de coisas. O importante aqui é a prática e o avanço na dificuldade dos exercícios. Você não conseguirá resolver todos na primeira vez em que tentar; eu mesmo não resolvi o caixeiro-viajante quando vi no começo da faculdade, e tive bastante dificuldade no jogo da forca no Ensino Técnico (não lembro se consegui terminar sem bugs).

Você pode procurar alguns sites com "listas de problemas" como o Geeks for Geeks, LeetCode e similares para se inspirar. Alguns deles tem uma certa gamificação, caso você precise dessa motivação. Aqui não posso fazer uma recomendação porque não conheço nenhum por experiência própria.

2

Me desenvolvi me enfiando em muitos projetos, lendo muito projeto e vivendo a lógica na minha vida, parece absurdo mas é uma evolução diária e o progresso depende muito de sua experimentação.

2

Pessoalmente creio que a única forma de ter domínio de lógica de programação é exercitando. Para isso tenho algumas sugestões:

  • CodeWars: ferramenta para exercício de código em diversas linguagens de programação e com score/pontuação e perfil compartilhável. Essa plataforma vai na pegada de gamefication e competição, fazendo rank entre a galera.
  • Codility DevTraining: Plataforma coleção de desafios que sugerem a melhoria de determinado código. Interessante para conhecer problemas e soluções do mundo real.
  • Codility PiCode: coleção de desafios semelhantes aos usados por empresas durante a validação técnica.
  • Project Euler: coleção de problemas para exercício de lógica de programação. Tipo perfeito para exercitar e deixar à disposição no github.

Com essas sugestões você já vai ter conteúdo e ocupação por bastante tempo e diversas formas de deixar seu raciocínio lógico trincando.
Boa sorte.

1

A logica de programação é muito basica, a melhor forma de se aprender a teoria é lendo e para fixa-la é ela cirando um monte de pequenos programaminhas simples que utilizam os conceitos estudados.
Eu sugiro usar o portugol studio para estudar logica de programação, a pseudo-linguagem portugol, assim como a IDE portugol studio, são muito didaticas e tem varios exemplos para mostrar o conceitos.

1

Assim, cursos pode ser de graça, conquistar o conhecimento nem tanto! Lembre que quando vemos algo nos ser ensinado muitas vemos nos é entregue algo mastigado e consumimos. Agora observar e montar uma lógica ... O estudo nos apresenta ferramentas e métodos - como vamos entender isso vai depender de muito trabalho, momentos de muita busca, frustação e novamente trabalho, busca e realizaçao.
Depois de um tempo criamos os padrões para resolução de problemas - quanto tempo? qual é o esforço (investimento)? Gustavo Guanabara, Freecodecamp, tem muitos. Eu iria de Guanabara pra começar.

Boa Viagem!

1
1

Cara vou ser bem curto e papo reto contigo: Teste. Faça muitos testes no seu código. Baixe, modifique, troque variável de lugar, adicione outros parâmetros. Fuçando o código você vai aprender muitooo !

1

Aprendi programando jogos utilizando GML, a linguagem de script da Engine Game Maker studio, foi uma experiência bastante proveitosa e acredito que é um ótimo jeito de iniciar em desenvolvimento

1

O termo lógica de programação é invalido!

O grande problema da matéria ”lógica de programação” é que nela você não constrói um conhecimento das mais variadas formas de raciocínio, e sim, apenas tem a base para a lógica imperativa. Portanto, o que você está aprendendo na faculdade não é lógica de programação geral, e sim, uma lógica específica de programação e a forma IMPERATIVA

A maior parte das linguagens que usamos hoje são imperativas!
Java, c, c++ e javascript

Embora JavaScript tenha algo de progamação funcionar que é outro tipo de lógica!
Se deseja melhorar em lógica imperativa é estudando e fazer exercicios

Para ajudar tem sites esecializados nisso em exercicios para melhorar a lógica
https://www.hackerrank.com/
https://leetcode.com/

1

Eu realmente não sabia disso, fui pesquisar e há também a declarativa em contra ponto. Sabendo disso fica mais fácil especificar os estudos.

1

Eu tentava fazer a depuração do código na minha mente, entender o valor de cada variável em linha tal, o que o programa estava fazendo, e fazia isso frequentemente enquanto pratiava em sites como codewars. E foi assim que desenvolvi uma lógica.

1

Ainda sou adepto aos estudos tradicionais. Fiz curso de graduação em Ciência da Computação e hoje sou professor na mesma Universidade (UESC). Apesar de ser possível encontrar muito material de qualidade na internet sobre Lógica de Programação, estar com um grupo em uma sala de aula, com o estudo sendo dirigido por um profissional qualificado faz muita diferença.

1

Vejo que muita gente só consegue aprender com o método tradicional de sala de aula, mas para mim sempre funcionou mais o estudo por conta própria, creio que pela maior flexibilidade, é algo pessoal. Mas em algumas horas sente falta de um professor para tirar dúvidas e buscar orientação.

1

Na minha época (há 3000 anos) resolvíamos (no curso técnico de processamento de dados) centenas de exercícios utilizando o glorioso Portugol.

Mas hoje em dia, acredito que um caminho bem mais interessante para exercitar lógica é por meio do Scratch do MIT. Com ele é possível exercitar lógica de forma bem prática e descontraída.

1

Muitos estão falam praticar... EU CONCORDO EM GÊNERO, NÚMERO E GRAU!!!

Mas, também acredito que é deveras importante ter o pensamento crítico para ir melhorando no processo e não acrescentar qualquer coisa inútil ou que vai te deixar com buraco de conhecimento nesta caminhada.

Sempre (se) questione em sua jornada.

Pense comigo: O que é programação? Ação de programar?! E programar? Desenvolver programa. Tá, e o que é necessário pra isso? Lógica! O que é lógica? É o ato de seguir raciocínios claros (óbvios e não óbvios) até um determinado resultado, é lógico! O que é raciocínio? Um conjunto racional de suposições pré-fabricadas (reais ou não). Tá e o que tudo isso tem haver com programação? Tu precisa disso pra chegar em um objetivo bem definido que é simplesmente um programa que resolve sua necessidade.

Depois de todos estes meus questionamentos acima, será que estou certo em minhas conclusões? Questione isto também, pois muuuuuito provavelmente não estou correto em tudo (estou melhorando nisso).

Seus questionamentos serão melhores direcionados com a experiência e o praticar com a mão na massa de forma árdua te trará a expertize necessária para ter melhores questionamentos, ter uma visão mais direcionada naquilo que você deseja aprender.

Minha sugestão para você desbloquear sua lógica, suas habilidades e seu potencial é você seguir todas as outras dicas dadas pelos colegas aqui, ter muuuuuita disposição, paciência, persistência e insistência em querer melhorar, aprender com os melhores e ser o melhor para alguém também, seguindo assim você cresce.

Não se esqueça do seu propósito, que é para onde você quer ir (pois quem não sabe para onde ir, qualquer caminho serve). Não se esqueça de suas raízes (pois árvore sem raiz morre desnutrida). Não se esqueça de quem você é (pois corpo são, mente sã).

Deixo aqui alguns artigos que escrevi que talvez possam te dar um norte e até um gás para continuar estudando e se aprofundando nessa carreira maravilhosa:

Principais Elementos da Maioria dos Autodidatas

PROGRAMAR - A Matemágica Mística de Solucionar Problemas

Decisões, Dicas e Contribuições para Uma Carreira Melhor

1
1

Acredito que muitos irão lhe mostrar ferramentas que lhe ajudem nisso.

Mas comigo a "lógica de programação" só fez sentido na minha cabeça quando o professor da faculdade colocou um exercício com os requisitos do problema para serem feitos com o básico de conhecimento em C precisava usar if/for/switch e por aí vai...

Lembro até hoje porque na época eu queria MUITO resolver o problema (acredito que aqui me difrerenciei dos outros colegas) porém a cada requisito, via que não tinha miolos pra juntar os quebras cabeça.

Forcei a enteder cada parte do exercício me perguntando várias vezes sobre aquele requisito até resolver ele. E aqui depende de cada pessoa.

Depois desse exercício hoje vejo que a forma como se pensa pra resolver os requisitos, quebrando o problema em partes menores (menores mesmos) até que faça sentido cada parte pra você me ajudou muito.

No dia a dia é o que você acaba fazendo só que deixa de ser tortuoso como no início porém ainda frustante pq não somos uma enciclopédia de todas as linguagens/ferramentas/comandos/sistemas etc ...

1

No primeiro semestre do técnico em desenvolvimento de sistemas teriamos que entregar um CRUD feito em grupo.
Entretanto, 2 membros do meu grupo não engajavam na produção do projeto, e minha até então dupla estava bastante desmotivada.

Então eu decidi que não ia rodar de semestre, e nos 15 dias restantes que sobraram eu comecei a desenvolver o projeto. Foram 15 dias, nos quais eu chegava da escola, almoçava, e ficava o resto do dia programando(cerca de 8-9 horas por dia).
No final do projeto eu tinha programado tanto que a lógica de programação se tornou algo intuitivo.

Eu recomendaria você aprender tudo que é necessário, e logo depois partir pra um pequeno projeto/desafio. Pode ser um CRUD, uma calculadora de IMC, calculadora de bhaskara, não importa. O importante é o aprendizado que você tira com isso ;-)

1

Cara eu recomendo muito o canal do curso em video do professor gustavo guanabara. Ele é um criador free de conteudo de programação com diversas opções, incluindo logica de programação. É um bom inicio para introduzir conteudos dessa natureza.
https://www.youtube.com/@CursoemVideo

Ah!! e Recomendo também o livro: "Codigo Limpo". Inicio para todo programador.

1

Esse é um dos cursos que uso para me orientar. Gosto muito do Gustavo Guanabara, ele é um ótimo professor. Já sobre o Código Limpo, ouvia falar mas nunca me aprofundei muito, também vou pegar para ler.

1

Rapaz. Praticando muito, mas muito mesmo. Vou lançar um curso de prática de lógica na udemy com Java, usando somente as coisas básicas do Java. A principio vão ser 160 exercícios básicos, e a proposta do curso é primeiro apresentar o enunciado da questão e pedir ao aluno para fazer? Depois da umas dicas caso o aluno esteja travado... e por fim mostrar uma possível resolução. Treinar lógica independe da linguagem que você utiliza.

1
1

Eu faço tudo no papel, escrevo as entradas, as variáveis e saídas, ai aplico o "for", "map", "while" função lambdas e tals, aprender lógica de programação não está ligado a solução de um problema do mundo real, e sim a entender como a máquina funciona, lógico que a lógica de programação te dá 50% do que é preciso para resolver um problema.

1

Iniciei por cursos do Curso em Video, pra pegar a base, e depois fui criando projetos pra treinar. Você encontra muitos projetos no YouTube. Tenta fazer e depois vai acompanhando.

1
1

Buenas!

Pra mim, sem dúvidas o que funciona melhor é PRATICAR. Você pode assistir quantas aulas quiser, ler quantas documentações achar necessário, mas se você não colocar a mão no código, você não vai conseguir evoluir nesse aspecto.

Desde o primeiro ano de faculdade, nosso professor nos apresentou a plataforma do URI Online Judge, atual Beecrowd (https://www.beecrowd.com.br/judge).

Nessa plataforma, você cria sua conta e tem uma série ENORME de exercícios de lógica, descrevendo a história, com os requisitos, exemplos de entrada e a saída esperada do seu algoritmo.

Além disso, o site permite que você faça o uso da maioria das linguagens amplamente utilizadas (JavaScript, Python, C, C++, Java, PHP...) e também conta com uma sessão exclusiva com atividades de SQL.

Essa plataforma me ajudou bastante no início da minha jornada como DEV, e sempre indico ela pros meus alunos e conhecidos que estão iniciando na área de dev.

Lembrando, não estou dizendo que ler documentação ou assistir aulas é inútil hehe, mas sem a prática, você não consegue exercitar o que está aprendendo.

1

Opa! Valeu pela dica. É muito útil conhecer uma plataforma assim, irei conferir mais tarde, também é útil para exercitar o inglês.

1

A forma como consegui dominar a lógica foi copiando muito códigos no github, muito mesmo e claro, exercitando com problemas que encontrava na Internet de faculdade, aos poucos de tanto copiar código comecei a ver que os códigos tinham padrão, quando fui ver desenvolver algoritmos se tornou algo fácil