Fragen zur Machbarkeit in C/C++

Leichte Abneigung im Unterbewusstsein könnte stimmen :)
Du sollst eben nur wissen, dass du zwar schon gern alles auf CLI-Art lernen kannst,
aber nicht so viel wie erwartet auch in echtem C++ dann weiterverwenden kannst
(also diese Teile müssen dann wieder neu eingelernt werden)
 
Wenn ich dabei an irgendwelche Grenzen stoße, dann werde ich wohl doch noch das MinGW ausprobieren [...]
Beachte, dass es mit purem C++ unmöglich ist, grafische Benutzeroberflächen zu erstellen! Du brauchst immer irgendwelche betriebssystemabhängige Schnittstellen (z. B. WinAPI bei Windows).
 
Hey Leute!
Wenn ihr jetzt in Richtung GUI denkt möchte ich gerne anmerken, dass es einige sehr gute, plattformübergreifende Bibliotheken gibt, die ich jeder systemabhängigen Schnittstelle wie beispielsweise der WinAPI auf jeden Fall vorziehen würde!
Duda, wenn deine C++-Kentnisse sitzen, also das "echte" C++, dann steht dir zum Beispiel mit Qt quasi die Welt offen :).
Ich bin ein großer Qt-Fan, da man direkt nach dem Download des Qt-Creators losprogrammieren kann. Man kann dann das Programm auf Windows schreiben, und sollte man jemals das Bedürfnis haben es auch auf Linux oder Apple zum Laufen zu bringen, dauert die Portierung nur ein paar Minuten :D.
Und ob du dich nun in die WinAPI oder in Qt einarbeitest kommt ja unterm Strich auf's Selbe raus...
Wichtig ist zunächst einmal, dass du dir die Grundlagen gut aneignest!

In diesem Sinne
Grüße Technipion
 
Hallo sheel, hallo ComFreek,

danke Euch beiden für Euer Feedback. Danke für das Verständnis. welches Ihr mir entgegenbringt. Ja so ist es ebend, man kann nicht alles haben und wer nicht bereit ist, einen Kompromiss einzugehen, der ist selber schuld.
Doch ich will Euch nicht zutexten. Nur wie steht es jetzt, muß ich mit meinen Fragen nach .NET wechseln oder kann ich hier bei C++ bleiben.
Aber ich denke, wozu ich fragen habe betrifft mehr oder weniger C++.
Nun kommt auch gleich so eine Frage zu "if"-Anweisungen im Block.
Das heißt mehrere "if" innerhalb eines geschweiften Klammerpaares.
Wenn der if-Vergleich zutrifft, dann möchte ich in der Anweisung eine
Variable haben, welche auch ein Wert zugewiesen wird. Wo bei es egal ist, ob ich den Wert als Zahl zuweise bzw. gleich mit eintrage oder ob ich eine Konstante zuweise. Da ja immer nur ein if zutrifft, deshalb denke ich, daß ich mir über den "Namen" einer Variablen, welche in der Anweisung steht keine Gedanken machen muß. sondern eher, wie ich den Variablen-Wert nach ausserhalb des Scope bekomme, damit ich innerhalb des Programmes damit weiter arbeiten kann.
C++:
{
         // Gruppe3
         if (radiobutton8->Checked == true)
              unsigned int Name3 = 0;
              Name3 += 4;     // oder Konstante mit dem Wert 4
         if (radiobutton9->Checked == true)
              unsigned int Name3 = 0;
              Name3 += 8;     // oder Konstante mit dem Wert 8
      
          //Gruppe5
          if (radiobutton14->Checked == true)
               unsigned int Name5 =0;
               Name5 += 1;
          if (radiobutton15->Checked == true)
               unsigned int Name5 = 0;
               Name5 += 2;
}
// Nun möchte ich eine Variable mit dem Wert,
// aus der Addition von Name3 + Name5

Es kann natürlich auch sein, daß ich die Namen noch ändern muß,
dann kommen ebend Name3 + Name5 + NameA + NameB zur
Addition. Wobei dann zwei Namen immer den Wert 0 hätten.
Was ja eigentlich nichts ausmachen dürfte.

Viele Grüsse

Duda
 
Hallo Technipion,

