der richtige Weg C++ zu erlernen

muckelzwerg schrieb:
Die Umbrüche müsst ihr schon mir überlassen. Das ist schon gewollt.
Hab ich grad vor Kurzem erst in einem anderen Thread erklärt.
https://www.computerbase.de/forum/t...f-der-ganzen-linie.384758/page-3#post-3865810
Genau aus diesem Grund solltest du es nicht so machen. Guck dir deinen Beitrag wirklich mal bei verschieden Fensterbreiten an und vergleiche die Lesbarkeit mal mit dem Rest. Wenn du wenigstens konsequent nach 80 Zeichen oder so umbrechen würdest ginge es ja vielleicht noch, machst du aber nicht. Deine Beiträge zu lesen tut wirklich in den Augen weh.

@Topic: 1668mib hat es ganz gut auf den Punkt gebracht. Wenn man nur Auto fahren möchte(ein bisschen hobbymäßig programmieren) muss man nicht wissen wie genau jetzt der Motor funktioniert. Ich sage nicht, dass es nicht hilft oder später nicht sinnvoll sein kann. Aber für den Anfang ist für den Fall eine Sprache wie Python sicherlich geeigneter als C. Zumal man bei Python gleich mehrere Programmierparadigmen mit einer Sprache "erschlagen" kann.

Und übrigens wird auch an der Uni nicht unbedingt mit C angefangen. Bei mir an der Uni wird in Programmieren 1 Scheme verwendet.
 
Zuletzt bearbeitet:
1668mib schrieb:
... ich weiß es nicht, und ich kann dennoch Java-Programme schreiben.
Dann aber nur auf dem abstrakten Niveau, dass bei jeder anderen OO-Sprache
ebenfalls passt. Das heißt Du kannst "Programme schreiben", die auch unter Java
funktionieren. "Java-Programme" sind was anderes. Vermutlich weißt Du aber viel
mehr, als Dir bewusst ist. Wie schreibst Du ein "Java Programm" ohne von der
Garbage-Collection zu wissen? Und was an diesem Wissen ist abstrakter oder
weniger Grundlage, als die Dinge, die ich angesprochen habe?

Was den "Hobbyprogrammierer" angeht:
Im Titel steht "der richtige Weg C++ zu erlernen". Und der Beginnt nach meiner
Erfahrung, und all derer, mit denen ich darüber geredet habe bei den Grundlagen.
Und für diese eignet sich C sehr gut.
Ihr solltet mal berücksichtigen, dass hier nach dem richtigen Weg gefragt wurde,
und dieser vielleicht etwas anders aussieht, als der Weg des Hobbyisten.
(Den ihr, [was ich nicht weiß, und nicht unterstellen will], evtl. eingeschlagen
habt.) Der Wunsch ist C++ zu lernen, nicht Java, nicht Python, nicht Delphi
nicht sonstwas.

"Grafikanwendungen" und "GUI-Programmierung" sind eigentlich zwei verschiedene
paar Schuhe. Will mich da nicht streiten, aber GUIs sind nichts weiter als
nervige Pflicht für I/O. Grafikanwendungen wären z.B. entsprechende Spiele,
oder Visualisierungssoftware etc. Hier gehen allgemein ziemlich die Verhältnisse
durcheinander. Das "Primzahlprogramm" ist keine "Übungsaufgabe" sondern ein
Forschungsprojekt. (Das erste Paper ist afair letzte Woche eingereicht worden.)
Und Cell-Programmierung ist nichts für einen Anfänger, sondern für jemanden, der
die Grundlagen verstanden hat, ohne die bekommt er nichtmal seine Daten auf die
SPEs.

Darii schrieb:
Genau aus diesem Grund.
Welcher Grund?
Dass die Formatierung nicht 100% exakt ist habe ich angesprochen.
Liegt daran, dass der Online-Editor das nicht anbietet, und ich nicht immer die
Nerven habe meine Posts extern zu schreiben.
Wer die 80 Zeichen Textbreite erreicht, kann den Text genau so formatiert
lesen, wie ich ihn geschrieben habe. Und wenn ich den Inhalt aus dem
Quelltext hole habe ich keinen unlesbaren Bandwurmtext.

Gruß

