10 Modulares Programmieren

Größe: px
Ab Seite anzeigen:

Download "10 Modulares Programmieren"

Transkript

1 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 51 von Modulares Programmieren Was ist ein Modul? Ein Programmteil, der getrennt entworfen, implementiert und getestet werden kann Eine selbständig übersetzbare Programmeinheit Enthält vorübersetzte Programmobjekte, die beim binden zu einem Programm hinzugefügt werden können Globale Objekte werden nach Außen zu Verfügung gestellt Export-Schnittstelle Modulimplementierung Import-Schnittstelle Objekte aus anderen Modulen werden benutzt Ein Modul enthält lokal definierte oder global definierte Programmobjekte Global definierte Programmobjekte können in anderen Modulen verwendet werden ( das Modul exportiert diese globalen Programmobjekte nach Außen). Exportiert werden können nur global definierte Programmobjekte. Lokale Programmobjekte sind nur innerhalb des Moduls verfügbar. Exportierbare Programmobjekte sind: Funktionen/Prozeduren Variablen Datentypen Konstanten Ein Modul importiert extern definierte Programmobjekte, wenn es Bezeichner verwendet, die in anderen Modulen global definiert, also exportiert werden. Ein Modul kann demnach sowohl Programmobjekte exportieren als auch externe Programmobjekte importieren. Die Menge aller global vereinbarten Programmobjekte eines Moduls bestimmen die EXPORT- Schnittstelle des Moduls. Die Menge aller von fremden Modulen benutzter Programmobjekte ergibt die IMPORT-Schnittstelle des Moduls.

2 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 52 von 73 Ein Modul hat folgenden generellen Aufbau: Modulname Textuelle Modulbeschreibung Schnittstellenbeschreibung Liste importierter Objekte Deklaration exportierter Objekte Implementierung Definition globaler Variablen Implementierung von Funktionen / Prozeduren Modulname ist in der Regel der Dateiname. Die textuelle Beschreibung dient dazu, dem Anwender eine lesbare Beschreibung der Modulinhalte zu Verfügung zu stellen. Dieser Abschnitt ist Kommentartext, der nicht vom Compiler übersetzt wird. Diese Kommentare werden normalerweise in der Form von vorgefertigten Formularen, den Modulheadern, verwendet. Beispiel für solche Modulheader sind beim Modul STACK in diesem Kapitel angegeben. Schnittstellenbeschreibung und Implementierung sind Programmiersprachenelemente, die vom Compiler übersetzt werden. Im Teil Implementierung werden alle exportierten Programmobjekte definiert und konkret ausprogrammiert. Der Entwurf eines Moduls kann nach unterschiedlichen Gesichtspunkten erfolgen: funktionell Alle Funktionen, Prozeduren und Daten realisieren einen Arbeitsvorgang datenorientiert Alle Funktionen und Prozeduren bearbeiten dieselben Datenobjekte. Funktionen / Prozeduren und Datenobjekte sind gekapselt. Diese Art führt zu den abstakten Datenobjekten ( ADO ). organisatorisch Das Modul enthält alle Objekte eines Programmierers

3 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 53 von MODULHIERARCHIE EINES P ROGRAMMS Ein Programm wird durch Module hierarchisch in mehrere Ebenen strukturiert. Beispiel Hauptprogramm Ebene > benutzt Objekte aus Modul A Ebene > benutzt Objekte aus Modul B Ebene > benutzt Objekte aus Modul C und D Ebene 3 Diese Hierarchie wird durch die folgende Grafik beschrieben: HP HP benutzt keine Objekte aus C A B Modul B benutzt ( importiert ) Objekte aus C C D Entwurf eines modularen Programms am Beispiel Iteratives Umdrehen von Buchstaben Nach datenorientierten Gesichtspunkten kann das Problem in zwei Programmmodule zerlegt werden: ein Modul HAUPT Dieses enthält das Hauptprogramm und übernimmt das Umdrehen der Zeichen eines Wortes. Das Modul enthält damit die Funktion main(), die nach außen exportiert wird. Das Modul importiert Objekte aus dem Modul STACK und den Standardbibliotheken ( scanf, printf ). ein Modul STACK Dieses Modul enthält alle Programmobjekte, die zur Realisierung des Stack benötigt werden. Exportierte Programmobjekte sind die Funktionen zum Zugriff auf den Stack ( initstack, push, pop ). Der Stack selbst wird dynamisch realisiert. Zugriff auf die Stackelemente erfogt über den Stackzeiger, der auf eine verkettete verweist. Der Stackzeiger wird als modulglobale Variable definiert und wird daher nicht exportiert. Im Modul werden Objekte aus den Standardbibliotheken importiert ( malloc, free ).

4 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 54 von 73 Aufbau des Moduls STACK Modulname: STACK Modulbeschreibung: Das Modul realisiert einen dynamischen Stack. Schnittstellenbeschreibung Import: Funktionen malloc() und free() aus dem Modul stdlib Export: Definiton der Konstanten STACK_LEER ( in der Headerdatei stack.h ) Funktionen: initstack(), push(), pop() Implementierung: Definition des modulglobalen Datentyps STACKELEMENT Definition der modulglobalen Variablen stackzeiger vom Datentyp STACKELEMENT Definition der globalen Funktionen: initstack() push() pop() Um Objekte aus fremden Modulen benutzen zu können muß von dem fremden Modul eine Schnittstellenbeschreibung vorliegen. In dieser Schnittstellenbeschreibung wird angegeben: welche Programmobjekte nach Außen zu Verfügung gestellt werden ( EXPORT-Liste ) Eine textuelle Beschreibung was die Programmobjekte bedeuten oder was sie tun Eine Beschreibung der Syntax ( Prototypen ), damit sie im Programm korrekt verwendet werden können. Die Schnittstellenbeschreibung wird in C über Headerdateien realisiert. Zu jedem Modul wird eine Headerdatei angelegt, in der alle globalen Datentypen, Konstanten und die Prototypen der Funktionen liegen. Diese Headerdatei wird im Modul STACK und allen Modulen, die Objekte aus STACK verwenden mit #include eingefügt. Zusätzlich wird eine textuelle Beschreibung erstellt, die die Bedeutung der Programmobjekte erklärt. Solche textuellen Beschreibungen werden in der Regel in Form von Formularen, den Modulheadern und den Funktionsheadern als lesbarer Kommentartext zu Verfügung gestellt. Die Modulhierarchie für das Beispiel: HAUPT STACK stdlib stdio

