Was zuerst: C oder C++?

Vorweg: Das ist keine 0815-Frage, wie sie bereits mehrfach im Internet zu finden ist, sondern es ist eine Frage mit persönlichem Bezug. Im Internet habe ich für beide Optionen Argumente gelesen und möchte daher einfach um Rat fragen: Was ist in meiner Situation sinnvoll?

Nun also zu mir. Ich habe mit der Webentwicklung begonnen und daher sehr gute Kenntnisse in TypeScript/JavaScript sowie gute Kenntnisse in PHP und SQL. Außerdem arbeite ich schon mehr als vier Jahre mit Java (SE) und habe darin sehr gute Kenntnisse gesammelt. Nebenbei habe ich Python sowie etwas Shell-Programmierung gelernt. Das Konzept der OOP habe ich ziemlich gut verinnerlicht. Seit einiger Zeit befasse ich mich darüber hinaus mit Scala.

Nun möchte ich aus Interesse meinen Horizont etwas erweitern und mit C sowie C++ beginnen. Mit Java EE will ich mich erst zu einem anderen Zeitpunkt genauer befassen. Mit C habe ich vor drei Jahren schon ein paar Erfahrungen gemacht, als ich einen Mikrocontroller für ein bestimmtes Projekt programmiert habe. Dazu habe ich aber nur ganz grundlegende Sprachelemente gebraucht und habe sie auch nie wirklich gelernt, sondern eher auf die Schnelle recherchiert, weil ich nicht viel Zeit hatte, um das Projekt fertigzustellen. Viel ist mir nicht in Erinnerung geblieben, denke ich.

Letztendlich frage ich mich nun, ob es für mich sinnvoller ist mit C oder mit C++ zu beginnen. Ich möchte auf jeden Fall beides lernen. Dabei möchte ich zunächst mit Konsolenprogrammen beginnen und dann GUIs (Qt oder GTK+ unter GNU/Linux) entwickeln. Mit Mikrocontrollern möchte ich mich jetzt erst einmal nicht weiter befassen.

Momentan sehe ich das so: C++ ist objektorientiert. Das wäre nach vielen Java-Jahren ein guter Anknüpfpunkt, oder nicht? Und in C muss man sich um vieles selbst kümmern. Daher ist meine Denkweise so, dass ich zunächst mit C++ beginne, weil das v. a. durch die Objektorientierung und die höhere Abstraktion eher dem entspricht, was ich bereits gewohnt bin. Und direkt im Anschluss beginne ich mit C und lerne, worum man sich sonst alles kümmern müsste.

Ist das eine gute Idee oder ist es eher anders herum sinnvoll? Aus welchen Gründen? Vielen Dank für die Mühe!

Zuerst C++, weil... 46%
Andere Antwort, nämlich... 33%
Zuerst C, weil... 20%
Computer, programmieren, Java, Programmierung, CPP, Informatik, C Programmiersprache, Objektorientierung
10 Antworten
(C++ Anfänger) Möchte im Prinzip eine Software entwickeln und habe einige Fragen?

Hey,

ich möchte ein Programm in C++ erstellen. Es soll eine moderne Oberfläche haben und mir ist wichtig, das es auf verschiedenen Betriebssystemen laufen soll, nicht nur auf Windows. Ich bin ein Anfänger und kann gerade mal die Grundlagen von C++, setze mir jedoch hohe Ziele. Ich habe bis jetzt mit der IDE Visual Studio programmiert, sollte ich zu Qt o.ä wechseln? Ich habe gelesen das es mit anderen IDE's einfacher sei GUI's zu erstellen, weiß jedoch nicht ob das stimmt. Ich möchte eine Software entwickeln, die modern und schnell ist, sowie auf anderen Betriebssystemen läuft. Damit es auf anderen Betriebssystem läuft muss ich es neu kompilieren richtig? Muss ich den Code ändern, damit es auf anderen Betriebssystemen läuft? Was für ein Projekt sollte ich erstellen? Und was für Bibliotheken bzw. API's werden verwendet wenn ich ein Projekt erstelle(Kann ich Bibliotheken oder API's einfach downloaden und damit programmieren)? Habe ich bei Visual Studio bisher immer die Windows API benutzt? Was ist Windows Runtime C++ und was ist C++/CLI? DirectX ist nur für 3D Anwendungen da richtig? Habe viel Zeit, ich würde jeden Tag mindestens 2 Stunden lernen. Ich weiß ich kann auch Google für wahrscheinlich all diese Fragen verwenden, wenn du nicht antworten möchtest, lass es einfach :)

Lg

PC, Computer, Software, Technik, programmieren, cplusplus, CPP, Informatik, programmieren lernen, Technologie, Visual Studio, Spiele und Gaming
3 Antworten
C++: Warum bricht meine if-else-Schleife immer ab?

