Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

einleitung:variablen

Dies ist eine alte Version des Dokuments!




Variablen

Was und Wozu?

Eine Variable ist ein Ort, an dem ein Programm Daten speichern kann.

Diese Daten können an einer Stelle des Programms in die Variable geschrieben werden, dort eine Weile herumliegen und dann an einer anderen Stelle wieder verwendet werden.

Variablen sind damit so etwas die das Gedächtnis eines Programms.

Eine typische Verwendung sieht z.B. so aus:

int messwert; // Erzeuge eine Variable mit dem Namen "messwert" und dem Typen "int"
messwert=analogRead(A0); // messe eine Spannung und speichere das Ergebnis in der Variable "messwert"
Serial.println(messwert); // gib den aktuellen Inhalt von "messwert" als Text aus.
 
==== Eigenschaften von Variablen und Deklaration ====
Die Details unterscheiden sich von Programmiersprache zu Programmiersprache. In Arduino/C++ muss eine Variable dem Programm zunächst "vorgestellt" werden, damit das Programm sie kennt und damit arbeiten kann.
 
Das kann z.B. so aussehen:
''int ledPinNummer=13;''
 
Bei dieser sogenannten //**Deklaration**// werden auch gleich die wichtigsten Eigenschaften der Variable festgelegt:
=== Typ ===
Der Typ einer Variable gibt vor, was darin gespeichert werden kann. In unserem Beispiel ist das eine Zahl ohne Nachkommastellen ''int''. 
 
Weil am Computer so viel mit Zahlen gearbeitet wird, gibt es unterschiedliche Typen für Zahlen, je nach dem, ob sie Kommastellen enthalten oder wie groß sie sein darf:
 
^ Name         ^ kleinster Wert (Arduino)  ^ größster Wert (Arduino)  ^ Größe in Bit (Arduino)  ^ Anmerkungen ^
| boolean      | false, true      |                 | 8              |
|unsigned char | 0                | 255             | 8              |
|(signed) int  | -32.768          | 32.767          | 16             | auf modernen Rechnern oft identisch mit long
|unsigned int  | 0                | 65535           | 16             | auf modernen Rechnern oft identisch mit unsigned long
|(signed) long | -2.147.483.648   | 2.147.483.647   | 32             |
|unsigned long | 0                | 4.294.967.295   | 32             |
| float        | 3,4E-38          | 3,4E+38         | 32             | mit Komma, langsamer als int
| double       | 1,7E-308         | 1,7E+308        | 64             | mit Komma, langsamer als float - auf Arduino identisch mit float
 
Daneben gibt es auch spezielle Typen für Text (String, char*), oder ein komplexere 'Objekte' (eine Serielle Schnittstelle oder Motortreiber z.B.). 
=== Namen ===
Unter diesem Namen kann die Variable im Programm verwendet werden. Denkt euch immer einen Namen aus, der sagt, was drinsteckt - so verliert ihr später nicht den Überblick und euer Team versteht, was ihr gemacht habt.
 
Also z.B. ''ledPinNummer'' anstelle von ''lp''.
=== Gültigkeitsbereich (Scope) ===
Eine Variable kann nur in einem Teil des Programms existieren oder vom gesamten Programm aus zugänglich sein.
 
Dadurch ist es möglich, //lokale// Variablen zu erzeugen, die (wie ein Schmierzettel) nur innerhalb einer Funktion gültig sind - sie nehmen keinen Speicherplatz weg, wenn die Funktion nicht läuft und können auch nicht von Außerhalb verändert werden.
 
Alle Variablen, die innerhalb eines mit geschweiften Klammern umschlossenen Bereichs ("Codeblock") deklariert werden, sind auch nur in diesem Bereich gültig (//lokal//). Das ist der Normalfall.
 
Variablen, die außerhalb aller geschweiften Klammern deklariert wurden, sind "//global//" gültig - also auch aus dem inneren von Funktionen heraus zu erreichen. Das kann sehr bequem sein, um eine überall benötigte Einstellung oder Ressource abzuspeichern, ist aber auch gefährlich, weil u.U. zwei weit voneinander entfernt liegende Teile des Programms in eine unübersichtliche Beziehung zueinander treten, wenn sie beide auf die gleiche globale Variable zugreifen.
 
 
//**Vermeidet globale Variablen, wenn sie nicht unbedingt nötig sind (das sind sie fast nie...).**//
 
=== Inhalt ===
Ihr könnt die Variable bei der Deklaration auch gleich mit einem Wert füllen. Diesen Vorgang nennt man //**Initialisierung**//.
 
In unserem Beispiel initialisieren wir die Variable ''ledPinNummer'' mit dem Wert ''13''.
 
Ihr könnt die Initialisierung auch weglassen - dann steht in der Variable irgendein unvorhersehbarer Wert, der an dieser Speicherstelle vorher schon herumlag - (also **//nicht//** unbedingt Null!).
 
==== Werte in Variablen schreiben ("Zuweisung") ====
Ihr könnt in eurem Programm jederzeit einen neuen Wert in eine Variable schreiben.
 
Das funktioniert, indem in in einer Zeile zuerst en Namen der Variable, dann ein einfaches Gleichheitszeichen und dann den neuen Inhalt schreibt. Das Programm rechnet dann zuerst alles aus, was auf der rechten Seite des Gleichheitszeichen steht, und schreibt das Ergebnis in die Variable auf der linken Seite.
 
Dieser Vorgang heißt "**//Zuweisung//**" oder "**//einer Variable einen Wert zuweisen//**"
 
Beispiel: ''delayZeit=1000/blinkFrequenz;''
 
 
<note important>Das Gleichheitszeichen aus der Mathematik entspricht nicht dem Gleichheitszeichen in der Programmierung! In der Mathematik bedeutet "=" dass die Ausdrücke auf beiden Seiten das gleiche Ergebnis liefern. In der Programmierung, dass das Ergebnis des Ausdrucks auf der rechten Seite in der Variablen auf der linken Seite gespeichert wird. Hier ein Beispiel das im mathematischen Sinne falsch wäre:
<code c++>
int i;
i = 1; 
i = i + 1;		// Wir erhöhen die Variable i um 1.

</note>

einleitung/variablen.1445504428.txt.gz · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)