C++ Ein paar Fragen zu C++

Entschuldigung für den Kommentar, aber was ich an dem Beispiel schon mal Scheiße finde, ist daß der Autor vollkommen ohne jeden Zwang globale Variablen verwendet. Das Array Spielfeld wäre als lokale Variable in der main-Funktion viel besser aufgehoben. Es muß dann eben per Übergabeparameter an die diversen Funktionen, die mit dem Array hantieren wollen, durchgereicht werden, aber das ist auf jeden Fall einer globalen Variablen vorzuziehen.
 
vlt ist er der meinung das eine globale Variable leichter für den anfang ist?^^

aber darum geht es ja eigentlich nicht :freak:
 
Code:
Funktionsergebnis = Addition(x, y);

int Addition(int x, int y)
{
      return x+y;
}

Eine return-Anweisung in einer Funktion sagt ganz einfach nur: gib folgendes zurück!

Wohin es zurück gegeben wird, wird dann schon beim Funktionsaufruf

Code:
Funktionsergebnis = Addition(x, y);

angegeben, nämlich in der Variable links vom =.
 
Nochmal von vorne anfangen:
Schwer zu sagen. Ich hab mir programmieren autodidaktisch an selbst gewählten Problemen beigebracht, hab nie in ein Buch geschaut.
Manchmal hat es echt lange gedauert, bis ich etwas verstanden habe (Rekursion musste ich 2 Tage lang "einsinken" lassen, bis es klick gemacht hat). Wenn ich mir damals Tutorials oder irgendwelche Programmierhilfen angeschaut hab, war nach einer Stunde die Lust weg, noch weiterzumachen. Da wurde mir zu viel vorgegeben und vorgesetzt.

Ich denke, wenn du das Wie und Warum verstehst, dann kannst du schon mal schneller vorwärtseilen, bei solchen Büchern ist die Gefahr, dass man was "verpasst", sehr gering. Mach das, was du am spannendsten findest. Sobald du deiner Phantasie freien Lauf lässt, wirst du sowieso Sachen nachschlagen müssen.
 
Es ist schon mal gut das du ein programm verstehst wenn dus vor dir siehst

natürlich ist ein programm selber zu schreiben und sich zu überlegen wie man es realisieren will eine andere sache.
womit hattest du denn schwierigkeiten??

was mir immer hillft ist das ich mir aufschreibe was ich erreichen will und was ich dafür brauche
und mir dann überlege wie ich die einzelnen punkte realisieren will.

in deinem beispiel:
(ich kenn leider die aufgabenstellung nicht aber ich gehe mal davon aus das die spielfeldgröße von 5-5 und die menüpunkte vorgegeben waren)

daraus folgt:
-man braucht ein Feld mit der Breit=5 und der Höhe=5
-es muss erkennbar sein ob die felder belegt oder frei sind = ob du das mit 1 und 0 oder mit true und false machst is erstmal egal
-man braucht eine abfrage welchen menüpunkt der "spieler" ausführen will = Switch
-man benötigt ein programm das alle felder löscht = Zählschleife
-...

und so musst du einfach eine aufgabe nach der anderen anschauen und dir eine lösung dafür überlegen

ein struktogramm zu erstellen hilft manchen menschen auch beim finden einer lösung

ich hoffe mal ich konnte dir ein bisschen helfen is schwierig zu erklähren
ich würde dir raten such dir eine aufgabe die dich selber interresiert und zerteile diese aufgabe dann in kleinere aufgabenteile
 
ok danke hat auf jedenfall weiter geholfen
Ergänzung ()

eine frage würde das so reintheoretisch funktionieren also mit return etc
Code:
Ergebnis = Addition (x, y)

int Addition (3, 5)

{
(wie mache ich das der dann 3+5 zusammenrechnet?)

return 8; 
}

cout << Das Ergebnis ist <<  Ergebnis << endl;

also das dann da steht das ergbnis ist 8^^
 
Zuletzt bearbeitet:
Nein.

Du verwechselst die Funktionsdefinition und ihren Aufruf (mit dem, wo du die Parameter reintust).
Code:
int Addition(int a,int b){//a und b sind int's, was für ein Wert die haben, kann verschieden sein
int Ergebnis=a+b;
return Ergebnis;
}
int main(){
...
int blub=Addition(3,5);//Beim Aufruf wird erst festgelegt, welche Werte die Funktion verwenden soll
}

(Denk dran, du darfst nur Sachen verwenden, die du schon deklariert hast (also weiter vorne im Quelltext), sonst findet der Compiler die Funktion nicht.)
 
