Systemnahe Programmierung in C/C++

Größe: px
Ab Seite anzeigen:

Download "Systemnahe Programmierung in C/C++"

Transkript

1 Systemnahe Programmierung in C/C++ Fehlerbehandlung, Internationalisierung und Programmende Knut Stolze Lehrstuhl für Datenbanken und Informationssysteme Fakultät für Mathematik und Informatik Knut Stolze (DBIS) C/C++ Programmierung / 36

2 Agenda 1 Fehlerbehandlung Grundsatz Mechanismen zur Fehlererkennung Tipps & Hinweise 2 Internationalisierung Internationalisierung vs. Lokalisierung X/Open Message Catalogs GNU gettext 3 Programmende 4 Aufgaben Knut Stolze (DBIS) C/C++ Programmierung / 36

3 Outline 1 Fehlerbehandlung Grundsatz Mechanismen zur Fehlererkennung Tipps & Hinweise 2 Internationalisierung Internationalisierung vs. Lokalisierung X/Open Message Catalogs GNU gettext 3 Programmende 4 Aufgaben Knut Stolze (DBIS) C/C++ Programmierung / 36

4 Grundsatz beim Programmieren Jeder(!) Funktionsaufruf kann Fehler/Warnungen produzieren. = Also ist nach jedem Funktionsaufruf auf Fehler zu prüfen. (Ausnahmen bestätigen die Regel.) Knut Stolze (DBIS) C/C++ Programmierung / 36

5 Grundsatz beim Programmieren Jeder(!) Funktionsaufruf kann Fehler/Warnungen produzieren. = Also ist nach jedem Funktionsaufruf auf Fehler zu prüfen. (Ausnahmen bestätigen die Regel.) Knut Stolze (DBIS) C/C++ Programmierung / 36

6 Grundsatz beim Programmieren Jeder(!) Funktionsaufruf kann Fehler/Warnungen produzieren. = Also ist nach jedem Funktionsaufruf auf Fehler zu prüfen. (Ausnahmen bestätigen die Regel.) Knut Stolze (DBIS) C/C++ Programmierung / 36

7 Fehler von Systemfunktionen Alle Systemfunktionen geben Fehlerinformationen zurück, z. B. strchr NULL-Zeiger fopen NULL-Zeiger malloc NULL-Zeiger strtol 0 shmget -1 Zusätzliche Informationen werden über errno (vom Typ int) an Anwendung übermittelt Knut Stolze (DBIS) C/C++ Programmierung / 36

8 errno Header <errno.h> muss eingebunden werden Wird von keiner Systemfunktion auf 0 gesetzt, aber jede Funktion kann potentiell errno ändern errno in Fehlerbehandlung sichern bzw. Kopie verwenden Wenn Funktion 1 als valides Ergebnis liefern kann errno auf 0 setzen vor Funktionsaufruf errno ist keine explizit deklarierte (globale) Variable, aber modifiable lvalue Wäre nicht re-entrant & thread-safe Abhängig von Plattform und Implementierung, z. B. von libc Linux/Cygwin: Als Macro implementiert: #define errno (* errno_location()) Knut Stolze (DBIS) C/C++ Programmierung / 36

9 errno Header <errno.h> muss eingebunden werden Wird von keiner Systemfunktion auf 0 gesetzt, aber jede Funktion kann potentiell errno ändern errno in Fehlerbehandlung sichern bzw. Kopie verwenden Wenn Funktion 1 als valides Ergebnis liefern kann errno auf 0 setzen vor Funktionsaufruf errno ist keine explizit deklarierte (globale) Variable, aber modifiable lvalue Wäre nicht re-entrant & thread-safe Abhängig von Plattform und Implementierung, z. B. von libc Linux/Cygwin: Als Macro implementiert: #define errno (* errno_location()) Knut Stolze (DBIS) C/C++ Programmierung / 36

10 errno Header <errno.h> muss eingebunden werden Wird von keiner Systemfunktion auf 0 gesetzt, aber jede Funktion kann potentiell errno ändern errno in Fehlerbehandlung sichern bzw. Kopie verwenden Wenn Funktion 1 als valides Ergebnis liefern kann errno auf 0 setzen vor Funktionsaufruf errno ist keine explizit deklarierte (globale) Variable, aber modifiable lvalue Wäre nicht re-entrant & thread-safe Abhängig von Plattform und Implementierung, z. B. von libc Linux/Cygwin: Als Macro implementiert: #define errno (* errno_location()) Knut Stolze (DBIS) C/C++ Programmierung / 36

11 errno Header <errno.h> muss eingebunden werden Wird von keiner Systemfunktion auf 0 gesetzt, aber jede Funktion kann potentiell errno ändern errno in Fehlerbehandlung sichern bzw. Kopie verwenden Wenn Funktion 1 als valides Ergebnis liefern kann errno auf 0 setzen vor Funktionsaufruf errno ist keine explizit deklarierte (globale) Variable, aber modifiable lvalue Wäre nicht re-entrant & thread-safe Abhängig von Plattform und Implementierung, z. B. von libc Linux/Cygwin: Als Macro implementiert: #define errno (* errno_location()) Knut Stolze (DBIS) C/C++ Programmierung / 36

12 errno (cont.) Jeder Thread eines Prozesses hat eigene errno Definitionen der Fehlercodes in /usr/include/errno.h, z. B. #define EPERM #define ENOENT #define ESRCH #define EINTR #define EIO 1 // Operation not perm. 2 // No such file or dir 3 // No such process 4 // Interrupted call 5 // I/O error Fehlercodes können systemabhängig sein Immer Macros wie EPERM etc. verwenden Knut Stolze (DBIS) C/C++ Programmierung / 36

