Ein paar fragen eines Neulings
-
Hallo,
da dies mein erster Beitrag in diesem Forum ist werd ich mich mal kurz vorstellen.
Ich habe vor kurzem angefangen Ebooks zum Thema Programmieren zu lesen und mich dazu entschlossen C++ zu erlernen, da das Interesse meinerseits schon länger besteht.Aus diesem Grund hab ich mir das buch C++ von A bis Z (Gallileo) zu laden und mal reinzuschnuppern, da ich nicht die Katze im Sack kaufen will.
Da ich schon viele "Wie fange ich mit Programmieren an" Threads auch in anderen Foren gelesen habe will ich meine Fragen präzieser formulieren.
1.Welcher Kompiler kommt für mich in Frage ?
Da ich mit DevC++ schwierigkeiten habe das Programm/Script auszuführen.
Trotz kopierten und richtigem Code kommt beim "Kompilieren & Ausführen" nichts und wenn ich nur auf Ausführen klicke kommt eine Fehlermeldung in der steht das Programm sei nicht Kompiliert.2.Hat jemand erfahrung mit dem Buch cC++ von A bis Z?
3.Weches Wissen sollte ich mir zusätzlich aneignen?
Welche Mathematischen etc. Kentnisse brache ich um anzufangen?4.Hilfreiche Links und einfache erklärungen für bestimmte Befehle und für die
Fremdwörter.(Ich habe das Thema "Links für Neulinge" gelesen)5.Kennt ihr Appz für das IPhone 3Gs C++ lernen/schreiben für unterwegs?
Liebe Grüße Joe199
Edit: Schriftdicke geändert.
Edit²: Ich arbeite mich mal durch die Antworten durch und Antworte danach.
-
1. DevC++ ist kein Compiler sondern eine Entwicklungsumgebung. Zudem ist davon abzuraten, das Teil zu benutzen, da es seit Jahren nichtmehr weiterentwickelt wird. Unter Windows empfehle ich dir die Express Version von MSVC++.
2. Such mal hier im Forum, das Buch wurde zur Genüge diskutiert. Es ist mit ziemlicher Sicherheit das schlechteste, was du finden kannst.
-
1.Welcher Kompiler kommt für mich in Frage ?
Ich stimme meinem Vorredner zu: MSVC. Microsoft Visual C++ Express ist die IDE, die dazu gehört (MSVC ist drin enthalten). Die ist kostenlos. ( http://www.microsoft.com/germany/express/download/default.aspx )
3.Weches Wissen sollte ich mir zusätzlich aneignen?
Welche Mathematischen etc. Kentnisse brache ich um anzufangen?Schulmathematik reicht völlig.
5.Kennt ihr Appz für das IPhone 3Gs C++ lernen/schreiben für unterwegs?
Fang erstmal mit normalen Konsolenprogrammen an, und zwar auf deinem PC. Das ist am einfachsten und Du kannst dich auf das Lernen der Sprache konzentrieren. Wenn Du C++ einigermaßen kannst, dann kannste dich an das Iphone dran wagen.
4.Hilfreiche Links und einfache erklärungen für bestimmte Befehle und für die
Fremdwörter.(Ich habe das Thema "Links für Neulinge" gelesen)Google, sowie als Referenz zur Standardbibliothek http://www.cplusplus.com/reference/
Und noch eine bitte: Bitte nicht alles in Fettschrift schreiben, normale Schrift ist lesbarer.
-
Beachte auch bitte, dass Du mit MSVC wirklich C++ lernst und nicht aus versehen C++/CLI!!!
Siehe dazu:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/Also, wenn Du mit MSVC++ Express eine einfache graphische Oberfläche erstellst, dann bist Du auf dem Holzweg und solltest schleunigst nach C# wechseln...
-
Wobei es besser ist, ganz zu Anfang garkeine GUI zu entwickeln.
Abgesehen davon gibt es natürlich genug andere Frameworks, mit denen man auch mit C++ eine GUI programmieren kann.
-
Joe199 schrieb:
1.Welcher Kompiler kommt für mich in Frage ?
Unter Windows würde ich sagen MinGW und der Microsoft Compiler und als IDE Codeblocks oder Microsoft Visual Express Edition. Die Geschmäcker sind da sehr verschieden, für meinen reicht mir Codeblocks.
Joe199 schrieb:
2.Hat jemand erfahrung mit dem Buch cC++ von A bis Z?
Der Autor hat hier keinen guten Ruf, da er zwar sehr anfängerfreundlich schreibt aber viele Fehler macht und auch Sachverhalte unvollständig erklärt.
Bessere Bücher sind: Der C++ Programmierer, C++ Primer(ebook), Die C++ Programmiersprache(eher für Fortgeschrittene) und Effektiv C++(auch für Könner)Joe199 schrieb:
3.Weches Wissen sollte ich mir zusätzlich aneignen?
Welche Mathematischen etc. Kentnisse brache ich um anzufangen?Um anzufangen reichen die Kenntnisse aus der Schule, je nach dem wie tief du in die Informatik einsteigen willst brauchst du noch was über diskrete Mathematik, Algorithmen und Datenstrukturen, Entwurfsmuster und vielleicht was zur Softwareentwicklung im Allgemeinen.
Gruß Blue-Tec
-
Hi,
danke erstmal für die Antworten.
Ich habe mir jetzt mal MSVC++ Express 2010 geladen, leider blickt der das auch nicht mit meinem "Hello World".
Nichts wird angezeigt.
Ich hab mich vor ca. 2 Jahre mit C++ beschäftigt da wurde die Console geöffnet.
Ich will ja blos mit den wenigen "Befehlen" die ich kennen gelernt habe ein wenig herumexperimentieren.
MfG
-
Achte darauf das du ein leeres win32-konsolenprojekt erzeugst dann sollte sich beim Starten ein Konsolenfenster öffnen. Bei Codeblocks läuft dann das Programm durch und du musst nochmal mit einer Taste bestätigen wenn du es beenden möchtest. Ich glaube bei Microsoft musst du dieses Verhalten per Hand einbauen, ein Art dies zu tun wäre vor dem
return 0;
einSYSTEM("Pause");
zu setzen. Ein elegantere Weg ist hier irgendwo in einem Artikel erklärt.Gruß Blue-Tec
-
Las mich raten:Das Consolen-Fenster geht gleich wieder zu, wenn Du Dein Programm gestartet hast?
-
Hallo,
nein es wurde nichtmal Kompiliert.
Aber nachdem ich gegooglet hab hab ich#s herausgefunden an was es lag,
ich hatte Vista und müsste ein Paar einstellungen ändern.Okay damit hab ich aber nur "Hello World" zum laufen gebracht.
Irgendetwas stimmt immernoch nicht.Wenn ich
#include <iostream> using namespace std; int Alter; void main() { cout << "Wie alt sind Sie? "; cin >> Alter; cout << '\n'; if(Alter >= 18); { cout << "Sie sind: " << Alter << " Jahre alt\n"; } if(Alter < 18); { cout << "Du bist: " << Alter << " Jahre alt\n"; } cin.get(); return 0; }
Dann kommt:
1>------ Erstellen gestartet: Projekt: Aufgabe 1, Konfiguration: Debug Win32 ------ 1> Aufgabe 1.cpp 1>c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(13): warning C4390: ';': Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt? 1>c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(17): warning C4390: ';': Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt? 1>c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(21): error C2562: 'main': 'void'-Funktion gibt einen Wert zurück 1> c:\users\c&a\documents\visual studio 2010\projects\aufgabe 1\aufgabe 1\aufgabe 1.cpp(7): Siehe Deklaration von 'main' ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
Obwohl ich den Code Aus dem Tut http://multidev.de/tutorial-programmieren/c++-book.php#22 kopiet habe.
Auserdem ist doch vor Return ein Semikolon.Weis jjemand was ich noch machen kann?
-
Das Semikolon hinter der if-Bedingung ist falsch und es muß "int main()" heißen:
int main() { //... if(Alter >= 18) { } if(Alter < 18) { } }
Ältere Compiler von Microsoft akzeptierten leider auch "void main()", dies ist aber nicht standardkonform.
Nachtrag:
Das Tutorial ist eindeutig nicht auf dem neuesten Stand. Obwohl dort als Datum 2006 angegeben ist, verwendet er dort "Visual C++ 6", und dieser Compiler (mehr als 10 Jahre alt!) entspricht nicht dem aktuellen C++ Standard. Neben dem falschen "void main" werden auch noch die alten Include-Dateien <iostream.h> anstatt <iostream> verwendet.Such dir lieber ein aktuelleres Tutorial...
-
Auch neuere Compiler akzeptieren "void main"... und es ist sehr wohl Standard Conform, wenn Du ein C++ Programm schreibst...
-
Hallo Jochen,
wie kommst du denn darauf? Man muß nicht explizit "return 0;" am Ende der main()-Funktion hinschreiben, aber die Deklaration muß "int main()" lauten, s.a. int main() oder void main()?
Um es noch explizit klarzustellen:
natürlich kann ein spezieller Compiler zusätzlich auch "void main()" erlauben, jedoch wäre dies dann nicht mehr portabel im Sinne von "Standard C++".
-
das 2. sollte schon ein "else if" sein
-
Th69 schrieb:
die Deklaration muß "int main()" lauten, s.a. http://www.c-plusplus.net/forum/viewtopic-var-t-is-39346.html
...jedoch wäre dies dann nicht mehr portabel im Sinne von "Standard C++".Da bringst Du was durcheinander... Der Link bezieht sicht auf C99, was nun mal mit C++ nix zu tun hat. Und ich hatte mich auch C++ bezogen...
Aber das was ja hier gar nicht das Thema... sorry für die Verwirrung...
-
RageR schrieb:
das 2. sollte schon ein "else if" sein
Ist genau genommen nicht notwendig, da die andere Bedingung nicht mehr efüllt sein kann, wenn die erste es ist - und andersrum.
Tatsächlich wäre es also sogar besser ein if (...) {} else {} heranzuziehen.
-
Hallo Jochen,
ok, falschen Link gepostet -)
Hier eine Antwort direkt von Stroustrup: http://www.research.att.com/~bs/bs_faq2.html#void-main
Und hier noch ein paar weitere Links, in denen für C++ nur 'int' als erlaubt angesehen wird:
http://en.wikipedia.org/wiki/Main_function_(programming)#C_and_C.2B.2B
http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/legality-of-void-main.html
http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.3
http://www.comeaucomputing.com/techtalk/#voidmain
-
--- schrieb:
RageR schrieb:
das 2. sollte schon ein "else if" sein
Ist genau genommen nicht notwendig, da die andere Bedingung nicht mehr efüllt sein kann, wenn die erste es ist - und andersrum.
Tatsächlich wäre es also sogar besser ein if (...) {} else {} heranzuziehen.
stimmt
-
oder man nimmt doch das "else if(Alter>0)" sonst hast am end einen der ist -100 oder so;)
-
RageR schrieb:
oder man nimmt doch das "else if(Alter>0)" sonst hast am end einen der ist -100 oder so;)
oder man nimmt gleich nen datentyp der keine negativen zahlen hergibt am besten "unsigned char";)
-
RageR schrieb:
RageR schrieb:
oder man nimmt doch das "else if(Alter>0)" sonst hast am end einen der ist -100 oder so;)
oder man nimmt gleich nen datentyp der keine negativen zahlen hergibt am besten "unsigned char";)
Es ging ja eh nur darum abzufragen, ob das eingegebene Alter größer oder gleich 18 ist.
Wenns größer oder gleich 18 => Volljährig, die Anrede ist: Sie.
Ansonsten => Nicht volljährig, die Anrede ist: Du.Und
unsigned char
kannst du nicht nehmen, dastd::cin
dann ein Zeichen einliest und keine Zahl.