Portierung von Java nach C

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Einführung in die Programmierung Zusammenfassung
Imperative Programmierung -Entwicklungswerkzeuge
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
SWITCH - Anweisung.
IF-ELSE-IF-Ketten Weiter mit PP..
ARRAY oder FELD oder VEKTOR
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Objekte und Arbeitsspeicher
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
DO...WHILE Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Imperative Programmierung Funktionen und Parameter
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
Einführung in Visual C++
DVG Ausnahmen. DVG Was sind Programmfehler? 4 Programm erzielt gar kein Ergebnis. 4 Berechnetes Ergebnis stimmt nicht mit dem erwarteten.
Einführung in C EDV1 - 03C-Einführung.
DVG Ausnahmen1 Ausnahmen. DVG Ausnahmen 2 Was sind Programmfehler? Programm erzielt gar kein Ergebnis. Berechnetes Ergebnis stimmt nicht.
DVG Einführung in Java1 Einführung in JAVA.
Einführung in C EDV1 - 04C-Einführung.
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Bubbelsort und Quicksort Vortrag von Rolf Heitzenröder
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Rekursive Funktionen (Fakultät)
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
2.4 Rekursion Klassifikation und Beispiele
Objektorientiertes Konstruieren
Einführung in JavaKara
Unterprogramme in JAVA
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Starten der Entwicklungsumgebung (IDE)
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
JOMP
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
2 Datenabstraktion Geheimnisprinzip:
Lernlandkarte OOP (ObjektOrientiertes Programmieren)
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Abteilung für Telekooperation Softwareentwicklung 2 UE WS 2008/09 SE2UE_ Ausnahmen (Exceptions)
Java Programme nur ein bisschen objektorientiert.
Hello World! Javakurs 2013 Arne Kappen
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Grundkurs Informatik mit Java
Schleifen mit der Turtle
 Präsentation transkript:

Portierung von Java nach C EDV1 - Portierung Java C

Verbindungen zwischen Java und C Warum Verbindung zwischen Java und C? Java und C haben unterschiedliche Vor- und Nachteile Java C Portabilität ++ + Geschwindigkeit des Programms - Standardisierung der GUI Standardisierung der Sprache Verfügbarkeit von Software Programmsicherheit Programmwartbarkeit EDV1 - Portierung Java C

Es ergibt sich die Notwendigkeit Java und C zu "verheiraten". In nutzerfreundlichen Anwendungen wird der weit Überwiegende Teil (z.B. 95%) des Programmtextes für die Oberfläche und die Behandlung von Fehlern und Ausnahmen benötigt. Der Rest (z.B. 5%) wird für die Realisierung des eigentlichen Inhaltes (z.B. der Numerik) entwickelt. Andererseits wird der weit überwiegende Teil der Rechenzeit (z.B. 99%) in einem sehr kleinen Teil des Quelltextes verbraucht. Der Rest (z.B. 1%) wird für die Realisierung der Oberfläche und für die Behandlung von Fehlern und Ausnahmen benötigt. Ein größeres Projekt besteht also in der Regel aus einem großen Teil in dem wenig Ressourcen benötigt werden, der aber sehr kompliziert zu entwickeln ist und einem kleinen Teil der die Ressourcen verbraucht aber relativ einfach strukturiert ist. Für die Entwicklung der Oberfläche eignet sich Java sehr gut. Für die Programmierung des numerischen Kernes eignet sich C (oder FORTRAN) besser. Es ergibt sich die Notwendigkeit Java und C zu "verheiraten". EDV1 - Portierung Java C

Umsetzung von Java nach C Die Entwicklung eines Algorithmus ist sehr günstig in Java zu realisieren. Wenn das Programm ausgereift ist kann es dann in C umgesetzt werden, um die notwendige Geschwindigkeit zu erreichen. Mögliche Vorgehensweise: Entwickeln und Testen des Programms in Java Feststellen der Ressourcen-kritischen Programmteile mit Hilfe eines Profilers Umsetzen der Ressourcen-kritischen Programmteile nach C EDV1 - Portierung Java C

QuickSort.java public class QuickSort { static long Vergleich = 0; static long Tausch = 0; static long Aufruf = 0; public static void QuickSort(double[] v) QuickSort(v, 0, v.length-1); } EDV1 - Portierung Java C

public static void QuickSort(double[] v, int l, int r){ Aufruf++; int i = 0; int j = 0; double x = 0; double h = 0; i = l; j = r; x = v[(l+r)/2]; do { while (v[i] < x) { i++; Vergleich++; } while (x < v[j]) { j--; Vergleich++; } if (i <= j) { h = v[i]; v[i] = v[j]; v[j] = h; i++; j--; Tausch++; } } while (i <= j); if (l < j) QuickSort(v, l, j); if (i < r) QuickSort(v, i, r); EDV1 - Portierung Java C

Umsetzung in C static long Vergleich = 0; static long Tausch = 0; static long Aufruf = 0; Umsetzung in C In einem Modul: int Vergleich; int Tausch; int Aufruf; In weiteren Modul: extern int Vergleich; extern int Tausch; extern int Aufruf; Die Initialisierung von extern-Variablen ist nicht erlaubt. Es muss also eine explizite Initialisierung im Programm stattfinden: Vergleich = 0; Tausch = 0; Aufruf = 0; EDV1 - Portierung Java C

Umsetzung in C Programmkopf: public static void QuickSort(double[] v) bzw. public static void QuickSort(double[] v,int l,int r) Umsetzung in C Programmkopf: void QuickSort(double[] v, int len-1) Der zweite Aufruf kann ersetzt werden durch: QuickSort(v+l,r-l); EDV1 - Portierung Java C V[0] V[1] V[l] V[r] V[len-2] V[len-1] V+l[0] V+l[r-l]

r +i,r-i Aufruf++; int i = 0; int j = 0; double x = 0; double h = 0; i = l; j = r; x = v[(l+r)/2]; do { while (v[i] < x) { i++; Vergleich++; } while (x < v[j]) { j--; Vergleich++; } if (i <= j) { h = v[i]; v[i] = v[j]; v[j] = h; i++; j--; Tausch++; } } while (i <= j); if (l < j) QuickSort(v, l, j ); if (i < r) QuickSort(v, i, r ); r EDV1 - Portierung Java C +i,r-i