13 strerror et al. strerror bildet Fehlercode (errno) auf Text ab Aktuelle Locale wird verwendet Nutzt globalen Systempuffer String sollte nicht direkt modifiziert werden; kann Konstante sein String in Speicherblock der Anwendung kopieren Wird nie von Systemfunktionen selbst aufgerufen strerror_r sehr ähnlich zu strerror Nutzt von Anwendung bereitgestellter Puffer Ist thread-safe perror schreibt Meldung auf Standardfehlerausgabe (stderr) NULL-Zeiger oder leerer String: Ergebnis von strerror() wird ausgegeben In Bibliotheken üblicherweise nicht sehr brauchbar Späterer Einsatz nicht klar; Existenz von stderr nicht gesichert Knut Stolze (DBIS) C/C++ Programmierung / 36

14 strerror et al. strerror bildet Fehlercode (errno) auf Text ab Aktuelle Locale wird verwendet Nutzt globalen Systempuffer String sollte nicht direkt modifiziert werden; kann Konstante sein String in Speicherblock der Anwendung kopieren Wird nie von Systemfunktionen selbst aufgerufen strerror_r sehr ähnlich zu strerror Nutzt von Anwendung bereitgestellter Puffer Ist thread-safe perror schreibt Meldung auf Standardfehlerausgabe (stderr) NULL-Zeiger oder leerer String: Ergebnis von strerror() wird ausgegeben In Bibliotheken üblicherweise nicht sehr brauchbar Späterer Einsatz nicht klar; Existenz von stderr nicht gesichert Knut Stolze (DBIS) C/C++ Programmierung / 36

15 strerror et al. strerror bildet Fehlercode (errno) auf Text ab Aktuelle Locale wird verwendet Nutzt globalen Systempuffer String sollte nicht direkt modifiziert werden; kann Konstante sein String in Speicherblock der Anwendung kopieren Wird nie von Systemfunktionen selbst aufgerufen strerror_r sehr ähnlich zu strerror Nutzt von Anwendung bereitgestellter Puffer Ist thread-safe perror schreibt Meldung auf Standardfehlerausgabe (stderr) NULL-Zeiger oder leerer String: Ergebnis von strerror() wird ausgegeben In Bibliotheken üblicherweise nicht sehr brauchbar Späterer Einsatz nicht klar; Existenz von stderr nicht gesichert Knut Stolze (DBIS) C/C++ Programmierung / 36

16 Tipps Vorsicht bei geschachtelten Funktionen strcpy(malloc(strlen(my_str)+1, my_str)); malloc kann natürlich fehlschlagen strcpy würde auf NULL-Zeiger arbeiten Einzelne Schritte separieren size_t str_len = strlen(my_str); char *ptr = (char *)malloc(str_len); if (!ptr) /* Fehlerbehandlung */ strcpy(ptr, my_str); Knut Stolze (DBIS) C/C++ Programmierung / 36

17 Beispiel DB2 Code sqlzrc myfunction(...) { sqlzrc rc = SQL_OK; char *buffer = NULL;... buffer = (char *)malloc(length); if (buffer!= NULL) { rc = SQLZ_OUT_OF_MEMORY; goto cleanup; } Knut Stolze (DBIS) C/C++ Programmierung / 36

18 Beispiel DB2 Code (cont.) rc = sqluimpr(...); if (rc!= SQL_OK) { goto cleanup; }... } cleanup: if (buffer!= NULL) { free(buffer); } Knut Stolze (DBIS) C/C++ Programmierung / 36

19 Fehlerbehandlung in Anwendungen Im Fehlerfall muss jede Funktion einen wohldefinierten Zustand hinterlassen, z. B. Allokierten Speicher wieder freigeben Geänderte Signal-Handler zurücksetzen Fehlermeldungen und -informationen setzen Nie, nie und nie exit und abort verwenden!! Funktion kann (irgendwann) in Bibliothek landen Bibliotheken werden von verschiedenen Programmen verwendet exit/abort würde Programm beenden, dass Bibliothek nur verwendet Fehler einfach zum Aufrufen durchreichen Erfordert entsprechendes Design von Grund auf Knut Stolze (DBIS) C/C++ Programmierung / 36

20 Fehlerbehandlung in Anwendungen Im Fehlerfall muss jede Funktion einen wohldefinierten Zustand hinterlassen, z. B. Allokierten Speicher wieder freigeben Geänderte Signal-Handler zurücksetzen Fehlermeldungen und -informationen setzen Nie, nie und nie exit und abort verwenden!! Funktion kann (irgendwann) in Bibliothek landen Bibliotheken werden von verschiedenen Programmen verwendet exit/abort würde Programm beenden, dass Bibliothek nur verwendet Fehler einfach zum Aufrufen durchreichen Erfordert entsprechendes Design von Grund auf Knut Stolze (DBIS) C/C++ Programmierung / 36

21 Numerische Fehler Keine Laufzeitüberprüfungen bei numerischen Operationen Überläufe und Unterläufe möglich; werden nicht automatisch erkannt Muss von Anwendung explizit abgefangen werden Integer-Zahlen (signed/unsigned) char, short, int, long, long long Grenzen (min/max) in <limits.h> definiert Numerische Genauigkeit von Fliesskommazahlen Test auf Gleichheit zweier Zahlen nicht exakt if (fabs(flt1 - flt2) <= ɛ) {... } Vordefinierte Macros (kleinste Zahl > 1, die darstellbar ist): FLT_EPSILON und DBL_EPSILON Knut Stolze (DBIS) C/C++ Programmierung / 36

22 Numerische Fehler Keine Laufzeitüberprüfungen bei numerischen Operationen Überläufe und Unterläufe möglich; werden nicht automatisch erkannt Muss von Anwendung explizit abgefangen werden Integer-Zahlen (signed/unsigned) char, short, int, long, long long Grenzen (min/max) in <limits.h> definiert Numerische Genauigkeit von Fliesskommazahlen Test auf Gleichheit zweier Zahlen nicht exakt if (fabs(flt1 - flt2) <= ɛ) {... } Vordefinierte Macros (kleinste Zahl > 1, die darstellbar ist): FLT_EPSILON und DBL_EPSILON Knut Stolze (DBIS) C/C++ Programmierung / 36