danke für Deinen Beitrag. Du hast in der Zwischenzeit, als ich gerade selbst geschrieben habe, geschrieben. Es ist nur so, daß ich ein echter Grünschnabel in Bezug auf das Programmieren bin. Ich bin in Bezug auf C++ ein Anfänger und habe mich jetzt so langsam mit Visual bekannt gemacht. Ich will ja eigentlich kein perfekter Programmierer werden, sondern ich möchte nur mein Hobby-Projekt auf die Beine bringen.
Daß es aber auch ein Software-Programm sein muß. da bin ich selber schuld. Das ich es gern mit Fenster haben möchte, das habe ich mir auch anfänglich nicht träumen lassen. Aber es hat sich so ergeben.
Ich bin nicht mehr der Jüngste und die wenigen noch einigermaßen funktionierenden Gehirnzellen darf ich nicht mit immer wieder wechselden
neuen Dingen vollstopfen. Ich bleibe deshalb erstmal bei einem Ding,
damit ich auch ein Ende absehen kann, denn wenn ich überall mal reinschnuppere, dann kommt da nichts bei raus, Also ich glaube Dir schon, daß Qt oder so, sicher ganz prima ist, aber ich denke, daß es für mich
zur Zeit keine Grund gibt, wofür ich zu Qt wechseln sollte.
Also danke für Deine Info.

Viele Grüsse

Duda
 
Hallo Duda,

zu deinem Problem. Wenn du Name3 und Name5 oder generell eine Variable außerhalb des Blocks nutzen willst, dann musst du die Variablen entweder dort auch vorher definiert haben, oder globale Variablen nutzen, wobei von letzterem abzuraten ist. Den Wert 0 kannst du trotzdem vorher zuweisen, wobei das in deinem Besipiel sowieso sinnfrei ist, da du auch statt "+=" einfach "=" schreiben könntest.

Zu deinem letzten Post. Ich gehe davon aus, dass du mit Visual nur die IDE Visual Studio meinst. Qt kann man ganz nebenbei auch darin einbinden, was das ganze extremst komfortabel macht. Solange du nun aber mit deinen Büchern und dem was du gerade alles nutzt (verzeih mir, ich habe inzwischen bei den ganzen genannten Stichworten den Überblick verloren) zurecht kommst, dann mach das weiter, weil darum gehts ja letzten Endes auch.

Es ging denke ich nur darum, dass du mit Qt keine Sprachen mischen musst, weil du mit reinem C++ arbeiten kannst. Alles andere haben die Entwickler bereits für dich gemacht. Aber je nachdem wie viel du ohnehin mit GUIs machen willst, auch nach dem Projekt, ist das in der Tat eine Frage der Bequemlichkeit.

Grüße,
Jenensta
 
Hallo Jennesta,

danke für Dein Feedback mit den aufklärenden Worten. Normaler Weise werden ja die Variablen(wenn es nicht zu viele sind) direkt nach main deklariert, wobei ihnen ja auch durch = gleich ein Wert mitgegeben werden kann. Dudurch sind sie ja gleich mit initialisiert. Doch sehe in den Beispielen auch immer eine Geschweifte davor und eine Geschweifte danach. Ich nehme mal an, zwischen den Geschweiften ist die Anweisung, welche mir die Variablen eingerichtet hat. Diese Variablen wären dann von
jeder Stelle des Programmes verfügbar, wogegen die, welche ich in meinen
if-Anweisungen angelegt habe, das sind dann Lokale, welche nur innerhalb dieses Scopes gelten. Nun noch kurz, wenn ich zwischen derartigen Scopes nun neue Variablen anlege, weil sie in einer folgenden Anweisung benötigt werden, muß ich diese Variablendeklaration und die Initialiserung auch in einem Paar Geschweifte machen, bevor ich mit der Anweisung wiederum in Geschweifte beginne. Noch kurz zu sinnfrei, habe Dich verstanden, warum addieren, wenn doch sowieso zugewiesen wird.
Mit Visual meine ich "Visual C++ 2010 Express" und ja die IDE. Hier zu hätte ich noch die Frage. Habe in einem Auktionshaus schon mehrfach beobachtet, daß da Lizenzen für "Visual C++2010" versteigert werden.
Wobei bei meiner letzten Beobachtung 37,-Euro das Höchstgebot war.
Da ich eigentlich nicht weiss, welche Einschränkungen "express" hat, deswegen liebäugele ich mit der Vollversion, nicht daß mein Code zu lang wird und ich das nicht mit Express auf die Reihe kriege. :-) Weil das werden schon nicht zu wenig Zeilen, die da generiert werden.
Dir zeih verziehen, wenn Du nicht mehr weißt, was ich so alles lese oder
woher ich versuche meine Infos zu bekommen.
Ich selbst weiss es auch bald nicht mehr. :-)
Ja danke noch für Deine Info zu Qt. Sicherlich eine gute Sache, aber ich kann ja sowieso noch nicht ausreichend C++ um da wirklich was mit reißen zu können, wie man so schön sagt. Aber schaue ich mir irgendwann auf jeden Fall mal an. Aber nun übe ich erstmal weiter mit der Expressversion.

