I recently took a intro class on programming with C++. I aced it. I want to continue learning but I can't take the next course so I'm going to try to keep on learning with the textbook but before I move on I want to make sure I have mastered what I already know. I am comfortable with:
-Control structures (looping, functions, ect...)
-Logical operators
-Input and output (file i/o included)
-Structs, Classes, arrays.
-Enum
-Scopes
-other stuff I might have forgotten to add
Can anybody suggest a programming problem/project that might help me hone my current abilities before I move on to pointers, operator overloading, templates, ect...?
@ OP: If you are truely comfortable with all of those topics then now is the time to pick up an API. I'd suggest Win32 since it's so well documented but if you a *nix person then that's not an option. Here's where Windows guys should start: http://msdn.microsoft.com/en-us/library/ee663266(VS.85).aspx
Before moving on to look at a full blown O/S, you could maybe write yourself a little toy O/S?
Looking though your skills you appear to have enough knowledge to to write a console, event-based windowing system with support for file access and user input. This exercise yould help you understand the way most GUI libraries work, while revising your C++ skills. (I am thinking of a class-based approach, like MFC and Qt, rather than C APIs like WIN32 and GTK+. So it would require all the stuff you listed, and more. You do know vectors, lists, ... ? And polymorphism?)
The end point would to code some of you earlier exercises to use your API, rather than iostream.
@andy I use windows and our final project for the class was "The Game of Life". Also I made a game of blackjack just as a side project using classes and enum to represent a hand of cards that kept your high score.
My knowledge of operating systems and how they work is a bit limited.... It sounds interesting though and I would love to try it! I would just need a bit more guidance on how to get started.
Using modules, create a file of records that have the following fields for employees:
-SSN
-Last name
-First name
-Zip
-Age
-date of hire
Have one module input the records into an array and sort the array by age. Have a separate module print out the list of names by age.
Have another module sort retrieve the records and sort them by SSN. Have a module permit you to search for a particular ssn and display that record if found. If not found, it should say "Record not found"
Have you program built around a menu that permits the following choices:
-Create file
-Add records to file
-Print all records by age
-Find an employee.
I have been studying for over a year and im still not comfortable with all those things OP posted. Either im slow or doing something wrong. Maybe im doing something right?
Regarding the "toy O/S", I really means a toy API. An actual little O/S would prob (?) be a bit to much of a leap!
I checked through my archived code and found one I wrote to help me port a little Turbo C++ app I'd written as a student.
I re-implemented the Borland console API so I didn't have to recode the program logic. Not that diffcult, but there are some trickier bits and pieces. The little "Borland" API wasn't elegant, but it got the app running well enough that I could then go on to recode it in WIN32.
But maybe a better idea will come up?
And Computergeek01's suggesting of having a go with WIN32. My current favourite cross-platform GUI toolkit, for small apps, is FLTK. Note that Stroustrup uses it in this C++ tutorial book to illustrate GUI programming principles. And it's quite popular in the open source community for smaller scall apps.
Andy
P.S. erik1985 - I'm sure I've seen that problem statement statement on another recent thread. Did you nick it from there, or is it stock problem from a text book/web site?
@Sputnik - It was an advanced pace class and I seem to have a bit of natural talent (I'm going into my senior year in high school and people who were going into their freshman year of college at UC Berkley (#1 compsci school in the nation this year) where asking me for help). I don't want to sound like an asshole because I'm still not really that great at all (and I probably won't get into UC Berkley). I also had a great teacher and I think that helped. It's also possible that I think I'm comfortable with some of the stuff I listed but I was only taught part of it's capabilities in order to simplify the material for beginners.
@andy - Yeah I felt like it would be a leap! XD Also right now i''m working on some of the other suggestions at the moment and I plan to get started with windows programming relatively soon. My mom's friend was nice enough to offer me a copy of visual studio he had for free so I think i'll use that.
andywestken,
I actually was focusing on computergeeks post as well. It interested me... what would be the win32 linux counterpart. I want to start dabbing into.
What's some libraries that you must know in linux to be a linux programmer?
I haven't even been on a windows computer after I started programming so i know little about windows programming. What's win32 suppose to be exactly?
About the small os... that even interested me even more. What about your suggestions on that? I'm into hard stuff so... yeah.
I'd be interested to hear what the must know parts of Linux are, too.
My professional background is pretty much 100% Windows, with some cross-platform code, via a proprietary API. I'm now involved with a cross-platform, open source project to gain some skills outside of Windows, but I'm still on the Linux learning curve.
Luckily there are some libraries I already know, like Expat, FreeImage, and CppUnit, as they're used on Windows as well as Linux (Ubuntu, in my case). I have also used the WIN32 port of pthreads, so already knew the fundamentals of that API (is there a better thread API for Linux?)
From what I've gathered so far, the Linux GUI is alost always KDE or GTK+ based. But there are other, less common systems (are any non-standard ones used my major Linux distro?)
Qt, wxWidgets, FLTK are all cross-platform GUI toolkits, so if you know one of them you can write apps for all three platforms. Qt seems to figure more than the other two in the commercial world, going by the jobs ads I've seen.
WIN32 is the blanket name for the overall API to Windows. But you can also talk about the (Windows) File Management API, the Multimedia API, the Crypto Api, etc., which are all parts of the overall WIN32 API.
WIN16 was the same for the old 16-bit versions of Windows, and WIN64 is the 64-bit version.