23 Numerische Fehler Keine Laufzeitüberprüfungen bei numerischen Operationen Überläufe und Unterläufe möglich; werden nicht automatisch erkannt Muss von Anwendung explizit abgefangen werden Integer-Zahlen (signed/unsigned) char, short, int, long, long long Grenzen (min/max) in <limits.h> definiert Numerische Genauigkeit von Fliesskommazahlen Test auf Gleichheit zweier Zahlen nicht exakt if (fabs(flt1 - flt2) <= ɛ) {... } Vordefinierte Macros (kleinste Zahl > 1, die darstellbar ist): FLT_EPSILON und DBL_EPSILON Knut Stolze (DBIS) C/C++ Programmierung / 36

24 Outline 1 Fehlerbehandlung Grundsatz Mechanismen zur Fehlererkennung Tipps & Hinweise 2 Internationalisierung Internationalisierung vs. Lokalisierung X/Open Message Catalogs GNU gettext 3 Programmende 4 Aufgaben Knut Stolze (DBIS) C/C++ Programmierung / 36

25 Grundlagen Alle Texte eines Programms müssen an jeweilige Sprache angepasst werden. Internationalization (I18N) Programm vorbereiten auf dynamische Meldungen/Texte Localization (L10N) Übersetzen der Meldungen in die jeweilige Sprache Knut Stolze (DBIS) C/C++ Programmierung / 36

26 Grundlagen Alle Texte eines Programms müssen an jeweilige Sprache angepasst werden. Internationalization (I18N) Programm vorbereiten auf dynamische Meldungen/Texte Localization (L10N) Übersetzen der Meldungen in die jeweilige Sprache Knut Stolze (DBIS) C/C++ Programmierung / 36

27 Grundlagen Alle Texte eines Programms müssen an jeweilige Sprache angepasst werden. Internationalization (I18N) Programm vorbereiten auf dynamische Meldungen/Texte Localization (L10N) Übersetzen der Meldungen in die jeweilige Sprache Knut Stolze (DBIS) C/C++ Programmierung / 36

28 Internationalisierung Unterschiedliche Länge von Texten Unterschiedliche Darstellungsformate für Datum, Uhrzeit, Zahlen, Währungen,... 11/01/06 vs vs :20 PM vs. 13:20 123, vs , vs. (890) oft bei negativen Geldbeträgen 120 EUR vs. $120 Richtung des Textes kann variieren: 1 Von links nach rechts (z. B. English, Deutsch,... ) 2 Von rechts nach links (z. B. Arabische Sprachen) 3 Von oben nach unten (z. B. Japanisch) Statische Annahmen nicht haltbar. Knut Stolze (DBIS) C/C++ Programmierung / 36

29 Internationalisierung Unterschiedliche Länge von Texten Unterschiedliche Darstellungsformate für Datum, Uhrzeit, Zahlen, Währungen,... 11/01/06 vs vs :20 PM vs. 13:20 123, vs , vs. (890) oft bei negativen Geldbeträgen 120 EUR vs. $120 Richtung des Textes kann variieren: 1 Von links nach rechts (z. B. English, Deutsch,... ) 2 Von rechts nach links (z. B. Arabische Sprachen) 3 Von oben nach unten (z. B. Japanisch) Statische Annahmen nicht haltbar. Knut Stolze (DBIS) C/C++ Programmierung / 36

30 Internationalisierung Unterschiedliche Länge von Texten Unterschiedliche Darstellungsformate für Datum, Uhrzeit, Zahlen, Währungen,... 11/01/06 vs vs :20 PM vs. 13:20 123, vs , vs. (890) oft bei negativen Geldbeträgen 120 EUR vs. $120 Richtung des Textes kann variieren: 1 Von links nach rechts (z. B. English, Deutsch,... ) 2 Von rechts nach links (z. B. Arabische Sprachen) 3 Von oben nach unten (z. B. Japanisch) Statische Annahmen nicht haltbar. Knut Stolze (DBIS) C/C++ Programmierung / 36

31 Internationalisierung Unterschiedliche Länge von Texten Unterschiedliche Darstellungsformate für Datum, Uhrzeit, Zahlen, Währungen,... 11/01/06 vs vs :20 PM vs. 13:20 123, vs , vs. (890) oft bei negativen Geldbeträgen 120 EUR vs. $120 Richtung des Textes kann variieren: 1 Von links nach rechts (z. B. English, Deutsch,... ) 2 Von rechts nach links (z. B. Arabische Sprachen) 3 Von oben nach unten (z. B. Japanisch) Statische Annahmen nicht haltbar. Knut Stolze (DBIS) C/C++ Programmierung / 36

32 Lokalisierung LOCALE beeinflusst verschiedene Darstellungsarten Regionaleinstellung Meldungen müssen speziell übersetzt werden Reihenfolge von Tokens in Meldungen kann sich ändern Anderer Satzbau Message Catalogs sammeln Meldungen in einer spezifischen Sprache bzw. Dialekt Knut Stolze (DBIS) C/C++ Programmierung / 36

33 Message Catalogs a la X/Open Textdatei mit Meldungen Jede Meldung erhält eindeutigen numerischen Identifier set + msg-id Programme arbeiten nur mit Identifier Formatierung der Meldungen kann mit printf-funktionen erfolgen Arbeit mit Katalogen ähnlich zu read-only Dateien: 1 open 2 get message 3 close Header-Datei <nl_types.h> Knut Stolze (DBIS) C/C++ Programmierung / 36

34 catopen nl_catd catopen(const char *cat_name, int flag) Öffnet angegebenen Katalog Gibt Katalogdeskriptor zurück Lokation des Katalogs im Dateisystem: Absoluter oder relativer Pfad, oder Umgebungsvariable NLSPATH Pfade sollten nie verwendet werden da nicht portabel. Knut Stolze (DBIS) C/C++ Programmierung / 36

