Felder in C. Felder stellen eine Reihung von Elementen gleichen Typs dar. Man spricht auch von Vektoren oder Arrays.

Ähnliche Dokumente
Inhalt. Peter Sobe 63. Felder in C

2. Programmierung in C

2. Programmierung in C

Interne Darstellung von Gleitkommazahlen

Felder (1) Allgemeines

+ C - Array (Vektoren, Felder)

Programmieren in C/C++ und MATLAB

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

C- Kurs 07 Höhere Datentypen

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

Übungspaket 23 Mehrdimensionale Arrays

Einstieg in die Informatik mit Java

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

9. Vektoren. (auch Felder/array)

Programmiersprachen Einführung in C

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Einstieg in die Informatik mit Java

2. Programmierung in C

Praxis der Programmierung

Übungspaket 23 Mehrdimensionale Arrays

Praxis der Programmierung

Felder fester Länge (1)

Kapitel 7. Zusammengesetzte Datentypen, Vektoren, Zeichenketten

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Übungspaket 14 Eindimensionale Arrays

Algorithmen und Datenstrukturen II

Mussten wir eine ganze Reihe solcher Zahlen speichern, haben wir das eindimensionale Array verwendet.

Reihungen und Prozeduren

Das folgende Programm demonstriert, wie man Speicheradressen von Variablen ermittelt.

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

2. Programmierung in C

Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1

Objekttypen. Referenzen, Objekte, Gleichheit, Wrapper, Arrays, mehr-dimensionale Arrays, Bildbearbeitung, krumme Arrays

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

GI Vektoren

Dynamischer Speicher

Dr. Monika Meiler. Inhalt

Einstieg in die Informatik mit Java

Kapitel 2/3: Darstellung von Information / Kontrollstrukturen. Inhalt. Zusammengesetzte Datentypen Wiederholungen (in Programmen)

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

Einführung in die Programmierung

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays (Felder/Vektoren)

Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden

Pointer und Arrays. INE1, Montag M. Thaler, Office TG208. ZHAW, M. Thaler, K. Rege, G.

Zeiger: Der Adressoperator &

F Zeiger, Felder und Strukturen in C

Dr. Monika Meiler. Inhalt

Propädeutikum. Dipl.-Inf. Frank Güttler

int i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben

Zeiger (engl. Pointer)

Datenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein

Kapitel 6. Programmierkurs. 6.0 Felder (Arrays) Deklaration von Feldern. Felder (Arrays) Mehrdimensionale Arrays. Birgit Engels, Anna Schulze WS 07/08

Objekte werden eindeutig beschrieben durch ihren Typ und einen beliebig wählbaren Bezeichner.

Zeichendarstellung. Zeichen sind Zahlen (in C) Zeichen und switch

2D-Arrays. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert

Abgeleitete Datentypen

Elementare Datentypen in C++

3.8 Objekttypen und Arrays. Wir werden uns in diesem Kapitel näher mit den Objekttypen in Java beschäftigen.

Arrays 115. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier

Felder, Zeiger und Adreßrechnung

5. Abgeleitete Datentypen

5. Abgeleitete Datentypen

1 Statische Felder. Hinweise zur Speicherung von Feldern in C++ und C

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

Algorithmen und Datenstrukturen

Ausgabe:

Algorithmen und Datenstrukturen

Mehrdimensionale Arrays

Einstieg in die Informatik mit Java

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

Projekt Systementwicklung

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

Nachname:... Vorname:... MatrNr.:... Klausur PR2. Erstellen Sie eine Struktur für eine Komplexe Zahl mit den Elementen real und imag vom Typ double.

Auswahlen (Selektionen)

Vektoren 105. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier

Wertebereich und Genauigkeit der Zahlendarstellung

Probeklausur Name: (c)

Schleifen Datenfelder (Arrays) Verzweigungen

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik

Arrays 120. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Arrays, Zeiger und Funktionen (call by reference)

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

2. Programmierung in C

Arrays. Einleitung. Deklarieren einer Array Variablen

C-Propädeutikum Höhere Datentypen

6. Zeiger Allgemeines Definition eines Zeigers

Dr. Monika Meiler. Inhalt

Zeiger und dynamischer Speicher

C++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

Kapitel 8. Adressen und Zeiger

Einführung Pointer. C-Kurs 2013, 2. Vorlesung. Nico Andy

Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II a[0] a[1] a[2] a[3] a[n 1]

Transkript:

Felder in C Felder stellen eine Reihung von Elementen gleichen Typs dar. Man spricht auch von Vektoren oder Arrays. Durch die Reihung (hintereinander speichern) kann ein Element über seine Nummer (Index) angesprochen werden In C hat das erste Element den Index 0. Element 0 Element 1 Element 2 Element n-1 In C werden Felder durch die Verwendung der Indexklammern [ ] gekennzeichnet: Beispiel: int vektor[10]; R.Großmann / P. Sobe 1

