Einführung in die Programmierung
|
|
|
- Lorenz Schmid
- vor 9 Jahren
- Abrufe
Transkript
1 : Inhalt Einführung in die Programmierung Wintersemester 2010/11 arithmetik für dynamischen Speicher Anwendungen Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund 2 Caveat! Fehlermöglichkeiten immens groß! Falsch gesetzte Programm- und zuweilen Rechnerabstürze! Aber: Machtvolles Konzept! Deshalb genaues Verständnis unvermeidlich! Dazu müssen wir etwas ausholen... Speicherplätzen sind fortlaufende Nummern (= Adressen) zugeordnet Datentyp legt Größe eines Datenobjektes fest Lage eines Datenobjektes im Speicher bestimmt durch Anfangsadresse = Datenobjekt mit Inhalt (4 Byte) Inhalt interpretiert als Adresse eines anderen Datenobjektes Datenobjekt Adresse Inhalt Adresse Inhalt
2 Datenobjekt Adresse Inhalt Adresse Inhalt Beispiel: Visitenkarte Hugo Hase X-Weg X-Weg Adresse des s Inhalt des s Adresse des Objekts Inhalt des Objekts Inhalt: Adresse X-Weg 42 Objekt Inhalt: Hugo Hase 5 6 : Wofür? weiterreichen einfacher als Datenobjekt weiterreichen verschieben einfacher / effizienter als Datenobjekt verschieben etc. Datendefinition Datentyp *Bezeichner; reserviert 4 Byte für einen, der auf ein Datenobjekt vom Typ des angegebenen Datentyps verweist Beispiel double Umsatz; double *pumsatz; Herkömmliche Variable vom Type double auf Datentyp double 7 Was passiert genau? double Umsatz; double *pumsatz; Umsatz = ; pumsatz = &Umsatz; *pumsatz = ; reserviert 8 Byte für Datentyp double; symbolischer Name: Umsatz; Rechner kennt jetzt Adresse des Datenobjektes reserviert 4 Byte für einen, der auf ein Datenobjekt vom Type double zeigen kann; symbolischer Name: pumsatz Speicherung des Wertes an Speicherort mit symbolischer Adresse Umsatz holt Adresse des Datenobjektes, das an symbolischer Adresse Umsatz gespeichert ist; speichert Adresse in pumsatz indirekte Wertzuweisung: Wert wird als Inhalt an den Speicherort gelegt, auf den pumsatz zeigt 8
3 Zwei Operatoren: * und & *-Operator: - mit Datentyp: Erzeugung eines s double *pumsatz; - mit Variable: Inhalt des Ortes, an den zeigt *pumsatz = 10.24; &-Operator: ermittelt Adresse des Datenobjektes Wie interpretiert man Datendefinition richtig? Man lese von rechts nach links! double *pumsatz; pumsatz = &Umsatz; 1. pumsatz ist 2. auf 3. Typ double 9 Initialisierung Sei bereits double Umsatz; vorhanden: double *pumsatz = &Umsatz; oder int *pint = NULL; oder int *pint = 0; Nullpointer! Symbolisiert Adresse, auf der niemals ein Datenobjekt liegt! Verwendung Nullzeiger: zeigt auf Nichts! Er ist leer! 10 Beispiele: double a = 4.0, b = 5.0, c; c = a + b; double *pa = &a, *pb = &b, *pc = &c; *pc = *pa + *pb; double x = 10.; double y = *&x; Typischer Fehler double *widerstand; *widerstand = 120.5; Dem wurde keine Adresse zugewiesen! Er zeigt also irgendwo hin: a) Falls in geschützten Speicher, dann Abbruch wg. Speicherverletzung! b) Falls in nicht geschützten Speicher, dann Veränderung anderer Daten! Folge: Seltsames Programmverhalten! Schwer zu erkennender Fehler! 11 12
4 Exkurs: const Qualifizierer Unterscheidung Konstante char *text = Hallo ; int feld[] = { 2, 3, 4 ; zeigt auf feste Adresse im Speicher, auf die Programmierer nicht verändernd zugreifen kann! text feld H a l l o \ int *const cpfeld = feld; v.r.n.l.: cpfeld ist constanter auf Datentyp int Aber: Es gibt Compilerspezifische Unterschiede! 13 Schlüsselwort const gibt an, dass Werte nicht verändert werden können! Leider gibt es 2 Schreibweisen: const int a = 1; int const a = 1; identisch zu ) konstanter Integer ) da Konstanten kein Wert zuweisbar, Wertbelegung bei Initialisierung! verschiedene Schreibweisen können zu Verwirrungen führen (besonders bei n!) ) am besten konsistent bei einer Schreibweise bleiben! 14 Exkurs: const Qualifizierer Exkurs: const Qualifizierer Fragen: 1. Was ist konstant? 2. Wo kommt das Schlüsselwort const hin? char* s1 char const* s2 char* const s3 = " auf char"; = " auf konstante char"; = "Konstanter auf char"; char const* const s4 = "Konstanter auf konstante char"; Sinnvolle Konvention / Schreibweise: Konstant ist, was vor dem Schlüsselwort const steht! ) Interpretation der Datendefinition / Initialisierung von rechts nach links! 15 char* s1 = "1"; char const* s2 = "2"; char* const s3 = "3"; char const* const s4 = "4"; V V K K Inhalt V *s1 = 'a'; *s2 = 'b'; // Fehler: Inhalt nicht veränderbar *s3 = 'c'; *s4 = 'd'; // Fehler: Inhalt nicht veränderbar char* s0 = "0"; s1 = s0; s2 = s0; s3 = s0; // Fehler: nicht veränderbar s4 = s0; // Fehler: nicht veränderbar K V K V: veränderlich K: konstant 16
5 Unterscheidung Veränderliche double x = 2.0, y = 3.0, z = 7.0, s = 0.0, *ptr; ptr = &x; s += *ptr; ptr = &y; s += *ptr; ptr = &z; s += *ptr; ptr nimmt nacheinander verschiedene Werte (Adressen) an s hat am Ende den Wert 12.0 ptr x y z 17 arithmetik Sei T ein beliebiger Datentyp in der Datendefinition T *ptr; und ptr ein auf ein Feldelement eines Arrays von Typ T Dann bedeutet: ptr = ptr + 1; oder ++ptr; dass der ptr auf das nächste Feldelement zeigt. Analog: ptr = ptr 1; oder --ptr; ptr zeigt dann auf das vorherige Feldelement 18 arithmetik Achtung: T val; T *ptr = &val; ptr = ptr + 2; arithmetik int a[] = { 100, 110, 120, 130, *pa, sum = 0; pa = &a[0]; sum += *pa + *(pa + 1) + *(pa + 2) + *(pa + 3); In der letzten Zeile werden nicht 2 Byte zu ptr hinzugezählt, sondern 2 mal die Speichergröße des Typs T. Das wird auch dann durchgeführt wenn ptr nicht auf Array zeigt. struct KundeT { double umsatz; float skonto; ; KundeT Kunde[5], *pkunde; pkunde = &Kunde[0]; int i = 3; *pkunde = *(pkunde + i); Größe des Datentyps KundeT: = 12 Byte Sei pkunde == Dann(pKunde + i) ==
6 arithmetik char *quelle = Ich bin eine Zeichenkette ; int const maxzeichen = 100; char ziel[maxzeichen], *pz = &ziel[0]; // Länge der Zeichenkette char *pq = quelle; while (*pq!= \0 ) pq++; int len = pq quelle; if (len < maxzeichen) { // Kopieren der Zeichenkette pq = quelle; while (*pq!= \0 ) { *pz = *pq; pz++; pq++; *pz = \0 ; Kommentar Kommentar später! auf Datenverbund (struct) struct punktt { int x, y; ; punktt punkt[1000]; punktt *ptr = punkt; punkt[0].x = 10; punkt[2].x = 20; punkt[k].x = 100; ptr->x = 10; (ptr + 2)->x = 20; (ptr + k)->x = 100; (*ptr).x ist identisch zu ptr->x Aufgabe: Lese zwei Vektoren reeller Zahlen der Länge n ein. Berechne das Skalarprodukt und gebe den Wert auf dem Bildschirm aus! Lösungsansatz: Vektoren als Arrays von Typ double. n darf höchstens gleich der Arraygröße sein! Testen und ggf. erneute Eingabe! 23 #include <iostream> using namespace std; int main() { unsigned int const nmax = 100; unsigned int i, n; double a[nmax], b[nmax]; // Dimension n einlesen und überprüfen do { cout << "Dimension ( n < " << nmax << " ): "; cin >> n; while (n < 1 n > nmax); (Fortsetzung folgt ) Datendefinition double a[nmax] OK, weil nmax eine Konstante ist! Ohne const: Fehlermeldung! z.b. Konstanter Ausdruck erwartet 24
7 Sinn & Zweck des ISO Standards für C++ Kapitel Intermezzo 4 Sinn & Zweck des ISO Standards für C++ Kapitel Intermezzo 4 Der aktuelle GNU C++ Compiler erlaubt folgendes: #include <iostream> int main() { int n; std::cin >> n; double a[n]; a[0] = 3.14; Aber: Der Microsoft C++ Compiler (VS 2003) meldet einen Fehler! Variable Arraygrenzen sind nicht Bestandteil des C++ Standards! Verwendung von Compiler-spezifischen Spracherweiterungen führt zu Code, der nicht portabel ist! #include <iostream> int main() { int n; std::cin >> n; double a[n]; a[0] = 3.14; Also: Bei Softwareentwicklung nur Sprachelemente des C++ Standards verwenden! Bei GNU Compiler: Option -pedantic C++ Standard ISO/IEC z.b. als PDF-Datei erhältlich für 30$ Das ist nicht wünschenswert! ( Fortsetzung) // Vektor a einlesen for (i = 0; i < n; i++) { cout << "a[" << i << "]= "; cin >> a[i]; // Vektor b einlesen for (i = 0; i < n; i++) { cout << "b[" << i << "]= "; cin >> b[i]; // Skalarprodukt berechnen double sp = 0.; for (i = 0; i < n; i++) sp += a[i] * b[i]; // Ausgabe cout << "Skalarprodukt = " << sp << endl; Anmerkung: Fast identischer Code! Effizienter mit Funktionen! nächstes Kapitel! Unbefriedigend bei der Implementierung: Maximale festgelegte Größe des Vektors! Liegt an der unterliegenden Datenstruktur Array: Array ist statisch, d.h. Größe wird zur Übersetzungszeit festgelegt und ist während der Laufzeit des Programms nicht veränderbar! Schön wären dynamische Datenstrukturen, d.h. Größe wird zur Übersetzungszeit nicht festgelegt und ist während der Laufzeit des Programms veränderbar! Das geht mit dynamischem Speicher und n! 27 28
8 Exkurs: Dynamischer Speicher Exkurs: Dynamischer Speicher Erzeugen und Löschen eines Objekts zur Laufzeit: 1. Operator new erzeugt Objekt 2. Operator delete löscht zuvor erzeugtes Objekt Beispiel: (Erzeugen) int *xp = new int; double *yp = new double; struct PunktT { int x, y; ; PunktT *pp = new PunktT; int n = 10; int *xap = new int[n]; PunktT *pap = new PunktT[n]; Beispiel: (Löschen) delete xp; delete yp; delete pp; delete[] xap; delete[] pap; variabel, nicht konstant! Bauplan: Datentyp *Variable = new Datentyp; delete Variable; Bauplan für Arrays: Datentyp *Variable = new Datentyp[Anzahl]; delete[] Variable; (Erzeugen) (Löschen) (Erzeugen) (Löschen) Achtung: Dynamisch erzeugte Objekte müssen auch wieder gelöscht werden! Keine automatische Speicherbereinigung! Exkurs: Dynamischer Speicher Wo wird Speicher angelegt? im Freispeicher alias Heap alias dynamischen Speicher Heap Stack Programm und statischer Speicher wächst nach unten wächst nach oben wenn Heapgrenze auf Stackgrenze stösst: Out of Memory Error Stack bereinigt sich selbst, für Heap ist Programmierer verantwortlich! Zurück zur Beispielaufgabe: unsigned int const nmax = 100; unsigned int i, n; double a[nmax], b[nmax]; do { cout << "Dimension ( n < " << nmax << " ): "; cin >> n; while (n < 1 n > nmax); unsigned int i, n; double *a, *b; do { cout << "Dimension: "; cin >> n; while (n < 1); a = new double[n]; b = new double[n]; vorher: statischer Speicher nachher: dynamischer Speicher 31 32
9 Nicht vergessen: Am Ende angeforderten dynamische Speicher wieder freigeben! delete[] a; delete[] b; Sonst Speicherleck! ) Programm terminiert möglicherweise anormal mit Fehlermeldung! Beispiel für programmierten Absturz: #include <iostream> using namespace std; int main() { unsigned int const size = 100 * 1024; unsigned short k = 0; while (++k < 5000) { double* ptr = new double[size]; cout << k << endl; // delete[] ptr; bei k ¼ 2500 sind 2 GB erreicht ) Abbruch! Projekt: Matrix mit dynamischem Speicher (Größe zur Laufzeit festgelegt!) Vorüberlegungen: Speicher im Rechner ist linear! ) Rechteckige / flächige Struktur der Matrix linearisieren! x x x x x x x x y y y y z z z z y y y y z z z z Projekt: Matrix mit dynamischem Speicher (Größe zur Laufzeit festgelegt!) double **matrix; matrix = new double*[zeilen]; matrix[0] = new double[zeilen * spalten]; for (i = 1; i < zeilen; i++) matrix[i] = matrix[i-1] + spalten; matrix Zugriff wie beim zweidimensionalen statischen Array: matrix[2][3] = 2.3; n Zeilen, m Spalten ) n x m Speicherplätze! zeigt auf double* matrix[0] matrix[2][3] 35 36
8. 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
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
Programmieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11
Einführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Gültigkeitsbereiche Inhalt Lokale und globale
Zeiger und dynamischer Speicher
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling [email protected] Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Lokale und globale Variablen Namensräume Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund
Einführung in die Programmierung Wintersemester 2011/12
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while
Physische Datenstrukturen
Elementare Datentypen Strukturierte Datentypen Zeiger Seite 1 Einfache Datentypen Datentyp char Verwendung: ASCII-Zeichen Wertebereich: alle darstellbaren Zeichen, 8 bit lange Ganzzahlen im Intervall -128
Crashkurs 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
Hydroinformatik I: Referenzen und Zeiger
Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 06. Januar
C++ 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
Grundlagen der Informatik 6. Arrays I
6. Arrays I Motivation Array (konstante Länge) Speicherbereich Eingabe von Arrays Grundlagen der Informatik (Alex Rempel) 1 Motivation Beispiel: Bildschirmpixel zeichnen Auflösung 800x600, d.h. insgesamt
C++ 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
DAP2-Programmierpraktikum Einführung in C++ (Teil 2)
DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und
C++ - 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
C++ 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
Programmiersprache 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
Tag 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)
einlesen 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
Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung
Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung Einfache Variablen Typen int, long, short, unsigned bool char float,
2. 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)
Programmierung 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
Grundlagen der Informatik 11. Zeiger
11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große
Grundlagen der Informatik 2. Typen
Grundlagen der Informatik 2. Typen Speicher, Speicherbedarf Ein-/Ausgabe Grundlagen der Informatik (Alex Rempel) 1 Wiederholung // root calculation #include #include using namespace
Teil 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
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for
5. Abgeleitete Datentypen
5. Abgeleitete Datentypen Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Felder (Arrays)!Zeichenketten (Strings)!Strukturen (Structs) Copyright: M. Gross, ETHZ, 2003 2 Arrays! Ein Array ist
DAP2 Praktikum Blatt 1
Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1
Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3
Michael Jugovac Dominik Kopczynski Jan Quadflieg Till Schäfer Stephan Windmüller Dortmund, den 30. Oktober 2014 Praktikum zur Vorlesung Einführung in die Programmierung WS 14/15 Blatt 3 Es können 12 (+5
Objektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
C++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14
C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung
Polymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
F 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
Programmieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff
Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen
GI Vektoren
Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung
Inhalt. 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
Klausur in Programmieren
Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)
Programmierkurs 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
Elementare Datentypen in C++
Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der
2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
1. 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
1. 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
Programmierkurs 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
Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1
Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany [email protected] Das C++ Typsystem simple structured integral enum
5.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
Felder (Arrays) und Zeiger (Pointers) - Teil I
Felder (Arrays) und Zeiger (Pointers) - Teil I Feldtypen, Sieb des Eratosthenes, Iteration, Zeigertypen, Zeigerarithmetik, dynamische Speicherverwaltung Felder: Motivation n Wir können jetzt über Zahlen
Einfü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
Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
Einführung in die C++ Programmierung für Ingenieure
Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF
Einfü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
RO-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
Tag 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!
3D Programmierpraktikum: Einführung in C++ - Teil 1
3D Programmierpraktikum: Einführung in C++ - Teil 1 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 27. April 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum
Dynamische Datentypen
Dynamische Datentypen Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel Tupel und Folgen o Wertebereich eines Structs / einer Klasse: T1 T2... Tk Werte sind k-tupel
Repetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6
Andre Droschinsky Ingo Schulz Dortmund, den 0. Dezember 2015 Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Block rot Es können 4 + 1 Punkte erreicht werden. Abgabedatum: 10. Dezember 2015 2:59 Uhr Hinweise
FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
Einfü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
Assoziative Container in C++ Christian Poulter
Assoziative Container in C++ Christian Poulter Seminar: Die Sprache C++ Mat-Nr.: 53 03 129 EMail: [email protected] Christian Poulter Assoziative Container in C++ Seite 1/10 Inhalt 1. Einleitung: Container...
Felder (Arrays) und Zeiger (Pointers) - Teil I
Felder (Arrays) und Zeiger (Pointers) - Teil I Felder: Motivation Wir können jetzt über Zahlen iterieren: for (int i=0; i
RO-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
Übersicht. Speichertypen. Speicherverwaltung und -nutzung. Programmieren in C
Übersicht Speichertypen Speicherverwaltung und -nutzung Speichertypen Beim Laden eines Programms in den Speicher (Programmausführung) kommen 3 verschiedene Speicherbereiche zum Einsatz: Text Segment (Code
Zeiger: 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
Einführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2009/0 : Technik vs. Iteration Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund 2 Definition (einfache,
Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.
Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende
Kapitel 6: Dynamische Speicherverwaltung
Kapitel 6: Dynamische Speicherverwaltung Dieses Kapitel beschreibt die Operatoren new und delete, mit denen dynamisch Speicher reserviert und freigegeben wird. Außerdem wird im Detail eingegangen auf:
Grundlagen 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,
Funktionales C++ zum Ersten
Funktionales C++ zum Ersten WiMa-Praktikum 1, Teil C++, Tag 1 Christoph Ott, Büro: Helmholtzstr.18, E22 Tel.: 50-23575, Mail: [email protected] Institut für Angewandte Informationsverarbeitung 26.08.08
3.2 Datentypen und Methoden
Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte
C- 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)
Programmieren in C++ Arrays, Strings und Zeigerarithmetik
Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
6 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
Inhalt. Peter Sobe 63. Felder in C
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Streuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern
Dynamische Speicherverwaltung
Dynamische Speicherverwaltung 1/ 23 Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Dynamische Speicherverwaltung 2/ 23 Gliederung 1 Allgemeines zur Speichernutzung 2 Ziele und Nutzen 3 Anwendung in
Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe
Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Arrays. 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
C-Pointer (Zeiger, Adressen) vs. C++ Referenzen
C-Pointer (Zeiger, Adressen) vs. C++ Referenzen Der Pointer (C/C++): In C/C++ ist der Pointer ein eigener Datentyp, der auf Variablen/Objekte zeigen kann. Indem man den Pointer dereferenziert, gewinnt