-- -- muckelzwerg
 
Also bin jetzt fleißig am C lernen, aber bei mir ist ein Problem aufgetreten. Im Buch (http://www.galileocomputing.de/openbook/c_von_a_bis_z/c_005_001.htm#Xxx999339) unter Möglichkeit 1 wird der Befehl scanf erklärt. Wenn ich das Programm dann ausführe, drücke ich a dann enter, b dann enter, c dann enter und dos fenster schließt sich -.- Aber eigentlich müsste noch die Ausgabe "Sie gaben ein...". Wo is nun das Problem? Benutze die Dev-Cpp Entwicklungsumgebung.
 
Hast du auch ein
Code:
system("PAUSE");
ans Ende eingefügt (aber vor return 0; )? Evtl. schließt sich dein Konsolenfenster einfach zu schnell um noch alles lesen zu können.

Ansonsten poste deinen Code, dann kann man dir besser helfen ;)

P.S. Gute Entscheidung mit C.
Hier findest du auch Aufgaben & Skripte für Anfänger.
 
Zuletzt bearbeitet:
nein hatte ich nicht, funktioniert jetzt auch, aber ich habe gelesen, dass es "schlecht" sein soll, warum auch immer. Den Code hab ich einfach vom Link, den ich schon geschrieben habe, kopiert.
 
Damals als ich noch mit Dev C++ herumgespielt habe war es so, dass sich das Konsolenfenster am Ende einfach ohne zu warten geschlossen hat. Deshalb hat man den Befehl, den ich oben genannte habe, dazugeschrieben.

Aber vom nur Abschreiben lernt man nicht viel. Solltest lieber ein paar Aufgaben lösen. Die von mir verlinkte Seite meines Profs beinhaltet Aufgaben, die sich an Anfänger ohne Kenntnisse richten. Findest bei anderen Hochschulen sicherlich noch mehr.
 
system("pause") ist ganz praktisch zum testen an kleinen Programmen aber eben Windows-Spezifisch, sollte man also in "richtigen Programmen" wenn möglich vermeiden.

Ich hätte übrigens auch zu C# geraten ;)
 
@ SkeSh: der Befehl funktioniert nur unter Windows. Würdest Du das Programm unter z.B. Linux
starten gäbe es einen Fehler. Zudem macht der Befehl eigentlich keinen Sinn.
Du solltest nicht wollen, dass Dein Programm pausiert. Entweder Dein Programm wartet auf ein
bestimmtes Ereignis (z.B. der Tastendruck), oder es läuft durch.

Wenn ich die Windowskonsole richtig im Kopf habe (sorry, die benutze ich fast nie) solltest Du das
Problem einfach lösen können.
Öffne erst einer Konsole. (Start->ausführen->"cmd")
Navigiere in den Ordner in dem Dein kompiliertes Programm liegt. (cd ...)
Ruf das Programm mit seinem Namen auf.
Die Konsole sollte sich dann nicht schließen, auch nachdem das Programm beendet ist.
(also auch ohne system("PAUSE").)

-- -- muckelzwerg
 
Der System Call bewirkt doch eine Pause bis zu einem Tastendruck. Ansonsten müsste er die Konsole für jede Aufgabe extra einstellen -> nervig.

Alternativ kann er auch das machen (was dann auch unter Linux geht):
Code:
#include <stdio.h>

void wait ()
{
    setvbuf(stdin,NULL,_IONBF,0);
    setvbuf(stdin,NULL,_IOFBF,BUFSIZ);
    getchar();
} 

int main(){
    wait();
    return 0;
}

Aber frage mich wozu? Er will doch nur minimalistische, erste Programme testen und das unter seinem Windows. Da reicht der System Call völlig aus.
 