35 catgets char *catgets(nl_catd cat, int set, int msg, const char *str) Ermittelt identifizierte Meldung Falls Meldung nicht existiert, dann wird str zurückgegeben Muss zur Fehlerbehandlung verwendet werden char *msg = catgets(..., default); if (msg == default) { /* Fehler: fehlende Meldung */ } Meldung sollte für Modifikationen in eigenen Puffer kopiert werden Formatierung: Some error encountered at position %1d. sprintf(formattedmsg, msg, tokens,...) Knut Stolze (DBIS) C/C++ Programmierung / 36

36 catclose int catclose(nl_catd cat) Schliesst Katalog Gibt Resourcen frei Knut Stolze (DBIS) C/C++ Programmierung / 36

37 gettext char *gettext(char *) Ähnlich zu X/Open Meldungen in Katalogen separat von Programmcode gesammelt Auswahl des entsprechenden Katalogs Funktion zum ermittelt der korrekten, übersetzten Meldung Probleme bei X/Open Pflege der eindeutigen Nummern der Meldungen gettext verwendet Meldung als Identifier Identifier ist gleichzeitig Default-Meldung Werkzeuge: xgettext erkennt alle (markierten) Meldungen eines Programms; erzeugt Template für Übersetzung msgmerge aktualisiert Katalog mit neuen Meldungen msgfmt erzeugt Binärformat des Katalogs, welchen gettext zur Laufzeit konsultiert Knut Stolze (DBIS) C/C++ Programmierung / 36

38 gettext char *gettext(char *) Ähnlich zu X/Open Meldungen in Katalogen separat von Programmcode gesammelt Auswahl des entsprechenden Katalogs Funktion zum ermittelt der korrekten, übersetzten Meldung Probleme bei X/Open Pflege der eindeutigen Nummern der Meldungen gettext verwendet Meldung als Identifier Identifier ist gleichzeitig Default-Meldung Werkzeuge: xgettext erkennt alle (markierten) Meldungen eines Programms; erzeugt Template für Übersetzung msgmerge aktualisiert Katalog mit neuen Meldungen msgfmt erzeugt Binärformat des Katalogs, welchen gettext zur Laufzeit konsultiert Knut Stolze (DBIS) C/C++ Programmierung / 36

39 gettext char *gettext(char *) Ähnlich zu X/Open Meldungen in Katalogen separat von Programmcode gesammelt Auswahl des entsprechenden Katalogs Funktion zum ermittelt der korrekten, übersetzten Meldung Probleme bei X/Open Pflege der eindeutigen Nummern der Meldungen gettext verwendet Meldung als Identifier Identifier ist gleichzeitig Default-Meldung Werkzeuge: xgettext erkennt alle (markierten) Meldungen eines Programms; erzeugt Template für Übersetzung msgmerge aktualisiert Katalog mit neuen Meldungen msgfmt erzeugt Binärformat des Katalogs, welchen gettext zur Laufzeit konsultiert Knut Stolze (DBIS) C/C++ Programmierung / 36

40 gettext char *gettext(char *) Ähnlich zu X/Open Meldungen in Katalogen separat von Programmcode gesammelt Auswahl des entsprechenden Katalogs Funktion zum ermittelt der korrekten, übersetzten Meldung Probleme bei X/Open Pflege der eindeutigen Nummern der Meldungen gettext verwendet Meldung als Identifier Identifier ist gleichzeitig Default-Meldung Werkzeuge: xgettext erkennt alle (markierten) Meldungen eines Programms; erzeugt Template für Übersetzung msgmerge aktualisiert Katalog mit neuen Meldungen msgfmt erzeugt Binärformat des Katalogs, welchen gettext zur Laufzeit konsultiert Knut Stolze (DBIS) C/C++ Programmierung / 36

41 Outline 1 Fehlerbehandlung Grundsatz Mechanismen zur Fehlererkennung Tipps & Hinweise 2 Internationalisierung Internationalisierung vs. Lokalisierung X/Open Message Catalogs GNU gettext 3 Programmende 4 Aufgaben Knut Stolze (DBIS) C/C++ Programmierung / 36

42 Programmende Programm endet wenn Funktion main wird verlassen Funktion exit wird aufgerufen Funktion abort wird aufgerufen Programm muss Exit-Status zurückgeben main muss mit return-operation beendet werden exit erhält expliziten Status als Parameter abort sendet SIGABRT Signal Betriebssystem räumt nach Programm auf File-Deskriptoren Speicher... Knut Stolze (DBIS) C/C++ Programmierung / 36

43 Programmende Programm endet wenn Funktion main wird verlassen Funktion exit wird aufgerufen Funktion abort wird aufgerufen Programm muss Exit-Status zurückgeben main muss mit return-operation beendet werden exit erhält expliziten Status als Parameter abort sendet SIGABRT Signal Betriebssystem räumt nach Programm auf File-Deskriptoren Speicher... Knut Stolze (DBIS) C/C++ Programmierung / 36

44 Programmende Programm endet wenn Funktion main wird verlassen Funktion exit wird aufgerufen Funktion abort wird aufgerufen Programm muss Exit-Status zurückgeben main muss mit return-operation beendet werden exit erhält expliziten Status als Parameter abort sendet SIGABRT Signal Betriebssystem räumt nach Programm auf File-Deskriptoren Speicher... Knut Stolze (DBIS) C/C++ Programmierung / 36

45 Verlassen von main Erfolgreiches Ende mit 0 gekennzeichnet; sonst Fehler Header-Datei <stdlib.h> definiert (POSIX): EXIT_SUCCESS EXIT_FAILURE Alles andere systemspezifisch; potentiell nicht portabel Rückgabewert kann abgefragt werden In Shell/Perl z. B. Variable $? Knut Stolze (DBIS) C/C++ Programmierung / 36