Hey Community,

ich habe einen einfachen Code geschrieben und als Anfänger tue ich mich etwas schwer mit der if-else-Bedingung.

Zuerst dachte ich, für die Abfrage wäre ein Boolean einfacher, wobei man die Antwort "yes" auf true setzt. Da gab mir mein Compiler aber lauter Fehler aus (Dev C++).

Hier der Code:

#include <iostream>

using namespace std;

class Car {
  private:
    int Passengers;
    int Storage;
    int price;
    int ps;
    string brand;
    string colour;

  public:
    Car (string brand, int price, int ps, string colour) {
      this->brand = brand;
      this->price = price;
      this->ps = ps;
      this->colour = colour;
    }

    void printCar() {
      cout << brand
        << ":"
        << price
        << "EURO"
        << " "
        << "("
        << ps
        << ","
        << colour
        << ")"
        << endl;
    }
};
                                                                                                          int main (int argc, const char *argv[]) {
  string ans;
  string yes;
  string no;

  cout << "You've won 5000 Euro'" << endl;
  cout << "Do you want to buy a new car?" << endl;
  cin >> ans;

  if (ans == yes) {
    cout << " What kind of car do you want?" << endl;
  }
  else {
    cout << "Stop beeing poor!" << endl;
  }

  Car c1("BMW X3", 5000, 150, "red");
  Car c2("Mercedes C500", 4500, 200, "silver");
  cout << "Do you want a BMW?" << endl;
  cin >> ans;

  if (ans == yes) {
    cout << " Ok give me a moment.." << endl << endl;
    c1.printCar();
  }
  else {
    cout << "Let's see what we else got'" << endl << endl;
    c2.printCar();
    cout << endl;
    cout << "Oh you still got 500 Euro left!" << endl << endl;
  }

  cout << "A new car was bought." << endl << endl << endl;
  cout << "   _____" << endl;
  cout <<" _/__|__\_"<< endl;
  cout <<" |__O__O___|-#" << endl;
}

Ziel ist es, entweder einen BMW zu kaufen oder einen Mercedes.

Während meiner Versuche wurden mir entweder beide als verkauft ausgegeben oder nur angezeigt: "A new car was bought.".

Danke im Voraus.

Computer, programmieren, compiler, CPP
3 Antworten
C++ break funktioniert nicht?

Halli Hallo,

ich lerne gerade C++ und schreibe ein simples Konsolen Programm.

Wenn ich folgenden Code ausführe und ".close" eingebe und dann "n" eingebe, muss ich "n" ein zweites mal eingeben, um aus der Schleife heraus zukommen.

Weiß irgendwer was ich falsch gemacht habe?

Danke im voraus und schönes Wochenende!
MfG

Dominic

#include <iostream>
#include <string>

int main() {

std::string userinput;
std::string modules[2] = {"standard module","editor module"};

std::cout &lt;&lt; "C++ console program v1.0\ntype '-h' for help" &lt;&lt; std::endl &lt;&lt; std::endl;

while (true) {
    std::cin &gt;&gt; userinput;

    if (userinput == "-h") {

        std::cout &lt;&lt; std::endl &lt;&lt; "-------------------" &lt;&lt; std::endl;&nbsp;
        std::cout &lt;&lt; "type '-h' for help\ntype '.m' to show the activated modules\ntype '.m_list_all' to list all modules\ntype '.close' to close the console" &lt;&lt; std::endl;
        std::cout &lt;&lt; "-------------------" &lt;&lt; std::endl;

    }
    else if (userinput == ".m") {

        std::cout &lt;&lt; "standard module" &lt;&lt; std::endl;

    }
    else if (userinput == ".m_list_all")
    {
        for (int i = 0; i &lt; 2; i++)
            std::cout &lt;&lt; modules[i] &lt;&lt; "\n";
    }
    else if (userinput == ".close")
    {
        std::cout &lt;&lt; "Are you sure to close the console?&nbsp; [y/n]" &lt;&lt; std::endl;
        std::cin &gt;&gt; userinput;

        while (true)
        {
            std::cout &lt;&lt; "Are you sure to close the console?&nbsp; [y/n]" &lt;&lt; std::endl;
            std::cin &gt;&gt; userinput;

            if (userinput == "y")
            {
                return 0;
            }
            else if (userinput == "n")
            {
                break;
                break;
            }
            else
            {
                while (true)
                {
                    std::cout &lt;&lt; "Are you sure to close the console?&nbsp; [y/n]" &lt;&lt; std::endl;
                    std::cin &gt;&gt; userinput;

                    if (userinput == "y")
                    {
                        return 0;
                    }
                    else if (userinput == "n")
                    {
                        break;
                    }
                }
            }
        }

        /*if (userinput == "y") {
            return 0;
        }
        else if (userinput == "n") {
            break;
        }
        else
        {
            while (true) {
                std::cout &lt;&lt; "Are you sure to close the console?&nbsp; [y/n]" &lt;&lt; std::endl;
                std::cin &gt;&gt; userinput;

                if (userinput == "y") {
                    return 0;
                }
                else if (userinput == "n") {
                    break;
                }
            }
        }
        */
    }
    else {
        std::cout &lt;&lt; "----------------------------" &lt;&lt; std::endl;
        std::cout &lt;&lt; "unknown command: '" &lt;&lt; userinput &lt;&lt; "'\ntry '-h' for help" &lt;&lt; std::endl;
        std::cout &lt;&lt; "----------------------------" &lt;&lt; std::endl;
    }

}

}

