¨Ubungspaket 14 Eindimensionale Arrays

Werbung
Übungspaket 14
Eindimensionale Arrays
Übungsziele:
Deklaration und Verwendung eindimensionaler Arrays
Skript:
Kapitel: 33
Semester:
Wintersemester 2017/18
Betreuer:
Kevin, Theo, Thomas und Ralf
Synopsis:
Nach dem wir nun die wesentlichen Datentypen kennengelernt haben,
kommt etwas neues dazu; die eindimensionalen Arrays. Mit Arrays
kann man mehrere Variablen gleichen Typs zusammenfassen, so wie
wir es aus der Mathematik in Form von Vektoren, (indizierten) Koeffizienten und dergleichen kennen.
Teil I: Stoffwiederholung
Aufgabe 1: Aufbau eines eindimensionalen Arrays
Aus welchen Komponennten besteht eine Array-Definition (ohne Initialisierung)?
1.
2.
3.
4.
Aufgabe 2: Array-Größe und gültige Indizes
Nehmen wir an, wir hätten ein Array der Größe n (eines mit n Elementen), wobei n stellvertretend für eine ganzzahlige Konstante wie beispielsweise 14 ist.
Frage: Was sind die gültigen Indizes?
Aufgabe 3: Speicherbelegung
Wie viele Bytes belegt ein Array mit n Elementen mindestens im Arbeitsspeicher (RAM),
wenn der Elementtyp genau b Bytes belegt?
Skizziere ein Array a mit 6 Elementen vom Typ int unter der Annahme, dass ein int
genau 4 Bytes belegt und die Startadresse des Arrays 0x1000 ist.
Definition:
Adresse
0x1018
0x1014
0x1010
0x100C
0x1008
0x1004
0x1000
Variable
Typ
Größe
.............
......
.........
.............
......
.........
.............
......
.........
.............
......
.........
.............
......
.........
.............
......
.........
.............
......
.........
Einführung in die Praktische Informatik, Wintersemester 2017/18
14-1
Teil II: Quiz
Aufgabe 1: Standard“ Arrays
”
Gegeben seien die folgenden vier Definitionen:
1.
2.
3.
4.
int
char
double
int
a[
b[
c[
d[
3
4
2
1
];
];
];
];
Welche Indizes sind bei den jeweiligen Arrays erlaubt und welche Werte haben die ArrayElemente unmittelbar nach der Definition?
Array
a
b
c
d
Indizes
Werte
...................
..........................
...................
..........................
...................
..........................
...................
..........................
Aufgabe 2: Implizit definierte Arrays
Die Größe eines Arrays kann man auch implizit“ durch eine zusätzliche Initialisierung
”
definieren. Gegeben seien die folgenden vier Definitionen:
1.
2.
3.
4.
int
int
double
double
e[]
f[]
g[]
h[]
=
=
=
=
{
{
{
{
3, 4, 5 };
-1, -3 };
, , 23.0, };
-3,0 , , 2.0 };
Welche Größen haben die Arrays, welche Indizes sind jeweils erlaubt und welche Werte
haben die einzelnen Elemente unmittelbar nach der Definition?
Array
e
f
g
h
Größe
Indizes
Werte
.........
...................
..........................................
.........
...................
..........................................
.........
...................
..........................................
.........
...................
..........................................
n.i. =
ˆ nicht initialisiert
14-2
Wintersemester 2017/18, Einführung in die Praktische Informatik
Teil III: Fehlersuche
Aufgabe 1: Arbeiten mit mehreren Zahlen
Das folgende Programm soll zehn Zahlen einlesen und in einem Array ablegen, anschließend
die Summe ausrechnen und diese am Ende ausgeben. Leider hat Dr. One-Neuron wieder
diverse Fehler gemacht, die ihr finden und korrigieren sollt.
1 # include < stdioh >
2
3 # define N =10
4
5 int man ( int argc , char ** argv )
6
{
7
int i , sum , a [ N ];
8
for ( i = 0 , i < N , i = i + 1 )
9
{
10
printf ( Bitte Wert fuer a [ % d ] eingeben : , i ) ;
11
scanf ( " % d " , & ( a [ ] ) ) ;
12
}
13
for ( i = 1; sum = 0; i <= N ; i = i + 1 )
14
sum = sum + a { i };
15
printf ( " Die Summe der Zahlen betraegt % d \ n " , N , sum ) ;
16
}
Einführung in die Praktische Informatik, Wintersemester 2017/18
14-3
Teil IV: Anwendungen
Aufgabe 1: Deklaration einfacher Arrays
Die folgende Übungsaufgabe ist nicht wirklich sinnvoll, sondern dient hauptsächlich dem
Einüben des Hantierens mit eindimensionalen Arrays.
1. Aufgabenstellung
Ziel der Aufgabe ist es, ein Programm zu erstellen, das folgende Arrays enthählt:
1. ein Array mit 10 Elementen vom Typ int,
2. ein Array mit
3 Elementen vom Typ char und
3. ein Array mit 100 Elementen vom Typ double.
Des Weiteren sollen die Elemente dieser drei Arrays initialisiert werden. Dies geschieht vorzugsweise in einer Schleife. Diese Schleife soll so aufgebaut sein, dass eine
Größenänderung des Arrays keine weiteren Änderungen in den Initialisierungsschleifen nach sich ziehen sollte; mit anderen Worten: Eine Größenänderung sollte durch
eine einzige Modifikation vollständig realisiert sein.
2. Kodierung
14-4
Wintersemester 2017/18, Einführung in die Praktische Informatik
Aufgabe 2: Implizite Größendefinitionen
Wir haben gelernt, dass man in der Programmiersprache C die Größe eines Arrays auch
indirekt und zwar durch die initialisierte Definition festlegen kann. Gegenstand dieser Aufgabe ist das aktive Einüben dieses Konzeptes.
1. Aufgabenstellung
Entwickle ein kleines C-Programm, in dem die Größen von mindestens vier Arrays
implizit durch ihre Initialisierung definiert werden. Zwei Beispieldefinitionen sind
bereits weiter unten angegeben.
Zur weiteren Verwendung der Größen, beispielsweise in Initialisierungsschleifen, ist
die Größe jedes Arrays durch ein geeignetes #define-Makro zu berechnen“.
”
Zur Bestätigung, dass alles korrekt abgelaufen ist, sind die einzelnen Elemente mittels
geeigneter Schleifen auszugeben. In diesen Schleifen sind natürlich oben erwähnte
#define-Makros zu verwenden.
2. Pflichtenheft: Aufgabe, Eingabe, Ausgabe, Sonderfälle
3. Testdaten
Array
Typ
Initialwerte
a
int
1, 2, 3, 4
x
double
1.0, 2.0
..........
.............
........................
..........
.............
........................
C-Definitionen
.............................................................................
.............................................................................
.............................................................................
.............................................................................
.............................................................................
.............................................................................
.............................................................................
.............................................................................
Einführung in die Praktische Informatik, Wintersemester 2017/18
14-5
4. Kodierung
14-6
Wintersemester 2017/18, Einführung in die Praktische Informatik
Herunterladen