Zum Inhalt springen

Hilfe bei Anfängerproblem c++


Jonsc1

Empfohlene Beiträge

Habe gerade angefangen meine ersten tapsigen Schritte mit c++ zu machen...

Hab einen guten Onlinekurs gefunden der für Anfänger sehr schön aufbaut.

Bin gerade dabei Variablen zu deklarieren und einen Wert zuzuweisen.

Habe also testweise einmal die Variable "int zahl" deklariert.

Im nächsten Schritt wollte ich der Variable "zahl" den Wert 42 zuweisen.

Der Quellcode dieses kleinen Programms war also folgender:

int zahl;

zahl = 42;

Ich benutze übrigens Dev-C++ 4.9.9.2

Wenn ich jetzt testweise mal kompiliere, erhalte ich unten folgende Fehlermeldungen für die 2te Zeile:

2 C:\Cplusplus\Unbenannt1.cpp expected constructor, destructor, or type conversion before '=' token

2 C:\Cplusplus\Unbenannt1.cpp expected `,' or `;' before '=' token

Tja... da steh ich nun ich armer Thor...

Kann mir jemand mit ner Erklärung inc. Fehlerbehebung aushelfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tja, hehe... So was kann ja mal passieren wenn man noch keine Ahnung hat... ;)

Hab das Programm jetzt dementsprechend angepasst:

[quote

main()

{

int zahl;

zahl = 20;

}

und jetzt läuft es...

*froi, mein erstes c++ Programm* :bimei

Danke für die Hilfe!

Bitte den Tread offen lassen, werde wohl in nächster Zeit oft solche Fragen haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey Klasse wie schnell man hier Antworten bekommt... :)

Aber wenn man in nem Übergeordneten Block die selbe Variable anders definiert hat, übernimmt sie nach dem schliessen den alten Wert oder?

Also wie hier zum Beispiel:

main()

{

int zahl;

zahl = 20;

{

zahl = 30;

}

}

Falls was am Code nicht stimmt, bitte verbessern... hab noch absolut keine Ahnung... :hells:

Naja, die Variable würde aber nach dem schliessen des inneren Blocks wieder den Wert 20 übernehmen oder?

P.s.: Gibts keinen Editieren Button?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmm... in diesem Link oben in der Anleitung für Anfänger steht aber folgendes Beispiel:

{

int a = 5;

{

// hier hat a den Inhalt 5

}

{

int a = 3;

// hier hat a den Inhalt 3

{

// a ist immer noch 3

}

}

// hier ist a wieder 5

}

Lokale Variable

Die innere Variable wird als lokale Variable bezeichnet. Für ihren Geltungsbereich überdeckt sie die außen liegende Variable a. Die außen liegende Variable existiert durchaus noch, aber aufgrund der Namensgleichheit mit der lokalen Variablen kann man bis zu deren Auflösung nicht auf sie zugreifen. Sobald das Programm den Block verlässt, in dem die lokale Variable definiert ist, wird die äußere Variable wieder sichtbar. Alle Operationen auf der lokalen Variablen berühren die äußere Variable nicht.

Also was hab ich da nicht recht verstanden?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ah!

Verstanden, danke! :D

Wenn man eine Variable innerhalb einer Klammer definiert, ohne das sie zuvor ausserhalb einer Klammer definiert wurde, verliert sie dann ausserhalb der Klammer ebenfalls ihren Wert?

Also ist sie dann auch eine Lokale, und keine Globale Variable?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ah!

Verstanden, danke! :D

Wenn man eine Variable innerhalb einer Klammer definiert, ohne das sie zuvor ausserhalb einer Klammer definiert wurde, verliert sie dann ausserhalb der Klammer ebenfalls ihren Wert?

Sie verliert nicht nur ihren Wert, sondern wird komplett zerstört. Sie existiert nur innerhalb des Sichtbereichs (Scope). Nach der } ist Schluss, aber das wurde doch auch schon erklärt?!

Also ist sie dann auch eine Lokale, und keine Globale Variable?

Ja. Wieso auch? So ganz klar scheint mir das noch nicht zu sein. Globale Variablen sind immer über die gesamte Laufzeit des Programms gültig.

Bei deinem Beispiel davor hattest du quasi mehrere Variablen mit dem Namen "a". Sowas ist gefährlich zu zeugt von schlechtem Stil, genau wie globale Variablen. In den meisten Fällen kann man sowas eleganter lösen.

Guck dir einfach das mal an:

http://tutorial.schornboeck.net/inhalt.htm

Speziell das:

http://tutorial.schornboeck.net/variablen.htm

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und aufgrund des Touts die nächste(n) Frage(n):

Diese beiden Zeilen:

#include<iostream>

using namespace std;

Was bedeuten die im genauen?

Dieses #include scheint ne Art Bibiothek aufzurufen die dann später Eingaben über die Tastatur etc. ermöglicht... das hab ich irgendwo gelesen.

Aber zu was ist der using namespace std Befehl da?

Link zu diesem Kommentar
Auf anderen Seiten teilen

UDieses #include scheint ne Art Bibiothek aufzurufen die dann später Eingaben über die Tastatur etc. ermöglicht... das hab ich irgendwo gelesen.
Das ist so nicht ganz richtig. Die include-Direktive des Präprozessors (die fangen alle mit # an) bewirkt eigentlich nur, dass vor dem Compilieren an die Stelle der Direktive der Inhalt der angegebenen Datei (hier: iostream) kopiert wird.

iostream ist eine Datei, die u.a. Deklarationen für die Konsolenein- und -ausgabestreams enthält.

Aber zu was ist der using namespace std Befehl da?
Befehle gibt es in C und C++ nicht ;)

Alle Objekte und Funktionen der C++-Standardbibliothek liegen im Namespace std. Um also cout benutzen zu können, muss man std::cout schreiben. Um das nicht machen zu müssen, kann man auch einzelne (oder, wie hier, alle) Objekte eines Namensraum in den globalen Namensraum "heben". Das geschieht mit Hilfe der so genannten using-Direktive.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke!

Ich sollte also immer diese beiden Sachen laden, auch bei kleineren Programmen?

So, jetzt hab ich mal eine etwas dümmere Frage... ich lese das immer überall aber ganz durschaut habe ich es noch nicht:

Was versteht man unter Objektorientierter Programmierung?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke!

Ich sollte also immer diese beiden Sachen laden, auch bei kleineren Programmen?

"Geladen" wird da nichts. Include-Direktiven solltest du da benutzen, wo du sie brauchst, sonst nicht. Und using-Direktiven sind ein zweischneidiges Schwert, wenn man sie auf ganze Namensräume anwendet. Einerseits ersparen sie einiges an Schreibarbeit, andererseits heben sie aber den Hauptzweck eines Namensraumes wieder auf: Die Vermeidung von Namenskonflikten.

Auf keinen Fall solltest du using-Direktiven in Headerdateien benutzen, d.h. in Dateien, die selbst mittels einer include-Direktive in eine andere Datei eingebunden werden.

Was versteht man unter Objektorientierter Programmierung?
Das lässt sich mal eben in ein paar Worten erklären.

Schau mal hier rein: http://de.wikipedia.org/wiki/Oop

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

@jonsc1: Wir du gemerkt hast, wird dir hier oft und gerne geholfen, aber du solltest nicht bei jedem Problemchen hier nachfragen. Kauf dir ein Buch, arbeitete diverse Tutorials durch und benutze google.

Die Dinge, die du bisher gefragt hast, stehen in so ziemliche jedem Einsteigerbuch, und sei es auch noch so schlecht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...