5 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 55 von 73 Schnittstelle und Implementierung des Moduls Stack Headerdatei stack.h /******************************************************************/ /* Export-Schnittstelle des Moduls stack ( stack.h ) */ /******************************************************************/ /* Makros und Konstanten */ #define STACK_LEER 0 /* Funktionsprototypen */ extern int initstack(void); extern void push( char zeichen ); extern char pop(void); Quelldatei stack.c /************************************************************************/ /* MODULHEADER */ /************************************************************************/ /* Projekt: WorteUmdrehen */ /* Modulname: stack.c */ /* Versionsnummer: 1.0 */ /* Modultyp: Abstraktes Datenobjekt ( ADO ) */ /* Sprache/Compiler: Borland C++, 5.0 */ /* Kurzbeschreibung: Das Modul realisiert einen Zeichen-Stack */ /* Export Elemente: Konstante: STACK_LEER */ /* Funktionen: initstack(), push(), pop() */ /* Import Elemente: */ /* Aus Modul stdio: Konstante : NULL */ /* Modul stdlib: Funktionen: malloc(), free() */ /* Ersteller/Fach: Stud1/Prog2 */ /* Erstellungsdatum: 15. Juni 1998 */ /* letzte Aenderung: 16. Juni 1998 */ /* Import-Schnittstelle des Moduls */ #include <stdio.h> #include <stdlib.h> /* Export-Schnittstelle des Moduls stack */ #include "stack.h"

6 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 56 von 73 /******************************************************************/ /* Implementierung des Moduls */ /******************************************************************/ /* Modulglobale Datentypen und Variablen */ typedef struct stackelement { struct stackelement *next; char zeichen; } STACKELEMENT; static STACKELEMENT *stackzeiger; /* FUNKTIONS-HEADER globaler Funktionen */ /* Funktion: int initstack(void) */ /* Kurzbeschreibung: Initialisiert den Stack auf leer */ /* Ergebnis: STACK_LEER */ /* Import-Parameter: keine */ /* Export-Parameter: keine */ /* modulglobale Variablen: stackzeiger */ int initstack(void) { stackzeiger = NULL; /* Importiert NULL aus stdio */ return STACK_LEER; } /* Funktion: void push(char zeichen) */ /* Kurzbeschreibung: Legt ein Zeichen auf den Stack */ /* Ergebnis: keines */ /* Import-Parameter: zeichen */ /* Export-Parameter: keine */ /* Modulglobale Variablen: stackzeiger */ /************************************************************************/ void push( char zeichen ) { STACKELEMENT *objektzeiger; /* Importiert malloc aus stdlib */ } objektzeiger=(stackelement *) malloc(sizeof(stackelement)); objektzeiger->next=stackzeiger; objektzeiger->zeichen=zeichen; stackzeiger=objektzeiger;

7 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 57 von 73 /* Funktion: char pop(void) */ /* Kurzbeschreibung: Holt ein Zeichen vom Stack */ /* Ergebnis: Das oberste Zeichen vom Stack oder STACK_LEER */ /* Import-Parameter: keine */ /* Export-Parameter: keine */ /* Modulglobale Variablen: stackzeiger */ /**********************************************************************/ char pop(void) /* Entfernt oberstes Element vom Stack. */ /* Falls der Stack leer ist das Ergebnis 0 */ { char zeichen; STACKELEMENT *hilf; /* sonst das entfernte zeichen */ } if ( stackzeiger!= NULL ) { zeichen=stackzeiger->zeichen; hilf = stackzeiger; stackzeiger=stackzeiger->next; free(hilf); /* Importiert free aus stdlib */ } else zeichen=stack_leer; return zeichen;

8 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 58 von 73 I MPLEMENTIERUNG DES M ODUL HAUPT /************************************************************************/ /* MODULHEADER */ /************************************************************************/ /* Projekt: WorteUmdrehen */ /* Modulname: haupt.c */ /* Versionsnummer: 1.0 */ /* Modultyp: Abstraktes Datenobjekt ( ADO ) */ /* Sprache/Compiler: Borland C++, 5.0 */ /* Kurzbeschreibung: Das Programm vertauscht die Buchstaben eines */ /* eingegeben Wortes */ /* Export Elemente: Funktionen: main() */ /* Import Elemente: */ /* Aus Modul stdio: Funktionen: scanf(), printf() */ /* Modul stack: Funktionen: initstack() */ /* push(), pop() */ /* Konstante : STACK_LEER */ /* Ersteller/Fach: Stud1/Prog2 */ /* Erstellungsdatum: 15. Juni 1998 */ /* letzte Aenderung: 16. Juni 1998 */ /* Import-Schnittstelle des Moduls */ #include <stdio.h> #include "stack.h" /* Implementierung des Moduls */ /* Modulglobale Makros und Konstanten definieren */ #define NEWLINE '\n' #define BLANK ' ' /* FUNKTIONS-HEADER */ /* Funktion: int main(void) */ /* Kurzbeschreibung: Hauptprogramm zum Umdrehen eines Wortes */ /* Ergebnis: in jedem Fall 0 */ /* Import-Parameter: keine */ /* Export-Parameter: keine */

