5. Modulare Programmierung

Größe: px
Ab Seite anzeigen:

Download "5. Modulare Programmierung"

Transkript

1 C und C++ (CPP) 5. Modulare Programmierung Prof. Dr. Marc Rennhard Institut für angewandte Informationstechnologie InIT ZHAW Zürcher Hochschule für angewandte Wissenschaften Marc Rennhard, , CPP_ModulareProgrammierung.ppt 1 1

2 Ablauf Zusammenspiel von Präprozessor, Compiler und Linker beim Generieren eines ausführbaren Programms Modulare Programmierung mit Aufteilung des Quellcodes in mehrere Dateien Gebrauch von Libraries make Utility, um ein Programm aus mehreren Modulen zu generieren Kurzübersicht der kompletten C Standard Library Marc Rennhard, , CPP_ModulareProgrammierung.ppt 2 2

3 Ziele Sie kennen die Aufgaben von Präprozessor, Compiler und Linker und können diese erklären Die kennen die Konzepte der modularen Programmierung und können diese selbst anwenden Sie wissen, wozu das make Utility gebraucht wird, wie es funktioniert und wie ein Makefile aufgebaut ist Marc Rennhard, , CPP_ModulareProgrammierung.ppt 3 3

4 Präprozessor, Compiler und Linker (1) Um aus Quellcode ein lauffähiges Programm zu generieren, sind drei Komponenten involviert: Der Präprozessor sucht im Quellcode nach speziellen Befehlen (z.b. #include, #define, #ifdef, ), um dann im Wesentlichen textuelle Ergänzungen durchzuführen Der Compiler wandelt dann den Quellcode in Objektcode um Aus einer Quellcodedatei wird eine Objektcodedatei generiert Die einzelnen Objektcodedateien können noch offene Aufrufe enthalten z.b. auf Funktionen, die nicht innerhalb der eigenen Quellcodedatei definiert sind oder auf globale Variablen in einer anderen Quellcodedatei Der Linker verbindet die noch offenen Aufrufe und generiert ein ausführbares Programm Marc Rennhard, , CPP_ModulareProgrammierung.ppt 4 4

5 Präprozessor, Compiler und Linker (2) Editor hello.c Quellcodedatei Makefile Headerdatei hello.h stdio.h gcc -c hello.c Präprozessor Compiler Objektdatei hello.o gcc -o hello hello.o Linker Libraries (direkt: gcc -o hello hello.c) Ausführbares Programm hello libc Marc Rennhard, , CPP_ModulareProgrammierung.ppt 5 Mit gcc S hello.c kann Assembler-Code generiert werden; Assembler ist im Wesentlichen eine für den Menschen lesbare Version von Objektcode. 5

6 Präprozessor (1) Der Präprozessor hat folgende Aufgaben: Daten von anderen Dateien in den Quelltext einbinden (#include) Mit #define definierte Konstanten durch die entsprechenden Werte zu ersetzen Selektiv Teile des Quellcodes ein- oder auszuschliessen (mit den Befehlen #if, #elif, #else, #endif, #ifdef, #ifndef) Präprozessorbefehle beginnen immer mit # Mit gcc E kann der Output nach der Präprozessorstufe betrachtet werden Es gibt zwei Arten um Daten von anderen Dateien einzubinden: #include <Dateiname> um Headerdateien der Standard Library einzubinden, z.b. #include <stdio.h> #include "Dateiname" um projektspezifische (d.h. selbst generierte) Headerdateien einzubinden, z.b. #include "hello.h" Marc Rennhard, , CPP_ModulareProgrammierung.ppt 6 6

7 Präprozessor (2) Konstanten werden mit #define definiert #define MAXLOOP 1000 jedes Auftreten von MAXLOOP im Quellcode wird durch 1000 ersetzt int counter = MAXLOOP; int counter = 1000; Achtung: man kann mit #define auch Fehler einbauen: #define K int K = 20; /* daraus wird int 10 = 20; dies wird vom Compiler entdeckt weil 10 kein gültiger Variablenname ist */ Konstanten können auch keinen Wert haben und können un -definiert werden; dies macht aber im Zusammenhang mit selektiver Einbindung von Code nur Sinn: #define DEBUG /* Definieren einer Konstante DEBUG ( Flag setzen) */... #undef DEBUG /* DEBUG existiert nicht mehr ( Flag nicht gesetzt) */ Marc Rennhard, , CPP_ModulareProgrammierung.ppt 7 7

8 Präprozessor (3) Selektiv Code ein- oder ausschliessen; z.b. um ein Programm für Debugging oder Production Mode zu kompilieren: #define DEBUG /* Konstante; ohne zugehörigen Wert */... #if defined DEBUG /* ist eine Konstante DEBUG definiert? */ printf("program Version 1 (Debugging)\n"); /* ja */ #else printf("program Version 1 (Production)\n"); /* nein */ #endif Kurzform für #if defined: #ifdef #ifdef DEBUG und #if defined DEBUG sind also identisch Alle Präprozessor-Befehle: #if, #elif, #else, #endif, #ifdef, #ifndef Marc Rennhard, , CPP_ModulareProgrammierung.ppt 8 Man beachte: Der Präprozessor wird keine if-statements aus den obigen Konstrukten generieren, welche dann zur Laufzeit ausgewertet werden müssen. Ist DEBUG gesetzt, so wird das komplette #if... #endif Konstrukt mit der einzigen Zeile printf( Program Version 1 (Debugging)\n ); ersetzt. Selektives Ein- oder Ausschliessen von Code wird häufig auch dazu verwendet, wenn ein Programm auf verschiedenen Systemen kompilierbar sein soll. Oft wird dabei je nach Zielsystem, für welches ein ausführbares Programm kompiliert werden soll, eine eigene Headerdatei eingebunden, welche dann wiederum systemspezifische #includes enthalten kann. Das aktuell verwendete System kann mit Präzessorbefehlen erkannt werden, indem getestet wird, ob und auf welchen Wert gewisse Umgebungsvariablen gesetzt sind. 8

9 Compiler Der eigentliche Compiler erhält vom Präprozessor den überarbeiteten Quellcode und generiert Objektcode Der Objektcode ist bereits maschinennaher Code, der aber noch nicht ausführbar ist, da er noch offene Aufrufe enthalten kann Aufgaben des Compilers Prüfung des Quellcodes auf syntaktische Korrektheit Statische Typprüfung (überprüft die Datentypen bei der Zuweisung von Variablen) Gibt Errors oder Warnungen aus test.c:16: error: 'p' undeclared (first use in this function) test.c:16: warning: assignment makes integer from pointer without a cast Treten keine Errors auf (Warnungen sind erlaubt, sollten aber vom Programmierer genau untersucht werden!), wird der Objektcode erzeugt Marc Rennhard, , CPP_ModulareProgrammierung.ppt 9 9

10 Linker Generiert ein vollständiges, ausführbares Programm aus: dem vom Compiler generierten Objektcode Code aus der Standard Library oder aus anderen Libraries (welche auch nichts anderes als Objektcode enthalten) Die wichtigste Aufgabe des Linkers ist die Auflösung der noch offenen Aufrufe: Es wird geprüft, ob die aus anderen Objektdateien oder aus libraries verwendeten Funktionen dort auch wirklich vorhanden sind Es wird geprüft, ob mit extern deklarierte Variablen auch wirklich irgendwo definiert werden Der verwendete Objektcode wird in einer ausführbaren Datei zusammengesetzt und die Funktionsaufrufe und die zugehörigen Funktionen werden zusammengehängt (die Adressen der Funktion werden bei den Aufrufen richtig gesetzt) Marc Rennhard, , CPP_ModulareProgrammierung.ppt 10 10

11 Modulare Programmierung (1) Aufteilen des Quellcodes auf mehrere Module Verschiedene Module werden in verschiedenen Dateien abgelegt Weiter werden ein oder mehrere Headerdateien verwendet Enthalten zb Konstanten (#define), Funktionsdeklarationen und Strukturen dadurch kommen die entsprechenden Daten nur einmal im Quellcode vor Beispiel: einfaches Programm mit einem #define und einer Funktion doit main.c: #define MAX 1000 int doit(int b); /* Funktionsdeklaration */ int main(void) { return MAX + doit(10); } int doit(int b) { /* Funktionsdefinition */ return MAX + b; } Marc Rennhard, , CPP_ModulareProgrammierung.ppt 11 In Java wird die modulare Programmierung schon fast erzwungen mit einer Datei pro Klasse. In C kann wenn man will der komplette Source-Code in ein potentiell riesiges File geschrieben werden. Sinnvollerweise soll man den Code aber aufteilen. Nicht unbedingt ein File pro Funktion, aber doch so, dass logisch zusammengehörende Programmteile in je einem separaten File untergebracht sind. Die Auslagerung der Funktionsdeklarationen und Ähnlichem in Headerdateien ist jedoch etwas C (und auch C++) spezifisches und hat kein Äquivalent in Java. 11

12 Modulare Programmierung (2) 1. Schritt: Aufteilung in zwei Dateien (Module): main.c: #define MAX 1000 int doit(int b); /* Funktionsdeklaration */ int main(void) { return MAX + doit(10); } doit.c: #define MAX 1000 int doit(int b); /* Funktionsdeklaration; optional, weil doit(...) in diesem Modul nicht aufgerufen wird */ int doit(int b) { /* Funktionsdefinition */ return MAX + b; } Vorteile: übersichtlich, Wiederverwendbarkeit von Modulen in anderen Prg. Nachteile: Konstanten, Funktionsdeklarationen, Strukturen etc. sind mehrmals vorhanden Marc Rennhard, , CPP_ModulareProgrammierung.ppt 12 12

13 Modulare Programmierung (3) 2. Schritt: Verwendung einer Headerdatei header.h: main.c: #define MAX 1000 int doit(int b); /* Funktionsdeklaration */ #include "header.h" /* alles, was in header.h steht, wird hier eingefügt */ int main(void) { return MAX + doit(10); } doit.c: #include "header.h" /* alles, was in header.h steht, wird hier eingefügt */ int doit(int b) { /* Funktionsdefinition */ return MAX + b; } Vorteil: Konstanten und Funktionsdeklarationen nur einmal vorhanden Marc Rennhard, , CPP_ModulareProgrammierung.ppt 13 13

14 Modulare Programmierung (4) Generieren des ausführbaren Prg.: gcc -o prog main.c doit.c Zuerst generiert der Präprozessor folgendes: aus doit.c: int doit(int b); /* Funktionsdeklaration, aus header.h */ int doit(int b) { /* Funktionsdefinition */ return b; } aus main.c: int doit(int b); /* Funktionsdeklaration, aus header.h */ int main(void) { return doit(b); } Anschliessend generieren Compiler und Linker das ausführbare Programm Einbinden von Headerdateien die nicht im aktuellen Verzeichnis liegen mit der Option -I: gcc Idir -o prog main.c doit.c Marc Rennhard, , CPP_ModulareProgrammierung.ppt 14 Der Präprozessor fügt den Code der Headerdateien einfach in das Programm ein und zwar dort, wo das entsprechende #include steht. Wenn mit der I Option mehrere Verzeichnisse eingebunden werden sollen, wird die Option einfach wiederholt verwendet. 14

15 Bemerkungen zu Libraries Die C Standard Library (Unix: /usr/lib/libc.a) enthält Dateien mit Objektcode, z.b. stdio.o, stdlib.o,... Die entsprechenden Standard Headers sind unter /usr/include/ zu finden, z.b. stdio.h, stdlib.h,... Mit #include <stdio.h> werden vom Präprozessor die Funktionsdeklarationen, Konstanten etc. des Objektcodes in stdio.o in den Quellcode eingefügt (genau gleich wie mit eigenen Headerdateien) Ohne diese Headerdateien müsste der Programmierer diese Funktionsdeklarationen etc. selbst einfügen! Der Linker verwendet den Objektcode aus den Objektdateien in der Standard Library, fügt diesen in das ausführbare Programm ein und setzt die Adressen für die entsprechenden Funktionsaufrufe Man kann auch eigene Libraries generieren; unter Unix mit dem Tool ar ar -r libown.a doit.o Kreiert Libary libown.a, die doit.o enthält gcc Ldir lown -o prog main.c -L bestimmt das Verzeichnis der Libraries; -l bestimmt die Library libown.a Marc Rennhard, , CPP_ModulareProgrammierung.ppt 15 Genau wie die I Option können auch die L und l Optionen wiederholt verwendet werden, um mehrere Verzeichnisse bzw. Libraries einzubinden. 15

16 Übung zu #include Wie sieht main.c nach dem Abarbeiten durch den Präprozessor aus? /* Modul person.h */ struct Person { char name[20]; unsigned int alter; }; /* Modul main.c */ #include "person.h" #include "list.h" int main(void) { struct List l; struct Person p; while (1) { } } /* Modul list.h */ #include "person.h" struct List { struct Person inhalt; struct List *next; }; void insert (struct List l, struct Person p); void remove (struct List l, struct Person p); /* Modul list.c */ #include "person.h" #include "list.h" void insert (struct List l, struct Person p) {} void remove (struct List l, struct Person p) {} Marc Rennhard, , CPP_ModulareProgrammierung.ppt 16 16

17 Problem mit mehrfachem #include main.c nach Präprozessor: Problem: person.h wird einmal direkt (von main.c) und einmal indirekt (via list.h) included Die Struktur Person ist damit in main.c zweimal deklariert Compilererror Abhilfe: 1. Definieren einer Konstante, sobald ein Headerfile zum ersten Mal included wird 2. Jedesmal beim include testen, ob die Headerdatei bereits included wurde (die Konstante schon gesetzt ist) /* Modul main.c */ struct Person { char name[20]; unsigned int alter; }; struct Person { char name[20]; unsigned int alter; }; struct List { struct Person inhalt; struct List *next; }; void insert (struct List l, struct Person p); void remove (struct List l, struct Person p); int main(void) { struct List l; struct Person p; while (1) { } } Marc Rennhard, , CPP_ModulareProgrammierung.ppt 17 Man kann sich fragen, ob list.h überhaupt ein #include "person.h" beinhalten soll, denn beim Gebrauch von list.h in einer.c-datei wird der Entwickler person.h ja selbst auch includen. Im obigen fall würde das auch funktionieren. Dennoch gilt die Regel, dass eine Headerdatei, die z.b. Datentypen einer anderen Headerdatei verwendet (wie dies bei list.h ja mit struct Person der Fall ist), die entsprechenden Datentypen immer included werden sollen. Der Grund ist, dass list.h ja auch Dinge (z.b. weitere Funktionen) erhalten könnte, die gar nichts direkt mit Personen zu tun haben. Wenn nun ein Entwickler nur einfach eine solche Funktion benötigt, dann wäre er sich der struct Person wohl gar nicht bewusst und er würde kaum ein #include "person.h" verwenden sondern einfach nur #include "list.h" und die resultierende Fehlermeldung des Compilers (bei struct List wird dieser struct Person nicht kennen) würde für den Entwickler gar keinen Sinn machen. Aus diesem Grund soll auch eine Headerdatei alles includen, was sie verwendet. Analog kann man argumentieren, dass der Entwickler dann bei #include "list.h" in main.c oder list.c halt kein #include "person.h" verwenden soll es ist in list.c ja schon enthalten. Aber auch hier gilt: Der Entwickler soll sich dem nicht bewusst sein müssen, sondern einfach das includen, was er in einer.c-datei braucht: Wenn er etwas mit Personen verwendet, dann schreibt er #include "person.h", wenn er etwas mit Listen verwendet, dann schreibt er #include "list.h" und verwendet er beides, wo wird er auch beide includes hinschreiben. Er soll sich nicht über irgendwelche potentiellen Abhängigkeiten von Headerdateien bewusst sein müssen. Aus diesem Grund ist eine Lösung wünschenswert, die auf jeden Fall funktioniert und robust gegenüber mehrfachen includes ist dies wird mit dem Konstrukt auf der nächsten Folie erreicht. 17

18 Problem mit mehrfachem #include Abhilfe Mit folgendem Konstrukt in jeder Headerdatei wird jede Headerdatei maximal einmal included: #ifndef HEADERDATEI_KENNUNG #define HEADERDATEI_KENNUNG /* code */ #endif /* Modul person.h */ #ifndef PERSON_H #define PERSON_H struct Person { char name[20]; unsigned int alter; }; #endif /* Modul list.h */ #ifndef LIST_H #define LIST_H #include "person.h" struct List { struct Person inhalt; struct List *next; }; void insert (struct List l, struct Person p); void remove (struct List l, struct Person p); #endif Marc Rennhard, , CPP_ModulareProgrammierung.ppt 18 Als C/C++ Programmierer sollten Sie sich angewöhnen, das obige Konstrukt immer in Headerfiles zu verwenden. Damit stellen Sie sicher, dass Sie selbst und auch andere Programmierer Ihre Codeteile und die zugehörigen Headerdateien einfach verwenden können, ohne die genauen Abhängigkeiten untereinander verstehen zu müssen. 18

19 make Utility Jedes grössere Programm setzt sich aus einer Reihe von Dateien (Module) zusammen Schon bei Veränderungen einzelner Dateien kann es erforderlich sein, mehrere Module neu zu kompilieren Wird z.b. eine Headerdatei verändert, so sollten alle Quellcodedateien, die diese Headerdatei einschliessen, neu kompiliert werden Bei grossen Projekten wird dies sehr schnell unübersichtlich make Utility make stammt ursprünglich von Unix und hilft, ein Programm aus mehreren Modulen unter Berücksichtigung der Abhängigkeiten zu erstellen Beim Aufruf von make werden die Regeln des im aktuellen Verzeichnis liegenden Makefile rekursiv abgearbeitet Marc Rennhard, , CPP_ModulareProgrammierung.ppt 19 make ist keineswegs auf C/C++ beschränkt. Genausogut können Sie damit Java Programme (oder irgendetwas anderes) unter Berücksichtigung der Abhängigkeiten kompilieren. Schauen Sie einmal ein Open Source Software-Paket, von welchem Sie den Source-Code herunterladen, genauer an Sie werden bestimmt ein Makefile finden. 19

20 Makefile (1) Das Makefile enthält Regeln, wann, was und wie etwas auszuführen ist Es besteht primär aus Kommentaren; beginnend mit # Variablendefinitionen Expliziten Regeln Eine Regel ist wie folgt aufgebaut: target: dependencies <TAB> command target: was zu erstellen ist dependencies: geben an, wovon target abhängig ist command: das oder die abzuarbeitenden Kommandos, die immer dann abgearbeitet werden, wenn eine der dependencies ein jüngeres Modifikationsdatum hat als target Der <TAB> vor einem command ist notwendig (keine zusätzlichen Leerzeichen!) Die Abarbeitung der Regeln erfolgt rekursiv Marc Rennhard, , CPP_ModulareProgrammierung.ppt 20 Rekursive Abarbeitung bedeutet folgendes: wenn ein target A abhängig von einer depedencie B ist und es im gleichen Makefile ein target C mit dem Namen der dependencie B gibt, so wird vor der Abarbeitung des commands von target A zuerst geprüft, ob target C neu erstellt werden muss und dieses wenn nötig auch vor der Ausführung des command von target A neu erstellt. Dies kann rekursiv über beliebig viele Schritte gehen. Das Beispiel auf der nächsten Folie illustriert dies. 20

21 Makefile (2) Beispiel: Programm rechner aus Modulen: main.c, add.c, sub.c, mul.c und div.c Alle Quellcodedateien nutzen die gemeinsame Headerdatei def.h Entsprechendes Makefile (Aufruf: make [all], make rechner oder make clean): # rechner wird aus allen Objektdateien (.o) zusammengebaut; clean dient # dazu, alle Objektdateien zu entfernen; all: rechner rechner: add.o sub.o mul.o div.o main.o gcc o rechner add.o sub.o mul.o div.o main.o clean: rm f *.o rechner # so entstehen die Objektdateien (def.h und Makefile werden angegeben, um # auch bei Veraenderungen dieser Dateien die Kompilierung neu zu starten) add.o: add.c def.h Makefile gcc c add.c sub.o: sub.c def.h Makefile gcc c sub.c mul.o: mul.c def.h Makefile gcc c mul.c div.o: div.c def.h Makefile gcc c div.c main.o: main.c def.h Makefile gcc c main.c Marc Rennhard, , CPP_ModulareProgrammierung.ppt 21 Führt man make all aus, so geschieht folgendes: Der Einstiegspunkt des Makefiles ist das target all, dort steht, all hängt von rechner ab. Man springt zum target rechner, rechner hängt von add.o, sub.o etc. ab Man springt zum target add.o, add.o hängt von add.c, def.h, Makefile ab. Ist eines davon jünger als add.o, so wird add.o gemäss gcc c add.c kompiliert Dasselbe geschieht mit sub.o, mul.o etc. Man kehrt wieder zum target rechner zurück. Wurde eine der add.o, sub.o etc. neu kompiliert, so wird gcc o rechner add.o... ausgeführt Man kehrt zu all zurück, dort gibt es kein command, womit das Makefile verlassen und make beendet wird Wird make ohne Parameter ausgeführt, so wird der erste Eintrag im Makefile verwendet. Im obigen Beispiel entspricht make als make all. Weil das Default-Verhalten von make (ohne Parameter) make all entsprechen sollte, fügt man den all-eintrag deshalb typischerweise ganz zuoberst ein. Im Prinzip wäre hier kein target all nötig, denn mit make rechner erreicht man ja genau dasselbe (all verweist in diesem Beispiel ja einfach auf ein einziges weiteres target (hier: dependency rechner)). Bei grösseren Projekten stehen hinter dem target all aber oft mehrere Teilprogramme, deshalb macht das target all dort Sinn und man findet es deshalb aus Konsistanzgründen meist auch bei kleineren Projekten, damit ganz Allgemein mit make all in jedem Projekt alles aktualisiert wird. 21

22 Übung zu make Unten sei das Listing des Verzeichnisses angegeben, welches die Dateien zum Programm rechner auf der vorhergehenden Folie enthält Was wird ausgeführt, wenn Sie jetzt make [all] auf der Kommandozeile eingeben? Beachten Sie den Zeitpunkt der letzten Modifikation der Dateien! $> ls l -rw-r rennhard users 555 Mar 18 11:07 Makefile -rw-r rennhard users 17 Mar 18 11:14 add.c -rw-r rennhard users 651 Mar 18 11:09 add.o -rw-r rennhard users 17 Mar 18 11:06 def.h -rw-r rennhard users 17 Mar 18 11:06 div.c -rw-r rennhard users 651 Mar 18 11:09 div.o -rw-r rennhard users 33 Mar 18 11:17 main.c -rw-r rennhard users 693 Mar 18 11:09 main.o -rw-r rennhard users 17 Mar 18 11:06 mul.c -rw-r rennhard users 651 Mar 18 11:09 mul.o -rwxr-x--- 1 rennhard users Mar 18 11:09 rechner* -rw-r rennhard users 17 Mar 18 11:06 sub.c Marc Rennhard, , CPP_ModulareProgrammierung.ppt 22 22

23 Die C Standard Library (1) Sie kennen bereits Teile der Standard Library: stdio.h, string.h, stdlib.h, stdarg.h, math.h Hier sind sämtliche zugehörigen Standard Headers aufgelistet Für umfassende Referenzen gibt es gute Webseiten, z.b. assert.h: Bietet ein Makro zur Diagnose von Programmen void assert(int expression) wenn expression = 0 wird eine Nachricht mit der Zeilennummer auf stderr ausgegeben und das Programm terminiert ctype.h: Testen einzelner Characters z.b. int isalnum(int c), int isdigit(int c), int islower(int c),... errno.h: Globale Variable errno, die von einigen Standard Library Funktionen gesetzt wird float.h: Bestimmung von Eigenschaften von Gleitkommazahlen-Typen z.b. grösste/kleinste darstellbare double-zahl: DBL_MAX, DBL_MIN Marc Rennhard, , CPP_ModulareProgrammierung.ppt 23 Generell ist die C Standard Library natürlich sehr klein im Vergleich zu der Java Standard Library. Durch die langjährige Existenz von C werden Sie im WWW allerdings grosse Mengen von weiteren Libraries finden, die von irgendwelchen C-Programmierern bereitsgestellt wurden. Eine Halb -standardisierte Library ist die GNU C Library, welche auf jedem Unix/Linux-System vorhanden ist und die ebenfalls viele zusätzliche Funktionalität bietet, zb für die Netzwerkkommunikation (sys/socket.h). 23

24 Die C Standard Library (2) limits.h: Bestimmung von Eigenschaften von ganzzahligen Typen z.b. grösste darstellbare int/unsigned int-zahl: INT_MAX, UINT_MAX locale.h: Auslesen von lokalen Eigenschaften, z.b. für Zahlendarstellung (Dezimalpunkt, Trennzeichen für 1000er Gruppen) math.h: Mathematische Funktionen double log(double x), double pow(double x, double y), double sqrt(double x), double tan(double x),... setjmp.h: Umgehen der normalen Funktionsaufruf/Return Sequenz (z.b. direkter Rücksprung von einem tief verschachtelten Funktionsaufruf) signal.h: Funktionalität, um Ausnahmebedingungen (Signale) des Betriebssystems zu verarbeiten (z.b. Division durch 0) Marc Rennhard, , CPP_ModulareProgrammierung.ppt 24 24

25 Die C Standard Library (3) stdarg.h: Macros, um Funktionen mit variabler Anzahl Parameter zu implementieren va_list, void va_start(va_list ap, lastarg), type va_arg(va_list ap, type), void va_end(va_list ap) stddef.h: Definition von zusätzlichen Typen und Konstanten (z.b. NULL) stdio.h: Standard Input/Output Funktionen, formatieren von Output, lesen und schreiben von Files (printf, scanf, getchar,...) stdlib.h: Utility Funktionen void* malloc(size_t size), void free(void* p), int atoi(const char* s), int abs(int n), int rand(void),... string.h: Diverse Funktionen auf Strings (strlen, strcpy, strcat,...) time.h: Zeit- und Datumsfunktionen, z.b. um aktuelle Zeit zu bestimmen Marc Rennhard, , CPP_ModulareProgrammierung.ppt 25 25

26 Zusammenfassung Um aus Quellcode ein ausführbares Programm zu generieren, werden nacheinander Präprozessor, Compiler und Linker ausgeführt Der Präprozessor macht textuelle Ergänzungen im Quellcode Der Compiler wandelt dann den Quellcode in Objektcode um Der Linker verbindet offene Aufrufe und generiert ein ausführbares Programm Bei der modularen Programmierung wird der gesamte Quellcode sinnvoll auf mehrere Dateien verteilt; Funktionsdeklarationen, Konstanten (#define) und Deklarationen von Strukturen gehören in Headerdateien Die Standard Library stellt diverse Funktionen für ganz verschiedene Aufgaben zur Verfügung; die Standard Library enthält nichts anderes als Objektcode (z.b. stdio.o); dazu gibt es die entsprechenden Standard Headers (z.b. stdio.h) Das make Utility erlaubt es, ein Programm, welches aus mehreren Modulen besteht, effizient zu generieren Marc Rennhard, , CPP_ModulareProgrammierung.ppt 26 26

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

Übersicht. C Modularisierung. Präprozessor, Compiler, Linker. Präprozessor, Compiler, Linker. Präprozessor, Compiler und und Linker Linker

Übersicht. C Modularisierung. Präprozessor, Compiler, Linker. Präprozessor, Compiler, Linker. Präprozessor, Compiler und und Linker Linker Übersicht Präprozessor, Compiler und und Linker Linker Befehle des Präprozessors C Modularisierung Bedingte Kompilierung Modulare Programmierung Prinzipien der Modularisierung 1 2 Präprozessor, Compiler,

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

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

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

Mehr

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

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

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Zählen von Objekten einer bestimmten Klasse

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

Mehr

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition

Einführung zum Arbeiten mit Microsoft Visual C++ 2010 Express Edition In den nachfolgenden Schritten finden Sie beschrieben, wie Sie in der Entwicklungsumgebung Microsoft Visual Studio 2010 eine Projektmappe, ein Projekt und einen ersten Quellcode erstellen, diesen kompilieren,

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

Informationen zur Verwendung von Visual Studio und cmake

Informationen zur Verwendung von Visual Studio und cmake Inhaltsverzeichnis Informationen zur Verwendung von Visual Studio und cmake... 2 Erste Schritte mit Visual Studio... 2 Einstellungen für Visual Studio 2013... 2 Nutzung von cmake... 6 Installation von

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

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

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

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

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

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

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

Mehr

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace. Starten Sie Eclipse: Abgesehen vom Kommandozeilenfenster, auf welches wir später eingehen, öffnet sich ein Dialog (in der FH vermutlich nicht, überspringen Sie in diesem Fall): Hier tragen sie Ihr Arbeitsverzeichnis

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

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

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

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Nuetzlicher Kleinkram

Nuetzlicher Kleinkram Ein paar Hilfestellungen zur Arbeit unter Linux/Unix FB Physik Freie Universität Berlin Computerphysik WS 2007/2008 1 2 3 user@ host :~ > gcc -o programm quelltext. c macht gleich mehrere Dinge auf einmal

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

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

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

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

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

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

Wie man eigene Programme erstellt

Wie man eigene Programme erstellt Kapitel 3 Wie man eigene Programme erstellt In diesem Kapitel geht es darum, sich mit einem Compiler vertraut zu machen. Dabei erfahren Sie, wie Sie eigene Programme auf den Systemen Windows und Linux

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

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

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

Barcodedatei importieren

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

Mehr

Testen mit JUnit. Motivation

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

Mehr

Enigmail Konfiguration

Enigmail Konfiguration Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es

Mehr

Informatik Grundlagen, WS04, Seminar 13

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

Mehr

Aufklappelemente anlegen

Aufklappelemente anlegen Aufklappelemente anlegen Dieses Dokument beschreibt die grundsätzliche Erstellung der Aufklappelemente in der mittleren und rechten Spalte. Login Melden Sie sich an der jeweiligen Website an, in dem Sie

Mehr

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

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Anleitung über den Umgang mit Schildern

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

Mehr

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel 2016. für Mac. amac-buch Verlag

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel 2016. für Mac. amac-buch Verlag Anton Ochsenkühn amac BUCH VERLAG Ecxel 2016 für Mac amac-buch Verlag 2 Word-Dokumentenkatalog! Zudem können unterhalb von Neu noch Zuletzt verwendet eingeblendet werden. Damit hat der Anwender einen sehr

Mehr

Zwischenablage (Bilder, Texte,...)

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

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

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

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Version 1.0 Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten In unserer Anleitung zeigen wir Dir, wie Du Blogbeiträge

Mehr

Rundung und Casting von Zahlen

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

Mehr

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

GEONET Anleitung für Web-Autoren

GEONET Anleitung für Web-Autoren GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth Alfred.Wassermann@uni-bayreuth.de 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Erstellen eigener HTML Seiten auf ewon

Erstellen eigener HTML Seiten auf ewon ewon - Technical Note Nr. 010 Version 1.2 Erstellen eigener HTML Seiten auf ewon 30.08.2006/SI Übersicht: 1. Thema 2. Benötigte Komponenten 3. Funktionsaufbau und Konfiguration 3.1. Unterpunkt 1 3.2. Unterpunkt

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden. Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden. Nach den Änderungen die Facebook vorgenommen hat ist es einfacher und auch schwerer geworden eigene Seiten einzubinden und

Mehr

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7 FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7 Die Installation der FuxMedia Software erfolgt erst NACH Einrichtung des Netzlaufwerks! Menüleiste einblenden, falls nicht vorhanden Die

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

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen 1. Quadratische Gleichungen Quadratische Gleichungen lassen sich immer auf die sog. normierte Form x 2 + px + = 0 bringen, in

Mehr

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine

S/W mit PhotoLine. Inhaltsverzeichnis. PhotoLine PhotoLine S/W mit PhotoLine Erstellt mit Version 16.11 Ich liebe Schwarzweiß-Bilder und schaue mir neidisch die Meisterwerke an, die andere Fotografen zustande bringen. Schon lange versuche ich, auch so

Mehr

Word 2010 Schnellbausteine

Word 2010 Schnellbausteine WO.001, Version 1.0 02.04.2013 Kurzanleitung Word 2010 Schnellbausteine Word 2010 enthält eine umfangreiche Sammlung vordefinierter Bausteine, die sogenannten "Schnellbausteine". Neben den aus den früheren

Mehr

7 Rechnen mit Polynomen

7 Rechnen mit Polynomen 7 Rechnen mit Polynomen Zu Polynomfunktionen Satz. Zwei Polynomfunktionen und f : R R, x a n x n + a n 1 x n 1 + a 1 x + a 0 g : R R, x b n x n + b n 1 x n 1 + b 1 x + b 0 sind genau dann gleich, wenn

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

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

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

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

Mehr

AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung

AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung AutoCAD 2007 - Dienstprogramm zur Lizenzübertragung Problem: Um AutoCAD abwechselnd auf mehreren Rechnern einsetzen zu können konnte man bis AutoCAD 2000 einfach den Dongle umstecken. Seit AutoCAD 2000i

Mehr

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden. 1 Informationen zum F*EX Service von BelWü Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden. 2 Registrierung für den Service Auf fex.belwue.de finden Sie

Mehr

Abschluss Version 1.0

Abschluss Version 1.0 Beschreibung Der Abschluss wird normalerweise nur einmal jährlich durchgeführt. Dieses Tech-Note soll helfen, diesen doch seltenen aber periodisch notwendigen Vorgang problemlos durchzuführen. Abschlussvarianten

Mehr

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach 34 70 17 28339 Bremen. Friedrich-Mißler-Straße 42 28211 Bremen

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach 34 70 17 28339 Bremen. Friedrich-Mißler-Straße 42 28211 Bremen Grontmij GmbH Postfach 34 70 17 28339 Bremen Friedrich-Mißler-Straße 42 28211 Bremen T +49 421 2032-6 F +49 421 2032-747 E info@grontmij.de W www.grontmij.de DELFI Benutzeranleitung Dateiversand für unsere

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

Informatik 1 Tutorial

Informatik 1 Tutorial ETH Zürich, D-INFK/D-BAUG Herbstsemester 2014 Dr. Martin Hirt Christian Badertscher Informatik 1 Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so

Mehr

Zahlen auf einen Blick

Zahlen auf einen Blick Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.

Mehr

Version 0.3. Installation von MinGW und Eclipse CDT

Version 0.3. Installation von MinGW und Eclipse CDT Version 0.3 Installation von MinGW und Eclipse CDT 1. Stellen Sie fest, ob Sie Windows in der 32 Bit Version oder in der 64 Bit Version installiert haben. 2. Prüfen Sie, welche Java Runtime vorhanden ist.

Mehr

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014)

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: 24.09.2014) Handbuch NAFI Online-Spezial 1. Auflage (Stand: 24.09.2014) Copyright 2016 by NAFI GmbH Unerlaubte Vervielfältigungen sind untersagt! Inhaltsangabe Einleitung... 3 Kundenauswahl... 3 Kunde hinzufügen...

Mehr

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999

Mind Mapping am PC. für Präsentationen, Vorträge, Selbstmanagement. von Isolde Kommer, Helmut Reinke. 1. Auflage. Hanser München 1999 Mind Mapping am PC für Präsentationen, Vorträge, Selbstmanagement von Isolde Kommer, Helmut Reinke 1. Auflage Hanser München 1999 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 21222 0 schnell

Mehr

Gezielt über Folien hinweg springen

Gezielt über Folien hinweg springen Gezielt über Folien hinweg springen Nehmen wir an, Sie haben eine relativ große Präsentation. Manchmal möchten Sie über Folien hinweg zu anderen Folien springen. Das kann vorkommen, weil Sie den gesamten

Mehr

Bereich METIS (Texte im Internet) Zählmarkenrecherche

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

Mehr

4 Aufzählungen und Listen erstellen

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

Mehr

Erfolgsmeldungen im Praxisbetrieb

Erfolgsmeldungen im Praxisbetrieb Inhalt 1. Was ist KV-Connect... 1 a. KV-SafeNet... 1 b. KV-Connect... 1 2. Vorbereitung der Installation... 2 a. KV-Connect-Zugangsdaten... 2 3. Einrichtung von KV-Connect... 3 a. Einstellungen im Programm...

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

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

Stand: 28.11.2012. Adressnummern ändern Modulbeschreibung

Stand: 28.11.2012. Adressnummern ändern Modulbeschreibung Seite 1 Inhalt Allgemein...3 Installation...3 manuelle Eingabe von alten und neuen Adressnummern...4 Vorbereiten von Adressnummern-Änderungen in Tabellen...5 Seite 2 Allgemein Das INKS-Modul ermöglicht

Mehr

E Mail Versand mit der Schild NRW Formularverwaltung

E Mail Versand mit der Schild NRW Formularverwaltung -Seite 1- E Mail Versand mit der Schild NRW Formularverwaltung Seit der Version 1.12.3.97 der Reportverwaltung ist die Möglichkeit integriert, E Mails direkt, d.h. ohne Umweg über einen externen Mailclient

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

Wie Sie mit Mastern arbeiten

Wie Sie mit Mastern arbeiten Wie Sie mit Mastern arbeiten Was ist ein Master? Einer der großen Vorteile von EDV besteht darin, dass Ihnen der Rechner Arbeit abnimmt. Diesen Vorteil sollten sie nutzen, wo immer es geht. In PowerPoint

Mehr

Kulturelle Evolution 12

Kulturelle Evolution 12 3.3 Kulturelle Evolution Kulturelle Evolution Kulturelle Evolution 12 Seit die Menschen Erfindungen machen wie z.b. das Rad oder den Pflug, haben sie sich im Körperbau kaum mehr verändert. Dafür war einfach

Mehr

Gruppenrichtlinien und Softwareverteilung

Gruppenrichtlinien und Softwareverteilung Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden

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

Funktionsbeschreibung Website-Generator

Funktionsbeschreibung Website-Generator Funktionsbeschreibung Website-Generator Website-Generator In Ihrem Privatbereich steht Ihnen ein eigener Websitegenerator zur Verfügung. Mit wenigen Klicks können Sie so eine eigene Website erstellen.

Mehr

COMPUTERIA VOM 25.2.15 SERIENBRIEFE UND ETIKETTENDRUCK

COMPUTERIA VOM 25.2.15 SERIENBRIEFE UND ETIKETTENDRUCK COMPUTERIA VOM 25.2.15 SERIENBRIEFE UND ETIKETTENDRUCK WAS SIND SERIENBRIEFE? Bei einem Serienbrief handelt es sich um eine Art Word Vorlage, bei der das gleiche Dokument mehrmals gedruckt werden muss,

Mehr

Flash Videos einbinden

Flash Videos einbinden Flash Videos einbinden Im Kapitel Videos einbinden ( - ) haben Sie gesehen, wie man einfach und ohne Zusatzprogramme kleine Videoclips auf seiner einbinden kann. Ich persönlich würde jedem dieses Verfahren

Mehr

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

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

Mehr

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken? UErörterung zu dem Thema Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken? 2000 by christoph hoffmann Seite I Gliederung 1. In zu großen Mengen ist alles schädlich. 2.

Mehr

Viele Bilder auf der FA-Homepage

Viele Bilder auf der FA-Homepage Viele Bilder auf der FA-Homepage Standardmäßig lassen sich auf einer FA-Homepage nur 2 Bilder mit zugehörigem Text unterbringen. Sollen es mehr Bilder sein, muss man diese als von einer im Internet

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet

Mehr

C++ mit Eclipse & GCC unter Windows

C++ mit Eclipse & GCC unter Windows C++ mit Eclipse & GCC Seite 1 / 14 C++ mit Eclipse & GCC unter Windows Hinweise Stand 18. Okt. 2014 => GCC 4.9.1 Boost 1.56.0 Eclipse Luna V. 4.4.1 Java Version 8, Update 25 (entspricht 1.8.0_25) Achtung

Mehr

1. Einführung 2. 2. Erstellung einer Teillieferung 2. 3. Erstellung einer Teilrechnung 6

1. Einführung 2. 2. Erstellung einer Teillieferung 2. 3. Erstellung einer Teilrechnung 6 Inhalt 1. Einführung 2 2. Erstellung einer Teillieferung 2 3. Erstellung einer Teilrechnung 6 4. Erstellung einer Sammellieferung/ Mehrere Aufträge zu einem Lieferschein zusammenfassen 11 5. Besonderheiten

Mehr

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Step by Step Softwareverteilung unter Novell. von Christian Bartl Step by Step Softwareverteilung unter Novell von Softwareverteilung unter Novell 1) Starten von einfachen *.EXE-Dateien: Starten sie ConsoleOne Erstellen sie eine eigene Organisationseinheit für ihre Anwendungen

Mehr

Dokument Lob erstellen

Dokument Lob erstellen Dokument Lob erstellen Vorbemerkung Ein Lob wird immer mit einem Abschlusszeugnis ausgestellt und auch mit diesem Verteilt. Um ein Lob zu dokumentieren müssen folgende Bausteine definiert und eingerichtet

Mehr

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt 14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...

Mehr