Dein Fortschritt:
0 / 0 Aufgaben
1
Die Sensorbox im Klassenraum
AFB I–IIDie Informatik-AG baut eine Sensorbox, die im Raum B die Temperatur und den CO2-Gehalt der Luft misst. Luca möchte wissen, wie die Messwerte im Arbeitsspeicher liegen. Er schreibt ein kleines Testprogramm (%zu ist die passende Formatangabe für Werte von sizeof) und startet es zweimal hintereinander.
C · sensorbox.c
#include <stdio.h> int main(void) { char raum = 'B'; int co2 = 812; // CO2-Gehalt in ppm double temp = 21.5; // Temperatur in °C printf("Groessen: %zu %zu %zu\n", sizeof(raum), sizeof(co2), sizeof(temp)); printf("raum: %p\n", &raum); printf("co2: %p\n", &co2); printf("temp: %p\n", &temp); return 0; }
Konsole · zwei Programmstarts
$ ./sensorbox Groessen: 1 4 8 raum: 0x7fff2078549b co2: 0x7fff2078549c temp: 0x7fff207854a0 $ ./sensorbox Groessen: 1 4 8 raum: 0x7fffc795752b co2: 0x7fffc795752c temp: 0x7fffc7957530
Für den Unterricht hat Luca die Lage der drei Variablen mit vereinfachten Adressen skizziert (siehe Abbildung). Später soll die Box einen Schultag lang (7 Stunden) alle 10 Minuten einen Temperatur- und einen CO2-Wert speichern. Auf dem Mikrocontroller der Box stehen dafür 2048 Byte zur Verfügung.
Lucas Skizze: Speicher der Sensorbox (vereinfachte Adressen)
- Lesen Sie aus der Skizze die Adressen
&raum,&co2und&temp, die Anzahl der Bytes jeder Variable und die Adresse des letzten Bytes vontempab. - Berechnen Sie den Speicherbedarf der Messwerte für einen Schultag und für eine Schulwoche (5 Tage), wenn die Größen aus dem Testlauf gelten. Prüfen Sie, ob eine Woche in die 2048 Byte passt, und berechnen Sie den Bedarf erneut für den Fall, dass die Temperatur als
float(4 Byte) gespeichert wird. - Interpretieren Sie die Ausgabe der beiden Programmstarts: Was ändert sich, was bleibt gleich, und was bedeutet das?
Hinweise
Hinweis zu Aufgabe a)
Die Adresse einer Variable ist die Adresse ihres ersten Bytes. Zählen Sie die Kästchen jeder Farbe.
Hinweis zu Aufgabe b)
Wie viele Messzeitpunkte hat eine Stunde, wie viele ein Tag mit 7 Stunden? Jeder Messzeitpunkt braucht einen
double und einen int.Hinweis zu Aufgabe c)
Rechnen Sie in Hexadezimal: Wie weit liegen
co2 und temp jeweils von raum entfernt? Vergleichen Sie diese Abstände mit den Größen aus der ersten Zeile.„Interpretieren“ heißt: die Zahlen auf die Sache beziehen und in Worten sagen, was sie bedeuten.