9 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 59 von 73 int main(void) { char zeichen; /* Lokale Variable */ initstack(); /* Import von initstack() */ do /* Einlesen des Wortes und Aufbau des Stack */ { scanf("%c",&zeichen); /* Import von scanf */ push(zeichen); /* Import von push */ } while (zeichen!= BLANK && zeichen!= NEWLINE ); printf("umdrehen\n"); /* Import von printf */ do /* Ausgabe des Wortes und Abbau des Stack */ { zeichen=pop(); /* Import von pop */ if ( zeichen!= STACK_LEER ) printf("%c",zeichen); } while ( zeichen!= STACK_LEER); } return 0;

10 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 60 von E RZEUGEN EINES MODULAREN P ROGRAMMS Erstellung modularer Programme Prof. Dr. - Ing. S.Keller FH Ravensburg-Weingarten Angewandte Informatik Haupt.c Stack.h stdio.h Übersetzen Stack.c Übersetzen Exportschnittstelle von stack Stack.h Headerdateien zu vorübersetzten Programmobjekten stdio.h stdlib.h Mit #include-anweisung Haupt.o Vorübersetzte Programmobjekte Stack.o Binden Vorübersetzte Programmobjekte in Systembibliotheken Stdio stdlib wortumdrehen Übersetzten,Binden Um ein lauffähiges Programm zu erzeugen müssen alle Module des Programms einzeln in Programmobjekte übersetzt werden Diese Programmobjekte müssen dann durch den Binder ( Linker ) zu einem lauffähigen Programm zusammengefügt ( gebunden ) werden. Beispiel UNIX: Der C-Compiler unter UNIX ruft nach dem Übersetzen von C-Sourcedateien xxx.c in Objekte xxx.o automatisch den Binder ( link editor: ld ) auf um damit ein ausführbares Programm mit dem Namen a.out zu erzeugen. Duch das Kommando cc haupt.c stack.c wird unter UNIX ein lauffähiges Programm mit dem Namen a.out erzeugt. Die Kommandosyntax für den Aufruf des C-Compilers unter UNIX lautet: $ cc [Optionen]... file... [Option... file ]... [ -link[link-libraryinfo] ] [] bedeutet: Diese Angaben sind wahlweise und können weggelassen werden. In diesem Fall werden Standardwerte genommen. ' file ' muss angegeben werden und kann sein: xxx.c : xxx.o : xxx.a : eine C-Quelletextdatei. Diese wird in ein Objekt übersetzt eine vorübersetzte Objektdatei. Diese wird nicht übersetzt sondern nur zum ausführbaren Programm dazugebunden eine Bibliothek mit vorübersetzten Programmobjekten; diese wird beim Binden nach Referenzen durchsucht Falls die Extension.c,.o oder.a fehlt, nimmt der C-Compiler an es handelt sich um eine Objektdatei

11 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 61 von 73 Optionen für Ihre Programme: -o outfile Ausführbares Programm wird mit dem Namen outfile erzeuget. Ohne diese Option erzeugt der Compiler automatisch ein ausführbares Programm mit dem Namen a.out. -c Nur vorübersetzte Objekte erzeugen, aber nicht binden Beispiele: $ cc a.c b.c d.o e.o Übersetzen von a.c und b.c in Objekte a.o und b.o; Danach binden von a.o, b.o, d.o und e.o zum ausführbaren Programm a.out $ cc a.o b.o Es wird kein C-Modul übersetzt. Der Compiler ruft direkt den Binder ld auf, der die Objekte a.o und b.o zu einem ausführbaren Programm a.out bindet Erzeugen eines modularen Programms Einstufig: $ cc -O modul1.c modul2.c modul3.c -o progname Zweistufig: $ cc -Oc modul1.c modul2.c modul3.c ( Nur Übersetzen ) $ cc modul1 modul2 modul3 -o progname ( Nur Binden ) Das UNIX-Werkzeug Make MAKE ist ein Werkzeug zur automatischen Erzeugung modularer Programme ( Projekte ). Aus welchen Modulen sich ein Programm zusammensetzt wird durch Dateiabhängigkeiten erklärt. Ob ein Programm in einer aktuellen Version vorliegt ist erkennbar an der Zeit der letzen Änderung von Sourcedatei und Programm. Die Abhängigkeiten eines ausführbaren Programms ( Sourcedatei, Headerdatei, Objektdatei, Bibliotheken ) als auch die Aktionen die auszuführen sind, um aktuelle Objekte ( Dateien ) zu erzeugen werden in Form von Regeln in einer Beschreibungsdatei mit dem Namen makefile erklärt. Zum Aktualisieren oder Erzeugen eines Programms ruft man das UNIX-Werkzeug make mit dem zu erzeugenden Objekt als Parameter auf. Make ermittelt aus dem Beschreibungfile alle Abhängigkeiten des Objektes und die notwendigen Kommandos zur Erzeugung des Objektes. Existiert das angegebene Objekt noch nicht werden entsprechend dem Abhängigkeitsbaum ( siehe Bild ) alle Objektdateien erzeugt und zu einem ausfühbaren Programm gebunden. Existiert das Objekt, so erkennt make an dem Datum der letzten Änderung, wenn eine oder mehrere Sourcedateien ( Headerdateien ) geändert wurden und damit das Objekt nicht mehr aktuell ist Es werden dann automatisch nur diese Dateien übersetzt, die ein jüngeres Datum als das ausführbare Programm haben und eine aktuelle Version des Objektes erzeugt. Make kennt fest eingebaute Regeln, die die Abhängigkeiten von Sourcedateien, Objektdateien und ausführbarem Programm und die Kommandos zu deren Erzeugung beschreiben. Existiert kein makefile oder enthält ein makefile keine Regeln so werden automatisch die eingebauten Regeln genommen. Findet make eine Regel im makefile so wird jedoch diese und nicht die eingebaute Regel genommen. Make erlaubt es, Texte im makefile, die man mehrfach verwenden möchte, unter einem Namen als MAKRO zusammenzufassen. Durch Aufrufen eines Makros werden dann diese Texte im makefile eingefügt ( Makroexpansion). Neben fest eingebauten Regeln sind auch Macros in make vordefiniert Es ist auch möglich Namen für Regeln zu definieren, die kein ausführbares Programm beschreiben, sondern lediglich eine Folge von Kommandos, die einen häufig vorkommenden Vorgang beschreiben.