46 exit void exit(int status) Ende des Programms aus beliebiger (geschachtelter) Routine Interne Funktion _exit() wird aufgerufen Exit-Handler werden abgearbeitet Status wird als Exit-Status des Programms zurückgegeben exit sollte nie verwendet werden. Vergleichbar zu Javas System.exit() Aber kein Security Manager o.ä. vorhanden Knut Stolze (DBIS) C/C++ Programmierung / 36

47 exit void exit(int status) Ende des Programms aus beliebiger (geschachtelter) Routine Interne Funktion _exit() wird aufgerufen Exit-Handler werden abgearbeitet Status wird als Exit-Status des Programms zurückgegeben exit sollte nie verwendet werden. Vergleichbar zu Javas System.exit() Aber kein Security Manager o.ä. vorhanden Knut Stolze (DBIS) C/C++ Programmierung / 36

48 exit void exit(int status) Ende des Programms aus beliebiger (geschachtelter) Routine Interne Funktion _exit() wird aufgerufen Exit-Handler werden abgearbeitet Status wird als Exit-Status des Programms zurückgegeben exit sollte nie verwendet werden. Vergleichbar zu Javas System.exit() Aber kein Security Manager o.ä. vorhanden Knut Stolze (DBIS) C/C++ Programmierung / 36

49 Exit Handler Registrierte Funktionen, die beim Ende des Programms abgearbeitet werden Funktionen atexit() und on_exit() int atexit(void (*function)(void)) Registriert lediglich die angegebene Funktion function int on_exit(void (*function)(int, void *), void *arg) Registriert die angegebene Funktion function und den Zeiger auf einen Speicherbereich arg Speicherbereich wird Funktion als Parameter beim Aufruf übergeben arg muss beim exit auf gültigen Bereich zeigen Knut Stolze (DBIS) C/C++ Programmierung / 36

50 Funktionszeiger Deklaration: return-type (*name)(parameter-type,...) Verwendung: name(parameter-value,...) Oft in typedef verborgen typedef int (*function_type)(int, char); int my_fct(int i, char c) {... } int main() { function_type f = my_fct; res = f(1, a ); } Knut Stolze (DBIS) C/C++ Programmierung / 36

51 abort void abort(void) Abnormales Beenden des Programms Programm erhält abort Signal (SIGABRT) Signal-Handler für SIGABRT kann verwendet werden Kein Aufräumen Keine Exit-Handler Knut Stolze (DBIS) C/C++ Programmierung / 36

52 Outline 1 Fehlerbehandlung Grundsatz Mechanismen zur Fehlererkennung Tipps & Hinweise 2 Internationalisierung Internationalisierung vs. Lokalisierung X/Open Message Catalogs GNU gettext 3 Programmende 4 Aufgaben Knut Stolze (DBIS) C/C++ Programmierung / 36

53 Aufgabe 1 Schreiben Sie ein Programm, welches versucht eine Datei zu öffnen, deren Name als Kommandozeilenparameter an das Programm übergeben wurde. a) Wenn die Datei geöffnet werden kann, so sind alle Zahlen in der Datei zu ermitteln. Die Anzahl dieser Zahlen ist zu ermitteln und auf die Standardausgabe auszugeben. b) Wenn die Datei nicht geöffnet werden kann, so ist eine detailierte Fehlermeldung auszugeben, warum die Datei nicht geöffnet werden konnte. Verwenden Sie einen Exit Handler, um die Datei beim Beenden des Programms korrekt zu schliessen. Knut Stolze (DBIS) C/C++ Programmierung / 36

54 Aufgabe 2 Legen Sie zwei Message Catalogs an, die jeweils 1 Set mit 10 verschiedenen Meldungen (in Deutsch und Englisch) enthalten. Die Meldungen sollen es ermöglichen, den Ablauf eines kurzen, selbst geschriebenen Programms nachzuverfolgen, also eine Art Trace produzieren für: a) das Betreten einer Funktion, b) das Verlassen einer Funktion, und c) eine funktionsspezifische Meldung Zeigen Sie dabei, dass abhängig von den Einstellungen in der Umgebung einmal die Englischen und einmal die Deutschen Meldungen ausgegeben werden. Verwenden Sie dabei die X/Open Schnittstelle für Message Catalogs. Knut Stolze (DBIS) C/C++ Programmierung / 36

55 Aufgabe 3 Lösen Sie die gleiche Aufgabenstellung wie zuvor in Aufgabe 2, verwenden Sie jedoch diesmal das GNU gettext Interface. Knut Stolze (DBIS) C/C++ Programmierung / 36

56 Aufgabe 4 Schreiben Sie ein Programm, welches ein Array mit 5 Funktionszeigern dynamisch (per malloc) anlegt. Jedem der Array-Elemente ist eine Funktion zuzuordnen. Rufen Sie anschliessend die Funktionen in einer Schleife auf und geben Sie deren Ergebnis im Schleifenrumpf (nicht in der Funktion selbst) auf die Standardausgabe aus. Knut Stolze (DBIS) C/C++ Programmierung / 36

57 Aufgabe 5 Implementieren Sie ein Programm, welches eine Struktur definiert, die entweder für eine Datei (FILE *) oder einen String (char *) die folgenden Operationen zur Verfügung stellt: a) Ermitteln des nächsten zu lesenden Zeichens (Bytes) b) Ermitteln der Länge der noch nicht gelesenen Daten c) Schliessen der Datei bzw. Freigeben des Strings Zwei separate Funktionen zur Initialisieren der Struktur in Abhängigkeit ven Datei bzw. String sind umzusetzen. Diese beiden Funktionen setzen die Funktionszeiger in der Struktur auf die spezifischen Routinen. Die Struktur ist nach Bedarf mit eigenen Erweiterungen zu versehen. Knut Stolze (DBIS) C/C++ Programmierung / 36

