| Autor |
Nachricht |
Yada
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.12.2009
Beiträge: 31
|
Yada Mitglied
12:20:57 29.01.2012 Titel: |
Weiter gehts... Nur wo? |
Zitieren |
Hallo!
Ich beschäftige mich nun doch schon einige Zeit mit dem Programmieren (hauptsächlich aber Skriptsprachen) und will seit geraumer Zeit nun etwas anspruchsvollere Sprachen (à la C++) lernen. Zwischenzeitlich habe ich mich auch mit Java beschäftigt, bzw. mache es immer noch. Irgendwie jedoch bietet C++ mir einen größeren Anreiz - auch wenn es, subjektiv gesehen, deutlich schwerer ist.
Nichtsdestotrotz möchte ich mein C++ Wissen erweitern.
Die Basics sind mir durchaus bekannt (welche, wenn man sich schon länger mit Programmieren beschäftigt, nicht ganz so schwierig zu erlernen sind). Die Sache ist, dass ich nun weiter will. Nur wo? Persönlich würde ich mich auf keinen Fall in die Kategorie "Fortgeschritten" stecken, sondern eher "nach Anfänger" (spricht man dann von Amateur? Keine Ahnung so wirklich, aber egal).
Hat jemand eine Lektüre für diesen Teil des Lernens auf Lager? Es gibt ja schier endlose Bücher über C++, wobei ein Großteil davon veraltet ist. Gerne mit Schwerpunkt auf OOP und anderen Themen von C++ die doch schon "fortgeschrittener" sind (Templates, ...).
Schöne Grüße |
|
|
|
 |
redrew99
Mitglied
Benutzerprofil
Anmeldungsdatum: 12.03.2011
Beiträge: 244
|
redrew99 Mitglied
12:39:06 29.01.2012 Titel: |
|
Zitieren |
Wenn Du Dich selber noch als Anfänger bezeichnest,
könnten vielleicht zunächst folgende Bücher interessant sein:
- Der "Primer" oder
- der "C++ Programmierer"
Als Fortgeschrittener könnte u.a.:
Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library
Design Patterns. Elements of Reusable Object-Oriented Software. |
Zuletzt bearbeitet von redrew99 am 12:43:25 29.01.2012, insgesamt 1-mal bearbeitet |
|
 |
Hacker
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2011
Beiträge: 1855
|
Hacker Mitglied
13:27:14 29.01.2012 Titel: |
Re: Weiter gehts... Nur wo? |
Zitieren |
| Yada schrieb: | | anderen Themen von C++ die doch schon "fortgeschrittener" sind (Templates, ...). |
Ist das wirklich fortgeschritten? Das ist doch eher Anfänger-Zeug, nicht? |
|
|
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4840
|
cooky451 Mitglied
13:31:08 29.01.2012 Titel: |
Re: Weiter gehts... Nur wo? |
Zitieren |
| Hacker schrieb: | | Yada schrieb: | | anderen Themen von C++ die doch schon "fortgeschrittener" sind (Templates, ...). |
Ist das wirklich fortgeschritten? Das ist doch eher Anfänger-Zeug, nicht? | Er schreibt doch selbst, dass er noch Anfänger ist, aber eben kein blutiger Anfänger. Also eigentlich sucht er ein Buch, dass insbesondere auf die Eigenheiten von C++ eingeht.
Mal als Tipp, auch ganz ohne Buch:
http://www.parashift.com/c++-faq/
Super Seite. |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
|
|
 |
Th69
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.03.2008
Beiträge: 2256
|
Th69 Mitglied
13:51:46 29.01.2012 Titel: |
|
Zitieren |
|
 |
Yada
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.12.2009
Beiträge: 31
|
Yada Mitglied
15:03:02 29.01.2012 Titel: |
Re: Weiter gehts... Nur wo? |
Zitieren |
| cooky451 schrieb: | | Hacker schrieb: | | Yada schrieb: | | anderen Themen von C++ die doch schon "fortgeschrittener" sind (Templates, ...). |
Ist das wirklich fortgeschritten? Das ist doch eher Anfänger-Zeug, nicht? | Er schreibt doch selbst, dass er noch Anfänger ist, aber eben kein blutiger Anfänger. Also eigentlich sucht er ein Buch, dass insbesondere auf die Eigenheiten von C++ eingeht. |
Richtig. Mir würde es wenig helfen, ein Buch zu lesen, dass mir erklärt wie If-Bedingungen funktionieren, usw..
Und danke für die Links! |
Zuletzt bearbeitet von Yada am 15:03:17 29.01.2012, insgesamt 1-mal bearbeitet |
|
 |