12 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 62 von SYNTAX DER B ESCHREIBUNGSDATEI Kommentarzeile: Erzeugen von Fortsetzungszeilen: Regel: Makrodefinition: Makroaufruf: # Text '\' am Ende der Zeile zeigt an, daß eine Fortsetzungszeile folgt Objekt1... Objektn : [:] Abhängigkeit1... Abhängigkeitk \t Kommando \t Kommando Makroname = Text $Makroname, falls Name nur ein Zeichen lang $(Makroname), falls Makroname mehr als ein Zeichen lang Vordefinierte Dateiextensions ( SUFFIXES ):.o.c Vordefinierte Makros: $@ Voller Pfadname des aktuell zu erzeugenden Objektes. $< Name der Datei, die ein jüngeres Datum als das zu erzeugende Objekt besitzt und damit die Kommandoausführung auslöst. Wird nur bei nicht explizit angegeben Abhängigkeiten durch Abhängigkeitsregeln expandiert $* Name ohne Extension der aktuellen abhängigen Datei, die auch Zielobjekt ist. Wird nur bei nicht explizit angegeben Abhängigkeiten durch Abhängigkeitsregeln expandiert $? Zeichenketter aller Namen, die jünger sind als das Objekt LDFLAGS = Optionen des Binders ld CFLAGS = -O C-Compiler Optionen CC = cc Name des C-Compilers ARFLAGS = rv Optionen des Programms zum Erzeugen von Modulbibliotheken AR = ar Name des Programms zur Erzeugung von Biblitheken Vordefinierte Abhängigkeits-Regeln:.c.a:.c.o:.c: $(CC) -c $(CFLAGS) $< $(AR) $(ARFLAGS) $@ $*.o rm -f $*.o $(CC) $(CFLAGS) -c $< $(CC) $(CFLAGS) $< $(LDFLAGS) -o $@

13 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 63 von BEIPIEL FÜR DAS MAKEFILE ZUR E RZEUGUNG DES AUSFÜHRBAREN P ROGRAMMS W ORTEU MDREHEN UND EINER R EGEL MIT N AMEN CLEAN Die Abhängigkeiten und notwendige Aktionen beschreibt das folgende Bild: WorteUmdrehen cc haupt stack -o WorteUmdrehen haupt.o stack.o cc -c haupt.c cc -c stack.c haupt.c stack.c tue nichts stack.h Inhalt von "makefile" # Regel WorteUmdrehen beschreibt die Abhängigkeiten von WorteUmdrehen # und die UNIX-Kommandos zur Erzeugung von WorteUmdrehen # Die erste Zeile beschreibt das zu erzeugende Objekt. Nach dem Doppelpunkt # sind alle Abhängigkeiten aufgelistet. Die zweite Zeile beschreibt das # Kommando, durch welches das Objekt aus seinen Abhängigkeiten erzeugt wird. WorteUmdrehen: haupt.o stack.o cc haupt.o stack.o -o WorteUmdrehen # Diese Regelen beschreiben die Abhängigkeiten von haupt.o und stack.o # und das Kommando zur Erzeugung der beiden Objekte haupt.o: haupt.c stack.h cc -c haupt.c stack.o: stack.c stack.h cc -c stack.c # Regel mit Namen clean zum Aufräumen des Plattenspeichers. Alle Objekte # werden gelöscht. clean: rm *.o Kommandoeingabe zur Ausführung der Regeln make WorteUmdrehen make clean Erzeugt das lauffaähige Programm "foo" Aufräumen auf Plattenspeicher

14 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 64 von KOMMANDOSYNTAX $ make [Optionen] [Makrodefinitionen] [Objekt/Regel] Optionen: -r keine eingebauten Regeln verwenden -n Anzeigen aller auszuführenden Kommandos ohne die Aktionen tatsächlich auszuführen.( Kontrollausgabe ) -t Aktualisiert das Datum der Zielobjekte anstatt die Kommandos auszuführen -s Ausführen der Kommandos ohne Kontrollausgaben -f filename Beschreibungsfile hat Namen filename anstatt makefile Makrodefinitionen: Ersetzen intern definierte Makros Objekt/Regel: Objekt ist ein zu erzeugendes abhängiges Objekt oder der Name einer Regel unter der bestimmte Kommandos auszuführen sind.

