Benutzer-Werkzeuge

Webseiten-Werkzeuge


einleitung:arrays

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
einleitung:arrays [2018/04/29 20:42]
d.golovko
einleitung:arrays [2018/05/09 19:19] (aktuell)
d.golovko
Zeile 13: Zeile 13:
 In dieser Tabelle gibt es sechs Eintrage. An der 0. Stelle steht eine 3, an der 1. Stelle steht eine 1, usw. Wichtig ist, dass die Nummerierung bei 0 beginnt. Es kann auch zweidimensionale Arrays geben (z.B. um eine Tabelle aus x- und y-Koordinaten abzulegen), dreidimenstionale usw. Im Folgenden beschränken wir uns auf eindimensionale Arrays. ​ In dieser Tabelle gibt es sechs Eintrage. An der 0. Stelle steht eine 3, an der 1. Stelle steht eine 1, usw. Wichtig ist, dass die Nummerierung bei 0 beginnt. Es kann auch zweidimensionale Arrays geben (z.B. um eine Tabelle aus x- und y-Koordinaten abzulegen), dreidimenstionale usw. Im Folgenden beschränken wir uns auf eindimensionale Arrays. ​
  
-===Deklaration und Zugriff beim Arduino===+====1. Deklaration und Zugriff beim Arduino====
 Um so ein Array bei dem Arduino anzulegen, muss folgender Code geschrieben werden: Um so ein Array bei dem Arduino anzulegen, muss folgender Code geschrieben werden:
 <code c++> <code c++>
 int zahlen[] = {3,​1,​7,​8,​2,​1};​ int zahlen[] = {3,​1,​7,​8,​2,​1};​
 </​code>​ </​code>​
-Die Klammern [] stehen dafür, dass die Variable ''​zahlen''​ auf ein Array zeigt. Dass ist ein Speicher im Speicher. Das Schlüsselwort ''​int''​ steht dafür, dass das folgende Array nur Integer-Werte beinhaltet. Ein Array kann also nur einen Datentyp enthalten. +Die Klammern [] stehen dafür, dass die Variable ''​zahlen''​ auf ein Array zeigt und nicht auf eine einzelne Variable. Das Schlüsselwort ''​int''​ steht dafür, dass das folgende Array nur Integer-Werte beinhaltet. Ein Array kann also nur einen Datentyp enthalten. 
-Um ein Array mit Werten zu füllen, kann die Variante oben verwendet werden. Mit ''​{3,​1,​7,​8,​2,​1}''​ werden die Zahlen der Reihe nach in des Array geschrieben und somit ein Array der Länge 6 erstellt. Achtung: Arrays sind statisch, das bedeutet, dass die Länge, nachdem es angelegt wurde, nicht mehr geändert werden kann. +Um ein Array mit Werten zu füllen, kann die Variante oben verwendet werden. Mit ''​{3,​1,​7,​8,​2,​1}''​ werden die Zahlen der Reihe nach in das Array geschrieben und somit ein Array der Länge 6 erstellt. Achtung: Arrays sind statisch, das bedeutet, dass die Länge, nachdem es angelegt wurde, nicht mehr geändert werden kann. 
  
 Man muss jedoch nicht beim deklarieren gleich Werte angeben. Man muss jedoch nicht beim deklarieren gleich Werte angeben.
Zeile 34: Zeile 34:
 zahlen[0] = 3 zahlen[0] = 3
 </​code>​ </​code>​
-So kann an jede Stelle das Array geschrieben werden und auch überschrieben werden. +So kann in jede Stelle das Arrays ​geschrieben werden und auch jeder Wert überschrieben werden. 
-Wenn ein Wert ausgelsen werden soll und gespeichert,​ dann kann man das wie folgt machen:+Wenn ein Wert ausgelesen ​und gespeichert ​werden soll, dann kann man dies wie folgt machen:
 <code c++> <code c++>
 int x = zahlen[1] int x = zahlen[1]
Zeile 79: Zeile 79:
 } }
 </​code>​ </​code>​
 +
 +====2. Schachbrett:​ Ein Beispiel mit einem zweidimensionalen Array====
 +
 +Stellen wir uns vor, wir wollen jetzt einen Schachroboter bauen. Dafür wollen wir u.A. das Schachbrett mit seinen Farbwerten (weiß oder schwarz) für jedes Feld initialisieren und abspreichern. Dafür brauchen wir ein zweidimensionales Array in der Größe 8x8. Dieses Array wird vom Typ ''​boolean''​ sein (weiß = ''​true'',​ schwarz = ''​false''​). Wir legen dieses Array so an:
 +<code cpp>
 +boolean brett[8][8];​
 +</​code>​
 +
 +
 +Jetzt können wir dieses Array mit Werten auffühlen und diese ausgeben. Auf die einzelnen Stellen können wir mit Hilfe einer geschachtelten for-Schleife zugreifen. ​
 +
 +<code cpp>
 +void setup() {
 +  Serial.begin(9600);​
 +
 +  boolean brett[8][8];​ // das Schachbrett
 +
 +  boolean istWeiss = true; // zeigt, ob die schwarze oder weisse Farbe dran ist
 +  // Das Array mit Werten füllen:
 +  for (int i = 0; i < 8; i++) {
 +    for (int j = 0; j < 8; j++) {
 +      brett[i][j]= istWeiss;
 +      istWeiss = !istWeiss; // den Farbwert umkehren
 +    }
 +    istWeiss = !istWeiss; // am Ende der Zeile den Farbwert nochmal umkehren
 +  }
 +
 +  // Das Array ausgeben:
 +  for (int i = 0; i < 8; i++) {
 +    for (int j = 0; j < 8; j++) {
 +      Serial.print(brett[i][j]);​
 +    }
 +    Serial.println();​ // Zeilenumbruch am Ende einer Zeile
 +  }
 +}
 +
 +void loop() {
 +
 +}
 +</​code>​
 +
 +
einleitung/arrays.1525027338.txt.gz · Zuletzt geändert: 2018/04/29 20:42 von d.golovko