pumuckl
Moderator
Benutzerprofil
Anmeldungsdatum: 21.06.2005
Beiträge: 6578
|
pumuckl Moderator
16:16:47 31.01.2012 Titel: |
|
Zitieren |
|
 |
Yada
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.12.2009
Beiträge: 31
|
Yada Mitglied
16:25:43 01.02.2012 Titel: |
|
Zitieren |
So, nachdem ich mich wieder bisschen damit beschäftigt habe (und ein neuer Thread einfach nur Verschwendung wäre):
- Pointer:
Pointer-Artithmetik ist mir noch etwas schleierhaft. Die Syntax dazu ist zwar einfach, aber mir erschließt sich der praktische Nutzen einfach nicht - evtl. weil ich das System selbst noch nicht ganz durchgeblickt habe.
- Templates:
Templates verstehe ich jetzt zwar, aber auch hier fehlt mir praktische Nutzen. Wo setzt man Templates gezielt ein? |
|
|
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4840
|
cooky451 Mitglied
17:29:20 01.02.2012 Titel: |
|
Zitieren |
| Yada schrieb: |
- Pointer:
Pointer-Artithmetik ist mir noch etwas schleierhaft. Die Syntax dazu ist zwar einfach, aber mir erschließt sich der praktische Nutzen einfach nicht - evtl. weil ich das System selbst noch nicht ganz durchgeblickt habe. | Schließt das Referenzen mit ein, oder meinst du wirklich nur Pointer?
| Yada schrieb: |
Templates verstehe ich jetzt zwar, aber auch hier fehlt mir praktische Nutzen. Wo setzt man Templates gezielt ein? |
Nehmen wir mal einen offensichtlichen Nutzen: Container. Alle C++ Container sind Templates, damit sie für jeden Datentypen funktionieren. Ein std::vector<char> nutzt z.B. den gleichen Code wie ein std::vector<int>, obwohl diese wahrscheinlich unterschiedlich viel Speicher für ein Element reservieren etc.
Trotzdem unterscheidet sich die Funktionsweise für verschiedene Typen nicht, deswegen nutzt man ein Template. |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
|
|
 |
Strop
Unregistrierter
|
Strop Unregistrierter
17:54:01 01.02.2012 Titel: |
|
Zitieren |
Schau dir mal die Bücher von: Bjarne Stroustrup an. (Das is der Erfinder von C++ von dem gibt es Bücher für anfänger sowie fortgeschritte etc. ) |
|
|
|
 |
Yada
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.12.2009
Beiträge: 31
|
Yada Mitglied
20:10:08 01.02.2012 Titel: |
|
Zitieren |
Danke für die Buchempfehlung, werde ich mir ansehen!
Und cooky:
Für den Moment nur Pointer an sich. |
|
|
|
 |
cooky451
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.10.2010
Beiträge: 4840
|
cooky451 Mitglied
20:15:45 01.02.2012 Titel: |
|
Zitieren |
| Yada schrieb: |
Und cooky:
Für den Moment nur Pointer an sich. | Was heißt für den Moment? Es ist ein Unterschied ob man versucht den Sinn von "Zeigern" im Sinne von Variablen, deren Wert auf etwas zeigt zu erklären, oder den Sinn von Pointern neben Referenzen. |
_________________ Sie sind nicht berechtigt unrechtmäßige Kopien dieses Datenträgers zu erstellen.™
|
|
 |
Hacker
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2011
Beiträge: 1855
|
Hacker Mitglied
20:32:56 01.02.2012 Titel: |
|
Zitieren |
Pointer sind sehr sinnvoll, wenn du z.B. eine Globale "Variable" hast, die in vielen Modulen genutzt wird, aber deren Wert oder Inhalt erst zur Laufzeit ermittelt wird, also in der Main. Z.B. in Qt als qApp, ein Zeiger auf die aktuelle QApplication, die als allererstes in main() erzeugt wird, implementiert; in Headern muss man mit der aktuellen qApplication arbeiten, kennt aber ihre Werte noch nicht.
Neben Referenzen können Zeiger ihren Wert ändern, also auf verschiedene Dinge zeigen, was in manchen implementierungen sinnvoll ist. |
_________________ Wenn du kein IPhone hast, ... dann hast du was anderes.
|
|
 |
