Overclock.net › Forums › Software, Programming and Coding › Coding and Programming › A few programming questions I really want to know about...
New Posts  All Forums:Forum Nav:

A few programming questions I really want to know about...

post #1 of 8
Thread Starter 
Hi there, so basically I've been having programming classes at school for the past year and a half or so.
Problem is, the course I'm in right now isn't as good or important as a college course, and my teacher really does suck at programming.

Up until now, we've used Pascal and C++ (by that order), and we're currently working on C++. We've so far talked about vectors, arrays, the for while and until loops.
Maybe we've done something else, but I don't think so as I don't remember.

So seeing as my teacher sucks, I have to rely on practicing at home and learning online. And this isn't just for the sake of having good grades, I really want to get better at programming.

But anyways, here are some of my questions:

1- Is there a good source of information for learning C++? Like an online manual, or tutorials, or something like that?

2- I've been using Code::Blocks up until now for doing my programs. Is it a good IDE and should I stick to it?

3- I've also heard before that Linux is good for programming... Can someone tell me why and if I should start doing my programming there? If so, what IDEs should I use and so on?

4- Exercises... Is there a place with lots of them, and exercises that range from very easy to very hard on each programming subject?

5- How do you do programs with a GUI like you use everyday on your computer? All I know is CLI programs...

For now that's all, I think... Sorry to bother you guys with so much stuff, but I really need to know the answers to these questions and have no one to rely upon...
My desktop
(18 items)
 
  
CPUMotherboardGraphicsRAM
Intel Core 2 Quad Q6600 Gigabyte P35-DS3L XFX Radeon HD 5770 Team Group Xtreem Dark 
RAMRAMRAMHard Drive
Team Group Xtreem Dark Corsair  Corsair  Western Digital Caviar 500GB 7200RPM 16MB Cache 
Optical DriveCoolingOSMonitor
Samsung SH-S203N Tuniq Tower 120 Windows 8 Pro 64-bit LG IPS234V-PN 23" 
KeyboardPowerCaseMouse
Logitech Media Keyboard 600 NOX Urano 600W NZXT Apollo - black Microsoft Intellimouse Explorer 3.0 
Mouse PadAudio
Regular black rubber mouse pad Realtek HD Audio 
  hide details  
Reply
My desktop
(18 items)
 
  
CPUMotherboardGraphicsRAM
Intel Core 2 Quad Q6600 Gigabyte P35-DS3L XFX Radeon HD 5770 Team Group Xtreem Dark 
RAMRAMRAMHard Drive
Team Group Xtreem Dark Corsair  Corsair  Western Digital Caviar 500GB 7200RPM 16MB Cache 
Optical DriveCoolingOSMonitor
Samsung SH-S203N Tuniq Tower 120 Windows 8 Pro 64-bit LG IPS234V-PN 23" 
KeyboardPowerCaseMouse
Logitech Media Keyboard 600 NOX Urano 600W NZXT Apollo - black Microsoft Intellimouse Explorer 3.0 
Mouse PadAudio
Regular black rubber mouse pad Realtek HD Audio 
  hide details  
Reply
post #2 of 8
Quote:
Originally Posted by KaiZ51 View Post
Up until now, we've used Pascal and C++ (by that order), and we're currently working on C++. We've so far talked about vectors, arrays, the for while and until loops.
Maybe we've done something else, but I don't think so as I don't remember.

You have a lot of learning to do.

So seeing as my teacher sucks, I have to rely on practicing at home and learning online. And this isn't just for the sake of having good grades, I really want to get better at programming.

But anyways, here are some of my questions:

1- Is there a good source of information for learning C++? Like an online manual, or tutorials, or something like that?

http://www.learncpp.com/

It's by far the best C++ Tutorial web site I've ever run across and not only does it teach you the basics, it teaches you how people code in the work force (read the chapter on Hungarian Notation, for instance). Plus, Alex (the owner of the site), teaches you about the finer points of each learning material and what the do's and don'ts are.

