<sub class="descriptionSection">16-10-2024 04:06:pm // #Basics// [[Anweisungen]]</sub> ____ Variablen sind basic [[Anweisungen]] in C++. Sie speichern Daten ab die dann im Programm verwendet werden können. ## Variablentypen [[Data Types in C++|Siehe hier für Auflistung der Variablentypen]] ## Variablenzuweisungen Variablen können anhand folgender Kriterien zugewiesen werden: - Der variablen name **muss** einen zugewiesenen Datentypen haben - Der Variablenname darf nicht mit einer Nummer oder einem Sonderzeichen beginnen Variablen sind unter der Haube eigentlich nur Schilder die auf einen Bestimmten Bereich im Arbeitsspeicher zeigen in dem der Wert der Variable gespeichert wird. ### Deklarieren Variablen können deklariert werden. Das ist eigentlich synonym mit dem "erstellen einer Variable" > [!NOTE] Daten in einer deklarierten Variable > Wenn man eine Variable deklariert aber sie nicht [[#Initialisieren|Initialisiert]], dann ist der Wert der Variable der Wert des Bereiches im Arbeitsspeichers in dem die Variable deklariert wurde (also quasi random) Beispiel fürs deklarieren: ```cpp int ganzzahl; // Erstellt die Variable "zahl" als Integer float zahl1, zahl2, zahl3; //Erstellt die drei Variablen ``` Keine der Deklarierten Variablen im Beispiel haben einen bestimmbaren Wert in diesem Beispiel. ### Initialisieren Das Initialisieren einer Variable bedeutet das einer **leeren** Variable ein Wert zugewiesen wird. Dieser Wert muss dem Datentyp der Variable folgen. ```cpp int ganzzahl = 24310; //Erstellt die Variable ganzzahl und weißt ihr eine zahl zu float zahl1; //Deklariert eine Variable zahl1 = 0.324; //Initalisiert die Variable ``` > [!warning] Achtung > Eine Variable muss im aktuellen [[#Variablen Scopes|Scope]] deklariert sein damit ihr ein Wert zugewiesen werden kann. ## Variablen Scopes (Gültigkeitsbereich) Eine Variable in C++ (und eigentlich jeder anderen Sprache, außer vielleicht Javascript und Python) hat nur im aktuellen Block eine Gültigkeit. Mit Gültigkeit ist gemeint, dass man die Variable aufrufen und Verändern kann. Variablen in C++ verlieren ihre Gültigkeit außerhalb ihres aktuellen "Blocks": > [!NOTE] Was ist ein "Block" > Ein "Block" im Programmieren ist der aktuelle Programmabschnitt. Er kann der Körper einer Schleife, eine Funktion, ein IF Statement, etc. sein ```cpp //using namespace std if(true){ // <- Der Block fängt hier an int i = 0; cout << i << endl; //Gibt 0 aus, da wir im selben block sind } // <- Der Block hört hier auf cout << i << endl; // Variable i ist in diesem Block nicht definiert, somit wird dieses Programm nicht kompilen ``` Variablen können sich überschreiben: > [!warning] Codestandards und clean-code > Das Variablen überschreiben und doppelt deklarieren ist in vielen Sprachen aus guten Gründen nicht erlaubt. Es ist nicht sehr einfach zu durchschauen für jeden, der den Code nicht geschrieben hat oder ihn gut kennt. Wenn man viele mit sowas arbeiten würde, würde jeder Wahnsinnig werden also sollte das am besten vermieden werden ;) ```cpp int i = 0; //<- In diesem Fall ist der Block unsere Main funktion cout << i << endl; //<- I ist 0 und wird ausgegeben if(true){ //<- Neuer Block fängt an, in diesem hätte i auch noch eine Gültigkeit, da der Block auf alle Variablen des "Parents" zugriff hat int i = 100; //i wird nochmal deklariert und auf 100 gesetzt cout << i << endl; //I ist 100 und wird ausgegeben } cout << i << endl; //Da i nur innerhalb des if blocks auf 100 gesetzt wurde ist hier i immer noch 1 ``` ## Konstante Konstanten sind spezielle arten von "Variablen" die einmal initialisiert werden und dann **nicht mehr** geändert werden können. In C++ gibt es drei arten von Konstanten: - Präprozessor-Konstanten - Konstante Variablen (ironic I know) - Konstante Parameter ### Präprozessor-Konstanten Wenn man Werte im Programm häufig benötigt, kann man diese per Präprozessor-Anweisung als Konstante definieren. Das macht man in der Regel am Anfang des Programms **nach den include Anweisungen**. ```cpp #define PI 3.1415927 ``` At Build-Time wird dann jede reference an diese Konstante durch den festegelegten Wert ersetzt ### Konstante Variablen Eine Variable kann man konstant machen, indem man bei der initialisierung das Schlüsselwort `const`davor schreibt: ```cpp const int test = 3124 //Hiernach kann test nicht mehr geändert werden test = 54321 //Dies würde einen Fehler werfen beim compilen const int test2 = test //Konstanten können auch dynamisch werte zugewiesen werden ``` > [!warning] RAM Considerations > Im gegensatz zu Präprozessor Konstanten verbrauchen Konstante Variablen RAM ### Konstante Parameter Konstante Variablen kann man auch als Parameter einsetzen ```cpp void steuer(double netto, const double steuersatz){ //steuersatz = 7 würde nicht gehen, da const cout << netto*steuersatz/100 << endl; } ```