Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Brotkeks

Frischling

  • »Brotkeks« ist der Autor dieses Themas

Beiträge: 26

Beruf: Azubi/Student

  • Private Nachricht senden

1

21.08.2015, 13:05

Listing 4.7

Hallo ihr Lieben :)

Stehe nun vor einem weiteren Problem, dessen Lösung ich gerade einfach nicht mehr fähig bin aufzunehmen ...
Es geht um das Listing 4.7 im Buch (Seite 106).


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// C++ für Spieleprogrammierer
// Listing 4.7
// Bereichsabfrage


#include <iostream>

using namespace std;

bool testeBereich (int Position, int Min, int Max);             //Prototyp

int main ()
{

    // Variablen
    int Minimum = 0;
    int Maximum = 800;
    int xPosition;

    cout << "Spielerposition auf der x-Achse: ";
    cin >> xPosition;

    if (testeBereich (xPosition, Minimum, Maximum) == true)
        cout << "Spieler ist noch auf dem Bildschirm" << endl;
    else 
        cout << "Spieler ist ausserhalb des Bildschirms" << endl;

    return 0;
}

bool testeBereich (int Position, int Min, int Max)
{
    if ((Position >= Min) && (Position < Max))
        return true;
    else
        return false;
}




Ich verstehe was dort im Grunde passiert, was mir nur nicht klar ist, warum einmal Minimum und Maximum benutzt werden und einmal Min und Max. Also im Grunde ist es mir schon klar, Maximum und Minimum sind eigene Variablen, Max und Min sind Parameter (oder?).
Was ich nicht verstehe ist, wieso genau bei der Bedingung
if (testeBereich (xPosition, Minumum, Maximum) == true)
die Variablen genommen werden bzw. was genau sie an dieser Stelle bewirken. Also übersetzt hieße das ja:
Wenn die Fubnktion testeBereich == true ist im Bezug auf die Position, Minimum und Maximum, gebe folgendes auf. Inwiefern werden dort aber die Werte von xPosition, Minimum und Maximum einbezogen? Bzw. rein vom logischen her: Woran erkennt mein Programm denn, dass die Funktion im Bezug auf diese Variablen true ist?

Ähnliches, wenn die Funktion bestimmt wird:
bool testeBereich (int Position, int Min, int Max)
{
if (((Position >= Min) && (Position <Max))
return true;
else
return false;
}

Versteh ich vom reinen Übersetzen auch: Wenn die Position größer oder gleich dem Minimum ist UND kleiner als das Maximum, sende "true"....

Woher weiß er aber, ob die Position kleiner oder größer als Min und Max sind? Wo nimmt er denn die Werte her? Ich habe ja nur xPosition, Minimum und Maximum werte zugewiesen, nicht aber Min und Max und Position....

Wie ihr seht sind meine Gedanken wieder total wirsch... ich hoffe ihr könnt mir trotzdem folgen und ich bedanke mich wie immer herzlichst im Voraus für eure Hilfe :)
Brotkeks

Brotkeks

Frischling

  • »Brotkeks« ist der Autor dieses Themas

Beiträge: 26

Beruf: Azubi/Student

  • Private Nachricht senden

2

21.08.2015, 13:23

Ohh hab es verstanden! Für alle die vielleicht das selbe Problem in Zukunft haben:

Der Compiler geht nach Reihenfolge! Nicht nach Namen.
xPosition wird in dem Falle zu Position, da beide an erster Stelle stehen. Man hätte Position auch genauso gut Kartoffelbrei nennen können, solange es an erster Stelle steht wird dafür xPosition übernommen.
Position ist nämlich NUR innerhalb der Funktion gültig, nicht außerhalb. Wird im Buch auch erwähnt, hatte es nur nicht mehr im Kopf.

Thema kann also geschlossen werden :P

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

21.08.2015, 13:31

Manchmal hilft es auch einfach weiter wenn man das Buch mal eine halbe Stunde aus der Hand legt., vielleicht ein wenig an die frische Luft geht und danach noch mal drüber guckt. Zu viel auf ein mal kann sich der Kopf vor allem nicht merken, also versuch nicht zu schnell zu viel neues lernen zu wollen. Dann versuch lieber selbst ein paar mal das gelernte anzuwenden.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Brotkeks

Frischling

  • »Brotkeks« ist der Autor dieses Themas

Beiträge: 26

Beruf: Azubi/Student

  • Private Nachricht senden

4

21.08.2015, 13:52

Ich glaube, das ist einer der wichtigsten und besten Ratschläge :D
Eigentlich weiß man es ja. Aber dann macht man doch weiter, denkt man verstehts.... Buch liegt jetzt aber neben mir und wird frühestens Morgen wieder angeschaut und wiederholt :)

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

21.08.2015, 14:24

Wie gesagt das heißt ja nicht dass du dich in der Zwischenzeit nicht damit beschäftigen sollst. Versuch das ganze mal anzuwenden. Mach die Übungsaufgaben aus dem Buch mal selbst. Versuch Programme die im Buch programmiert werden mal selbst nach zu basteln. Versuch dich zu erinnern was die gemacht haben und bau sie selbst nach ohne dabei zu gucken wie es der Autor gelöst hat. Wenn du eigene Ideen hast, setz das um. Es ist ja nicht wichtig dass das was du da am Anfang entwickelst sinnvoll ist. Es geht ja erst mal nur darum das gelernte irgendwie anzuwenden.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Brotkeks

Frischling

  • »Brotkeks« ist der Autor dieses Themas

Beiträge: 26

Beruf: Azubi/Student

  • Private Nachricht senden

6

21.08.2015, 14:40

Genauso gehe ich auch immer vor :) Brauch jetzt aber erst mal ne Pause um das Gelernte sacken zu lassen. Morgen wird das Ganze Kapitel nochmal wiederholt inklusive Versuch selbst was zu machen. So gehe ich immer vor :)

Werbeanzeige