15 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 65 von M ODULTYPEN Zur Strukturierung eines Programms sollten nur Module entsprechend den folgenden vier Modultypen entworfen und implementiert werden. Module, die beispielsweise globale Daten und Funktionen enthalten sollte es nicht geben. In diesem Fall muss dann das Programm zwei Module enthalten, ein Modul vom Typ GLOBALE DATEN und ein Modul vom Typ FUNKTIONSBOBLIOTHEK. Modultypen Prof. Dr. - Ing. S.Keller FH Ravensburg-Weingarten Angewandte Informatik Schnittstelle Prototypen Konstanten Modul ( Implementierung ) Funktionsbibliothek Funktion 3 Funktion Lokale Daten 2 Funktion Lokale Daten 1 Lokale Daten Ankündigung externer Datenobjekte Konstanten, Datentypen Globale Daten Daten Prototypen Konstanten Datentypen Abstraktes Datenobjekt ModulDaten ZF1 ZF2 ZF3 Konstanten Datentypen Das Modul exportiert nur Funktionen Es enthält weder globale noch modulglobale Daten Das Modul exportiert nur globale Daten Es enthält keine Funktionen Das Modul exportiert nur Sonderfall Funktionen Es existiert kein Es enthält keine globalen Daten, vorübersetztes dafür aber modulglobale Daten Objektmodul Der Zugriff von anderen Modulen auf diese Daten erfolgt über die Funktionen Symbol M ODULTYP F UNKTIONSBIBLIOTHEK Eine Funktionsbibliothek enthält eine Sammlung von Funktionen, die man semantisch gruppieren möchte z.b. eine Sammlung mathematischer Funktionen in einem Modul mit Namen MATH oder Funktionen zur grafischen Ausgabe in einem Modul mit Namen GRAPHICS. Das Modul exportiert nur Funktionen, Es enthält weder globale noch modulglobale Daten. IMPLEMENTIERUNG: Im Modul dürfen nur Funktionen mit lokalen Variablen definiert werden. Die Definition zusätzlicher lokaler Funktionen, die selbst nicht exportiert werden, ist erlaubt. Lokale Funktionen sind Funktionen, die nur im Modul gültig sind und damit von allen Funktionen im Modul verwendet werden können aber nicht von Funktionen in externen Modulen. Bei der Definition muss die Funktion mit dem Schlüsselwort static gekennzeichnet sein. Beispiel: static int add(inta, int b) { return a+b;}

16 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 66 von 73 SCHNITTSTELLE: Die Schnittstelle wird in einer Headerdatei mit gleichem Modulnamen aber der Dateikennung.h ( <modulname>.h ) festgelegt. Die Schnittstelle enthält die Prototypen aller exportierten Funktionen sowie benötigter Konstanten Will ein externes Modul A Funktionen aus der Funktionsbibliothek FB importieren muss in A die Schnittstelle ( Headerdatei ) mit #include FB.h eingebunden werden. M ODULTYP G OBALE D ATEN Das Modul exportiert global vereinbarte Daten und damit verbundene Konstanten und Datentypen, die in anderen externen Modulen benutzt werden sollen. IMPLEMENTIERUNG: Es dürfen nur globale Daten definiert werden. Initialwerte sind bei der Definition anzugeben. Modulglobale Daten sowie Funktionen dürfen nicht vorkommen. ( Da in dem Modul nur Variablen definiert werden, liegt die Definition immer außerhalb einer Funktion und ist damit global ) BEISPIEL: meintyp daten = INITIALWERT; SCHNITTSTELLE: Die Schnittstelle wird in einer Headerdatei mit gleichem Modulnamen aber der Dateikennung.h definiert. Die Schnittstelle kündigt die Verwendung extern definierter Variablen an. Dies geschieht durch die Deklaration einer Variablen mit dem Schlüsselwort extern. Die Vergabe von Initialwerten in der Headerdatei ist verboten. Initialisiert wird die Variable im Implementierungsteil des Moduls. Die Schnittstelle enthält alle zu exportierenden Konstantenwerte und Datentypen BEISPIEL: #define INITIALWERT 10 /* Konstante */ typedef unsigned int meintyp; /* Datentyp*/ extern meintyp daten; /* Ankündigung der externen Variablen */ Will ein externes Modul A auf die globalen Variablen im Modul G zugreifen, muss in A die Schnittstelle ( Headerdatei ) mit Schnittstelle: globaledaten.h #include G.h eingebunden werden. #define Initialwert 10 typedef unsigned int meintyp extern meintyp daten: Modul: globaledaten.c typedef unsigned int meintyp; meintyp daten =10; Modul: A #include globaledaten.h daten = daten * 2; #include globaledaten.h meinwert = daten;

17 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 67 von 73 M ODULTYP A BSTRAKTES D ATENOBJEKT ( ADO ) Das Modul enthält modulglobale Daten,die nicht exportiert werden. Über Funktionen, die als einzige Objekte exportiert werden, kann man auf diese Variablen zugreifen ( lesen, ändern, schreiben ). Durch die modulglobalen Daten mit langfristiger Lebensdauer hat das Modul einen inneren Zustand. ANWENDUNG UND VORTEILE: Der Zugriff auf Daten, die in mehreren Modulen benötigt werden und damit global vereinbart werden müssten, wird durch ein Modul überwacht. Der Zugriff von externen Modulen auf die Daten erfolgt nicht direkt, sondern indirekt über Funktionen, die das Modul bereitstellt. Dadurch werden Programmierfehler minimiert. Die Pflege des Programms wird einfacher, da nur ein Programmierer für Ergänzungen und Änderungen zuständig ist. Die Art und Weise wie komplexe Datenstrukturen im Programm realisiert sind bleibt den Anwendern verborgen ( information hiding ). Sie wird durch den Programmier, der für das Modul zuständig ist, festgelegt Über Funktionen im Modul wird die Bearbeitung der Daten überwacht. Man kann sehr einfach die Realisierung der Datenstruktur ändern ohne das andere Module d.h. Programmierer betroffen sind, in dem man die Funktionsschnittstelle ( Funktionsname, Ergebnistyp und formale Parameter ) unverändert lässt. BEISPIEL: REALISIERUNG EINES STACK. Der Stack wird als modulglobale Variable realisiert. Über die Funktionen init(), push() und pop() wird der Stack verändert. Durch diese drei Funktionen ist der Stack als abstrakte Datenstruktur eindeutig beschrieben. Egal wie der Stack als Variable realisiert wird ( als array oder als verkettete Liste ), die Funktionen bleiben gleich und haben immer die gleiche Wirkung. Der Programmierer, der den Stack verwendet, muß nur diese Funktionen nicht aber die Realisierung des Stack kennen. Man kann die Implementierung des Stacks im Modul ändern z.b. von array-realisierung zu einer einfach verketteten Liste ohne das andere Programmierer davon betroffen sind. IMPLEMENTIERUNG: Im Modul dürfen nur modulglobale Daten und Funktionen definiert werden. Globale Daten sind nicht erlaubt. Modulglobale Variablen werden wie globale Variablen ausserhalb einer Funktion definiert und mit Initialwerten versehen. Durch das Schlüsselwort static wiird die Gültigkeit der Variablen auf das Modul eingeschränkt. Die Variablen werden damit nicht mehr exportiert. BEISPIEL: static int stack[256]={0}; static int stackzeiger=0;