PC, Computer, Konsolen, programmieren, Schleifen, Break, CPP, Visual Studio, Loop
2 Antworten
Gdi overlay CSharp?

Guten Tag,

Ich habe ein kleines Problem in meinem Code...

unzwar weiß ich einfach ned wie ich es beheben soll...

Ich bin mir ziemlich sicher das alles richtig ist.

danke für alle leute die mir helfen c:

Src :

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Runtime.InteropServices;

namespace CheatGDI

{

  public partial class Form1 : Form

  {

    RECT rect;

    public const string WINDOW_NAME = "notepad";

    IntPtr handle = FindWindow(null, WINDOW_NAME);

    public struct RECT

    {

      public int left, top, right, buttom;

    }

    Graphics g;

      Pen myPen = new Pen(Color.Red);

    [DllImport("user32.dll")]

    static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

    [DllImport("user32.dll", SetLastError = true)]

    static extern int GetWindowLong(IntPtr hWnd , int nIndex);

    [DllImport("user32.dll", SetLastError = true)]

    static extern IntPtr FindWindow(string lpClassName,string lpWindowName);

    [DllImport("user32.dll")]

    [return: MarshalAs(UnmanagedType.Bool)]

    public static extern bool GetWindowRect(IntPtr hwnd, out RECT lpRect);

    public Form1()

    {

      InitializeComponent();

    }

    private void Form1_Load(object sender, EventArgs e)

    {

      this.BackColor = Color.Wheat;

      this.TransparencyKey = Color.Wheat;

      this.TopMost = true;

      int initialStyle = GetWindowLong(this.Handle, -20);

      SetWindowLong(this.Handle, -20, initialStyle | 0x800000 | 0x20);

        

      GetWindowLong(handle, out rect);

      this.Size = new Size(rect.right - rect.left, rect.buttom - rect.top);

      this.Top = rect.top;

      this.Left = rect.left;

    }

    private void Form1_Paint(object sender, PaintEventArgs e)

    {

      g = e.Graphics;

      g.DrawRectangle(myPen, 100, 100, 200, 200);

    }

  }

}

Computer, programmieren, CPP, CSharp
2 Antworten
Welche Programmiersprache sollte ich erlernen?

Sehr geehrte Gemeinde,

Also es ist so. Ich interessiere mich für das Erlernen wie man Programme bzw. Anwendungen, Scripts und sonstiges schreibt. Ich plane eine konkrete Ausbildung in einer dieser Sprachen zu machen.

Ich bin sehr interessiert daran und weiß auch das es schwer wird, das ist keine Frage.

Ich hab allerdings jetzt keine richtige Ahnung in welcher Sprache ich mein Wissen aufbauen bzw. einen Lehrgang starten soll.

Ich habe mich schon ein wenig informiert und kenne vom Namen folgende gebräuchlichen Programmiersprachen, mit einer von denen ich mich dann auch weiterbilden möchte:

C, C++, C#, Java, Visual Basic oder Visual Basic for Applications (VBA).

Des Weiteren bin an Python interessiert, weil eines meiner persönlichen Lieblingsprogramme in Python geschrieben ist. Mit Python möchte ich aber keinen Lehrgang belegen.

Es wird sich ausschließlich um eine der oberen Programmiersprachen handeln.

Kann jemand von euch, der sich vielleicht schon mit der ein oder anderen oder sogar mehreren von denen auskennt, mir Tipps geben, welche Programmiersprache, die besten Möglichkeiten (auch in der Zukunft) gibt bzw. was für Einschränkungen bei diesen bestehen?

Ich möchte einmal hochleistungsfähige Programme schreiben.

Auf der Einfachheit liegt überhaupt kein Betrachtungspunkt.

Es kann also schwer sein, wenn es dafür entsprechend flexible Möglichkeiten bietet.

