Über die Notwendigkeit von C (Anfängerfrage)



  • OK, es ist natürlich sinnvoll, wenn man sich auf C oder C++ am Anfang eines Programms einigt , aber C++ ist doch viel interessanter als C

    Sicher? Hast du schon mal richtig schön mit pointern rumgewurschtelt? DAS ist interessant 😉
    Und gerade für diesen Bereich habe ich mir damals ein C Buch gekauft, weil da viel mehr darauf eingegangen wird/werden muss. Nachdem ich ein weilchen mit C gearbeitet hab hab ich den Sinn der Pointer auch verstanden *g*
    Also konnt ich besser in C++ weiter machen.

    Also ich würde empfehlen mit C++ anzufangen, allein wegen der OOP, die gestalltet sich nämlich auch als recht knifflig am anfang (vorallem wenn man voher mit Basic/TP und C gearbeitet hat). Für tiefere Kenntnisse ist C aber unschlagbar. *meinebescheidenemeinung*



  • Hm, wenn man C++ kann und dann C lernt ist das einzig neue doch die C-Funktionsbibliothek, oder?
    Ich weiß gerade nicht, was da sonst noch sein soll. 😕

    MfG MAV



  • Mis2com schrieb:

    Ich weiß gerade nicht, was da sonst noch sein soll. 😕

    strukturierte programmierung?
    ein völlig anderes herangehen an probleme? lösungen werden anders aufgebaut, andere techniken verwendet, etc.



  • strukturierte Programmierung ist in C eigentlich unüblich 😉



  • "da ich seit kurzem den Eisntieg in C++ gewagt habe"

    Ich würde mir von C die printf-Funktionen und die diesbezügliche Formatierung anschauen. Das kommt z.B. in der Windows-Programmierung vor.
    Unterschied C-/C++-cast: (int)typ int(typ) static_cast<int>(typ) ...
    Konstanten mit #define in C anstelle const.

    C++ bietet mehr als C: Templates, STL, OOP, ...



  • Ich würde zuerst C lernen(so habe ich das auch gemacht), dann ist der Einstieg
    einfacher. Man lernt C++ viel leichter, wenn man vorher in C programmiert hat.
    Ich spreche aus Erfahrung!

    Gruß Crabbe



  • Konstanten mit #define in C anstelle const.

    [Klugscheissermodus][Korintenkackermodus] 🤡
    #define Makros sind in dem Sinne keine Konstanten, sondern Textersetzungsanweisungen. Im Speicher wird dafür kein Speicherplatz angelegt. Stattdessen werden durch den Präcompiler im Quelltext die Stellen, an denen ein Makroname erscheint durch den damit verknüpften Text ersetzt.
    Der Quelltext

    #define PI 3.1415
    ...
    float kreisumfang = 2 * radius * PI;
    

    sieht nach dem Präcompilerdurchlauf dann so aus

    float kreisumfang = 2 * radius * 3.1415;
    

    #define verhält sich also prinzipiell wie eine Konstante, es ist aber eigentlich keine.
    [/Korintenkackermodus][/Klugscheissermodus]



  • Bashar schrieb:

    strukturierte Programmierung ist in C eigentlich unüblich 😉

    hab ich wieder strukturierte programmierung mit etwas anderem verwechselt?
    nur leider habe ich keine ahnung mit was 😞

    bitte aufklaeren.



  • Du meinst wahrscheinlich die prozedurale Programmierung.



  • Harrison Bergeron schrieb:

    Du meinst wahrscheinlich die prozedurale Programmierung.

    ah, danke!
    das wirds wohl sein.

    kann mich dann mal kurz einer aufklaeren was der unterschied zwischen
    strukturierter und prozeudraler ist?
    ich weiss, ich sollte das wissen... aber ich hab mich nie dafuer interessiert :o



  • Shade Of Mine schrieb:

    Harrison Bergeron schrieb:

    Du meinst wahrscheinlich die prozedurale Programmierung.

    ah, danke!
    das wirds wohl sein.

    kann mich dann mal kurz einer aufklaeren was der unterschied zwischen
    strukturierter und prozeudraler ist?
    ich weiss, ich sollte das wissen... aber ich hab mich nie dafuer interessiert :o

    Im wesentlichen bedeutet strukturierte Programmierung Single-Entry-Single-Exit, sowie gewisse Anforderungen an eine Sprache:

    • Sequenziell
    • Selektion (if, switch)
    • Iteration (for, while)

    Keine GOTOS!

    Soweit ich mich erinnern kann. Prozedurale Sprachen sind Sprachen der 3. Generation, also weder Maschinensprache, noch Assembler, sondern COBOL, FORTRAN, Algol, C, ...

    Sie müssen anstelle eines GOTOS so etwas wie Funktionen in C unterstützen. Also Sprung in eine Funktion/Prozedur mit anschließendem Rücksprung. Sehr schön in Cobol

    PROCEDURE-DIVISON.
    PERFORM VORLAUF
    STOP RUN.
    VORLAUF.
    BLBLA
    BLBLA
    BLBLA.

    HTH
    Tobias



  • Prozedurale Programmierung heißt, dass die Prozedur als hauptsächliches Abstraktionsmittel eingesetzt wird: Was muss das Programm TUN, um das Problem zu lösen? C, Pascal, Scheme sind hier Vertreter.

    Strukturierte Programmierung ist ein Dogma, das verlangt, dass Programmabläufe ausschließlich aus Konstrollstrukturen mit einem Eingang und einem Ausgang bestehen. D.h. grob gesagt kein goto, kein break, kein continue, kein return (ausser am Ende der Funktion), keine Exceptions. (Wobei ich schon manchmal gehört habe, dass eine Schleife, die ausschließlich in der Mitte terminiert wird (in C++: for(;; ) { do1(); if (c) break; do2(); } ebenfalls erlaubt ist). Das ganze basiert meines Wissens auf der Anfang der 60er gemachten Beobachtung, dass GOTO böse ist (Dijkstra: "GOTO statement considered harmful") und einem Beweis, dass sich beliebige Programme mechanisch in eine strukturierte Form überführen lassen.



  • oh, danke! 👍



  • Wobei ich schon manchmal gehört habe, dass eine Schleife, die ausschließlich in der Mitte terminiert wird (in C++: for(;; ) { do1(); if (c) break; do2(); } ebenfalls erlaubt ist

    Die Schleife hat trotzdem nur einen Ausgang. Du siehst es ist völlig im Sinne der strukturierten Programmierung.

    Ich würde zuerst C lernen(so habe ich das auch gemacht), dann ist der Einstieg
    einfacher. Man lernt C++ viel leichter, wenn man vorher in C programmiert hat.
    Ich spreche aus Erfahrung!

    Ich hab's so gemacht und bereue es. Es war verdammt hart vom prozeduralen Programmieren zur Objektorientierung zu gelangen. Bis man das drauf hat, dauert und es kostet viel Disziplin. (Ich spreche aus Erfahrung und nicht nur aus eigener.)

    Ich würde mir von C die printf-Funktionen und die diesbezügliche Formatierung anschauen. Das kommt z.B. in der Windows-Programmierung vor.

    Inwiefern kommt das in der Windows-Programmierung vor? Und was kann ich mit printf, was ich mit boost::formated nicht kann?



  • Helium schrieb:

    [...]föllig[...]

    Nun sehe ich dieses Wort heute schon das zweite Mal. Eine google Suche beweist, dass es eine gewisse Verbreitung hat. Meine Frage: Wird das nicht völlig geschrieben?

    Föllig scheint mir föllig valsch zu sein. Oder hat das was mit der neuen Rechtschreibung zu tun?



  • Ich hoffe es wird frühestens in 60 Jahren in die neue Rechtschreibung aufgenommen. Dann hab ich nämlich keine Zähne mehr die mir wehtun könnten.

    aua



  • Mit deinem Gefühl hast du völlig Recht.
    Meine Rechtschreibung ist zum Teil grauenvoll. Und dazu kommen dann auch noch die Buchstabendreher durch zu schnelles Tippen, z.B. ihc statt ich, usw. Und in letzter Zeit passiert es mir auch immer öfter, dass ich statt nur den ersten die ersten Beiden Buchstaben eines Substantivs groß schreibe. 😞

    Ich werde wohl mehr darauf achten müssen.


Anmelden zum Antworten