2- I've been using Code::Blocks up until now for doing my programs. Is it a good IDE and should I stick to it?

If on Windows, sure.

3- I've also heard before that Linux is good for programming... Can someone tell me why and if I should start doing my programming there? If so, what IDEs should I use and so on?

If you really want to try programming on Linux, I'd actually recommend compiling your programs in the Terminal (Linux version of the Command Prompt). Just type "Compiling C++ in Terminal" into Google to read about it. Otherwise, try Eclipse C++ IDE.

4- Exercises... Is there a place with lots of them, and exercises that range from very easy to very hard on each programming subject?

You can find them all throughout the Internet. Type in "Programming exercises" into Google and the neat thing is that most can be done in a variety of languages. However, if you REALLY want to learn, I'd try to create exercises about things that interest you. For instance, if you like Basketball, create a program that reads in a players' statistics (points per game, rebounds per game, etc.) and convert those basic stats into more advanced ones like PER (Player Efficiency Rating, Win Shares, etc.) ** Disclaimer: The last sentence you read may be confusing...basically, create projects that cater to your hobbies/interests.**

5- How do you do programs with a GUI like you use everyday on your computer? All I know is CLI programs...

Don't bother with GUI. Learn how to THINK like a programmer, come up with algorithms to find solutions, and understand the finer points of C++ (like linked lists, stacks, queues, etc). GUI is something most beginning programmers want to do, but it gets you nowhere without a proper understanding of what is happening with each line of code (which you won't know because you won't know many of the more advanced things). Also, when you do start to program GUIs, try to use platform-independent libraries like wxWidget, which work seamlessly (or almost) on all major OSes.


For now that's all, I think... Sorry to bother you guys with so much stuff, but I really need to know the answers to these questions and have no one to rely upon...
Replied in bold.
Edited by floatingDivs - 1/31/11 at 4:54pm
post #3 of 8
If you prefer using IDEs, then there isn't much Linux will offer you. Of course there are IDEs for/in Linux, but the true advantage of using Linux, or something similar (for example, OSX runs around a UNIX based kernel, so it has a command line that functions the same as it does on a Linux machine), is the use of things like the command line. The command line is very powerful, and as far as programming goes, it will teach you the details that are abstracted out in an IDE, such as compiling/linking your programs.
Edited by Tomiger - 1/31/11 at 6:29pm
 
Mineral Oil PC
(7 items)
 
 
CPUMotherboardGraphicsRAM
Intel Core i7 4790K Devil's Canyon 4.0GHz ASUS Sabertooth Z97 Mark S (White) Zotac GTX 760 Avexir Raiden 16GB DDR3 
Hard DriveCoolingCoolingCooling
OCZ Trion 240GB XSPC Raystorm Pro (white) XSPC EX 240 (white) XSPC EX 360 (white) 
CoolingCoolingCoolingCooling
Swiftech MCP655 Monsoon Dual Bay Reservoir Monsoon Modular Tube Reservoir Monsoon Stand Alone Pump Top/Cover 
CoolingPower
EK GTX 970 Water Block Corsair AX760i 
CPUMotherboardGraphicsGraphics
Intel Core i7 2600K Sandy Bridge 3.4 GHz Gigabyte GA-P67A-UD4-B3 GTX 285 GTX 285 
RAMHard DriveHard DriveCooling
Corsair Vengeance 16GB Western Digital 1TB Western Digital 250GB EK-Supremacy Clean CSQ - Nickel 
CoolingCoolingCoolingCooling
XSPC RX 360 XSPC EX 360 (cross flow) FrozenQ T-virus Reservoir EK Waterblock GTX 285 
Cooling
Swiftech MCP655 
  hide details  
Reply
 
