C++ beginners faq

Status
Niet open voor verdere reacties.

Murdocki

Gebruiker
Lid geworden
7 jun 2007
Berichten
449
C++ FAQ

Deze faq is bedoeld voor de bezoekers van het helpmij forum die pas beginnen met c++ of nog voor de keuze staan om hiermee te beginnen. Je zult hier dus veelgestelde vragen van beginners vinden.
Alle feedback is welkom dus schroom niet om een reply achter te laten.

1.) Ik wil beginnen met programmeren maar ik weet niet welke taal ik moet kiezen, zou c++ iets voor mij kunnen zijn? (of ieder andere vraag gebaseerd op het maken van de keuze van welke programmeertaal)
2.) Ik heb gekozen om in c++ te gaan programmeren, waar moet ik beginnen?
3.) Ik heb dus een compiler nodig, welke raden jullie mij aan?
4.) Welke boeken zou ik moeten overwegen als ik wil beginnen met c++?
5.) Waar kan ik goede online tutorials vinden?
6.) Ik ben bezig met hello world maar als ik mijn programma op start sluit hij gelijk af, hoe komt dit en hoe los ik dit op?
7.) Ik heb *** gemaakt en nu wil ik *** hieraan toevoegen, hoe doe ik dit?
8.) Kan ik in C++ ook forms maken?
9.) Ik wil een game maken waar moet ik beginnen?



1.) C++ is een erg intensieve taal, dit betekent dat je veel moet doen om iets gedaan te krijgen maar ook dat je meer dingen kunt doen dan in andere talen. C++ wordt vooral gebruikt door zijn snelheid van uitvoering, dit zul je dus nodig hebben in applicaties die veel van je computer vragen. Wil je nou simpelere applicaties maken dan zul je over het algemeen aangeraden worden om een simpelere taal te leren, dit dan weer omdat als de taal makkelijker is je het resultaat sneller zult berijken.
Andere bekende talen zijn JAVA en Visual Basic. Deze talen zijn uitermate geschikt om simpele (vaak administratieve) applicaties te maken. Je kunt hiermee snel een GUI ( Graphical User Interface ) mee maken. Sommige mensen zullen je ook aanraden om eerst html, php, javascript, pascal, C# of C te leren dus hier moet je misschien ook nog over na denken.

2.) Om in C++ te programmeren heb je allereerst een compiler nodig. Dit is een stukje software dat jouw code om zet naar computertaal. Het zorgt er dus voor dat je programma begrepen kan worden door de computer. Je zult ook een linker en nog wat andere tools nodig gaan hebben, hierdoor is het handig om voor een IDE te kiezen, dit is een verzameling van al deze tools die vaak automatisch het werk voor je doen als je op een simpel knopje klikt. Bekende IDE’s zijn Dev-C++ en Visual C++, terwijl Dev-C++ door veel mensen wordt aangeraden om mee te beginnen stappen toch veel mensen over naar Visual C++ omdat dit wat professioneler werkt en voor veel mensen betere voorwaarden heeft. Ook kun je kijken naar Borland of zelfs Eclipse of Netbeans.

Naast een IDE heb je nog iets nodig om je op weg te helpen, een boek of een serie tutorials zou je kunnen helpen. Vrijwel iedereen raad je aan om een boek of zelfs meerdere boeken aan te schaffen, dit is omdat boeken een vollediger verhaal vertellen maar ook omdat het handiger is als naslagwerk. Ook is er een discussie over in welke taal je het zou moeten leren ( Nederlands of Engels ). Vrijwel alles in de programmeerwereld gebeurt in het Engels, hierdoor zou de keuze snel vallen op een Engels educatiemiddel. Andere mensen zeggen dat als je geen engels kan je het in het Nederlands moet leren omdat het leren van twee talen tegelijk niet te doen is, de keuze is aan jou.

3.) Dit antwoord staat beschreven in het antwoord van vraag 2.

