Fachvortrag Crashkurs C Mit Hilfe von Java IPhone
- Slides: 93
Fachvortrag Crashkurs C++ Mit Hilfe von Java IPhone Alexis Popovski Serdar Korkmaz Canan Ucan Tuan Nguyen Dominic Engel
Fachvortrag Crashkurs C++ Mit Hilfe von Java IPhone Alexis Popovski Serdar Korkmaz Canan Ucan Tuan Nguyen Dominic Engel
Gliederung Vergleich Installation Konstruktoren/ Einführung Zeiger Speicher und und Fazit Grundaufbau Destruktoren Referenzen
Gliederung Vergleich und Fazit
Einführung
Entstehung Bjarne Stroustrup C als prozedurale Sprache Klassen von SIMULA Erscheinungsjahr: 1985
Entstehung Bjarne Stroustrup C als prozedurale Sprache Klassen von SIMULA Erscheinungsjahr: 1985
Entstehung Multiparadigmensprache Generisch Prozedural Objektorientiert
Multiparadigmensprache Generisch Prozedural Objektorientiert
Multiparadigmensprache Prozedurale Programmierung (POP) Programme bestehen aus einer (endlichen) Folge von Anweisungen Zur Strukturierung werden inhaltlich zusammenhängende (Teil-)Folgen von Anweisungen in Prozeduren zusammengefasst Prozeduren: Folge imperativer Anweisungen: Zuweisungen, Tests, Schleifen, Aufrufe Unterprozeduren Prozeduren sind Funktionen, die Argumente entgegennehmen & abhängige Rückgabewerte liefern typische POP-Sprachen: Fortran, C, COBOL, Pascal
Prozedurale Programmierung (POP) Programme bestehen aus einer (endlichen) Folge von Anweisungen Zur Strukturierung werden inhaltlich zusammenhängende (Teil-)Folgen von Anweisungen in Prozeduren zusammengefasst Prozeduren: Folge imperativer Anweisungen: Zuweisungen, Tests, Schleifen, Aufrufe Unterprozeduren Prozeduren sind Funktionen, die Argumente entgegennehmen & abhängige Rückgabewerte liefern typische POP-Sprachen: Fortran, C, COBOL, Pascal
Prozedurale Programmierung (POP) vs. Objektorientierte Programmierung (OOP) Objektorientierte Programmierung soll Schwierigkeiten, die bei der prozeduralen Programmierung entstehen können, reduzieren Hauptmodule: Klassen und nicht Prozeduren Erstellung von Klassen und Objekten Modellierung von realen Objekten
Prozedurale Programmierung (POP) vs. Objektorientierte Programmierung (OOP) Objektorientierte Programmierung soll Schwierigkeiten, die bei der prozeduralen Programmierung entstehen können, reduzieren Hauptmodule: Klassen und nicht Prozeduren Erstellung von Klassen und Objekten Modellierung von realen Objekten
Objektorientierte Programmierung Prozedurale Programmierung (POP)(OOP) vs. Objektorientierte Programmierung (OOP) Kapselung Objekt kapselt seine Attribute und Methoden Vererbung Eine abgeleitete Klasse erbt alle Eigenschaften ihrer Basisklasse Polymorphie Objekte einer Instanz verändern zu Laufzeit ihr Verhalten
Objektorientierte Programmierung (OOP) Kapselung Objekt kapselt seine Attribute und Methoden Vererbung Eine abgeleitete Klasse erbt alle Eigenschaften ihrer Basisklasse Polymorphie Objekte einer Instanz verändern zu Laufzeit ihr Verhalten
Generische Programmierung Objektorientierte Programmierung (OOP) Verfahren zur Entwicklung wiederverwendbarer Software-Bibliotheken Funktionen werden für unterschiedliche Datentypen möglichst allgemein entworfen Implementierung erfolgt durch das Konzept generischer Typen bzw. Templates Für Template unerheblich, ob es Zahlen oder Männer vertauschen soll (Zeile 11 & 12) Selbst Typ-Parameter T (Zeile 1) muss nicht spezifiziert werden Compiler kann diesen aus Funktionsargumenten (Zeile 11 & 12) ableiten
Generische Programmierung Verfahren zur Entwicklung wiederverwendbarer Software-Bibliotheken Funktionen werden für unterschiedliche Datentypen möglichst allgemein entworfen Implementierung erfolgt durch das Konzept generischer Typen bzw. Templates Für Template unerheblich, ob es Zahlen oder Männer vertauschen soll (Zeile 11 & 12) Selbst Typ-Parameter T (Zeile 1) muss nicht spezifiziert werden Compiler kann diesen aus Funktionsargumenten (Zeile 11 & 12) ableiten
Wann wird C++ verwendet? Wann eignet sich Java mehr? Generische Programmierung Geeigneter für Software zur Manipulation auf Hardware-Ebene „sichere Sprache“ Maschinennähe: Schneller Zugriff auf RAM, Festplatte, CPU usw. Anwendungsprogramme -> Beliebt bei gewerblicher Softwareerstellung Eigene Schnittstelle für grafische Benutzeroberfläche Systemprogramme Grundlage für Android-Entwicklung Frage der Effizienz für hohe Effizienz nimmt C++-Programmierung erhebliche Umstände in Kauf Sofern Optimierung zweitrangig -> Java
Wann wird C++ verwendet? Wann eignet sich Java mehr? Geeigneter für Software zur Manipulation auf Hardware-Ebene „sichere Sprache“ Maschinennähe: Schneller Zugriff auf RAM, Festplatte, CPU usw. Anwendungsprogramme -> Beliebt bei gewerblicher Softwareerstellung Eigene Schnittstelle für grafische Benutzeroberfläche Systemprogramme Grundlage für Android-Entwicklung Frage der Effizienz für hohe Effizienz nimmt C++-Programmierung erhebliche Umstände in Kauf Sofern Optimierung zweitrangig -> Java
Installation und Grundaufbau
Compiler - Auswahl Nicht nur ein Compiler wie bei Java Clang GCC MSVC (MS Visual C++)
Compiler - Auswahl Nicht nur ein Compiler wie bei Java Clang GCC MSVC (MS Visual C++)
Compiler - Auswahl Editor - Auswahl CLion Visual Studio XCode Visual Studio Code
Editor - Auswahl CLion Visual Studio XCode Visual Studio Code
Editor - Auswahl Aufteilung in. h und. cpp – Datein Deklaration Implementierung
Aufteilung in. h und. cpp – Datein Deklaration Implementierung
Aufteilung Live Demo in. h und. cpp – Datein Beispiele im Anhang
Live Demo
Zeiger und Referenzen
Zeiger und Referenzen
Zeiger und Referenzen Sind ungefähr das Gleiche, aber wiederum auch nicht Sehr effizient zusammen, funktionieren jeweils aber auch alleine Abstrakt gesagt, sind Zeiger und Referenzen wie Bruder und Schwester Zeiger werden mit einem Asterisk (*) gekennzeichnet Referenzen werden mit einem Empersand (&) gekennzeichnet
Zeiger und Referenzen string a = "hi"; 0 x 00 AZWE 3… void do. Something(){} 0 x 014 FVC… double a = 5. 5; Load Disc 0 x 12 ADG 56… 0 x 014 FVC… int a = 5; Instructions 0 x 00 AZWE 3… 0 x 00 BFC…
Zeiger und Referenzen string a = "hi"; 0 x 00 AZWE 3… void do. Something(){} 0 x 014 FVC… double a = 5. 5; Load Disc 0 x 12 ADG 56… 0 x 014 FVC… int a = 5; Instructions 0 x 00 AZWE 3… 0 x 00 BFC…
Zeiger und Referenzen Straße repräsentiert einen Speicherblock, mit einem Start und einem Ende Ein Computer braucht, für alles was wir an einem Computer tun, Speicher Denn alles, was wir an einem Computer tun, wird in den Speicher geschoben und dort ausgeführt Alles, was in den Speicher geschoben wird, bekommt eine Adresse, auf die wir mit dem Zeiger zugreifen können(um Speicher zu managen und zu manipulieren)
Was ist ein Zeiger? Ganz einfach: Ein Zeiger ist einfach ein Integer, der eine Speicheradresse enthält Mehr nicht!
Was ist sind ein Referenzen? Zeiger? Eine Art „Erweiterung“ für Zeiger Ein Verweis auf eine bereits existierende Variable Belegen keinen neuen Speicher Referenzen referenzieren auf ein bereits existierendes Objekt …und können nicht nur deklariert werden, sondern müssen sofort initialisiert werden
Was Demo sind Referenzen? Live Beispiele im Anhang
Live Demo
Konstruktoren/ Destruktoren
Konstruktor & Destruktor class Foo { public: Foo(); ~Foo(); }; // Konstruktor (ctor) // Destruktor (dtor) Aufgaben des Konstruktors Objekt in validen initialen Zustand überführen Benötigte Ressourcen akquirieren Aufgabe des Destruktors Ressourcen ggf. wieder freigeben
Konstruktor & Destruktor class Foo { public: Foo(); ~Foo(); }; // Konstruktor (ctor) // Destruktor (dtor) Aufgaben des Konstruktors Objekt in validen initialen Zustand überführen Benötigte Ressourcen akquirieren Aufgabe des Destruktors Ressourcen ggf. wieder freigeben
Konstruktor & Destruktor Scope und Lebenszeit von Objekten
Konstruktor & Destruktor Scope und Lebenszeit von Objekten
Konstruktor & Destruktor Scope und Lebenszeit von Objekten
Konstruktor & Destruktor Scope und Lebenszeit von Objekten
Konstruktor & Destruktor Das RAII-Prinzip RAII — Resource Acquisition Is Initialization Resource Ownership: Objekt besitzt Ressource Konstruktor holt / alloziert Ressource Destruktor gibt Ressource wieder frei Essentiell für Exception Safety Typische Ressourcen: Speicher, Datei, Thread, Hardware, Grafikpuffer- oder Texturobjekt etc.
Konstruktor & Destruktor Das RAII-Prinzip RAII — Resource Acquisition Is Initialization Resource Ownership: Objekt besitzt Ressource Konstruktor holt / alloziert Ressource Destruktor gibt Ressource wieder frei Essentiell für Exception Safety Typische Ressourcen: Speicher, Datei, Thread, Hardware, Grafikpuffer- oder Texturobjekt etc.
Konstruktor & Destruktor Das RAII-Prinzip: Einfaches Beispiel mit Speicher als Ressource
Konstruktor & Destruktor Das RAII-Prinzip: Einfaches Beispiel mit Speicher als Ressource
Speicher
Speicher
Speicher aus Sicht von Java (dieser Platz wurde absichtlich freigelassen)
Speicher aus Sicht von Java (dieser Platz wurde absichtlich freigelassen)
Speicher aus Sicht von C++ Java Heap Dynamische Speicherverwaltung Stack Funktionsaufrufe, lokale Variablen Statischer Speicher Programmspeicher Globale Variablen Das eigentliche Programm (z. B. Anweisungen)
Speicher aus Sicht von C++ Heap Dynamische Speicherverwaltung Stack Funktionsaufrufe, lokale Variablen Statischer Speicher Programmspeicher Globale Variablen Das eigentliche Programm (z. B. Anweisungen)
Stack Speicher aus Sicht von C++ Für Speicher auf dem Stack muss man nichts explizit anfordern oder freigeben Automatisch LIFO- Datenstruktur: „Last In First Out“ effizient Festgelegte Größe, kann in einer IDE oder direkt am Betriebssystem verändert werden
Stack Für Speicher auf dem Stack muss man nichts explizit anfordern oder freigeben Automatisch LIFO- Datenstruktur: „Last In First Out“ effizient Festgelegte Größe, kann in einer IDE oder direkt am Betriebssystem verändert werden
Beispiel Stack Vec 2 do. Something(Vec 2 param) { Vec 2 lokal(1, 7); . . . return Vec 2(. . . ); } Stack Pointer : Beginn des freien Speichers Frame Pointer : Start des aktuellen Stack Frames SP FP Call Stack int main() { Vec 2 a(2, 2); Vec 2 b = do. Something(a); }
Beispiel Vec 2 do. Something(Vec 2 param) { Vec 2 lokal(1, 7); . . . return Vec 2(. . . ); } a (2, 2) SP FP Call Stack int main() { Vec 2 a(2, 2); Vec 2 b = do. Something(a); }
Beispiel o Reservierung von Speicher auf dem Call Stack für ein Vec 2 Objekt und Initialisierung von a (2, 2) o SP wird um size. Of(Vec 2) erhöht. a (2, 2) SP o Da Vec 2 nur zwei int- Werte verwaltet hat dieser die Größe von 8 bytes, also erhöht sich der SP um 8 bytes. FP Call Stack
Beispiel b a ? SP (2, 2) FP Call Stack Vec 2 do. Something(Vec 2 param) { Vec 2 lokal(1, 7); . . . return Vec 2(. . . ); } int main() { Vec 2 a(2, 2); Vec 2 b = do. Something(a); }
Beispiel o Es wird für Vec 2 b Speicher auf dem Stack reserviert aber noch nicht initialisiert o Um b initialisieren zu können müssen wir b ? a (2, 2) SP die Methode do. Something(. . ) aufrufen o SP wird wieder um die Größe von Vec 2 erhöht FP Call Stack
Beispiel FP 0 x. FF… RV ? b ? a (2, 2) Call Stack SP FP Vec 2 do. Something(Vec 2 param) { Vec 2 lokal(1, 7); . . . return Vec 2(. . . ); } int main() { Vec 2 a(2, 2); Vec 2 b = do. Something(a); }
Beispiel o Vor dem Verlassen des Scopes wird folgendes vorbereitet: FP 0 x. FF… RV ? b ? a (2, 2) Call Stack SP o RV: Speicherplatz für den return Value wird reserviert o RP: Rücksprungadresse wird gemerkt FP o FP: Frame Pointer Adresse wird gemerkt o FP wird auf den neuen Scope gesetzt o SP wird ebenfalls erhöht auf den nächsten freien Speicherbereich gesetzt
Beispiel. . . FP 0 x. FF… RV RV b ? a (2, 2) Call Stack SP FP Vec 2 do. Something(Vec 2 param) { Vec 2 lokal(1, 7); . . . return Vec 2(. . . ); } int main() { Vec 2 a(2, 2); Vec 2 b = do. Something(a); }
Beispiel. . . FP 0 x. FF… RV RV b ? a (2, 2) Call Stack o Für alle Parameter und lokale Variablen SP werden ebenfalls Speicher auf dem Stack reserviert (Hier für die Vereinfachung mit „…“ dargestellt) FP o Der zurückgegebener Wert wird in RV gespeichert
Beispiel. . . FP 0 x. FF… RV b a RV RV SP (2, 2) FP Call Stack Vec 2 do. Something(Vec 2 param) { Vec 2 lokal(1, 7); . . . return Vec 2(. . . ); } int main() { Vec 2 a(2, 2); Vec 2 b = do. Something(a); }
Beispiel. . . FP 0 x. FF… RV o der Stack räumt auf o beim nächsten Aufruf werden die Daten überschrieben RV b RV a (2, 2) SP o SP und FP zeigen wieder auf die Adressen vor dem Methodenaufruf FP Call Stack o b wird initialisiert mit RV
Beispiel. . . FP 0 x. FF… RV o der Stack räumt auf o beim nächsten Aufruf werden die Daten überschrieben RV b RV a (2, 2) SP o SP und FP zeigen wieder auf die Adressen vor dem Methodenaufruf FP Call Stack o b wird initialisiert mit RV
Fazit Stack Beispiel Begrenzte Größe LIFO Datenstruktur Wächst und schrumpft im Programmverlauf Kein explizites Freigeben des Speichers notwendig Sehr effizient
Fazit Stack Begrenzte Größe LIFO Datenstruktur Wächst und schrumpft im Programmverlauf Kein explizites Freigeben des Speichers notwendig Sehr effizient
Fazit Stack Frage an euch Keine Referenzen (oder Pointer) auf ein lokales Objekt aus der Funktion heraus exportieren Wenn Scope endet wird „result“ vom Stack geräumt und die übergebene Referenz zeigt auf einen ungültigen Speicher
Frage an euch Keine Referenzen (oder Pointer) auf ein lokales Objekt aus der Funktion heraus exportieren Wenn Scope endet wird „result“ vom Stack geräumt und die übergebene Referenz zeigt auf einen ungültigen Speicher
Frage an euch Heap Dynamische Speicherverwaltung Heap Stack Statischer Speicher Programmspeicher o Dynamisch allozierte Objekte : Vec 2 bsp = new Vec 2(2, 2); o Alles was mit new erzeugt wird, wird auf dem Heap gespeichert o Heap ist wie ein Haufen, nicht strukturiert wie ein Stack o Heap kann während Laufzeit dynamisch wachsen
Heap Vec 2* p = new Vec 2(2, 2); o Zur Laufzeit wird nach einem freien Speicherplatz auf dem Heap angefragt ? o In unserem Beispiel von einer Bytegröße von size. Of(Vec 2) o Heap reserviert Speicherplatz und liefert Adresse zurück Heap
Heap Vec 2* p = new Vec 2(2, 2); o Zur Laufzeit wird nach einem freien Speicherplatz auf dem Heap angefragt (2, 2) o In unserem Beispiel von einer Bytegröße von size. Of(Vec 2) o Heap reserviert Speicherplatz und liefert Adresse zurück o Konstruktor wird aufgerufen und Objekt wird initialisiert Heap
Heap Vec 2* p = new Vec 2(2, 2); o Durch Zeiger haben wir Zugriff auf Objekt auf dem Heap (2, 2) o p speichert die zurückgegebene Adresse auf dem Stack * Heap Stack p o p ist vom Typ Vec 2*, also ein Zeiger auf Vec 2
Heap Vec 2* p = new Vec 2[n]; o Reserviert zusammenhängenden Speicherblock für n Objekte vom Typ Vec 2 (funktioniert wie ein Array) o n muss nicht zur Compilezeit bekannt sein (0, 0) o Kann nur Default-Konstruktor von Vec 2 aufrufen (0, 0) o p hat nur Speicheradresse des ersten Objekts * Heap Stack p o Programmierer muss die Größe des Arrays selber verwalten, denn der Zeiger kann dies nicht
Heap Vec 2* p = new Vec 2[n]; o New erfordert immer ein delete, um den Speicherplatz wieder freizugeben (0, 0) o Mit delete[ ] p geben wir den Speicher in unserem Beispielwieder frei (0, 0) o ABER der Zeiger existiert nach wie vor * Heap Stack p o Dangling Pointer : zeigt auf bereits freigegebenen Speicher
Heap Vec 2* p = new Vec 2[n]; o New erfordert immer ein delete, um den Speicherplatz wieder freizugeben (0, 0) o Mit delete[ ] p geben wir den Speicher wieder frei (0, 0) o ABER der Zeiger existiert nach wie vor (0, 0) * Heap Stack p o Den Zeiger auf nullptr setzen so zeigt er auf nichts
Heap Vec 2* p = new Vec 2[n]; o Vergessen wir das delete haben wir einen memory leak (0, 0) o Der Zeiger p referenziert jetzt auf ein neues Objekt auf dem Heap (0, 0) o Der Speicher von unserem Array kann nicht mehr freigegeben werden (0, 0) (2, 3) Heap * Stack p o Erst beim Programmende wird der Speicher wieder freigegeben
Heap Vec 2* p = new Vec 2[n]; o Vergessen wir das delete haben wir einen memory leak (0, 0) o Der Zeiger p referenziert jetzt auf ein neues Objekt auf dem Heap (0, 0) o Der Speicher von unserem Array kann nicht mehr freigegeben werden (0, 0) (2, 3) Heap * Stack p o Erst beim Programmende wird der Speicher wieder freigegeben
Fazit Stack und Heap Stack hat festgelegte Größe, Heap wächst dynamisch zur Laufzeit Stack ist selbstorganisierend und effizient, Heap erfordert dass der Programmierer an die Speicherfreigabe denkt Heap erfordert in C++ immer Zeiger Zugriff langsamer
Fazit Stack und Heap Stack hat festgelegte Größe, Heap wächst dynamisch zur Laufzeit Stack ist selbstorganisierend und effizient, Heap erfordert dass der Programmierer an die Speicherfreigabe denkt Heap erfordert in C++ immer Zeiger Zugriff langsamer
Fazit Stackund und. Konstruktion Heap Allokation Malloc() und placement new Was passiert hier? Obj* o = new Obj(1, 2, 3); 1. Speicher für ein Objekt vom Typ Obj wird allokiert 2. Konstruktor von Obj(1, 2, 3) wird aufgerufen
Allokation und Konstruktion Malloc() und placement new Was passiert hier? Obj* o = new Obj(1, 2, 3); 1. Speicher für ein Objekt vom Typ Obj wird allokiert 2. Konstruktor von Obj(1, 2, 3) wird aufgerufen
Allokation und Konstruktion Manchmal macht es Sinn diese beiden Schritte zu trennen 1. Speicher für ein Objekt vom Typ Obj mit malloc() allokieren: Obj* speicher = static_cast<Obj*>(malloc(size. Of(Obj))); 2. Konstruktoraufruf mit placement new: new(speicher) Obj(1, 2, 3);
Allokation und Konstruktion Manchmal macht es Sinn diese beiden Schritte zu trennen 1. Speicher für ein Objekt vom Typ Obj mit malloc() allokieren: Obj* speicher = static_cast<Obj*>(malloc(size. Of(Obj))); 2. Konstruktoraufruf mit placement new: new(speicher) Obj(1, 2, 3);
Vergleich und Fazit
C++ und Java Fazit ÄHNLICHKEITEN VEREINFACHUNGEN IN JAVA o Primitive Datentypen o Keine Pointer – nur Referenzen o Syntax: Kontrollstrukturen o Keine Funktionen – static Methoden o Klassen, Sichtbarkeit(public, private) o Keine globalen Variablen – public static Variablen nutzen o Multiple Konstruktoren, this, new o Keine Destruktoren – garbage collection und finalize() o Packages in Java/namespaces in C++ o Keine Header-Dateien – stattdessen Interfaces o Keine Operatorenüberladung – nur Methodenüberladung o Keine Mehrfachvererbung – dafür mehrfache Implementierung von Interfaces möglich
C++ und Java Fazit ÄHNLICHKEITEN VEREINFACHUNGEN IN JAVA o Primitive Datentypen o Keine Pointer – nur Referenzen o Syntax: Kontrollstrukturen o Keine Funktionen – static Methoden o Klassen, Sichtbarkeit(public, private) o Keine globalen Variablen – public static Variablen nutzen o Multiple Konstruktoren, this, new o Keine Destruktoren – garbage collection und finalize() o Packages in Java/namespaces in C++ o Keine Header-Dateien – stattdessen Interfaces o Keine Operatorenüberladung – nur Methodenüberladung o Keine Mehrfachvererbung – dafür mehrfache Implementierung von Interfaces möglich
Danke für Eure Aufmerksamkeit
- Destruktor java
- Blue ocean idea
- Kok play на айфон
- Tide alert app
- Od abakusa do iphone
- Banque populaire atlantiqu
- Analisis forense iphone
- Analysis apple fy sony activision microsofthiggins
- Introduction to xamarin
- Farida komalasari
- Erste hilfe ablaufschema
- Schreib sätze. nimm die
- Lehrbeauftragter erste hilfe
- Lehrbeauftragter erste hilfe
- Wwh
- Ersthelfer unterweisung
- Erste hilfe bei elektrounfällen tafel
- Erste hilfe bg /uk lübeck
- Hilfe
- Notfallcheck erste hilfe
- Erste hilfe
- Rettungskette erste hilfe
- Lagerungsarten erste hilfe
- Erste hilfe rettungskette
- Raumschotkurs
- Erasmus von rotterdam beeinflusst von
- V
- Tysk grammatik ich bin du bist
- Griffith versuch
- Türme von hanoi rekursiv java
- Java ki programmieren
- Java swing form example
- Java import java.util.*
- Swing vs awt
- Java import scanner
- Import java.io.*
- Java import java.util.*
- Java random
- Import java.io.*
- Import java util
- Java import java.io.*
- Perbedaan java swing dan awt
- Import java.awt.* import java.awt.event.*
- Java interpreter
- Ejb remote vs local
- Gustav falke zwei
- Architektura systemu operacyjnego
- Gegenteil von wurzel ziehen
- Site:slidetodoc.com
- Einstellung in die pwb auf forderungen
- Wer ist das
- Unternehmensberater weichs consulting
- Salze in wasser lösen
- Vorbild eigenschaften
- Ptt levels
- Von thunen model frq
- Von thunens model
- Von thunen model definition
- Na von model
- Von thünen model definition ap human geography
- Von neumannovo schéma
- Von neumannova schéma počítača
- Von neumann architecture characteristics
- Von karman integral equation
- Siegfried fietz von guten mächten wunderbar geborgen text
- Jemanden von der bettkante stoßen
- Virtualisierung definition
- Fructose ringschluss
- Ulrich von jungingen
- Gió vờn cánh hoa bay
- Wärmeleitfähigkeit von gasen
- Von thunen ring
- Von thunen model rings explained
- Thünen modeli
- Von thunen model
- Von neumann model components
- The reasonable man adapts himself to the world
- Klemons von metternich
- John von neumann institute
- Werner von habsburg
- Tensiones de von mises
- Teori von thunen
- Schwarzer freitag suva
- Verwertung von kanalrückständen
- Humboldt sprachtheorie
- Sicheres befahren von behältern
- Anna rinder von beckerath
- Von hippel lindau hastalığı
- Fliehen präposition
- John von neumann random number generator
- Artikel ort
- Le chatelier prinzip konzentration
- John von neumann schema
- Akkommodationsbereich