Mineral Oil PC
(7 items)
 
 
CPUMotherboardGraphicsRAM
Intel Core i7 4790K Devil's Canyon 4.0GHz ASUS Sabertooth Z97 Mark S (White) Zotac GTX 760 Avexir Raiden 16GB DDR3 
Hard DriveCoolingCoolingCooling
OCZ Trion 240GB XSPC Raystorm Pro (white) XSPC EX 240 (white) XSPC EX 360 (white) 
CoolingCoolingCoolingCooling
Swiftech MCP655 Monsoon Dual Bay Reservoir Monsoon Modular Tube Reservoir Monsoon Stand Alone Pump Top/Cover 
CoolingPower
EK GTX 970 Water Block Corsair AX760i 
CPUMotherboardGraphicsGraphics
Intel Core i7 2600K Sandy Bridge 3.4 GHz Gigabyte GA-P67A-UD4-B3 GTX 285 GTX 285 
RAMHard DriveHard DriveCooling
Corsair Vengeance 16GB Western Digital 1TB Western Digital 250GB EK-Supremacy Clean CSQ - Nickel 
CoolingCoolingCoolingCooling
XSPC RX 360 XSPC EX 360 (cross flow) FrozenQ T-virus Reservoir EK Waterblock GTX 285 
Cooling
Swiftech MCP655 
  hide details  
Reply
post #4 of 8
1. www.cplusplus.com
2.if you aren't that attached to linux visual studio is a great IDE. Check out dreamspark.

Otherwise eclipse is a solid choice.
3. You want to be comfortable using linux. Beyond that just program in whatever OS you feel like (wiht consideration for any platform specific stuff, professor preference, etc...). Really won't make much difference.

But you are really going to want to be comfortable using the command line, you don't need to be a master but know how to edit files (in whatever editor), compile programs, run programs, navigate, etc... Personally I use windows but earlier today I was helping a classmate with a java program. Required using chmod +x. Not exactly rocket science, but it's the basic stuff that you need to know.

oh and once you get further and start studying operating systems you will probably be looking at linux more.

4. UVA online judge has a lot of problems. NOt so much basic practice stuff, but you will get to use the stuff you learn about algorithms and data structures. Good practice in problem solving.

5.
For GUI stuff I would say just wait. If you really want to make a quick GUI application then start looking into java. It's a lot easier and you get to build skills in another language (which has a similar syntax to C++). C++ GUI's will have you bogged down in platform specific garbage instead of learning more important stuff.
    
CPUMotherboardOSMonitor
2500k P8P67 Windows 7 Ultimate x64 22" phillips 
KeyboardPowerMouseMouse Pad
Cheap Logitech Antec Earthwatts 650W Razer Deathadder Razer eXactMat 
  hide details  
Reply
    
CPUMotherboardOSMonitor
2500k P8P67 Windows 7 Ultimate x64 22" phillips 
KeyboardPowerMouseMouse Pad
Cheap Logitech Antec Earthwatts 650W Razer Deathadder Razer eXactMat 
  hide details  