4.) Uiteraard zijn er veel meer boeken dan hier genoemd staan dus je kunt ook zelf nog even bij een boekhandel of bibliotheek bij jou in de buurt kijken of daar iets leuks staat. Het is belangrijk dat een boek aan sluit niet alleen bij wat je wilt leren maar ook hoe je het wilt leren, heb je graag voorbeelden koop een boek met voorbeelden, ben je onzeker koop een boek met opdrachten en uitwerkingen, wil je plaatjes zoek dan een boek met plaatjes etc. etc. Dit zal je erg helpen bij het leren van de behandelde stof.
Engelse boeken:
C++ How to program 5th Edition
Harvey M. Deitel & Paul J. Deitel​
Thinking in C++: Introduction to standard C++ volume one
Bruce Eckel​
Accelerated C++: Practical programming by example
Andrew Koenig & Barbara E. Moo​
The C++ programming language
Bjarne Stroustrup​
( ook in nederlands verkrijgbaar )​
Nederlandse boeken:
Aan de slag met C++
Gertjan Laan​

5.) Hetzelfde wat voor boeken staat beschreven bij vraag 4 geldt ook voor de tutorials die hier genoemd staan.
Engelse tutorials:

Nederlanse tutorials:

6.) Je programma sluit af omdat hij klaar is, dit is op het moment dat je main methode iets ( of niets ) returnt. Je kunt uit twee dingen kiezen, ervoor zorgen dat je programma niet eindigt of ervoor zorgen dat het window niet gesloten wordt. Als je voor de tweede optie gaat dan moet je handmatig een opdrachtspromt opstarten en vanuit hier je eigen applicatie opstarten. Je zult dan zien dat hij uitgevoerd wordt en ook af sluit maar je krijgt dan de mogelijkheid om een nieuwe opdracht te geven dus het scherm wordt niet gesloten. Wat je ook kunt doen is ervoor te zorgen dat je applicatie niet sluit. De hiervoor meest gebruikte manier is std::cin.get(); dit is een opdracht die ervoor zorgt dat er gepauzeerd wordt totdat er een enter uit de invoerbuffer gehaald kan worden. Met andere woorden totdat je op enter drukt. Soms is dit geen optie en dan stappen mensen vaak over naar een externe opdracht als pause aanroepen. Dit doe je door in je code system( “PAUSE” ); te zetten, je krijgt dan wel een berichtje dat je op een toets moet drukken om door te gaan maar dit kan je verwijderen door “pause” te vervangen door “pause > 0”.

7.) Er wordt vaak gevraagd hoe je een bepaalde functionaliteit toe kan voegen. Dit soort vragen ontstaan meestal omdat je een tutorial volgt, omdat je iets van iemand anders gekopieerd hebt of omdat je zelf er een zooitje van hebt gemaakt. Mocht je nou een vraag als deze hebben dan is het wellicht een goed moment ( als je er niet al mee bezig was ) om met Object Oriëntatie te beginnen. Voor veel beginners is dit een erg afschrikkende term maar eigenlijk doet het meer goed dan kwaad. Object Oriëntatie ( hierna OO genoemd ) houd in dat je met objecten die elk aan een bepaald aantal eisen voldoen gaat werken. Een object is een instantie van een klasse. Je kunt je een klasse voorstellen als een bouwtekening en een object als het gemaakte onderdeel vanaf deze tekening.
OO zorgt voor een goede scheiding van verantwoordelijkheden, hierdoor is het stukje code wat je aan moet passen overzichtelijker en makkelijker te begrijpen. Dit heeft als gevolg dat als je een toevoeging wilt doen je de verantwoordelijkheid al snel kunt bepalen en je dan dus ook snel kunt zien waar je deze toevoeging moet doen.
Heb je al goede OO toegepast en er ook voldoende commentaar bij gezet en mocht je toch nog deze vraag hebben dan moet je je wel realiseren dat iemand anders als het goed is jouw code minder goed begrijpt dan jijzelf, kijk dus zelf nog even alles na. Uiteraard staat het stellen van openstaande vragen vrij, daar is dit natuurlijk een forum voor.

8.) Als je voor bijvoorbeeld voor en administratieve applicatie forms wilt maken dan zul je even uit moeten zoeken wat je nou precies wilt maken, je kunt dan zoeken naar windows forms die gebruik maken van het .NET framework of je kunt kijken naar MFC. Je zult wel goed uit moeten zoeken welke control je waarvoor het beste kunt gebruiken om ervoor te zorgen dat je applicatie overzichtelijk en bruikbaar blijft.