18 Programmieren 2 Prof. Dr. Keller Studiengang Angewandte Informatik Ausgabe: Seite 68 von 73 SCHNITTSTELLE: Die Schnittstelle wird in einer Headerdatei mit gleichem Modulnamen aber der Dateikennung.h definiert. Die Schnittstelle enthält die Prototypen der exportierten Funktionen sowie alle zu exportierenden Konstantenwerte und Datentypen Will ein externes Modul A über die Funktionen auf die modulglobalen Daten im Modul ADO zugreifen muss in A die Schnittstelle ( Headerdatei ) mit #include ADO.h eingebunden werden. M ODULTYP MAK RO Als Sonderform von Modul kann in C der Modultyp MACRO betrachtet werden. Das Modul wird durch die Präprozessor-Anweisung #include als Text eingebunden, daher nicht vorübersetzt und als Objektmodul zum Programm gebunden. Das Modul vom Typ MACRO enthält mit #define definierte Konstanten und Makros, sowie selbstdefinierte Datentypen, die global zu Verfügung gestellt werden aber keinem Programmmodul als Exportschnittstelle zugeordnet ist z.b. eine Konstante wie PI oder ein Makro NEWLINE. IMPLEMENTIERUNG Es existiert kein vorübersetzbarer C-Quelltext. SCHNITTSTELLE: Zu dem Modul existiert lediglich eine Headerdatei, in der mit der Präprozessor-Anweisung #define Konstanten oder Makros definiert und mit typedef selbstdefinierte Datentypen zu Verfügung gestellt werden.

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

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

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

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

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

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

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11

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

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de GEVITAS-Sync Bedienungsanleitung Stand: 26.05.2011 Copyright 2011 by GEVITAS GmbH www.gevitas.de Inhalt 1. Einleitung... 3 1.1. Installation... 3 1.2. Zugriffsrechte... 3 1.3. Starten... 4 1.4. Die Menü-Leiste...

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Qt-Projekte mit Visual Studio 2005

Qt-Projekte mit Visual Studio 2005 Qt-Projekte mit Visual Studio 2005 Benötigte Programme: Visual Studio 2005 Vollversion, Microsoft Qt 4 Open Source s. Qt 4-Installationsanleitung Tabelle 1: Benötigte Programme für die Qt-Programmierung

Mehr

Programmentwicklung mit C++ (unter Unix/Linux)

Programmentwicklung mit C++ (unter Unix/Linux) Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

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

32.4 Anpassen von Menüs und Symbolleisten 795i

32.4 Anpassen von Menüs und Symbolleisten 795i 32.4 Anpassen von Menüs und Symbolleisten 795i Fortsetzung der Seiten in der 8. Auflage 32.4 Anpassen von Menüs und Symbolleisten 32.4.1 Anpassen von Menüs Die Menüs können um folgende Typen von Optionen

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

DLLs (dynamic loaded libraries) mit MingW erstellen

DLLs (dynamic loaded libraries) mit MingW erstellen DLLs (dynamic loaded libraries) mit MingW erstellen Autor: Michel D. Schmid Datum: April 2, 2009 Contents 1 Einführung 1 1.1 Open-Source Tools.......................................... 1 2 Beispiel 1:

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Softwarepraktikum: Einführung in Makefiles

Softwarepraktikum: Einführung in Makefiles Softwarepraktikum: Einführung in Makefiles (Eingebettete Systeme und Robotik),, http://ai3.inf.uni-bayreuth.de /home/db_lehre/praktika/softwarepraktikum/vorbesprechung_und_einfuehrung/vortraege/makefile_tuto

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)"

Praxisorientierte Einführung in C++ Lektion: Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm) Praxisorientierte Einführung in C++ Lektion: "Die Compiler-Chain (Vom Quellcode zum ausführbaren Programm)" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte

Mehr

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Bedienungsanleitung Anlassteilnehmer (Vereinslisten) Bedienungsanleitung Anlassteilnehmer Dieses Programm ist speziell für Vereine entworfen. Es ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen,

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

bitte auf den Button Baudaten-Fenster öffnen klicken. (oder über das Menü -> STAMMDATEN -> BAUDATEN anklicken)

bitte auf den Button Baudaten-Fenster öffnen klicken. (oder über das Menü -> STAMMDATEN -> BAUDATEN anklicken) Vorgang: Export der Daten aus sirados 1. Im gestarteten Programm sirados im Schnellstartfenster -> bitte auf den Button Baudaten-Fenster öffnen klicken. (oder über das Menü -> STAMMDATEN -> BAUDATEN anklicken)

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie importiere und exportiere ich Daten zwischen myfactory und Outlook? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory Daten aus Outlook importieren Daten aus myfactory nach Outlook

Mehr

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

Formale Sprachen und Grammatiken

Formale Sprachen und Grammatiken Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

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

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Schnittstellenbeschreibung zur Importschnittstelle der Vollmachtsdatenbank

Schnittstellenbeschreibung zur Importschnittstelle der Vollmachtsdatenbank Schnittstellenbeschreibung zur Importschnittstelle der DATEV eg, 2013 Version 1.0 Seite 1 von 5 Inhaltsverzeichnis 1. Allgemeine Anforderungen... 3 1.1. Dateiaufbau... 3 1.2. Datensatzaufbau... 3 1.3.

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Kompilieren und Linken