Zuletzt bearbeitet:
Die Konsole muss nur einmal geöffnet werden, nicht jedesmal. Und es ist nunmal der
gängige Weg das Programm zu kompilieren und dann von Hand aufzurufen, wenn man anfängt.
Minimalistische erste Programme, sollte man nicht in umfangreichen IDEs entwickeln.
Ich denke Du hast Die Kleuker-Ressourcen, die Du empfohlen hast, auch selbst zum Lernen verwendet?
Da findest Du doch gleich auf den ersten Folien den absolut gängigen Einstieg
über gcc und das Arbeiten auf der Kommandozeile.
"Ausreichend" kann ich gar nicht nachvollziehen. Wieso ist es "ausreichend", wenn man zusätzliche Befehle
verwendet, um das Gleiche zu erreichen?
"Es reicht wenn ich mehr mache um die gleiche oder [schlechtere] Funktionalität zu bekommen."?
SkeShs Programm arbeitet doch richtig. Lediglich sein Windows ist der Meinung es müsste das
Konsolenfenster wieder schließen, wenn es vorher nicht explizit geöffnet wurde.
Die "Alternative, die Du beschreibst ist doch genau das, was ich mit "Warten auf Tastendruck" angesprochen habe.
Zudem hat SkeSh diese Methode ja bereits dreimal in seinem Programm, kann also auch mit ihr umgehen.
Letztlich sind beide Methoden aber nicht ubedingt das Gewünschte. Wenn das Programm fertig ist, dann ist es eben fertig.
Wenn das OS Probleme macht, das Ergebnis anzuzeigen, dann muss man dieses Problem
erstmal versuchen dort (auf OS-Seite) zu beheben und nicht im Programm.

Hier ist eine step-by-step Anleitung mit passenden Bildern, die alle drei Varianten darstellt.
http://www.agoodhack.com/

-- -- muckelzwerg
 
@muckelzwerg:
Ich habe nicht gesagt dass ich nichts vom Garbage Collector weiß, aber dennoch weiß ich nicht 100%ig wie die Java-VM so arbeitet. Muss ich gar nicht wissen, wichtig ist, dass ich weiß, wie sie sich verhält. Dazu gehört eben dass sie sich um die Speicherverwaltung kümmert... aber ich muss nicht exakt wissen, wie sie das macht. Das sind Dinge, die sind "nice to know", klar...
Und ich wollte auch nicht euer Forschungsprojekt herabwürdigen, nur gibt's halt oftmals Primzahlenberechungsprogramme als Übungsaufgaben, so war das eher gemeint... Details zu euerem Projekt kenne ich ja nicht und die Implementierung wird sich mit der einer Übungsaufgabe auch grundlegend unterscheiden...


Offtopic: Warum du allerdings immer noch die Breite des Textfensters als Problem bei der Eingabe betrachtest ist mir schleierhaft, ich tippe einfach drauf los und mach genau dann einen Zeilenumbruch, wenn ich es als notwenidg erachte, es ist ja nicht so dass der Text so formatiert wird, wie er in der Textbox zu sehen ist.
 
Hast du denn schonmal Dev C++ benutzt muckelzwerg? Irgendwie scheint mir das nicht der Fall, sonst wüßtest du um was es hier geht.
Soweit ich mich erinnere öffnet sich bei Druck auf "Run" immer ein neues Konsolenfenster, so war das zumindest bei meiner Version. Und ja, da braucht er am Ende irgendwas, um das Programm anzuhalten, wenn er sich seine Ergebnisse durchlesen will. Geht hier nicht um zusätzliche Befehle sondern um notwendige.
Wenn das Dev C++ mittlerweile anderweitig beherrscht, ist's ja umso besser.

Und was für eine Rolle spielt es dabei welche IDE ich benutzt habe bzw. benutze? Das bringt dem Threadersteller wohl nicht wirklich weiter.
 
@1688mib: Das ist nicht mein Forschungsprojekt. Will mich nicht mit fremden Federn schmücken.
(Schön wärs ja. Für mich gibts im entsprechenden Semester wohl kein Projekt für den Cell.)