9.) Een game maken is geen simpel iets, natuurlijk kun je er aan beginnen en je zal ook wel het een en ander gedaan krijgen maar op den duur zal je vast lopen omdat je de code onoverzichtelijk en onbegrijpelijk gemaakt hebt en bovendien heb je te weinig commentaar geplaatst om weer op te pakken hoe het ook alweer zat. Dit soort situaties wil je dus voorkomen want anders wordt het een hels karwei als je een toevoeging of aanpassing wilt maken.
Je moet als je aan een game begint een plan hebben, schrijf exact op wat voor game het wordt, hoe het spelen werkt en alle speciale dingen waar aan je kunt denken. Doe dit ( lukt niet ) zonder alvast te denken aan de code die je gaat schrijven. Als je dit plan gemaakt hebt dan is het slim om eerst een ontwerp te maken van hoe je game in code er uit gaat zien, hoe klassen gekoppeld zijn en wat ze met elkaar doen ( UML helpt je hierbij ). Klassen!? Juist, omdat een game zo ingewikkeld is wil je de code zo duidelijk en begrijpbaar mogelijk opstellen, je zult gebruik moeten maken van Object Oriëntatie ( OO ). Na wat onderzoek zul je er achter komen dat goede OO funest is voor een snelle game, je gaat de OO die je eerst zo goed ontworpen hebt dus doorbreken. Dit is uiteraard ernstig en je zult wel twee keer na moeten denken wil je je OO doorbreken want je verliest daardoor een deel van je duidelijkheid en begrijpbaarheid.
Als je werkt met een plan en ontwerp zul je merken dat dit niet leuk is en dat je er geen resultaat mee behaalt, tot op het moment waar je een tijd niet meer aan je code gewerkt hebt en je een toevoeging of aanpassing wilt maken, je kijkt dan gewoon naar je plan en ontwerp, je houd je code er naast en dan zul je vrolijk worden. Je begrijpt de code vrij snel en je bent dan ook vrij snel in staat om de desbetreffende aanpassing te maken, wat uiteraard wel leuk is.
Dus: plan maken, ontwerp maken, code schrijven, ontwerp aanpassen, code schrijven, plan uitbreiden, ontwerp maken, code schrijven, etc. etc. etc.
 
Laatst bewerkt:
geplande toevoegingen:

-verduidelijking van vraag 8: ik ga me verdiepen in desbetreffend gebied van c++ zodat ik een wat uitgebreider antwoord kan geven op de vraag.
-overige links: een lijstje van links naar handige sites met een korte beschrijving en evt verwijzingen naar deze links vanuit antwoorden op vragen.

//deze post is gereserveerd voor vermelding van geplande toevoegingen. Op het moment is er niets gepland, ik sta open voor alle suggesties.
^^ commented :P
 
Laatst bewerkt:
Volle kracht vooruit met C++ in 40 lessen
ISBN 90-5381-097-8
 
iemand anders die dat boek aan raad? ik wil namelijk alleen dingen neer zetten die vaker dan eens aangeraden zijn
 
Als je wil, zou je ook zulke vragen kunnen beantwoorden.

"Hoe maak ik snel een cool een eigen spel?"

als je snap wat ik bedoel :)


PS: Een MOD zou dit echt moeten sticky-en.
 
ik denk dat ik die wel kan beantwoorden bij vraag 9. ik zal die laatste vragen even uitwerken dan kan je nog suggesties doen over wat er dan mist

edit:
ok ik heb die vragen uitgewerkt, heb je nog specifieke vragen die er bij horen?
 
Laatst bewerkt:
Bij nummer 8 zou je misschien de site van functionx kunnen plaatsen. Deze heeft een goede tutorial over MFC met gedetailleerde voorbeelden:

http://www.functionx.com/visualc/Lesson01.htm

Er zitten her en der wel wat schoonheidsfoutjes in de Demo-code, maar voor zover ik gezien heb niets ernstigs en dus is het een handige gids voor de beginners in MFC

The Win32-gui introductie van functionx is óók de moeite van het bekijken waard, maar vind ik persoonlijk al een beetje aan de oude kant. Het is wél een goede uitleg over de basis van Win32 programmeren.

http://www.functionx.com/win32/Lesson01.htm
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan