10 Modulares Programmieren
|
|
- Helge Schmidt
- vor 8 Jahren
- Abrufe
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 Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrFakultä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 **
Mehr1 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
MehrJava 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
MehrEinfü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).
MehrBinä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
MehrPropä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
MehrObjektbasierte 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
MehrDr. 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
MehrObjektorientierte 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/
Mehr1 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.
MehrBedienungsanleitung. 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...
MehrII. 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
MehrQt-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
MehrProgrammentwicklung 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
MehrArtikel 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
MehrJava 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
MehrDie 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
Mehr32.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
MehrObjektorientierte 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
MehrDLLs (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:
MehrEs 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
MehrGrundlagen 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 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
MehrAbamsoft 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
MehrMit 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
MehrSoftwarepraktikum: 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
MehrM. 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
MehrPraxisorientierte 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
MehrBedienungsanleitung 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,
MehrEinfü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
Mehrbitte 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)
MehrKommunikations-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
MehrUnterprogramme. 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
MehrFormale 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
MehrPass 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
MehrEinfü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
MehrGrundlagen. 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
MehrSuche 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
MehrSchnittstellenbeschreibung 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.
MehrProgrammieren 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
MehrArbeiten 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
MehrKompilieren 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
MehrVersion 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
MehrAdminer: 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
MehrSEPA 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
MehrDeklarationen 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.
MehrKostenstellen 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
MehrIDA 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
MehrEinfü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 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
MehrDie 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
MehrImport 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
MehrPraktikum 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
MehrFachbericht 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
MehrDER 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
Mehr1. 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,
MehrC++ 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()
MehrHandbuch 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
MehrIhre 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
MehrPakete 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
MehrProzeß 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
MehrAGROPLUS 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
MehrGrundlagen 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
MehrSoftware 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
MehrHow 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...
MehrPeDaS 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
MehrDokumentation 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
MehrElexis-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
MehrKleines 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
MehrAufgaben 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.
MehrProgrammierkurs 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
MehrWas 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,
MehrAnleitung 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:
MehrMotivation. 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
MehrVorkurs 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:
MehrWeb-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.........................................
MehrKurzanleitung: 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
MehrDruckerscriptsprache
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
MehrDIRECTINFO 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
MehrExport 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
Mehr1. 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.
MehrHochschule 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
MehrSharePoint 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
MehrL10N-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
MehrFORUM 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) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines
MehrEinfü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
MehrInformatik 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
MehrCL-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
MehrE-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?
MehrTevalo 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
MehrHilfe 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,
MehrSymbolbearbeitung 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
MehrWie 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
MehrVerhindert, 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:
MehrBearbeiten 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..
MehrEinfü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
Mehrteischl.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
MehrSchnittstelle 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