Yada
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.12.2009
Beiträge: 31
|
Yada Mitglied
17:23:16 07.02.2012 Titel: |
|
Zitieren |
Okay, so langsam verstehe ich Pointer. Zumindeste glaube ich das. Soweit ichs verstanden habe, zeigen Pointer auf bestimmte Speicherzellen und sind somit unabhängig vom eigentlichen Wert. Soweit richtig, oder?
Wäre dieser Gedankengang dann "sinnvoll" bzw. überhaupt möglich:
Eine Applikation X verfügt über die Klasse Y mit der Klassenvariable Z. Der Wert, den Z bekommen soll, wird bereits vor der Initialisierung von Klasse Y festgelegt. Könnte man also für den Wert Z einen Pointer verwenden, sodass der Konstruktor der Klasse Y auf diese Speicherzelle zugreift? Stark vereinfachtes Beispiel, aber immerhin würde man sich die Arbeit sparen der Klasse die Variable Z übergeben zu müssen. |
|
|
|
 |
Hacker
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2011
Beiträge: 1855
|
Hacker Mitglied
19:43:37 07.02.2012 Titel: |
|
Zitieren |
Ne, da nimmt ma static constants.
| C/C++ Code: | struct Y
{
static const size_t meinenummer;
};
//Außerhalb der Klasse:
const size_t Y::meinenummer;
| |
| C/C++ Code: | struct Y
{
static const size_t meinenummer;
};
//Außerhalb der Klasse:
const size_t Y::meinenummer;
| |
| C/C++ Code: | struct Y
{
static const size_t meinenummer;
};
//Außerhalb der Klasse:
const size_t Y::meinenummer;
| |
Weiß nicht, ob es so richtig ist, ich glaube bei Basisdatentypen muss man sie außerhalb, bei Klassen innerhalb der Klassendefinition definieren. |
_________________ Wenn du kein IPhone hast, ... dann hast du was anderes.
|
|
 |
Gugelmoser
Mitglied
Benutzerprofil
Anmeldungsdatum: 14.07.2007
Beiträge: 857
|
Gugelmoser Mitglied
19:52:40 07.02.2012 Titel: |
|
Zitieren |
| Yada schrieb: | | Okay, so langsam verstehe ich Pointer. Zumindeste glaube ich das. Soweit ichs verstanden habe, zeigen Pointer auf bestimmte Speicherzellen und sind somit unabhängig vom eigentlichen Wert. Soweit richtig, oder? | Ein Zeiger ist genauso wie ein int, char, float eine Variable, darum auch Zeigervariable. Der Wert der Variablen ist eine Adresse. Bedeutung: Der Zeiger verweißt auf die Adresse, die er gespeichert hat. |
Zuletzt bearbeitet von Gugelmoser am 19:53:03 07.02.2012, insgesamt 1-mal bearbeitet |
|
 |
schtätick
Unregistrierter
|
schtätick Unregistrierter
19:54:17 07.02.2012 Titel: |
|
Zitieren |
| Hacker schrieb: | | Ne, da nimmt ma static constants. | Ne, da nimmt ma non-static constants.
Konkret: Lass das static weg, definiere den Wert innerhalb der Klasse und hör auf, hier Antworten zu geben. |
|
|
|
 |
Hacker
Mitglied
Benutzerprofil
Anmeldungsdatum: 25.04.2011
Beiträge: 1855
|
Hacker Mitglied
20:08:11 07.02.2012 Titel: |
|
Zitieren |
| schtätick schrieb: | | Hacker schrieb: | | Ne, da nimmt ma static constants. | Ne, da nimmt ma non-static constants.
Konkret: Lass das static weg, definiere den Wert innerhalb der Klasse und hör auf, hier Antworten zu geben. |
Gut, ich meine nur, dass der Wert ja sowieso für alle Instanzen gleich ist, wieso dann nicht gleich static? Merke: er ist vor der Klasseninstanziierung festgelegt. |
_________________ Wenn du kein IPhone hast, ... dann hast du was anderes.
|
|
 |
Yada
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.12.2009
Beiträge: 31
|
Yada Mitglied
01:52:29 08.02.2012 Titel: |
|
Zitieren |
Ah okay, danke.
Dann gleich mal was völlig anderes:
Da man ja bekanntlicherweise programmieren sollte, um eine Sprache irgendwann zu beherrschen, und ich das ganze etwas "ausschmücken" wollte, habe ich angefangen so eine Art "Snake"-Klon zu basteln (Konsolenvariante).
Gelöst hab ichs so, dass ich die Koordinaten in einem Zweidimensionalen-Array speichere und mich via getch() bzw. den Pfeiltasten schonmal im bestimmten Spielraum bewegen kann.
Problem nur ist die Art und Weise meiner Spielfeld-"Generierung". Diese wird bei jeder Bewegung aufgerufen um das Spielfeld zu updaten - unschöner Nebeneffekt sind die Ruckler die man kurzzeitig vom Clearscreen sieht.
Kann man das irgendwie - möglichst mit Basics und Co. - umgehen? |
|
|
|
 |