Kompilieren und Linken Kapitel 2 Kompilieren und Linken Bevor wir uns auf C++ selbst stürzen, brauchen wir einiges Vorgeplänkel, wie man komfortabel ein größeres C++- kompilieren kann. Mit Java stellt sich der Kompiliervorgang

Mehr

Version 1.0.0. NotarNet Bürokommunikation. Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook

Version 1.0.0. NotarNet Bürokommunikation. Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook Version 1.0.0 NotarNet Bürokommunikation Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook Seite 1 Vorgehensweise bei der Einrichtung... 2 2 Vorbereitung... 2 3 Ablauf des Imports... 3 4 Allgemeine

Mehr

Adminer: Installationsanleitung

Adminer: Installationsanleitung Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann

Mehr

SEPA Lastschriften. Ergänzung zur Dokumentation vom 27.01.2014. Workshop Software GmbH Siemensstr. 21 47533 Kleve 02821 / 731 20 02821 / 731 299

SEPA Lastschriften. Ergänzung zur Dokumentation vom 27.01.2014. Workshop Software GmbH Siemensstr. 21 47533 Kleve 02821 / 731 20 02821 / 731 299 SEPA Lastschriften Ergänzung zur Dokumentation vom 27.01.2014 Workshop Software GmbH Siemensstr. 21 47533 Kleve 02821 / 731 20 02821 / 731 299 www.workshop-software.de Verfasser: SK info@workshop-software.de

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

Kostenstellen verwalten. Tipps & Tricks

Kostenstellen verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4

Mehr

IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen

IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen Mit Einführung der 2010 TRY (Test Referenz Jahr) Klimadatensätze ist es erstmals möglich, neben den für 15

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

Ü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

Die Excel Schnittstelle - Pro Pack

Die Excel Schnittstelle - Pro Pack Die Excel Schnittstelle - Pro Pack Die Excel Pro Pack ist eine Erweiterung der normalen Excel Schnittstelle, die in der Vollversion von POSWare Bestandteil der normalen Lizenz und somit für alle Lizenznehmer

Mehr

Import der Schülerdaten Sokrates Web

Import der Schülerdaten Sokrates Web 23.09.2014 Import der Schülerdaten Sokrates Web Leitfaden zum korrekten Import der Schülerdaten aus Sokrates Web WebUntis 2015 Über dieses Dokument Dieses Dokument beschreibt die konkreten Schritte, die

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

DER BESSER INFORMIERTE GEWINNT!

DER BESSER INFORMIERTE GEWINNT! Revision 2.27 SP1 Neuigkeiten MOS'aik-Module DER BESSER INFORMIERTE GEWINNT! Stand: 07.12.2007 Dimmel-Software GmbH Internet: www.dimmel.de Wilthener Str. 32 E-Mail: info@dimmel.de 02625 Bautzen Inhaltsverzeichnis

Mehr

1. Einschränkung für Mac-User ohne Office 365. 2. Dokumente hochladen, teilen und bearbeiten

1. Einschränkung für Mac-User ohne Office 365. 2. Dokumente hochladen, teilen und bearbeiten 1. Einschränkung für Mac-User ohne Office 365 Mac-User ohne Office 365 müssen die Dateien herunterladen; sie können die Dateien nicht direkt öffnen und bearbeiten. Wenn die Datei heruntergeladen wurde,

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Handbuch zum Excel Formular Editor

Handbuch zum Excel Formular Editor Handbuch zum Excel Formular Editor Mit diesem Programm können Sie die Zellen von ihrer Excel Datei automatisch befüllen lassen. Die Daten können aus der Coffee Datenbank, oder einer weiteren Excel Datendatei

Mehr

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit

Mehr

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein

Mehr

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von

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

Grundlagen der Informatik - 6. Praktikum

Grundlagen der Informatik - 6. Praktikum Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

How to do? Projekte - Zeiterfassung

How to do? Projekte - Zeiterfassung How to do? Projekte - Zeiterfassung Stand: Version 4.0.1, 18.03.2009 1. EINLEITUNG...3 2. PROJEKTE UND STAMMDATEN...4 2.1 Projekte... 4 2.2 Projektmitarbeiter... 5 2.3 Tätigkeiten... 6 2.4 Unterprojekte...

Mehr

PeDaS Personal Data Safe. - Bedienungsanleitung -

PeDaS Personal Data Safe. - Bedienungsanleitung - PeDaS Personal Data Safe - Bedienungsanleitung - PeDaS Bedienungsanleitung v1.0 1/12 OWITA GmbH 2008 1 Initialisierung einer neuen SmartCard Starten Sie die PeDaS-Anwendung, nachdem Sie eine neue noch