das mit dem deklarieren ist mit bewust d.h. heißt in meinem fall müsste ich dann
Code:
int Addition
int Ergebnis
am anfang schreiben?
 
Da bringst du was durcheinander.
Der Compiler will von dir die "Signatur" für die Funktion oder gleich die ganze Funktion haben.
Wenn du also die Funktion nur deklarieren willst vor dem ersten Aufruf sieht das ganze so aus
Code:
int Addition(int,int);//Deklaration: "Es gibt eine Funktion namens Addition mit zwei int's als Parameter und die gibt ne int zurück
int main(){
blub=Addition(12,2);//Aufruf, zu dem Zeitpunkt kennt der Compiler nur die Deklaration, was aber vollkommen ausreichend ist
}
int Addition(int a,int b){//Aktuelle Definition
return a+b;
}
Dein Code würde entweder die Funktion überdecken (falls du "am Anfang [der Funktion]" gemeint hast), oder ein Fehler auslösen a la "Bereits definiert, vorheriger Typ int/Funktion" (falls du "am Anfang [der C++-Datei]" gemeint hast).
 
muss man denn das int bei a und b mit schrieben?

int Addition(int a,int b)

in meinem buch steht glaube ich das das das int vor addition schon reicht
und müsstes du "blub" nicht vorher als variable oder constante deklarieren?
 
Schau dir mal die Unterschiede zwischen einer Funktionsdeklaration und dem Aufruf selbiger an, es gibt nämlich beide Varianten.
 
adeliiix schrieb:
muss man denn das int bei a und b mit schrieben?

int Addition(int a,int b)

in meinem buch steht glaube ich das das das int vor addition schon reicht
und müsstes du "blub" nicht vorher als variable oder constante deklarieren?

int Addition(int a,int b); ist eine Funktionsdeklaration (wär da noch ein Funktionsrumpf dabei, wär's sogar eine Funktionsdefinition). In einer Deklaration / Definition muß die volle Signatur angegeben werden, das heißt, von welchem Typ ist der Rückgabewert und welche Parameter erwartet die Funktion, und von welchem Typ müssen sie sein.

int ergebnis = Addition( 3, 5 ); hingegen ist ein Funktions-AUFRUF (mit gleichzeitiger Zuweisung des Rückgabewertes an eine Variable). Da mußt du natürlich nicht mehr angeben, von welchem Typ die Parameter sind ... das ist ja durch die zuvor erfolgte Funktionsdefinition schon hinreichend klar.


P.S. Und ja, die Variable blub muß deklariert werden. Das Codebeispiel von Hanock ist in diesem Punkt nicht korrekt.
 
Zuletzt bearbeitet:
int Addition(int,int) das ist die dekltion?

int Addition(int a,int b) aber das doch nicht da muss doch dann kein int mehr bei stehen
 
Ich glaube, du hast hier ein so fundamentales Verständnisproblem, dass wir nicht in der Lage sind, dir das vernünftig zu vermitteln. Versteh das bitte nicht als Beleidigung. Ich denke nur, dass ein verständlich geschriebenes Buch von einem didaktisch erfahrenem Autor dir viel besser helfen würde. Wir sind hier hauptsächlich Fachidioten und keine Lehrer :(
 
Doch, du musst wieder eine Funktion gleichen Typs schaffen (auch die Parameter), die Namen sind dabei (wie immer) Schall und Rauch und müssen nicht unbedingt schon in der Deklaration drin sein, in der Definition natürlich (wie willst du sonst die Parameter ansprechen).

Warum ist der Typ der Parameter entscheidend? Stichwort Overloading (das ist aber für dich nicht entscheidend).
Was ist wichtig: In C++ muss man immer den Typ mit angeben, auch wenn man vorher schon mal den Typ angegeben hat.
 
also bin ich am sichersten wenn ich einfach immer int etc dazu schriebe?^^
 
Nein. Das ist ein das Schlüsselwort und hat eine das Bedeutung. Du gehst auch nicht sicher, wenn du vor jedem das Substantiv einen das Artikel einfügst, sondern verwendest die deutsche das Sprache falsch.
Ergänzung ()

Hancock schrieb:
Eine gute Programmierhilfe ist der Compiler, was der nicht frisst, ist nicht richtig.

Nein. Der Compiler ist eine schlechte Programmierhilfe, denn das was er frisst, ist noch lange nicht richtig. Und wenn schon, dann heißt das immer noch nicht, dass man auch das gesagt hat, was man meint.
 
Zuletzt bearbeitet:
Zurück
Oben