To be honest there's no way you'll be able to learn programming from a forum. There's certainly no point in going into the nitty gritty. That's what a structured learning resource is for. So, as a general set of tips, here's what worked for me:
Pick a language, or have one picked for you. Maybe start with the one that your school will be using. Mine came with the computer I had as a kid: BASIC. It's a language that no one uses anymore. It's certainly a language that I can't use professionally, or even productively for my own projects. However, it doesn't matter much which language you start with. You will learn many more later on, and it gets easier to pick up new languages after the first.
Get some learning resources. Books. Lecture videos from online courses. There are plenty of free ones too.
Practise by writing code. Code examples in the book? Type it in. Code exercise at the end of a chapter? Do it.
Practise by writing code. Pick a small project and have at it. You will be more motivated to keep at it if you're working on something that has an end goal other than simply "learn programming".
I repeat: write code! You can't learn programming by reading 10 books from cover to cover. I once tried to learn data structures by sitting in a university library, reading my textbook, and writing out pseudocode using a pencil. What a total waste of time that was. I almost failed that class. No one told me that you can't learn programming that way. To learn programming you need to be sitting in front of your keyboard, typing in code, and running it to see what happens. You cannot learn programming in a non-interactive environment. Programming is all about iteration. You bash code in, no matter how crude, you run it to see what happens, and change your code. You mold the program like you mold clay to make a vase. Pseudocode can help to *plan* a program, but you do not use it to help you derive the logic for the program. Because it's way faster to work in an environment where you can see the results of your commands. That means writing out code and running it.
Keep at it. Spent the last hour trying to figure out a concept? I've spent days struggling with new concepts. The eureka moment will eventually happen. It comes faster if you play with the concepts by... writing code. Test things out. Break things, put them back together.
Keep at it. Spent the last hour trying to fix a bug in your code? I've spent days trying to fix a bug. Eventually you'll figure it out. You will. There's nothing that you can't solve if you apply yourself. And once you've figured how to fix something, you'll never be bogged down by the same issue again. Because you would have been so scarred by the previous encounter that it'll have been burned into your brain. This is what we call experience. Experienced programmers aren't better than novice ones because they are smarter. It's because they have made, and fixed more errors than the novice programmer.
I believe that it's not being better at logical thinking that allows some people to learn programming while others fail. It's perseverance. It takes a certain type of person to persevere for days on the same problem, and to see it through. This is what it takes to become a programmer. Sheer doggedness.