5. Modulare Programmierung
|
|
- Lisa Huber
- vor 8 Jahren
- Abrufe
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 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 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,
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
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
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
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
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
MehrZä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 --
MehrEinfü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,
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
MehrInformationen 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
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
Mehr5 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
MehrMenü 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...
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:
MehrErweiterung 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
MehrStarten 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
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
MehrOutlook. 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
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
Mehr1 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
MehrPrimzahlen 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
MehrNuetzlicher 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
MehrWindows. 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
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
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
MehrSoftware-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
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 **
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
MehrWie 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
MehrDie 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,
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.
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()
MehrBarcodedatei 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
MehrTesten 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
MehrEnigmail 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
MehrInformatik 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
MehrAufklappelemente 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
MehrEinfü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
MehrAnleitung ü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
MehrAnton 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
MehrZwischenablage (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
MehrObjektorientierte 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
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
MehrWordpress: 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
MehrRundung 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
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
MehrGEONET 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
MehrErstellen 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
MehrErstellen 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
MehrErwin 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
MehrEine 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
MehrFuxMedia 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
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
MehrProfessionelle 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
MehrProgrammierung 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/
MehrGrundlagen 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
MehrS/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
MehrWord 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
Mehr7 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
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
MehrHandbuch 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
MehrDas 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:
MehrAutoCAD 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
MehrSie 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
MehrAbschluss 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
MehrDELFI. 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
MehrWie 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,
MehrInformationsblatt 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
MehrInformatik 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
MehrZahlen 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.
MehrVersion 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.
MehrHandbuch. 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...
MehrMind 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
MehrGezielt ü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
MehrBereich 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
Mehr4 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
MehrErfolgsmeldungen 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...
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
MehrEine 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.............................
MehrStand: 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
MehrE 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 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
MehrWie 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
MehrKulturelle 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
MehrGruppenrichtlinien 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
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
MehrFunktionsbeschreibung 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.
MehrCOMPUTERIA 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,
MehrFlash 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
Mehrec@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
MehrIst 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.
MehrViele 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
MehrProfessionelle 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
MehrC++ 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
Mehr1. 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
MehrStep 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
MehrDokument 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
Mehr14.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