Mehr

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation (Bei Abweichungen, die bspw. durch technischen Fortschritt entstehen können, ziehen Sie bitte immer das aktuelle Handbuch

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

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Wie kann ein PDF File angezeigt werden? kann mit Acrobat-Viewern angezeigt werden auf jeder Plattform!! (Unix,

Mehr

Anleitung Captain Logfex 2013

Anleitung Captain Logfex 2013 Anleitung Captain Logfex 2013 Inhalt: 1. Installationshinweise 2. Erste Schritte 3. Client-Installation 4. Arbeiten mit Logfex 5. Gruppenrichtlinien-Einstellungen für die Windows-Firewall 1. Installationshinweis:

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Kurzanleitung: Abonnenten-Import

Kurzanleitung: Abonnenten-Import Kurzanleitung: Abonnenten-Import 1 Import-Format... 1 2 Abonnentendaten importieren... 3 2010 Mayoris AG Kurzanleitung: Abonnentendaten-Import 1 Import-Format Daten von (potentiellen) Newsletter-Abonnenten

Mehr

Druckerscriptsprache

Druckerscriptsprache Druckerscriptsprache Die Druckerscriptsprache stellt Ihnen ein mächtiges Werkzeug zur Erstellung und Automatisierung von komplexen Druckvorgängen zur Verfügung. Vom Folgedruck bis zum Archivfunktion ist

Mehr

DIRECTINFO 5.7 SICHERHEITSKONZEPTE FÜR BENUTZER, INFORMATIONEN UND FUNKTIONEN

DIRECTINFO 5.7 SICHERHEITSKONZEPTE FÜR BENUTZER, INFORMATIONEN UND FUNKTIONEN DIRECTINFO 5.7 SICHERHEITSKONZEPTE FÜR BENUTZER, INFORMATIONEN UND FUNKTIONEN - Whitepaper 1 Autor: Peter Kopecki Version: 1.2 Stand: Mai 2006 DIRECTINFO 5.7... 1 SICHERHEITSKONZEPTE FÜR BENUTZER, INFORMATIONEN

Mehr

Export von Kontaktdaten aus FDISK und Import in Outlook

Export von Kontaktdaten aus FDISK und Import in Outlook Export von Kontaktdaten aus FDISK und Import in Outlook Das Exportieren von Kontaktdaten aus FDISK und deren Import in Outlook ist keine einfache, aber nützliche Möglichkeit, die stets aktuellen Daten

Mehr

1. Zuerst muss der Artikel angelegt werden, damit später die Produktvarianten hinzugefügt werden können.

1. Zuerst muss der Artikel angelegt werden, damit später die Produktvarianten hinzugefügt werden können. Produktvarianten und Downloads erstellen Produktvarianten eignen sich um Artikel mit verschiedenen Optionen wie bspw. ein Herrenhemd in den Farben blau, grün und rot sowie in den Größen S, M und L zu verkaufen.

Mehr

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene

Mehr

SharePoint Demonstration

SharePoint Demonstration SharePoint Demonstration Was zeigt die Demonstration? Diese Demonstration soll den modernen Zugriff auf Daten und Informationen veranschaulichen und zeigen welche Vorteile sich dadurch in der Zusammenarbeit

Mehr

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016 Referentin: Dr. Kelly Neudorfer Universität Hohenheim Was wir jetzt besprechen werden ist eine Frage, mit denen viele

Mehr

FORUM HANDREICHUNG (STAND: AUGUST 2013)

FORUM HANDREICHUNG (STAND: AUGUST 2013) FORUM HANDREICHUNG (STAND: AUGUST 2013) Seite 2, Forum Inhalt Ein Forum anlegen... 3 Forumstypen... 4 Beiträge im Forum schreiben... 5 Beiträge im Forum beantworten... 6 Besondere Rechte der Leitung...

Mehr

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil IV - Weiterführende Themen 14. Modularisierung und Automatisierung Was heißt Modularisierung? Seite 2 bisher Programm komplett in einer Datei längere

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

CL-Mini-ABF. Kurzbeschreibung. Installation und Vorbereitung. Stand 30.01.2012. Ihre HTK-Filiale Michelstadt

CL-Mini-ABF. Kurzbeschreibung. Installation und Vorbereitung. Stand 30.01.2012. Ihre HTK-Filiale Michelstadt 64720 email : Info@KM-EDV.de Stand 30.01.2012 CL-Mini-ABF Inhaltsverzeichnis Kurzbeschreibung... 1 Installation und Vorbereitung...1 ODBC-Zugriff... 2 ODBC-Einrichtung unter Windows XP...2 ODBC-Einrichtung

Mehr

E-Mail-Inhalte an cobra übergeben

E-Mail-Inhalte an cobra übergeben E-Mail-Inhalte an cobra übergeben Sie bieten ihren potentiellen oder schon bestehenden Kunden über ihre Website die Möglichkeit, per Bestellformular verschiedene Infomaterialien in Papierform abzurufen?

Mehr

Tevalo Handbuch v 1.1 vom 10.11.2011

Tevalo Handbuch v 1.1 vom 10.11.2011 Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche

Mehr

Hilfe zur Urlaubsplanung und Zeiterfassung

Hilfe zur Urlaubsplanung und Zeiterfassung Hilfe zur Urlaubsplanung und Zeiterfassung Urlaubs- und Arbeitsplanung: Mit der Urlaubs- und Arbeitsplanung kann jeder Mitarbeiter in Coffee seine Zeiten eintragen. Die Eintragung kann mit dem Status anfragen,

Mehr

Symbolbearbeitung mit EPLAN 5.60/5.70 DIC_***D.SYM

Symbolbearbeitung mit EPLAN 5.60/5.70 DIC_***D.SYM Symbolbearbeitung mit EPLAN 5.60/5.70 DIC_***D.SYM Beispielhaft anhand einer kopierten DIC_ESSD.SYM nach DIC_BGID.SYM werden hier die einzelnen Schritte der Symbolbearbeitung erklärt. Es ist generell empfehlenswert

Mehr

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden?

Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden? Wie kann ich in der Backstage-Ansicht eigene Dokumentationen einbinden? Anforderung Durch die Bearbeitung einer XML-Datei können Sie Ihre eigenen Dokumentationen (z.b. PDF-Dateien, Microsoft Word Dokumente

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Bearbeiten elektronische Rechnungen (Invoices)

Bearbeiten elektronische Rechnungen (Invoices) Bearbeiten elektronische Rechnungen (Invoices) 1. Zweck des Programms: Die elektronischen Rechnungen können zur Zeit für folgenden Bereiche genutzt werden:.. Anzeige der Rechnungen mit den relevanten Werten..

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 horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen

Mehr

Schnittstelle Drittmeldepflicht Ab ImmoTop 4.60.06

Schnittstelle Drittmeldepflicht Ab ImmoTop 4.60.06 Schnittstelle Drittmeldepflicht Ab ImmoTop 4.60.06 Schnittstelle Drittmeldepflicht (ech-0112) 1 1 Schnittstelle Drittmeldepflicht (ech-0112) Die Ein- und Auszüge, die im Zusammenhang mit Mieterwechseln

Mehr