Deklaration von Feldern in C Felder als eine spezielle Datenstruktur müssen deklariert werden. Die Deklarationsanweisung legt den Namen des Feldes, die Anzahl der Elemente und den Typ der Elemente fest. Beispiel: float a[10]; a ist der Name des Feldes 10 ist die Anzahl der Elemente (a 0 a 1 a 2... a 9 ) float ist der Typ der Elemente R.Großmann / P. Sobe 2

Deklaration von Feldern in C float a[10]; Man beachte, dass die Anzahl der Elemente (Feldgröße) eine Konstante sein muss. Bei Anwendungenmit von Fall zu Fall unterschiedlichen Feldgrößen muss das Feld trotzdem mit einer konstanten, maximal notwendigen Größe deklariert werden. Innerhalb dieser maximalen Größe kann jeweils mit unterschiedlich vielen Elementen gearbeitet werden. Der Speicherplatz ist für die maximale Größe reserviert, aber es werden aktuell ggf. weniger Elemente belegt. R.Großmann / P. Sobe 3

Initialisierung von Feldelementen Feldelemente können bei der Deklaration der Feld-Variablen mit Werten belegt werden. Beispiele: double a[10]={-3.22,0.0,1,-7.234,55.5,6.6,-0.77,8,0.09,3}; int gewinnzahlen[6] = {1, 13, 17, 22, 34, 42}; In C ist es nicht möglich, die Größe des Feldes, bzw. die Anzahl belegter Elemente direkt anzusprechen (modernere Sprachen erlauben das). R. Großmann / P. Sobe 4

Initialisierung von Feldelementen / Zugriff auf Feldelemente Der Zugriff auf die Elemente eines Feldes erfolgt über den Index (Positionsnummer) des Elementes. Dieser Index wird in der Indexklammer angegeben. Beispiel: es soll auf das 7.Element von a zugegriffen werden: x = a[6]; (da das 1.Element den Index 0 hat, ist 6 der Index des 7.Elementes) Bei Zugriffen auf Feldelemente ist stets zu prüfen, ob der Index in den Deklarationsgrenzen des Feldes liegt. R. Großmann / P. Sobe 5

Beispiel eines Feldprogramms #include <stdio.h> //arithmetisches Mittel einer Messreihe int main() { int i,n; float a[50],s; printf("\neingabe Anzahl:"); scanf("%d",&n); // n<=50 printf("\neingabe der Messreihe:\n"); for (i=0;i<n;i++) //Eingabe der n Feldelemente { printf("a[%2d]:",i); scanf("%f", &a[i] ); } s=0; for (i=0;i<n;i++) //Zählschleifen sind die typischen s=s + a[i]; //Steuerfluss-Konstr. für Felder s=s/n; printf("\n arithmetisches Mittel=%f \n",s); return 0; } R.Großmann / P. Sobe 6

Mehrdimensionale Felder Mehrdimensionale Felder (z.b. Matrizen als 2-dimensionale Felder in der Mathematik) werden analog zum eindimensionalen Fall deklariert. Eine zusätzliche Dimension wird durch eine weitere Indexklammer angegeben. Beispiel: float matrix[3][4]; dies ist eine Matrix mit 3 Zeilen und 4 Spalten. Der Zeilenindex wird immer zuerst variiert. Diese Matrix hat die Struktur: a 00 a 01 a 02 a 03 a 10 a 11 a 12 a 13 a 20 a 21 a 22 a 23 R.Großmann / P. Sobe 7

Initialisierung mehrdimensionaler Felder / Zugriff auf Elemente Mehrdimensionale Felder können auch in der Deklarationsanweisung initialisiert werden. Dabei muss die Verarbeitungsreihenfolge Zeile -> Spalte usw. beachtet werden. Beispiel: float matrix[3][4]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} }; dies ist eine Matrix mit 3 Zeilen und 4 Spalten. Der Zugriff auf Elemente erfolgt analog durch Angabe der Folge der Indexklammern in der Reihenfolge Zeile, Spalte, usw.. Da die Indizierung mit Null beginnt, selektiert die Angabe matrix[2][3] die dritte Zeile, und darin das vierte Element, also 12. R.Großmann / P. Sobe 8

Mehrdimensionale Felder - Beispiel Beispiel Matrix-Transposition: #define N 10 float matrix[n][n]; float t; int zeile, spalte; // Eingabe Matrix // for(zeile=0; zeile<n; zeile++) { for(spalte=zeile+1;spalte<n; spalte++) { // Tausch matrix[zeile][spalte] mit matrix[zeile_neu][spalte_neu] // wobei zeile_neu = spalte und spalte_neu = zeile t = matrix[zeile][spalte]; matrix[zeile][spalte] = matrix[spalte][zeile]; matrix[spalte][zeile] = t; } } R.Großmann / P. Sobe 9