INE1 Arrays, Zeiger, Datenstrukturen
|
|
- Volker Brahms
- vor 5 Jahren
- Abrufe
Transkript
1 INE1 Arrays, Zeiger, Datenstrukturen Arrays Felder von Elementen gleichen Typs Verwenden von Adressen: Zeiger Datenstrukturen mit struct Zeiger auf Datenstrukturen Spezielle Zeiger und komplexe Deklarationen
2 Datentypen Übersicht 2 von 50
3 Arrays Felder von Elementen gleichen Typs 3 von 50
4 Beispiel Aufgabe: Es soll eine Zahlenreihe eingelesen werden Für solche Zwecke gibt es eine spezielle Datenstruktur: Das Array Ein Array (auch Datenfeld genannt) ist eine homogene Datenstruktur, die aus mehreren Elementen des gleichen Datentyps besteht Die Elemente werden durch den Variablennamen und einen Index bestimmt (der Index ist eine ganze Zahl) 4 von 50
5 Definition int a [10]; a ist ein Array mit 10 Elementen vom Typ int Es wird Platz für 10 int-elemente reserviert Aber: Die Elemente erhalten keine Default-Werte! 5 von 50
6 Beispiele double zahlen[300]; /* 300 double-objekte zahlen[0].. zahlen[299] */ char text[20]; /* 20 Zeichen text[0].. text[19] */ Was fällt auf? 6 von 50
7 Hinweise Array-Grenzen beginnen immer bei 0 int werte[5]; Das letzte Element dieses Arrays ist werte[4] werte[3] = 5; werte[2] = werte[4] + werte[0]; index = 1; werte[index] = 233; 7 von 50
8 Hinweise Es findet keine Bereichsüberprüfung statt (weder zur Übersetzungs- noch zur Laufzeit) Mit anderen Worten: Es wird nicht geprüft, ob der Zugriff auf ein Arrayelement wirklich innerhalb des Arrays liegt! int a[5]; a[3] = 4; a[8] = 222; /* Keine Fehlermeldung zur Laufzeit!!! */ a[-3] = 36; /* Keine Fehlermeldung zur Laufzeit!!! */ /* Aber Folgefehler wahrscheinlich */ 8 von 50
9 Initialisierung Arrays können bei der Definition auch gleich initialisiert werden int a[5] = {4,7,12,77,2}; /* Alle 5 Elemente werden initialisiert */ int b[] = {4,7,12,77,2}; /* Länge wird implizit auf 5 gesetzt */ int c[5] = {4,3,88,5}; /* OK, letztes Element erhält Wert 0 */ int d[9] = {0}; /* Alle Elemente 0 */ int d[5] = {4,3,88,5,3,6}; /* Kompilierfehler */ 9 von 50
10 Zuweisung? Das Füllen des Arrays mit {...} funktioniert nur bei der Deklaration der Variablen Folgendes gibt einen Kompilierfehler: int a[5]; a = {1, 3, 66, 34, 7}; /* Fehler */ Die Grösse eines Arrays kann nach der Deklaration nicht mehr verändert werden 10 von 50
11 Grösse von Arrays Normalerweise: Konstante Grösse erforderlich Bei älteren Compiler Versionen muss die Konstanten mit #define festgelegt werden. const int KONSTANTE= 5; #define ALT_KONSTANTE 4 Achtung Achtung kein kein ";" ";" int a[3]; /* kein Problem */ int b[alt_konstante ]; /* kein Problem: nur Textersetzung */ int c[konstante]; /* geht ab C99 */ int foo (int nichtkonstant) { int c[konstante]; /* geht ab C99 */ int d[konstante+ 4]; /* Compiler kann dies auswerten */ int e[nichtkonstant]; /* geht ab C99 Array auf Stack */ } 11 von 50
12 Beispiele const int MAXZ = 300; double zahlen[maxz]; /* 300 double-werte zahlen[0].. zahlen[299] */ char text[20]; /* 20 Buchstaben text[0].. text[19] */ for (i = 0; i < MAXZ; i++) { } zahlen[i] = i; /* Zuweisung in einer Schleife */ text[4] = 'c'; 12 von 50
13 Verwenden von Adressen: Zeiger 13 von 50
14 Zeiger Bisher: Zugriff erfolgte immer direkt auf die Variablen; ohne Berücksichtigung wo (unter welcher Adresse) diese Variable im Speicher abgelegt ist In C/C++ arbeitet man häufig mit den Adressen von Variablen: Dazu existieren in C/C++ die Zeiger (engl. Pointer) Ein Zeiger ist eine Variable, welche die Adresse einer andern Variablen enthält Wenn der Zeiger die Adresse einer anderen Variable enthält, sagt man, dass der Pointer auf diese Variable zeigt 14 von 50
15 Zeiger Ein Zeiger enthält somit die Adresse auf den eigentlichen Wert Greift man über den Zeiger auf die Variable zu, wird der Zeiger dereferenziert px px von 50
16 Zeiger definieren Beispiel Konvention Konvention mit mit einem einem "p" "p" beginnen beginnen int *px; /* Zeiger auf int */ char *pc; /* Zeiger auf char */ Zeiger zeigt auf Daten von einem bestimmten Typ 16 von 50
17 Der Zeiger muss gesetzt werden 1000 int anzahl; int *panzahl; /* Adresse von anzahl zuweisen */ panzahl = &anzahl; /* Über Zeiger zugreifen: */ *panzahl = 77; panzahl anzahl C C C von 50
18 Zeiger und Adressoperationen Adressoperator & liefert Adresse eines Objekts Dereferenzierungsoperator * greift auf das Objekt zu, auf das der Zeiger zeigt & * Bei scanf schon verwendet scanf("%lf",&value); Damit Damit scanf scanf weiss, weiss, wohin wohin der der Wert Wert gespeichert gespeichert werden werden soll, soll, muss muss der der Speicherort Speicherort (=Adresse (=Adresse der der Variablen) Variablen) übergeben übergeben werden werden 18 von 50
19 Zeigerarithmetik und Arrays int a[10]; int *pa; pa = &a[0]; pa a a[0] a[1] von 50
20 Zeigerarithmetik und Arrays Zeigerarithmetik statt Arrayzugriff int a[10]; int *pa = &a[0]; a[3] = 42; // a[3] den Wert 42 zuweisen *(pa+3) = 42; // a[3] den Wert 42 zuweisen pa pa+3 a 4 20 von 50
21 Zeigerarithmetik und Arrays Mit Zeigern kann gerechnet werden Bsp: pa + 4, pa++, pa-- int a[10]; int *pa = &a[0]; a[3] = 42 ; *(pa + 3) = 42 ; /* gleich wie a[3]=42; */ pa = pa + 3; /* pa ist variabel */ *pa = 42 ; /* gleich wie a[3]=42; */ 21 von 50
22 Zeigerarithmetik und Arrays Da zu jedem Zeiger ein Datentyp gehört, wird bei Operationen auf Zeiger die Grösse des Datentyps berücksichtigt double a[10]; double *pa = &a[0]; a[3] = 42.0 ; *(pa + 3) = 42.0 ; /* gleich wie a[3]=42; */ pa = pa + 3; /* pa ist variabel */ *pa = 42.0 ; /* gleich wie a[3]=42; */ pa pa+3 a 8 22 von 50
23 Zuweisen von Zeigervariablen int x[4] = { 1, 2, 3, 4 }; int *px = &x[0]; int *py = px; printf("%d",*px); // 1 *py = 5; printf("%d",*px); // 5 px px py py Wenn Zeigervariablen Werte zugewiesen (kopiert) werden, dann werden nur die Zeiger (aber nicht die Werte auf diese) kopiert. Man erhält lediglich zwei "Zugriffspfade" auf dieselben Daten Wenn Werte über py verändert werden sind sie auch über px verändert 23 von 50
24 Typischer Fehler int *px; *px = 25; In der zweiten Zeile wird irgendeine Stelle im Speicher mit 25 überschrieben! Zeigervariablen mit unkorrekten Werten führen - im besseren Fall- zu Laufzeitfehlern wie Bustrap-Error, Segment-Violation, Memory-Violation oder gar zum System-Crash Im schlechtesten Fall zeigt der Zeiger in einen gültigen Speicherbereich, das Programm läuft aber es wird irgendwo (!) Speicher überschrieben Unbestimmtes Verhalten (bei jedem Programmstart wieder anders), plötzlich veränderte Werte in andern Variablen, die NICHTS mit dem eigenen Programm zu tun haben. Sog. DANGLING POINTER - DER ABSOLUT SCHLIMMSTE FEHLER IN DER PROGRAMMIERUNG ÜBERHAUPT 24 von 50
25 NULL Wenn ein Zeiger auf nichts zeigen soll, wird ihm NULL zugewiesen Sich angewöhnen, jeden Zeiger bei der Deklaration mit NULL zu initialisieren. int *pi = NULL; *pi = 25; Das Programm stürzt kontrolliert ab 26 von 50
26 Array vs Pointerschreibweise Beispiel: Kopieren einer Zeichenkette In Zeiger-Notation: char i; for (i=0; i<10; i++) { b[i] = a[i]; } char *pa = &a[0]; char *pb = &b[0]; int i; for (i = 0;i< 10;i++) { *pb = *pa; pa++; pb++; } for (;*pb++=*pa++;); Die rechten Versionen sind schlechter lesbar! 27 von 50
27 Zeigerarithmetik und Arrays double da[4]; double *pda1; double *pda2; int diff; pda1 = &da[1]; pda2 = &da[2]; diff = pda2 - pda1; Wenn zwei Zeiger auf ein Array voneinander subtrahiert werden, erhält man die Anzahl der Elemente dazwischen da[0] da[1] da[2] da[3] pda1 pda C C C von 50
28 Zeigerarithmetik und Arrays Zeiger und Arrays sind in C eng verbunden Der Arrayname kann als konstanter Zeiger auf das erste Array-Element aufgefasst werden int a[10]; pa = a; /* wie: pa = &a[0]; */ *(a + 3) = 42 ; /* gleich wie a[3]=42; vorsicht */ a++ ; /* nicht erlaubt!! */ 29 von 50
29 Fallstricke Mehrere Zeiger Variablen definieren int *pi, pa; /* nur pi ist ein Zeiger, pa NICHT */ int * pi, pa; /* dito */ int* pi, pa; /* dito */ 30 von 50
30 Fazit Zeiger In einer normalen Variablen steht immer der Wert, den man in dieser Variablen speichern will Ein Zeiger, int * pa, ist auch eine Variable Die Grösse eines Zeigers ist architekturabhängig (häufig 4 oder 8 Bytes) Dort steht aber nicht irgendein Zahlenwert, sondern die Speicheradresse einer anderen Variablen 31 von 50
31 Datenstrukturen mit struct 32 von 50
32 Structs Mehrere Variablen zu einer Einheit zusammenfassen Im Unterschied zu Arrays kann eine Struktur aus Elementen verschiedener Datentypen zusammengesetzt sein struct Complex { double real; double imag; }; struct Complex x; Semikolon nicht vergessen! Auf die Werte des Structs greift man mit der "." Notation zu x.real = 7.0; x.imag = 6.4; 33 von 50
33 Structs weitere Beispiele Definition des Structs und Variablendeklaration kombiniert struct Complex { double real; double imag; } x; /* inklusive Variablendefinition */ 34 von 50
34 Structs weitere Beispiele Es können auch mehrere Variablen vom Struct Typ definiert werden struct Datum { int tag; int monat; int jahr; }; struct Datum meingeburtstag = {17, 4, 1976}; struct Datum geburtstag; 35 von 50
35 Zuweisung Strukturvariablen können einander zugewiesen werden Dabei werden die Werte kopiert: Unterschied zu Arrays! struct Datum meingeburtstag = {17, 4, 1976}; struct Datum geburtstag; geburtstag = meingeburtstag ; geburtstag.tag = 25; printf("%d", meingeburtstag.tag); // 17 printf("%d", geburtstag.tag); // von 50
36 Struct Definition mit typedef Ein Strukt kann auch mit typedef angelegt (definiert) werden typedef struct { int tag; int monat; int jahr; } Datum; Datum variable; Abwägen: Es ist elegant, einfach NeuerTyp variable; schreiben zu können. Auf der anderen Seite wird mit struct NeuerTyp variable; klarer, dass es sich um eine Datenstruktur handelt... Hier kein "strukt" mehr nötig! 37 von 50
37 Zeiger auf Datenstrukturen 38 von 50
38 Zeiger auf Strukturen typedef struct { int tag; int monat; int jahr; } Datum; Datum geburtstag; Datum *pgb = &geburtstag; /* Zeiger auf geburtstag */ printf("%d", (*pgb).tag); /* tag ausgeben */ (*pgb).tag = 17; /* tag setzen */ 39 von 50
39 Zeiger auf Strukturen: Operator -> Kürzere Schreibweise mit dem -> Operator: printf("%d", pgb-> tag); /* tag auswaehlen */ pmw -> tag = 17; /* Feld setzen */ Der -> Operator dereferenziert und wählt ein Feld aus (*pmw).tag pmw -> tag Ersetzt also '*' und '.' und behebt das Problem der sonst notwendigen Klammerung; meistens wird diese Schreibweise bevorzugt 40 von 50
40 Verkettete Strukturen Es gibt auch die Möglichkeit, dass ein Element einer Struktur ein Zeiger ist auf diese Struktur So kann man Strukturen miteinander verketten Dies wird im Zusammenhang zum Aufbau dynamischer Datenstrukturen, (z.b. verketteter Listen) verwendet 41 von 50
41 Verkettete (rekursive) Strukturen: Beispiel mw1 mw2 pnext typedef struct Datum { int tag; int monat; int jahr; struct Datum *pnext; } Datum; Datum mw1, mw2; mw1.pnext = &mw2; /* Strukturen verketten */ 42 von 50
42 Spezielle Zeiger und komplexe Deklarationen 43 von 50
43 Komplexe Deklarationen char * args[]; args ein Array mit Elementen vom Typ Zeiger auf char oder oder auch auch char** char** int main (int argc, char* args[]) strings strings Grösse Grösse des des Arrays Arrays Also: Zeiger auf char array 44 von 50
44 void-pointer Der void-zeiger void* ist zu jedem Datentyp kompatibel Daher auch untypisierter oder generischer Zeiger genannt Ein void-zeiger lässt sich in jeden anderen Zeiger und zurück wandeln Problematisch mit void-pointer: Zeigerarithmetik, da dem Compiler der Speicherplatzverbrauch pro Variable nicht bekannt ist 45 von 50
45 void-pointer Beispiel int *pint; void *pvoid; pvoid=pint; /* beide zeigen jetzt auf das gleiche Element */ pint+=1; /* zeigt nun auf das naechste Element */ pvoid+=sizeof(int); /* zeigt jetzt auch auf das naechste int Element */ 46 von 50
46 Weitere komplexe Deklarationen double * b [10]; b ist ein Array mit 10 Elementen vom Typ Zeiger auf double Also: 10 Zeiger auf double 47 von 50
47 Weitere komplexe Deklarationen double (* c) [10]; c ist ein Zeiger auf ein Array mit 10 Elementen vom Typ double Also: Zeiger auf 10 double's 48 von 50
48 Weitere komplexe Deklarationen double * (* d) [10]; d ist ein Zeiger auf ein Array mit 10 Elementen vom Typ Zeiger auf double Also: Zeiger auf 10 Zeiger auf double 49 von 50
49 Noch Fragen not not amused amused 50 von 50
Pointer und Arrays. INE1, Montag M. Thaler, Office TG208. ZHAW, M. Thaler, K. Rege, G.
Pointer und Arrays INE1, Montag M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Variable Speicherplatz Datenwert über Name ansprechbar hat Typ hat Adresse (Speicheradresse)
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
MehrZeiger in C und C++ Zeiger in Java und C/C++
1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,
MehrZeiger (engl. Pointer)
Zeiger (engl. Pointer) Zeiger Ein Zeiger (engl. Pointer) speichert eine Adresse, unter der ein Wert im Speicher des Computers gespeichert werden kann. Eine Variable im Gegensatz speichert einen Wert. Der
MehrTeil 5: Zeiger, Felder, Zeichenketten Gliederung
Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik
MehrInhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Zeigern
MehrZeiger, Arrays und Strings in C und C++
Zeiger, Arrays und Strings in C und C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrC++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.
MehrDatenstrukturen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert
Datenstrukturen InE1 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Rangliste Winti-Marathon benötigte Information pro Teilnehmer Variable Typ Daten Name String Vorname
MehrTeil 5: Felder, Zeiger, Zeigerarithmetik Gliederung
Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung Felder (Arrays) Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder
MehrPraxis der Programmierung
Arrays, Pointer, Parameterbergabe Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vectoren) 2 Arrays: Motivation Gegeben:
MehrPraxis der Programmierung
Arrays, Pointerarithmetik, Konstanten, Makros Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vektoren) 2 Arrays: Motivation
MehrZeiger in C und C++ Zeiger in Java und C/C++
1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,
MehrC++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15
C++ Teil 6 Sven Groß 23. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 23. Nov 2015 1 / 15 Themen der letzten Vorlesung const-deklaration Referenzen Zeiger Felder Sven Groß (IGPM, RWTH Aachen) C++
MehrFelder, Zeiger und Adreßrechnung
Felder, Zeiger und Adreßrechnung Felder bestehen aus Variablen eines einzigen Datentyps. Bisher kennen wir eindimensionale Felder. In C sind Felder mit beliebigen Dimensionen möglich. Unsere räumliche
MehrF Zeiger, Felder und Strukturen in C
F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts
MehrObjekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3
Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................
MehrK Ergänzungen zur Einführung in C
K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K.1 Zeiger, Felder und Zeichenketten Zeichenketten sind Felder von Einzelzeichen (char), die in der internen Darstellung durch ein \0
MehrZeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.
Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
Mehr8. Referenzen und Zeiger
8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens mit C++ und Matlab SS2013 Inhalt Bis jetzt: Heute: Entwicklungsumgebung
MehrC++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18
C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen
MehrZeiger und dynamischer Speicher
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr
MehrC++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16
C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung
MehrInhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15
Vorwort... 15 1 Einstieg in die Welt von C 17 1.1 Die Sprache C... 17 1.2 Die C-Standardbibliothek... 18 1.3 Die nötigen Werkzeuge für C... 21 1.4 Übersetzen mit der Entwicklungsumgebung... 23 1.5 Übersetzen
MehrC++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16
C++ Teil 5 Sven Groß 16. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 16. Nov 2015 1 / 16 Themen der letzten Vorlesung Namensräume Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung
Mehr9. Vektoren. (auch Felder/array)
9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die
MehrGrundlagen und Konzepte von C Datenstrukturen
Grundlagen und Konzepte von C Datenstrukturen Ausarbeitung von Andreas Gadelmaier Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik,
MehrKapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrVariablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes
Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!
MehrProbeklausur Name: (c)
Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume
MehrEinführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian
Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,
MehrStrukturierte Datentypen (struct) 2006 Pearson Education, Inc. All rights reserved.
1 8 Strukturierte Datentypen (struct) 2 8.1 Einführung 8.2 Definition von Strukturen 8.2.1 Selbstbezügliche Strukturen 8.2.2 Definition von Variablen strukturierter Datentypen 8.2.3 Bezeichner für Strukturen
MehrZeiger: Der Adressoperator &
Zeiger: Der Adressoperator & Variablen werden im Computer im Speicher abgelegt. Nach der Deklaration int a,b,c; double x,y,z; Sieht die Speicherbelegung etwa wie folgt aus: a b c x y z Jede Variable hat
MehrInformatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1
Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss
Mehr5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!
5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: 17 3-2 9 0 1 0 1 2 3 4 5 Harald Räcke 114/656
MehrÜBUNGS-BLOCK 7 LÖSUNGEN
ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i
MehrEinführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin
Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm
Mehreinlesen n > 0? Ausgabe Negative Zahl
1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen
Mehr5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)
5.1 Mehr Basistypen Außer int, stellt Java weitere Basistypen zur Verfügung. Zu jedem Basistyp gibt es eine Menge möglicher Werte. Jeder Wert eines Basistyps benötigt die gleiche Menge Platz, um ihn im
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrTag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Arrays (Reihungen)
MehrRO-Tutorien 15 und 16
Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft
MehrCrashkurs C++ - Teil 1
Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik
MehrProgrammierkurs C++ Variablen und Datentypen
Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in
MehrProgrammierkurs C++ Datenstrukturen Seite 1
Programmierkurs C++ Datenstrukturen Seite 1 3 Datenstrukturen 3.1 Arrays Zur Wiederholung als Strukturelement der Programmierung gehört auf der Seite der Datenstrukturen die Liste. Eine Liste kann auf
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 2 Arrays und Pointer Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät statische Arrays Deklaration (eindimensional): /* 40
MehrC- Kurs 08 Zeiger. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins?tut für Informa?k Technische Informa?
C- Kurs 08 Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Überblick Datentyp zur Verwaltung von Adressen (auf Speicherplätze)
MehrEEPROM Strukturen speichern über SPI-Bus
EEPROM Strukturen speichern über SPI-Bus Experiment EEPROMstruct 7 A.Schultze / DK4AQ 18.06.2013 Es soll eine Tabelle aus verschiedenartigen Informationen im EEPROM abgelegt und wieder gelesen werden.
MehrKapitel 8. Adressen und Zeiger
Kapitel 8 Adressen und Zeiger 1 Gliederung Kapitel 8 Adressen und Zeiger 8.1 Definition 8.2 Einfache Beispiele 8.3 Zeigerarithmetik und Vektoren 8.4 Vektoren als Funktionsparameter 8.5 Messwertprogramm,
MehrRO-Tutorien 3 / 6 / 12
RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
Mehr6 ZEIGER UND REFERENZEN - ALLGEMEINES
6 ZEIGER UND REFERENZEN - ALLGEMEINES Leitideen: Zeiger sind Adressen mit zusätzlicher Typinformation über das dort gespeicherte Objekt. Die Vereinbarungssyntax soll der Ausdruckssyntax entsprechen und
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
MehrII. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )
Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:
MehrArrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3
Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................
Mehr1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
Mehr1. Referenzdatentypen: Felder und Strings
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
MehrBetriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)
Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/
MehrZeiger (1) Allgemeines
Zeiger (1) Allgemeines In C häufig verwendet zur Realisierung mancher Programmierkonzepte Sehr enge Verknüpfung von Zeigern und Feldern Vielseitiges Hilfsmittel, birgt allerdings auch Gefahren für Programmierfehler
MehrArrays (Felder/Vektoren)
Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff
MehrC/C++-Programmierung
1 C/C++-Programmierung Speicherverwaltung, 0, const Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Speicherverwaltung
MehrEinführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz
Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public
MehrC- Kurs 07 Höhere Datentypen
C- Kurs 07 Höhere Datentypen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Höhere Datentypen Überblick Höhere Datentypen Werden
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
Mehr7. Organisation von Informationen
Computeranwendung in der Chemie Informatik für Chemiker(innen) 7. Organisation von Informationen Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL7 Folie 1 Grundlagen Programme
MehrTag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!
MehrDynamische Speicherverwaltung
Dynamische Speicherverwaltung INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Bisjetzt Beispiel Ranglistenprogramm für Sportveranstaltungen Besser - genaue Anzahl Teilnehmer
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
MehrAlgorithmen und Datenstrukturen I. Blatt 2. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Algorithmen und Datenstrukturen I Blatt 2 Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:05 Aufgabe 1 struct, Parameterübergabe und const Das Repository für diese
Mehrint i=1; //Integerzahl i anlegen und mit 1 initialisieren float wert; //Floatzahl deklarieren scanf( %f,&wert); //Wert über Tastatur eingeben
Datenfelder (Array) Seite 1 von 7 Bei den bisherigen Programmen wurde für jede verwendete Variable (oder für jedes Objekt) ein eigener Typ und Name vergeben. Die Initialisierung, d.h. die Belegung mit
MehrEinführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher
Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Arvid Terzibaschian 1 Zusammengesetzte Datentypen 2 Wozu zusammengesetzte Datentypen? Anforderung: Sie sollen ein Kundenverzeichnis
MehrInformatik. Strukturen und Aufzählungstypen. Vorlesung
Informatik Vorlesung 06 Strukturen und Aufzählungstypen 03. Dezember 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Datentypen Die bisher benutzten Datentypen waren
MehrKapitel 5: Funktionen. Inhalt
Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrBereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung
Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente
Mehr6. Zeiger Allgemeines Definition eines Zeigers
6. Zeiger www.c-programme.de Stefan Thiemert Kapitel 6 - Seite 1 von 6 6. 1. Allgemeines Zeiger spielen in der Programmierung eine wichtige Rolle. Sie sind wichtig, bei der Arbeit mit Arrays und Funktionen.
MehrArrays,Strings&Pointer in C/C++
Arrays,Strings&Pointer in C/C++ Vortrag Mathias Reich Am 21.5.2002 Pointer Da zur Zeit der Compelierung des Programms nicht immer der Umfang der zu bearbeitenden Daten feststeht muss man sich - in manchen
MehrAbgeleitete Datentypen (1) Richtlinien
Abgeleitete Datentypen (1) Richtlinien Verbunddatentypen erlauben durch Kombination und Verschachteln beliebige komplexe Datenstrukturen Entwurf von Datenstrukturen hat wesentlichen Einfluss auf Art und
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrBereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung
Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente
MehrZeiger & Co. Verwendung und Zeigerarithme5k. thorsten möller - informa5k.unibas.ch/lehre/fs13/cs109/03- c++- zeiger.pdf. Strukturen. enum.
K03 Zeiger & Co 1. Zeiger Verwendung und Zeigerarithme5k 2. Referenzen 3. Arrays 4. Zeigertabellen 2 Wiederholung: Das Typsystem in C++ Elementare Datentypen Strukturen Adressen enum struct union class
MehrÜbersicht. Einführung in die Programmierung. Zeichenketten. Zeichenketten. Zeichenketten. Arrays und Zeichenketten. Arrays und Zeichenketten
Übersicht Einführung in die Programmierung Bachelor of Science Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein Arrays Datentypen, Operatoren und Kontrollstrukturen Funktionen
MehrZeiger in C. Thomas Mechelke August 2011
Zeiger in C Thomas Mechelke August 2011 Dieser Artikel ist die Ausarbeitung meiner Präsentation über Zeiger in C. Er ist in zwei Teile zerlegt: Der Erste Teil beschäftigt sich mit den Grundlagen zu Zeigern
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen
MehrStrukturen in C. Strukturen stellen eine Zusammenfassung von Datenelementen unterschiedlichen Typs unter einem Namen dar.
Strukturen in C Strukturen stellen eine Zusammenfassung von Datenelementen unterschiedlichen Typs unter einem Namen dar. Dadurch sind sie vergleichbar mit Feldern, die eine Zusammenfassung (Reihung) von
MehrViel Erfolg bei der Bearbeitung der Aufgaben!
Musterlösung Name:... 1 2 3 4 5 Gesamt Note 12 8 10 15 11 56 Bitte tragen Sie auf dem Deckblatt Ihr Namen und Ihre Matrikelnummer ein und auf allen weiteren Seiten nur noch Ihre Matrikelnummer. Lösungen
MehrOrganisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online
Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches
MehrArrays. Einleitung. Deklarieren einer Array Variablen
Arrays Einleitung bisher jede Variable einzeln deklariert: 12 3 14 12 32 32 3 32 5 3 double sum; int count; ÿ Sie können Zweck und Aufbau von Array-Datentypen erklären ÿ Sie können einen Array korrekt
MehrRO-Tutorien 17 und 18
RO-Tutorien 17 und 18 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery TUTORIENWOCHE 2 AM 10.05.2012 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der
MehrVariablen, Konstanten und Datentypen
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Variablen, Konstanten und Datentypen Überblick
MehrJava Einführung Klassendefinitionen
Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse
MehrProgrammierwerkstatt. Arrays, Pointer und Referenzen
Programmierwerkstatt Arrays, Pointer und Referenzen Zum Inhalt Wir wollen Euch: das Wesentliche vermitteln Fehlerquellen verdeutlichen Verständnis ist uns wichtig programming by coincidence vermeiden Themen
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
MehrVektoren 105. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier
Vektoren 105 direct-declarator simple-declarator ( simple-declarator ) function-declarator array-declarator array-declarator direct-declarator [ [ array-qualifier-list ] [ array-size-expression ] ] array-qualifier-list
MehrVorlesung Programmieren
Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von
MehrProgrammieren in C SS Vorlesung 4, Dienstag 14. Mai (Strings, Zeiger, Allokation, Strukturen)
Programmieren in C SS 2019 Vorlesung 4, Dienstag 14. Mai 2019 (Strings, Zeiger, Allokation, Strukturen) Prof. Dr. Peter Thiemann Professur für Programmiersprachen Institut für Informatik Universität Freiburg
Mehr