Reply
post #5 of 8
I can give you a bunch of C++ problems from very easy to very hard (for 1st year programmer's).

Here's a beginner's problem using recursion (function calling itself).

Problem: Have user input number and print it out to screen with one digit on a line.

For instance, if I input '2911' into your program, have it output:

2
9
1
1
post #6 of 8
Thread Starter 
Thanks guys, I think I'm good for now.
My desktop
(18 items)
 
  
CPUMotherboardGraphicsRAM
Intel Core 2 Quad Q6600 Gigabyte P35-DS3L XFX Radeon HD 5770 Team Group Xtreem Dark 
RAMRAMRAMHard Drive
Team Group Xtreem Dark Corsair  Corsair  Western Digital Caviar 500GB 7200RPM 16MB Cache 
Optical DriveCoolingOSMonitor
Samsung SH-S203N Tuniq Tower 120 Windows 8 Pro 64-bit LG IPS234V-PN 23" 
KeyboardPowerCaseMouse
Logitech Media Keyboard 600 NOX Urano 600W NZXT Apollo - black Microsoft Intellimouse Explorer 3.0 
Mouse PadAudio
Regular black rubber mouse pad Realtek HD Audio 
  hide details  
Reply
My desktop
(18 items)
 
  
CPUMotherboardGraphicsRAM
Intel Core 2 Quad Q6600 Gigabyte P35-DS3L XFX Radeon HD 5770 Team Group Xtreem Dark 
RAMRAMRAMHard Drive
Team Group Xtreem Dark Corsair  Corsair  Western Digital Caviar 500GB 7200RPM 16MB Cache 
Optical DriveCoolingOSMonitor
Samsung SH-S203N Tuniq Tower 120 Windows 8 Pro 64-bit LG IPS234V-PN 23" 
KeyboardPowerCaseMouse
Logitech Media Keyboard 600 NOX Urano 600W NZXT Apollo - black Microsoft Intellimouse Explorer 3.0 
Mouse PadAudio
Regular black rubber mouse pad Realtek HD Audio 
  hide details  
Reply
post #7 of 8

I know you said you were fine, but I had to link you this book. It's an amazing resource for someone trying to learn C++. I highly highly recommend it
Intellect v2
(9 items)
 
  
CPUMotherboardGraphicsRAM
Intel Core i7-6700K Processor ASUS ROG MAXIMUS VIII HERO LGA1151 DDR4 M.2 SAT... EVGA GTX 1080 SC ACX 3.0 Crucial Ballistix Sport 32GB DDR4 2400 MT/s (PC... 
CoolingKeyboardPowerCase
Noctua NH-D15 Das Keyboard 4 Professional (Brown) Corsair AX860 Fractal Design Define R5 
Mouse
MIONIX NAOS 7000 
  hide details  
Reply
Intellect v2
(9 items)
 
  
CPUMotherboardGraphicsRAM
Intel Core i7-6700K Processor ASUS ROG MAXIMUS VIII HERO LGA1151 DDR4 M.2 SAT... EVGA GTX 1080 SC ACX 3.0 Crucial Ballistix Sport 32GB DDR4 2400 MT/s (PC... 
CoolingKeyboardPowerCase
Noctua NH-D15 Das Keyboard 4 Professional (Brown) Corsair AX860 Fractal Design Define R5 
Mouse
MIONIX NAOS 7000 
  hide details  
Reply
post #8 of 8
1. Let me know, I have a boatload of reference sources...


2. Code::Blocks is my favorite IDE for C++

3. With respect to Linux, you don't need to use or learn Linux, whatever you are more comfortable with. Linux has a steep learning curve, as my Software Design professor says: "You will hate linux for the first few weeks. There is no question.".

4. projecteuler.net Also try and implement all of the typical search algorithms.

5. http://www.winprog.org/tutorial/ GUIs are typically platform dependent in C++, it really depends on what you are doing!




If you need reference material, send me a PM, I can help you out
Edited by wcdolphin - 2/4/11 at 5:57pm
For sale
(13 items)
 
  
CPUMotherboardGraphicsRAM
i7-920 Asus P6T Deluxe Asus GTX460 TOP 768mb G Skill ECO 1600 CAS7 1.35V 
Hard DriveOptical DriveOSMonitor
2x Vertex 60 GB raid[0] Asus DVDRW W7,Ubuntu 2 xAsus VH236H 
KeyboardPowerCaseMouse Pad
Razer Ultra X3 1000W HAF 932 My Desk 
  hide details  
Reply
For sale
(13 items)
 
  
CPUMotherboardGraphicsRAM
i7-920 Asus P6T Deluxe Asus GTX460 TOP 768mb G Skill ECO 1600 CAS7 1.35V 
Hard DriveOptical DriveOSMonitor
2x Vertex 60 GB raid[0] Asus DVDRW W7,Ubuntu 2 xAsus VH236H 
KeyboardPowerCaseMouse Pad
Razer Ultra X3 1000W HAF 932 My Desk 
  hide details  
Reply
New Posts  All Forums:Forum Nav:
  Return Home
  Back to Forum: Coding and Programming
Overclock.net › Forums › Software, Programming and Coding › Coding and Programming › A few programming questions I really want to know about...