Also in dem Sinn,
Viele Grüsse

Duda
 
Hallo Duda,

Normalerweise werden ja die Variablen(wenn es nicht zu viele sind) direkt nach main deklariert, wobei ihnen ja auch durch = gleich ein Wert mitgegeben werden kann.
Das ist so nicht ganz richtig. Variablen werden und sollten immer dort deklariert werden, wo sie gebraucht werden (im kleinsten Scope wie nur möglich!). Eine Ausnahme bilden alte C-Versionen, die nur Deklarationen am Funktionsanfang erlauben, aber das sollte für dich nicht so wichtig sein, da du ja mit C++ arbeitest ;)

Außerdem: Geschweifte Klammern haben (direkt) nichts mit Variablen zu tun.
Variablen kannst du fast überall deklarieren und definieren!

Ein zu beachtender Aspekt sind allerdings die Gültigkeitsbereiche, denn Variablen müssen auch - wo sie gebraucht werden - zugreifbar sein, sonst erfüllen sie ihren Zweck nicht.
Hier kommen die geschweiften Klammern ins Spiel. Meistens leiten sie einen neuen Block ein. Ein Block hat immer seinen eigenen Gültigkeitsbereich, sprich du kannst auf Variablen des nächst höheren Blockes zugreifen, aber die eigenen (lokalen!) Variablen sind nach außen hin nicht sichtbar!

Auch Funktionen haben ihren eigenen Block. main() ist auch eine Funktion.
Exemplarischer Code:
C++:
int main() {
  // Wir sind im Block 'main'

  // a wird überall in main() (und nicht außerhalb von main()) verfügbar sein!
  int a = 99;

  if (...) {
    // Neuer Block 'if(...)'
    // b ist nur innerhalb dieses IF-Blockes verfügbar!
    int b = 42;
    // Wir können auf a zugreifen, da wir uns in main() befinden und a
    // in ganz main() verfügbar ist. Hier setzen wir a auf 100.
    a = 100;
  }
}
 
Hi ComFreek,

danke für Deine Superhinweise. Natürlich soll da keine endlose Litanei, quasi eine nicht endenwollende Spalte an Variablen untereinander stehen.
Wird ja auch meisten in den Büchern drauf hingewiesen. Nur mit in den Büchern stehenden Hinweisen, daß man die Variablen dort deklarieren sollte, wo man sie braucht, damit konnte ich nicht so recht was anfangen, denn ich brauche sie im Programm.
Deine Worte und Deine tollen Beispielzeilen sind dafür eindringlicher.
Sowas geht runter wie Öl, wie man so schön sagt.
Und das Schöne dabei ist, ich habe es verstanden und kann es umsetzen.
Denn wenn ich es richtig verstanden habe, dann ist das ganze Programm innerhalb der ersten Geschweiften nach main( ) und der zweiten Geschweiften, welche den Abschluß dieses Geschweiften-Klammer-Paares bildet.
Darin sind dann immer Klammerpaare notwendig, in denen die Anweisungen stehen, von denen dann, auf die davor deklarierte und initialisierte Variable zugegriffen werden kann. Damit wird die Variable dort eingerichtet, wo sie auch gebraucht wird.
Danke nochmals,

Viele Grüsse

Duda
 
Zuletzt bearbeitet:
Hallo ComFeek, hallo Jennesta,
hier nun gleich mal meinen verbesserten/berichtigten Code.

C++:
  int main( ) {
 
  unsigned int name3 = 0;
  unsigned int name5 = 0;
  // sum35 wird im Programm benötigt
  unsigned int sum35 = name3 + name5;
 
  // hier Gruppe3
  if (radiobutton8->Checked == true) {
  name3= 4;
 
  if (radiobutton9->Checked == true)
  name3 = 8;
 
  // hier Gruppe5
  if (radiobutton14->Checked == true)
  name5 = 1;
 
  if (radiobutton15->Checked == true)
  name5 = 2;
  }
}

Der Grund, warum ich den Code-Ausschnitt hier nochmal schreibe, ist nur als kleines Dankeschön an Euch gedacht, damit Ihr seht, ob Euere Worte auch Früchte tragen. Naja es ist poetisch gemeint, aber es hört sich nicht schlecht an, auf jeden Fall besser als, daß Euere Massage bei mir angekommen ist, was noch lange nicht heißt ob ich sie gelesen habe oder noch besser, ob ich alles begriffen habe. Also in dem Sinn bis zu meiner nächsten Frage.

Viele Grüsse

Duda
 
Zurück