Bei Java habe ich schon gehört, dass man hiermit plattformübergreifende Applikationen schreiben kann.

Vielen Dank für Eure/deine Hilfe.

PC, Computer, Visual Basic, programmierer, programmieren, Java, VBA, Programmierung, C-plus-plus, C Sharp, CPP, CSharp, Informatik, Programmiersprache, Python, Appentwicklung
17 Antworten
C++: Warum erfolgt diese Ausgabe?
#include <iostream>

using std::cout;

class Baum {
  public:
    Baum() {
      cout << "Baumkonstruktor\n";
      alter = 10;
    }

    int getAlter() {
      return alter;
    }

    protected:
      // Methode 2: Zugriff verändert, um in Fichte darauf zugreifen zu können
      int alter;
};

class Fichte : public Baum {
  public:
    Fichte() : Fichte(10) {
      cout << "Fichtenkonstruktor\n";
      cout << "Alter der Fichte ist: " << alter << " und Nadeln: " << anzahlNadeln << "\n";
    }

    // Copy-Konstruktor:
    Fichte(Fichte &other) {
      alter = other.alter;
      anzahlNadeln = other.anzahlNadeln;
      cout << "Copy-Konstruktor ist gelaufen\n";
    }

    ~Fichte() {
      cout << "Die Fichte geht\n";
    }

    // Normale Funktion, die als Parameter eine Fichte nimmt:
    // Fichte altern(Fichte eingang) { -> führt zu zweimal Copy-Konstruktor
    Fichte& altern(Fichte &eingang) {  // -> nutzt Referenzen und so genannten Move-Semantics
      //eingang.alter = eingang.alter * 2; identisch mit unterer Zeile
      eingang.alter = 2;
      return eingang;
    }

    Fichte(int nadeln) {
      anzahlNadeln = nadeln;
    }

    long AlterMalNadeln() {
      return anzahlNadeln * alter;
    }

  private:
    long anzahlNadeln;
};

int main() {
  Baum B;
  Fichte F;

  cout << "Alter Baum: " << B.getAlter() << "\n";
  cout << "Fichte: AlterMalAnzahlNadeln: " << F.AlterMalNadeln() << " und alter: " << F.getAlter() << "\n";

  {
    Fichte FI(10);
  }            ///< Destruktor-Aufruf erzwingen.

  Fichte Fich(F);
  cout << "Jetzt altert die Fichte F\n";

  Fich.altern(F); // call by value->Copy-Konstruktor da ursprünglich keine Referenz verwendet wurde
  cout << "Fichte Fich alterXNadeln: " << Fich.AlterMalNadeln() << "\n";
  system("PAUSE");
  return 0;
}

Das ist der Code, mit Kommentaren. Ich verstehe allerdings nicht weshalb die Ausgabe so aussieht wie sie aussieht:

Baumkonstruktor
Baumkonstruktor
Fichtenkonstruktor
Alter der Fichte ist: 10 und Nadeln: 10
Alter Baum: 10
 Fichte: AlterMalAnzahlNadeln: 100 und alter: 10
Baumkonstruktor
Die Fichte geht
Baumkonstruktor
Copy-Konstruktor ist gelaufen
Jetzt altert die Fichte F
Fichte Fich alterXNadeln: 100

Ich hätte folgendes erwartet:

Baumkonstruktor
Alter Baum: 10
Fichtenkonstruktor
Alter der Fichte ist: 10 und Nadeln: 10
 Fichte: AlterMalAnzahlNadeln: 100 und alter: 10
Die Fichte geht
Copy-Konstruktor ist gelaufen
Jetzt altert die Fichte F
Fichte Fich alterXNadeln: 100

So hatte ich die Ausgabe erwartet. Ich bin einfach den Code entlang gegangen ...

PC, Computer, Schule, Programm, programmieren, Programmierung, cplusplus, CPP, Informatik, Programmiersprache
2 Antworten

Meistgelesene Fragen zum Thema CPP

Was ist der Unterschied zwischen ein String und ein Char?

3 Antworten

wie programmiere ich ein Programm das prüft ob eine Zahl gerade oder ungerade ist? Dec C++

5 Antworten

AK 47 CCCP Messer legal öffentlich tragen

11 Antworten

C++ Unterschied Copy-Konstruktor vs. Zuweisungsoperator?

2 Antworten

Was bedeutet hardwarenah programmieren?

5 Antworten

C++ - Wie kann ich eine Reihe von Zahlen addieren?

2 Antworten

Eigene KI mit C++

9 Antworten

was bedeutet using namespace std;? (C++)

4 Antworten

c++ Schleife, Summe berechnen, wie geht das?

3 Antworten

CPP - Neue und gute Antworten