58 Aufgabe 5 (cont.) Die Struktur implementiert einen Mechanismus, der vergleichbar zu der Vererbungshierarchie in folgendem Bild ist (ohne jedoch Vererbung zu nutzen). Die gezeigten Attribute nehmen Funktionszeiger auf, die als Callback-Funktionen Verwendung finden, d. h. abhängig vom jeweiligen Einsatz/Initialisierung wird die entsprechende spezifische Funktion aufgerufen. my_stream get_next_byte get_remaining_length close FILE_stream String_stream Knut Stolze (DBIS) C/C++ Programmierung / 36

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

Technische Dokumentation SilentStatistikTool

Technische Dokumentation SilentStatistikTool Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Einführung in die Programmierung

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

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper ([email protected])

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) HMExcel Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper ([email protected]) Inhalt 1. Einleitung...1 2. Beispiele...2 2.1. Daten in ein Tabellenblatt schreiben...2

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung

Erweiterung AE WWS Lite Win: AES Security Verschlüsselung Erweiterung AE WWS Lite Win: AES Security Verschlüsselung Handbuch und Dokumentation Beschreibung ab Vers. 1.13.5 Am Güterbahnhof 15 D-31303 Burgdorf Tel: +49 5136 802421 Fax: +49 5136 9776368 Seite 1

Mehr

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt. WinCC UniAddIn Motivation Add-ins für WinCC können in VBA und VB6 programmiert werden. Andere Entwicklungsumgebungen werden nicht standardmäßig unterstützt. Die Entwicklung in VBA hat den Nachteil, dass

Mehr

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam

FILE *fp; char fname[100];... fp = fopen (fname, rb ); if( fp == NULL ) { perror( fopen );... } // Fehlernachricht auf letzten Fehler, der aufkam Aktuelle Fileposition ermitteln long pos; pos=ftell(fp); //aktuelle Bytenummer Filelaenge in Bytes fseek(fp,0,seek_end); pos=ftell(fp); Fileendeerkennung int rc; rc = feof (fp) //!= 0 bei Fileende // ==

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Informatik Grundlagen, WS04, Seminar 13

Informatik Grundlagen, WS04, Seminar 13 Informatik Grundlagen, WS04, Seminar 13 Informatik Informatik Grundlagen, Seminar 13 WS04 1 Was wir heute besprechen Nachbesprechen von Übungsblatt 11 Rekursion Grundprinzipien Übung Besprechung Übungsblatt

Mehr

Übersicht Programmablaufsteuerung

Übersicht Programmablaufsteuerung Übersicht Programmablaufsteuerung Konditionale Verzweigung: if - else switch-anweisung Schleifenkonstrukte: while, do - while for Schleife Sprung-Anweisungen: break, continue, goto, return Anweisungen

Mehr

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup. 04.06.2005 Conrad Kobsch Ein Blick voraus des Autors von C++: Bjarne Stroustrup 04.06.2005 Conrad Kobsch Inhalt Einleitung Rückblick Nur eine Übergangslösung? Was würde C++ effektiver machen? Quelle 2 Einleitung Wo steht C++,

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Monitore. Klicken bearbeiten

Monitore. Klicken bearbeiten Sascha Kretzschmann Institut für Informatik Monitore Formatvorlage und deren Umsetzung des Untertitelmasters durch Klicken bearbeiten Inhalt 1. Monitore und Concurrent Pascal 1.1 Warum Monitore? 1.2 Monitordefinition

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Inhaltserzeichnis. Datenübernahme

Inhaltserzeichnis. Datenübernahme Inhaltserzeichnis 1. Feststellen der Installationsart...2 1.1 Sichern der bereits installierten Version von V-LOG 5.0...2 1.2 Deinstallation der alten Version von V-LOG 5.0...3 1.3 Installation der neuen

Mehr

Anleitung Einrichtung Datenschnittstelle VereinsWK <-> SiusData

Anleitung Einrichtung Datenschnittstelle VereinsWK <-> SiusData Anleitung Einrichtung Datenschnittstelle VereinsWK SiusData V1.6 Das Programm VWKRes ermöglicht die automatische Resultatverarbeitung zwischen VereinsWK und SiusData. Voraussetzungen: - Separater Computer

Mehr

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei Seite 1 Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei Seite 2 1 Inhalt Melde- und Veröffentlichungsplattform Portal... 1 (MVP Portal)... 1 Hochladen einer XML-Datei...

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt

Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt Hinweise zur Datensicherung für die - Prüfmittelverwaltung - Inhalt 1. Vorbetrachtungen... 2 2. Die Installation... 2 3. Einstellungen - Erstellung der Verknüpfung... 3 3.1 Benutzung des Konfigurationsprogramms

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und

Mehr

S7-Hantierungsbausteine für R355, R6000 und R2700

S7-Hantierungsbausteine für R355, R6000 und R2700 S7-Hantierungsbausteine für R355, R6000 und R2700 1. FB90, Zyklus_R/W Dieser Baustein dient zur zentralen Kommunikation zwischen Anwenderprogramm und dem Modul R355 sowie den Geräten R6000 und R2700 über

Mehr

Zugriff auf die Modul-EEPROMs

Zugriff auf die Modul-EEPROMs MAX-P- und P-Bibliotheken EEPROM-Zugriff 1 Zugriff auf die Modul-EEPROMs Jedes X-Bus-Modul verfügt über ein EEPROM, in dem modulspezifische Daten gespeichert werden. Neben einigen Bereichen, die vom Betriebssystem

Mehr

Virtuelle COM-Schnittstelle umbenennen

Virtuelle COM-Schnittstelle umbenennen Virtuelle COM-Schnittstelle umbenennen COM-Nummer eines USB/Seriell-Wandlers verändern Wenn man ein Gerät mit einem USB/Seriell-Wandler neu anschließt, wird meist eine neue virtuelle COM- Schnittstelle

Mehr

Elexis-BlueEvidence-Connector