@samotyr: Ja ich habe DevC++ benutzt, und ich weiß Durchaus was das Problem ist.
Und eine Sinnvolle Lösung besteht nicht darin sein Programm abzuändern, damit es die
"Features" des Betriebsystems und der IDE "korrigiert", sondern darin das ganze System richtig zu verwenden.
Die IDE spielt eine sehr große Rolle, denn sie ist für einen Einsteiger viel zu Umfangreich,
verdeckt die relevanten Grundlagen und sorgt für Probleme.
DevC++ disqualifiziert sich damit als IDE für Anfänger. Ich will nicht gar nicht wissen, wie viele
Beiträge zu "system(PAUSE)", ich seit gestern über Google gefunden habe, bei denen man nicht
weiß, ob man lachen oder weinen soll. (Womit ich mich nicht zum Oberschlaui deklarieren will.
Gibt einige andere hier im Forum, die SEHR viel mehr Ahnung von C und C++ haben.)
Wer richtig Programmieren lernen will, fängt nunmal auf der Konsole von Hand an.
Texteditor und Compiler sind die Werkzeuge der ersten Stunden.
Es geht nicht nur darum Quellcode runterzutippern, sondern zu verstehen, was damit passiert.
So beginnt auch das von Dir verlinkte Material und so arbeiten auch die von Hr.Kleuker angesprochenen Kollegen.
(Und auch sonst jede andere Quelle zum Thema "richtig Programmieren lernen", die ich kenne)
DevC++ ist wie jede andere größere IDE ein "Bonus", um die Arbeit zu erleichtern und effizienter zu gestalten.
Und um zu verstehen, was sie eigentlich leisten, und sie richtig zu benutzen, muss man erstmal ohne gearbeitet haben.
Wenn man dann DevC++ benutzt, erkennt man auch von selbst, dass dieser "Effekt" kein Programmfehler o.Ä. ist.
Und sollte von selbst auf eine Idee kommen, was man da machen kann.

-- -- muckelzwerg
 
Zuletzt bearbeitet:
Warum schlägst du dich mit scanf printf und dem ganzen Schwachsinn rum? Lern doch gleich C++, da kannst du schön sauber dessen stdlib verwenden, geht alles viel einfacher!

zB Ausgabe:

cout << "Jo so einfach!!!";


oder Eingabe:

int a;
cin >> a;
cout << "Sie haben " << a << " eingegeben!";


Versteh ich ned, wie man sich nur mit C rumschlagen kann...
 
zeig mir n Buch (am besten Openbook über Internet wie C von A bis Z) über C++, was keine Vorkenntnisse vorrausetzt, weil ich finde keins. Und ich muss auch erstmal die ganzen Begriffe wissen, die glaube ich nicht bei C++ erklärt werden. Außerdem würde man bei C++ nicht alles verstehen oder seh ich das falsch?

Also würdet ihr schon sagen, ich könnte direckt mit C++ anfangen? Weil wenn ja, würde ich das machen.
 
Zuletzt bearbeitet:
Ich habe jetzt auch vor 4 Tagen mit C++ angefangen
Als Techniker fängt man mit C++ an , weil es sinnvoller für den einstieg ist.

als compiler benutzen wir Visual c++ 6.0 von microsoft

Bücher würd ich selber rein subjektiv nach 4 Tagen C++
folgende empfehlen

Verlag : Markt und Technik
C++ programmieren mit einfachen Beispielen
und
Jetzt lerne ich C++

Ich arbeite mit beiden Büchern parallel und lese mir mal hier mal da paar infos raus ohne da wirklich tief einzusteigen und schreib einfach die ganzen Beispiele in mein compiler rein und schau ob es geht , wenn nicht dann warum es nicht geht usw...

Es macht spaß streng nicht wirklich an und man hat nach 1-2 Stunden Ergebnisse(ich war so stolz über mein hallo world programm ^^ )
hab schon verschiedene mathe kleinprogramme gemacht

Man muss sich ja kein 10 jahre Plan zusammenbasteln wie hier manche vorschlagen
wie werd ich der perfekte Programmierer ^^
Spaß soll es machen besonders am anfang, wenn man tiefer reingehen will gibts ja x-Möglichkeiten... :)
 
Zuletzt bearbeitet:
Also für den Einstieg würde ich auch ganz klar C++ empfehlen, da man hier einfach verstehen lernt was eigentlich so abläuft.
Wenn man allerdings später Programme mit einer Oberfläche(solange es keine Zeitkritischen Anwendungen sind) schreiben will sollte man schon auf C# wechseln. Da es doch sehr viel angenehmer ist als mit Win32 oder MFC zu arbeiten.
Ich habe mich selber erst am Sonntag in C# eingearbeitet, was wirklich schnell geht wenn man mit C++ umgehen kann
 
Zurück
Oben