2014-Programmieren in C/ C++

PfN mit mathem. Anwendung

PfN mit mathem. Anwendung


N. W.
Diese Lernkarten behandeln fortgeschrittene C/C++-Programmierung auf Universitätsniveau, mit Fokus auf Container, Speicherverwaltung und Kompilierung. Sie decken Themen wie Containerklassen, assoziative Container, sequentielle Container und deren Funktionen ab, sowie die Kompilierungsschritte von C-Programmen und die Bestimmung der Maschinengenauigkeit ε. Ideal für Studierende, die ihre Kenntnisse in C/C++ vertiefen und verstehen möchten, wie Container effizient genutzt und Programme kompiliert werden.
Cartes-fiches
18
Utilisateurs
3
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
24.03.2017 / 13.08.2024

Cartes-fiches

Notieren sie ein Code-Fragment, mit dessen Hilfe man ε für den Datentyp double bestimmen kann.

Für einen Gleitkommazahl T, wird ε wie folgt berechnet:

T  eps;
for (eps = (T) 1.0; (T) 1.0 + eps > (T) 1.0; eps /= ((T) 2.0) /*  Nothing  */;

Wie ist die Maschinengenauigkeit ε definiert?

Schritte der Kompilierung eines C-Programms:

Was passiert während dem 4. Schritt?

program.o --linker--> program.x

Schritte der Kompilierung eines C-Programms:

Was passiert während dem 3. Schritt?

program.s --assembler--> program.o

Schritte der Kompilierung eines C-Programms:

Was passiert während dem 2. Schritt?

program.i --compiler--> program.s

Schritte der Kompilierung eines C-Programms:

Was passiert während dem 1. Schritt?

program.c --preprocessor--> program.i

In welche Schritte gliedert sich die Kompilierung eines C-Programms?

Für welche Gleitkommazahlen T, kann ε wie folgt berechnet werden:

T  eps;
for (eps = (T) 1.0; (T) 1.0 + eps > (T) 1.0; eps /= (T) 2.0) /*  Nothing  */;

Was ist richtig?

Welche Funktionen werden in C zur Speicherverwaltung verwendet?

Welche Funktionen werden in C++ zur Speicherverwaltung verwendet?

Nennen Sie drei der besprochenen Container-Klassen aus der STL und beschreiben Sie kurz deren Anwedungsbereich.

Ein vector ist im Wesentlichen ein dynamisches Feld
  -> kann Größe dynamisch verändern
  -> effizienter Zugriff auf beliebiges Objekt innerhalb des Feldes unter direkter Adressierung
     -->man spricht daher auch von konstantem Aufwand, da sich die Zugriffszeit nicht ändert

Der Container deque beherrscht ebenso wie vector das schnelle Einfügen von Objekten am Ende und dazu noch am Anfang des Feldes. Hingegen ist auch hier das Einfügen von Objekten in der Mitte sehr aufwendig. Auch dieser Containertyp unterstützt Random-Access-Operatoren, d.h. der Zugriff auf ein beliebiges Element ist sehr effizient.

Der dritte sequenzielle Container ist der list-Container. Dieser Typ unterstützt nur sogenannte Bidirectional-Iteratoren. Dadurch ist ein direkter Indexzugriff wie bei den anderen Containern nicht möglich. Der Vorteil dieses Containers ist allerdings das effiziente Einfügen und Entfernen von Objekten an beliebigen Positionen des Feldes.

 

Sequentielle Containerklassen?

Assoziative Containerklassen?

Containeradapterklassen (keine C++ Standardbibliothek-Iteratoren)?

Welcher Container hat welche Funktionen?

...vector deque list...

Was ist wahr?

Was ist wahr?

Étudier