Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Schaltuhr Programmierung Kategorie: Programmierung (von Thomas - 3.12.2004 14:32)
Als Antwort auf Re: Schaltuhr Programmierung von guido - 3.12.2004 11:53
Ich nutze:
C-Control II Unit, CC2-Application-Board, eigenes Board, OSOPT V3.0
Hallo Guido,

> aber das mit dem mehrdimensionalen Array habe ich noch nicht Verstanden????
> Kann mir das bitte jemand noch etwas ausschweifender erklären ?

in der Eile ist in dem Beispiel die Definiton bwz. Benutzung der Variablen verkehrt herum. Vermutlich ist
es deswegen für Dich nicht so einfach nachvollziehbar.

Korrekt wäre:

type myTime {
  int zeit[8];
}

myTime schaltuhr[6];


Als Erläuterung:

Mit type myType definierst Du einen eigenen Datentypen. Analog zu
int a;
kannst Du diesen via
myType a;
benutzen.

Mit

type myType {
  int zeit[8];
};


wird ein Datentyp definiert der ein Array enthält / darstellt. Mit

myType schaltuhr;

gibt es dann eine Variable schaltuhr vom Typen myType.
Gültige Zugriffe auf diese Variable wären:

schaltuhr.zeit[0] = ...
schaltuhr.zeit[1] = ...
schaltuhr.zei[2] = ...
...
schaltuhr.zeit[7] = ...


Wenn nun schaltuhr selbst als Array definiert wird:
myType schaltuhr[6];
Gibt es ein Array (schaltuhr[0] - schaltuhr[5] und zu jedem
Element des Arrays eine Varaible des Typen myType. Gültige Zugriffe sind dann:

schaltuhr[0].zeit[0] = ...
schaltuhr[0].zeit[1] = ...
schaltuhr[0].zeit[2] = ...
schaltuhr[0].zeit[3] = ...
schaltuhr[0].zeit[4] = ...
schaltuhr[0].zeit[5] = ...
schaltuhr[1].zeit[0] = ...
schaltuhr[1].zeit[1] = ...
schaltuhr[1].zeit[2] = ...
schaltuhr[1].zeit[3] = ...
schaltuhr[1].zeit[4] = ...
schaltuhr[1].zeit[5] = ...
....
schaltuhr[7].zeit[0] = ...
schaltuhr[7].zeit[1] = ...
schaltuhr[7].zeit[2] = ...
schaltuhr[7].zeit[3] = ...
schaltuhr[7].zeit[4] = ...
schaltuhr[7].zeit[5] = ...

Es gibt also 8 Arrayelemente schaltuhr mit jeweils 6 Arrayelementen zeit - in der Summe also
48 Integervariablen.

Das Array kann nun sehr schön mit zwei Schleifen bearbeitet werden:

int i, j;
for i = 0 ...7 {      // äussere Schleife - schaltuhren
  for j = 0 ...5 {   // innere Schleife - zeit je schaltuhr
     schaltuhr[i].zeit[j] = ....
  }
}


Letztendlich ist es aber auch nichts anders als
int schaltuhr[47];
for i = 0 ...7 {      // äussere Schleife - schaltuhren
  for j = 0 ...5 {   // innere Schleife - zeit je schaltuhr
     schaltuhr[i*8 + j] = ....
  }
}


Im zweidimensionalen Array ist die Wartung und Lesbarkeit natürlich viel besser. Durch die
Implementierung wird auf Anhieb Sinn und Funktion deutlich.


Beste Grü�e
Thomas


    Antwort schreiben


Antworten:

Re: Schaltuhr Programmierung (von guido - 5.12.2004 14:01)
    Re: Schaltuhr Programmierung (von André H. - 19.12.2004 0:14)
    Re: Schaltuhr Programmierung (von Thomas - 5.12.2004 22:29)