Elexis-BlueEvidence-Connector Elexis-BlueEvidence-Connector Gerry Weirich 26. Oktober 2012 1 Einführung Dieses Plugin dient dazu, den Status Hausarztpatient zwischen der BlueEvidence- Anwendung und Elexis abzugleichen. Das Plugin markiert

Mehr

Barcodedatei importieren

Barcodedatei importieren Barcodedatei importieren Inhaltsverzeichnis 1 Schnittstelle Barcodedatei importieren... 2 1.1 Funktion... 2 1.2 Konfiguration... 2 1.2.1 Lizenz... 2 1.2.2 Einstellungen... 2 1.2.3 Vorarbeiten... 3 1.2.3.1

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Bereich METIS (Texte im Internet) Zählmarkenrecherche Bereich METIS (Texte im Internet) Zählmarkenrecherche Über die Zählmarkenrecherche kann man nach der Eingabe des Privaten Identifikationscodes einer bestimmten Zählmarke, 1. Informationen zu dieser Zählmarke

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel [email protected] Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

GITS Steckbriefe 1.9 - Tutorial

GITS Steckbriefe 1.9 - Tutorial Allgemeines Die Steckbriefkomponente basiert auf der CONTACTS XTD Komponente von Kurt Banfi, welche erheblich modifiziert bzw. angepasst wurde. Zuerst war nur eine kleine Änderung der Komponente für ein

Mehr

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN

PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN PROGRAMMIEREN MIT UNIX/LINUX-SYSTEMAUFRUFEN 2. UNIX/Linux-Prozessverwaltung und zugehörige Systemaufrufe Wintersemester 2015/16 2. Die UNIX/LINUX-Prozessverwaltung Aufgaben: 1. Erzeugen neuer Prozesse

Mehr

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Rundung und Casting von Zahlen

Rundung und Casting von Zahlen W E R K S T A T T Rundung und Casting von Zahlen Intrexx 7.0 1. Einleitung In diesem Werkstattbeitrag erfahren Sie, wie Zahlenwerte speziell in Velocity, aber auch in Groovy, gerundet werden können. Für

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Durchführung der Datenübernahme nach Reisekosten 2011

Durchführung der Datenübernahme nach Reisekosten 2011 Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,

Mehr

Inventur. Bemerkung. / Inventur

Inventur. Bemerkung. / Inventur Inventur Die beliebige Aufteilung des Artikelstamms nach Artikeln, Lieferanten, Warengruppen, Lagerorten, etc. ermöglicht es Ihnen, Ihre Inventur in mehreren Abschnitten durchzuführen. Bemerkung Zwischen

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren I. Kapitel 15. Ein und Ausgabe Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random

Mehr

Tutorium Rechnerorganisation

Tutorium Rechnerorganisation Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu

Mehr

4 Aufzählungen und Listen erstellen

4 Aufzählungen und Listen erstellen 4 4 Aufzählungen und Listen erstellen Beim Strukturieren von Dokumenten und Inhalten stellen Listen und Aufzählungen wichtige Werkzeuge dar. Mit ihnen lässt sich so ziemlich alles sortieren, was auf einer

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

Mehr

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar 2013. CAP-News 40

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar 2013. CAP-News 40 CAP-News 40 CAP-News ist in unrägelmäßigen Abständen erscheinende Information zum Produktkonfigurator CAP/VARIANTS. Hier werden die neuen Befehle, Funktionen und Möglichkeiten beschrieben. In CAP-News

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

7DVWH.HOOQHU. Kassensystem SANYO (X&D6RIWKapitel 42

7DVWH.HOOQHU. Kassensystem SANYO (X&D6RIWKapitel 42 7DVWH.HOOQHU Sie befinden sich im Dialog 5DXP%LOG Sie Tippen auf die Taste.HOOQHU Sie gelangen danach in den Dialog.HOOQHU/RJLQ. Alle Handlungen, die YRQ,KQHQ durchgeführt werden können sind schwarz dargestellt.

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

Mehr

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte

Mehr

Kurzanleitung. Toolbox. T_xls_Import

Kurzanleitung. Toolbox. T_xls_Import Kurzanleitung Toolbox T_xls_Import März 2007 UP GmbH Anleitung_T_xls_Import_1-0-5.doc Seite 1 Toolbox T_xls_Import Inhaltsverzeichnis Einleitung...2 Software Installation...2 Software Starten...3 Das Excel-Format...4

Mehr

Einführung in die C++ Programmierung für Ingenieure

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

Mehr

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager Dateiname: ecdl2_03_05_documentation Speicherdatum: 22.11.2004 ECDL 2003 Modul 2 Computermanagement und Dateiverwaltung

Mehr

Grundlagen verteilter Systeme

Grundlagen verteilter Systeme Universität Augsburg Insitut für Informatik Prof. Dr. Bernhard Bauer Wolf Fischer Christian Saad Wintersemester 08/09 Übungsblatt 3 12.11.08 Grundlagen verteilter Systeme Lösungsvorschlag Aufgabe 1: a)

Mehr

affilinet_ Flash-Spezifikationen

affilinet_ Flash-Spezifikationen affilinet_ Flash-Spezifikationen Inhaltsverzeichnis Allgemeines...2 Klickzählung...2 Lead/Sale Programme... 2 PPC und Kombi Programme...3 Übergabe von Formulardaten...4 clicktag Variante Sale/Lead Programm...4

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!. 040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl

Mehr

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler Downloadfehler in DEHSt-VPSMail Workaround zum Umgang mit einem Downloadfehler Downloadfehler bremen online services GmbH & Co. KG Seite 2 Inhaltsverzeichnis Vorwort...3 1 Fehlermeldung...4 2 Fehlerbeseitigung...5

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Warenwirtschaft Verkauf Einkauf Projektverwaltung Artikelverwaltung Kundenspezifische Artikel Verwaltung der Serien- u. Chargennummern Lagerverwaltung

Warenwirtschaft Verkauf Einkauf Projektverwaltung Artikelverwaltung Kundenspezifische Artikel Verwaltung der Serien- u. Chargennummern Lagerverwaltung Warenwirtschaft Verkauf Einkauf Projektverwaltung Artikelverwaltung Kundenspezifische Artikel Verwaltung der Serien- u. Chargennummern Lagerverwaltung Wenn Sie Fragen haben dann rufen Sie uns an, wir helfen

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1

CMS.R. Bedienungsanleitung. Modul Cron. Copyright 10.09.2009. www.sruttloff.de CMS.R. - 1 - Revision 1 CMS.R. Bedienungsanleitung Modul Cron Revision 1 Copyright 10.09.2009 www.sruttloff.de CMS.R. - 1 - WOZU CRON...3 VERWENDUNG...3 EINSTELLUNGEN...5 TASK ERSTELLEN / BEARBEITEN...6 RECHTE...7 EREIGNISSE...7

Mehr

1. Aktionen-Palette durch "Fenster /Aktionen ALT+F9" öffnen. 2. Anlegen eines neuen Set über "Neues Set..." (über das kleine Dreieck zu erreichen)

1. Aktionen-Palette durch Fenster /Aktionen ALT+F9 öffnen. 2. Anlegen eines neuen Set über Neues Set... (über das kleine Dreieck zu erreichen) Tipp: Aktionen (c) 2005 Thomas Stölting, Stand: 25.4. 2005 In Photoshop werden häufig immer wieder die gleichen Befehlssequenzen benötigt. Um sie nicht jedesmal manuell neu eingeben zu müssen, können diese

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen & Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen Immer mehr Schulen setzen das erfolgreiche Leseförderungsprojekt "Antolin" ein - und die Bibliotheken verzeichnen große Nachfrage nach den Kinderbüchern,

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

ec@ros2-installer ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg 7 64331 Weiterstadt

ec@ros2-installer ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg 7 64331 Weiterstadt ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Download des ecaros2-installer...3 2 Aufruf des ecaros2-installer...3 2.1 Konsolen-Fenster (Windows)...3 2.2 Konsolen-Fenster

Mehr

Installation OMNIKEY 3121 USB

Installation OMNIKEY 3121 USB Installation OMNIKEY 3121 USB Vorbereitungen Installation PC/SC Treiber CT-API Treiber Einstellungen in Starke Praxis Testen des Kartenlesegeräts Vorbereitungen Bevor Sie Änderungen am System vornehmen,

Mehr

Linux Prinzipien und Programmierung

Linux Prinzipien und Programmierung Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2014 1 / 25 2 / 25 Pipes Die Bash kennt drei Standard-Dateideskriptoren: Standard In (stdin) Standard-Eingabe,

Mehr

Handbuch zum Statistiktool Pentaho Stand: Dezember 2013

Handbuch zum Statistiktool Pentaho Stand: Dezember 2013 Handbuch zum Statistiktool Pentaho Stand: Dezember 2013 Sie erreichen das Tool über folgenden Link http://reports.onleihe.de/pentaho/login Anmeldung Startbildschirm Oben: Navigation Linke Spalte: Ordner

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger [email protected] WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Vorabversion. Schulung am 06.08.13. www.winterhoff.de. Homepage Administration und Pflege

Vorabversion. Schulung am 06.08.13. www.winterhoff.de. Homepage Administration und Pflege Vorabversion Schulung am 06.08.13 www.winterhoff.de Homepage Administration und Pflege 1. Anmeldung auf der Homepage Die Anmeldung auf der Homepage erfolgt über den nachfolgenden Link durch Eingabe des

Mehr

1. So beginnen Sie eine Kalkulation

1. So beginnen Sie eine Kalkulation KASSE Eine iphone Apps von a-mass Dieses kleine Programm kann zur Buchführung, als Haushalts- oder Registrierkasse verwendet werden Es können laufende Kosten genauso wie jegliche Ausgaben oder Einnahmen

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

Softwarelösungen: Versuch 4

Softwarelösungen: Versuch 4 Softwarelösungen: Versuch 4 Nichtstun in Schleife wird ersetzt durch zeitweilige Zurücknahme der Anforderung, um es anderen Prozessen zu erlauben, die Ressource zu belegen: /* Prozess 0 */ wiederhole flag[0]

Mehr

Algorithmische Mathematik

Algorithmische Mathematik Algorithmische Mathematik Wintersemester 2013 Prof. Dr. Marc Alexander Schweitzer und Dr. Einar Smith Patrick Diehl und Daniel Wissel Übungsblatt 6. Abgabe am 02.12.2013. Aufgabe 1. (Netzwerke und Definitionen)

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

SIMP 1.01 Protokollspezifikation (Mindestanforderung)

SIMP 1.01 Protokollspezifikation (Mindestanforderung) SIMP 1.01 Protokollspezifikation (Mindestanforderung) Autor: Harald Pittesser, Dokumentversion: 0.5 beta Eigenschaften SIMP (Simple Instant Message Protocol) ist ein Instant Message Protokol welches folgende

Mehr

NCDiff Testmanagement leicht gemacht

NCDiff Testmanagement leicht gemacht Testmanagement leicht gemacht Nagler & Company Thomas Gebhard & Anton Garra Complexity Die stetige Anpassung an neue Anforderungen der IT und das Bestreben Marktgegebenheiten zu folgen oder voraus zu sein,

Mehr

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014

17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung 13.1. bis 17.1.2014 17.1.2014 Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici 12.Übung 13.1. bis 17.1.2014 1 BEFRAGUNG http://1.bp.blogspot.com/- waaowrew9gc/tuhgqro4u_i/aaaaaaaaaey/3xhl 4Va2SOQ/s1600/crying%2Bmeme.png

Mehr

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6) Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6) 1. Loggen Sie sich im Administratorbereich ein und gehen Sie auf Extension > Extension Manager 2. Wählen Sie Install languages 3. Klicken Sie

Mehr