INE1 Präprozessor, Module
|
|
- Marielies Brauer
- vor 6 Jahren
- Abrufe
Transkript
1 INE1 Präprozessor, Module Prä(ääh)prozessor, Compiler und Linker, Lader Der Präprozessor Bedingte Übersetzung Modulare Programmierung Anhang: make-utility 1
2 Präprozessor, Compiler, Linker, Lader 2 von 75
3 Direkt ausführbarer Code vs Virtuelle Maschinen C/C++ Programmquelle wird in EXE/DLL übersetzt (Maschine Code) um dann direkt ausgeführt zu werden Ausführbare Einheiten Bestehen aus (Maschinen-)Code Werden durch Funktionen des jeweiligen Betriebssystems unterstützt Unterschied Java/C# (später) Programmquelle wird in.class File (sog. VM Code) übersetzt und dann anschliessend durch VM ausgeführt Ausführbare Einheiten Bestehen aus Code der von VM ausgeführt wird; VM läuft auf verschiedenen Plattform Werden durch ein umfangreiches Laufzeitsystem (Virtual Runtime Environment: VRE) unterstützt 3 von 75
4 Übersetzungs-/Ausführungsvorgang Übersetzung/Ausführung in vier Phasen 1. Präprozessor: textuelle Vorverarbeitung 2. Erzeugung von Maschinen-Code (Linkbare-Einheiten): Compilation 3. Erzeugung von ausführbaren Einheiten (.exe): Linking 4. Ausführung C-Quellen Dateien.c,.h Linkbare Einheiten.obj Ausführbare Einheiten.exe Compilation Linking normalerweise normalerweise nicht nicht an an Zwischenprodukt Zwischenprodukt interessiert interessiert 4 von 75
5 Präprozessor, Compiler, Linker, Lader 1. Der Präprozessor sucht in den Quelltexten nach speziellen Befehlen, um dann im wesentlichen textuelle Ersetzungen durchzuführen 2. Der Compiler wandelt den so geänderten Code in Objektcode um, der aber noch offene Aufrufe enthält 3. Der Linker verbindet die noch offenen Funktionsaufrufe mit den zugehörigen Funktionen 4. Der Lader lädt das Programm mit den Abhängigkeiten (Windows.DLL) in den Speicher und startet die "main" Funktion 5 von 75
6 Die 3 Phasen der Übersetzung Übersetzung von C/C++ in 3 Phasen 1. Phase: Präprozessor (rein textuelle Substitutionen) Präprozessor Direktiven alle mit # Beispiele: #define PI #include <stdio.h> 2. Phase: Übersetzung in Maschinencode obj-dateien: (linkbare Einheit) 3. Phase: Linken der Teile zu ausführbarem Programm 6 von 75
7 Phase 1: Erzeuge Quelle für Compilation Vorverarbeitung (1. Schritt) stdio.h hello.c #include<stdio.h> #include "hello.c" int main () { } Präprozessor Compilation 7 von 75
8 Phase 1: Präprozessor-"Direktiven" Anwendung Definition von Konstanten Einbeziehen von anderen Quellen (Header Files) Ein-/Ausblenden von Blöcken (z.b. Debug Code) #define PI #include "filename" /* from the current directory */ #include <filename> /* from the system directories */ #define DEBUG /* defines the symbol DEBUG */ #ifdef DEBUG /* code here is compiled if DEBUG is defined */ #elif defined UNIX /* code here is compiled if DEBUG is not defined, and UNIX is defined */ #else /* code here is compiled if neither DEBUG or UNIX are defined */ #endif #ifndef DEBUG /* test if symbol is not defined */ #undef DEBUG /* undefines a symbol */ 8 von 75
9 Phase 1: Logische Aufteilung in C und H Files C Files C-Programmquellen ->.c H(eader)-Files ~ "Dateien mit Funktionsdeklarationen" ->.h Sammlungen von vordeklarierten (Prototyp-) Funktionen (keine Implementationen!) Definition von allgemein verwendeten Typen und Konstanten System Header Files Beschreibung der Schnittstelle zu Betriebssystem und Bibliotheken (Funktionsprototypen) Beispiele stdio.h : Standard Ein/Ausgabe string.h : String Funktionen Eigene Header-Files zur besseren Strukturierung des Programms 9 von 75
10 Phase 2: Compiler Der Compiler bekommt den vom Präprozessor überarbeiteten Quelltext und setzt ihn in einen Objektcode um Objektcode Maschinen-Code Nicht ausführbar, da noch unaufgelöste Referenzen (z.b. Bibliotheks-Funktionsaufrufe) enthalten sind Meistens mit der Endung.o oder.obj 10 von 75
11 Phase 2: Weitere Aufgaben des Compilers Prüfung auf syntaktische und grammatische Fehler Statische Typprüfung Teilweise Warnung für logische Fehler Anlegen von Tabellen, in denen Buch über die verwendeten Variablen geführt wird 11 von 75
12 Phase 3: Linker Linkbare Einheiten (.obj) werden zu ausführbaren Einheit (exe,dll) zusammengebunden ("linken") C-Compilation hello.obj 33 Assembler baba.obj 3 3 Linking hello.exe main() Pascal- Compilation tatu.obj 3 3 Linking tatu.dll foo() 12 von 75
13 Phase 3: Linker Setzt die vom Compiler generierten Objektmodule zu einem ausführbaren Programm zusammen (EXE) Sucht nach Funktionsaufrufen und den dazugehörigen Funktionen Überprüft, ob alle Variablen, die nur deklariert wurden (extern, s.u.), auch irgendwo definiert sind Es gibt zwei Varianten von Linking statisch: der Bibliotheks Code wird in das EXE hinein gepackt dynamisch: der Bibliotheks Code wird nur als externe Referenz vermerkt und der Lader löst dann diese auf Nach dem Linken: ausführbares Programm 13 von 75
14 Phase 3: Einbinden der Standard-Bibliotheken Der Linker sucht auch in speziellen Dateien, den Bibliotheken, um alle Referenzen aufzulösen in Windows: Bibliotheken in sog. DLL Dateien in Linus: in sog..so Dateien In C: eine Bibliothek ist eine Sammlung von Funktionen Der Linker sucht in der Standard-Bibliothek nach allen verwendeten Funktionen Für C sind eine Reihe Standard-Bibliotheken vorgegeben Zusätzliche Bibliotheken müssen beim Linken angegeben werden 14 von 75
15 Phase 4: Ausführung/Lader Bringe ausführbare Einheiten zur Ausführung. Lädt EXE und davon abhängige DLLs in den Speicher springt zu Einsprungstelle (main) Teil Teil des des Betriebssystems Betriebssystems hello.exe 4 4 Lader c:> tatu.dll von 75
16 Überblick Übersetzungs-/Ausführungsvorgang Präprozessor C-Compilation Linker Lader hello.c 1 1 hello.pre 2 2 hello.obj 3 3 hello.exe hello.h Assembler baba.obj 3 tatu.dll baba.asm 2 16 von 75
17 Der Präprozessors 17 von 75
18 Präprozessor Wichtig bei allen Präprozessorbefehlen ist: Sie führen textuelle Änderungen am Quellcode aus Präprozessorbefehle werden auch Direktiven genannt Wird i.d.r. nicht separat ausgeführt Ist Teil des C Compilers Kann via Kommandozeile aber aufgerufen werden gcc -E... -E -E Stop Stop after after the the Präprocessing Präprocessing stage; stage; do do not not run run the the compiler compiler proper. proper. The The output output is is in in the the form form of of Präprocessed Präprocessed source source code, code, which which is is sent sent to to the the standard standard output. output. 18 von 75
19 Warum ein Präprozessor? Ursprünglich: Code kompakter und lesbarer machen Aber: Man kann damit auch schwer zu findende Fehler in den Code einbauen... In späteren C Versionen wurden Sprachmittel eingeführt, mit denen sich viele Präprozessor-Befehle vermeiden lassen z.b. Konstanten nicht mehr mit #define 19 von 75
20 Präprozessor Der Präprozessor hat folgende Aufgaben: Dateien in andere einfügen Konstanten definieren Makros zur Verfügung stellen Teile des Quelltextes selektieren #include #define #define #ifdef, #ifndef 20 von 75
21 Präprozessor-Befehle Beispiel: #include "dateiname" Der Präprozessor arbeitet zeilenorientiert Bei einer Präprozessor-Anweisung das Zeichen "#" vorangestellt sein Kein Semikolon am Ende! 21 von 75
22 Dateien einbinden Befehl: #include Beim Einfügen der Datei wird der Quelltext der Datei eingefügt Meistens verwendet um Konstanten, Deklarationen von Typen und Funktionen (Prototypen) in einen Quelltext einzubinden Zwei Varianten: #include <Dateiname> #include "Dateiname" Erste Variante für das Einbinden von Header-Dateien aus Standard-Bibliotheken (in einem speziellen "Standard-Verzeichnis" abgelegt) Zweite Variante für projektspezifische Header-Dateien 22 von 75
23 Konstanten definieren Befehl #define Beispiel: #define MAXLOOP Über diese Anweisung können auch Ersetzungen durchgeführt werden Wird der Name irgendwo im Programmcode gefunden, wird an dieser Stelle der Ersetzungstext eingefügt, ausgenommen in Zeichenketten und Kommentaren 23 von 75
24 Konstanten definieren Was durch define definiert wird, wird im allgemeinen als Makro bezeichnet Ein Makro ohne Parameter wird auch als symbolische Konstante bezeichnet Wenn der Makroname in einem String-Literal auftaucht, wird er nicht ersetzt Konvention: Namen von symbolischen Konstanten gross schreiben 24 von 75
25 Konstanten definieren Beispiel Verwendung #define ANZAHL 10 /* meistens besser: */ int feld [ANZAHL]; int j = ANZAHL; const int ANZAHL=10; /* oder: */ enum {ANZAHL=10 }; 25 von 75
26 Konstanten definieren Wichtig: Der Präprozessor ersetzt diese Symbole rein textuell Auf diese Weise können durch den Präprozessor auch leicht Fehler in den Code eingebaut werden: #define I 10 int I = 20; /* wird zu: int 10 = 20; */ 26 von 75
27 Beispiel $ cpp prep.c # 1 "prep.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "prep.c" int main() { double p = 3.14; // 3.14 char tx2[] = "drei"; char tx1[] = "abc ZAHL TEXT de"; return 0; } 27 von 75
28 Vordefinierte Konstanten FILE zwei zwei Underscores Underscores Name der Datei, die gerade übersetzt wird DATE Datum des Übersetzungsvorgangs TIME LINE STDC cplusplus cdecl Uhrzeit, zu der der Übersetzungsvorgang gestartet wurde Aktuelle Zeile der Datei, in der der Compiler sich gerade befindet Erfüllt, wenn im Standard-C Modus übersetzt wird Es wurde mit einem C++ Compiler compiliert Verwende die C Aufruf Konvention 28 von 75
29 Vordefinierte Konstanten /* Ausgabe der Dateiversion: */ printf("version vom %s um %s von %s\n", DATE, TIME, FILE ); /* Ausgabe der Zeile bei Fehlern: */ if (nenner == 0) { printf("schwerer Fehler (Division durch Null) in " "%s, Zeile %s\n", FILE, LINE ); exit(1); } 29 von 75
30 Makros In der #define-direktive können nach dem Namen des Symbols auch zusätzliche Parameter in Klammern angegeben werden Diese können im zu ersetzenden Text wieder auftauchen, wo sie dann textuell eingesetzt werden #define MAKRO(Argl, Arg2,...) Ersetzungstext Hinter dem Makronamen darf kein Leerzeichen folgen 30 von 75
31 Makros Es kann vorkommen, dass eine Anweisung nicht in eine Zeile passt Dann wird das Fortsetzungszeichen "\" verwendet Beispiel: #define ALERT(meintext) \ printf("###########################"); \ printf("%s", meintext); \ printf("###########################"); 31 von 75
32 Beispiel $ cpp makro.c # 1 "makro.c" # 1 "<built-in>" # 1 "<command-line>" # 1 "makro.c" int main() { int k = 3, m = 34; double f = 3.1, g = 4.4; {int j; j=k; k=m; m=j; }; printf("getauscht!"); {int j; j=f; f=g; g=j; }; } return 0; 32 von 75
33 Makros: Probleme Mit Makros ist Vorsicht angebracht, da leicht Fehler eingebaut werden können Beispiel: #define Quadrat(x) x*x Quadrat(5+3); /* ergibt 5+3*5+3 = 23 statt 64 */ Besser die Argumente von Makros in Klammern schreiben: #define Quadrat(x) ((x)*(x)) 33 von 75
34 Makros: Probleme Noch besser: Man sollte Funktionen vorziehen, da Fehler, die über Makros entstehen, schwerer zu finden sind In C99 und C++ können Präprozessor-Konstanten und -Makros meistens besser durch const und Inline-Funktionen (C++) realisiert werden "Almost every macro demonstrates a flaw in the programming language, in the program, or in the programmer." (Bjarne Stroustrup) 34 von 75
35 Bedingte Übersetzung 36 von 75
36 Konstanten abfragen Es ist nicht nötig, einem solchen Symbol auch einen Wert zuzuweisen Auch eine Definition ohne Wert kann sinnvoll sein, da abgefragt werden kann, ob ein Symbol definiert ist oder nicht Befehle: #ifdef #ifndef #undef Test, ob Symbol definiert Test, ob Symbol nicht definiert Danach ist Symbol nicht (mehr) definiert 37 von 75
37 Bedingte Übersetzung Man kann den Präprozessor auch dazu nutzen, Teile des Quelltextes zu selektieren Verhindern einer mehrfachen Übersetzung Selektieren von Debugging-Code Plattform übergreifende Programmierung Präprozessorbefehle für diese Funktionen: #ifdef und #ifndef Beide werden mit #endif abgeschlossen Nach #else kann ein Alternativzweig angegeben werden 38 von 75
38 Mehrfache Übersetzung/Includes verhindern Beim Einbinden von Quelltexten (meist Header-Files) mit #include muss verhindert werden, dass gleiche Dateien mehrmals eingefügt werden Grund: Mehrfache Definitionen sind nicht zulässig Dazu wird folgende Struktur verwendet (im Header File): #ifndef c_h c.h #ifndef Dateikennung #define Dateikennung // Code #endif #include "c.h" a.h #include "c.h" b.h #include "a.h" #include "b.h" main.c 39 von 75
39 Mehrfache Übersetzung/Includes verhindern Dateikennung ist ein Kürzel, das in der Regel aus dem Dateinamen zusammengesetzt wird Aus Dateinamen wie "meinedatei.h" wird zum Beispiel eine Dateikennung wie "MEINEDATEI_H" #ifndef MEINEDATEI_H #define MEINEDATEI_H // Code #endif 40 von 75
40 Mehrfache Übersetzung/Includes verhindern #include "meinedatei.h" #include "meinedatei.h" int main (void) { //... } #ifndef MEINEDATEI_H #define MEINEDATEI_H // Code #endif #ifndef MEINEDATEI_H #define MEINEDATEI_H // Code #endif int main (void) { //... } 41 von 75
41 Selektieren von Debugging-Code Einfache Möglichkeit, zusätzlichen Code zur Fehlersuche mit in den Quelltext aufzunehmen, um ihn je nach Bedarf mit übersetzen zu lassen oder nicht Anweisungen werden nur in den übersetzten Code übernommen, wenn die Konstante beim Präprozessorlauf definiert ist Die Konstante kann dann am Anfang des Programmcodes oder über eine Option beim Compileraufruf definiert werden Beim gcc: -Dname bzw. -Dname=wert Oder in den Projektoptionen der IDE 42 von 75
42 Selektieren von Debugging-Code Erkennung ob Debug Code aktiviert werden soll mittels DEBUG Lässt man oft in der Quelle für spätere Fehlersuche stehen #ifdef DEBUG printf("initialisierung abgeschlossen.\n"); #endif 43 von 75
43 Plattformabhängigkeiten Quelltext für mehrere Prozessoren, Betriebssysteme, graphische Oberflächen o.ä. gleichzeitig zur Verfügung stellen #ifdef GCC /* systemspezifischer Code für GNU-Compiler */ #endif #ifdef sun /* systemspezifischer Code für Sun-Compiler */ #endif #ifdef _MSC_VER /* systemspezifischer Code für Visual-Studio */ #endif 44 von 75
44 Modulare Programmierung 45 von 75
45 Ziele Modulare Programmierung Gleichzeitige Bearbeitung/Entwicklung durch mehrere Entwickler Kürzere Einarbeitungszeit von neuen Entwicklern Nach Änderungen müssen nur Teile eines Projekts neu übersetzt werden Teile eines Projekts können in anderen Programmiersprachen geschrieben werden Klare Strukturierung des gesamten Programms Verbesserung der Wiederverwendbarkeit Gute Modularisierung ist der Schlüssel für erfolgreiche Projekte. Ohne Modularisierung droht jedes Projekt früher oder später an der Komplexität zu scheitern. 46 von 75
46 Prinzipien der Modularisierung Geringe Vernetzung (wenig Schnittstellen) Schwache Kopplung zwischen Modulen (schmale Schnittstellen) Hohe Kohäsion innerhalb Modul (inhaltliche Einheit) Explizite Schnittstellen (Kommunikation mit Parameterübergabe) Information Hiding (Verstecken der Implementationsdetails) 47 von 75
47 Zwei Stufen der Modularisierung in C 1. Stufe: Lediglich die Quellen werden modular strukturiert Die für andere Quellen verwendbare Funktionen werden in Header Files als Prototypen definiert Für die Verwendung dieser Quellen wird in andern Quellen lediglich dieses Header File included Alle benötigten Quellen werden dann vom Compiler/Linker zu einem fertigen Programm (EXE) zusammen gefügt: "statische Bibliotheken". 2. Stufe: Zusätzlich werden die Laufzeiteinheiten modularisiert Aus den Bibliotheken werden DLLs erzeugt Diese DLLs werden dann zur Laufzeit vom Lader automatisch (nach-)geladen als sog. "dynamische Bibliotheken". 48 von 75
48 Statische Bibliotheken 49 von 75
49 Source- und Headerfiles Die Deklarationen werden in Header Files durchgeführt Sie enthalten die Prototypen der "von aussen sichtbaren" Funktionen Header Files sind Deklarationsdateien die sowohl ins definierende als auch ins aufrufende Modul eingebunden werden Header Files sind somit die Schnittstellenbeschreibung der Module Diese Header-Datei wird so abgelegt, dass der Präprozessor (mittels #include) sie findet #ifndef a_h a.h #include "a.h" #include "a.h" a.c b.c 50 von 75
50 Source- und Headerfiles Soll in einem anderen Modul die Funktion globalfunct verwendet werden, muss diese dort mit Hilfe eines prototypen deklariert werden Dasselbe gilt für die globale Variable globalvar auch sie muss im anderen Modul vor der ersten Verwendung deklariert werden Bei Funktionen einfach der Prototyp der Funktion im Header File void foo(); /* Deklaration */ Bei Variablen wird zusätzlich das Schlüsselwort extern verwendet extern int globalvar; /* Deklaration */ 51 von 75
51 Source- und Headerfiles /* --- Deklaration A */ /* Datei: modul_a.h */ #ifndef MODUL_A_H #define MODUL_A_H extern int globalvar; /* fuer alle */ int globalfunct(int a); /* fuer alle */ #endif 52 von 75
52 Source- und Headerfiles /* --- Modul A */ #include "modul_a.h" /* Definitionen */ int globalfunct(int a) {... } /* fuer alle */ static int lokalfunct(int a) {... } /* nur hier */ int globalvar = 24; /* fuer alle */ static int localvar; /* nur hier */ 53 von 75
53 Source- und Headerfiles /* --- Modul B */ #include "modul_a.h" /* Aufruf der Funktion aus Modul A */ int result = globalfunct(42); /* Zugriff auf die Variable aus Modul A */ int var = globalvar; 54 von 75
54 Sichtbarkeit von Funktionen Funktionen können nur auf der äussersten Ebene eines Moduls definiert werden Standardmässig gilt eine Funktion als global das bedeutet, dass ihr Name an den Linker weitergegeben wird Eine Einschränkung der Sichtbarkeit auf das aktuelle Modul ist mit Hilfe des Schlüsselworts static möglich int globalfunct(int a) {... } /* fuer alle */ static int lokalfunct(int a) {... } /* nur hier */ 55 von 75
55 Sichtbarkeit von Variablen Standardmässig sind alle Variablen global, die auf der äussersten Ebene definiert werden Eine Einschränkung der Sichtbarkeit ist ebenfalls mit Hilfe des Schlüsselworts static möglich int globalvar; // fuer alle static int localvar; // nur hier Lokal ist hier nicht im Sinne von lokal in einer Funktion sondern im Sinne von lokal in einem Modul (Dateiebene) gemeint 56 von 75
56 Dynamische Bibliotheken 57 von 75
57 Dynamische Bibliotheken Dynamische Bibliotheken müssen speziell erzeugt werden unter Windows mit der Endung DLL Betriebssystem selber besteht aus einer Sammlung von DLLs Sie stellen dem Linker (über Libs) die Funktionen zur Verfügung, Es wird nicht die Funktion sondern lediglich ein Vermerk (Referenz) gespeichert Der Lader löst die Referenz dynamisch auf und lädt die benötigten DLLs nach Suchpfad für die DLLs ist aktuelles Verzeichnis und zusätzlich alle in der "PATH" Umgebungsvariablen vermerkte Dependency Walker zur Anzeige Dependency Walker zur Anzeige der Abhängigkeiten der Abhängigkeiten 58 von 75
58 Export mit declspec(dllexport) Exportierte Funktionen müssen speziell gekennzeichnet werden #define DLL_EXPORT declspec(dllexport) Von andern Modulen importierte ensprechend #define DLL_EXPORT declspec(dllimport) Die Aufrufkonvention muss cdecl sein Am einfachsten mit einem Define (z.b. _DLL), das man über das Projekt setzt #ifdef _DLL // If accessing the data from inside the DLL #define DLL_EXPORT declspec(dllexport) #else // If accessing the data from outside the DLL #define DLL_EXPORT declspec(dllimport) #endif cdecl void DLL_EXPORT foo(void); Die exportierten Funktionen sind im LIB File gespeichert 59 von 75
59 Übersetzung im Überblick Compilierung der Bibliothek und Klient und Ausführen DynLib.h #include #include Compiler Namen Namen der der DLL DLL vermerkt vermerkt DynLib.dll DynLib.c Beim Compilieren Beim Compilieren wird das h File Beim wird das h File Beim Linken Linken wird wird included das included das lib lib File File gebunden gebunden DynLib.lib Beim Beim Laden Laden wird wird die die referenzierte referenzierte DLL DLL (mit-)geladen (mit-)geladen Lader TestClient.c Compiler TestClient.exe 60 von 75
60 DynLib.h #ifndef DYNLIB1_H #define DYNLIB1_H #ifdef _DLL // If accessing the data from inside the DLL #define DLL_EXPORT declspec(dllexport) #else // If accessing the data from outside the DLL #define DLL_EXPORT declspec(dllimport) #endif #ifdef cplusplus extern "C" { #endif void cdecl DLL_EXPORT foo(void); #ifdef } #endif cplusplus #endif /* DYNLIB1_H */ 61 von 75
61 DynLib.c und TestClient.exe Implementation der Library #include "DynLib1.h" #include <stdio.h> void cdecl foo() { printf("hello World\n"); } Und Aufruf von foo() in TestClient (separates EXE) #include <stdio.h> #include <stdlib.h> #include "DynLib1.h" int main(int argc, char** argv) { foo(); return (EXIT_SUCCESS); } 62 von 75
62 Weiterer Vorteil von dynamischen Bibliotheken C-Bibliotheken lassen sich von praktisch jeder Programmiersprache aus aufrufen Z.B. können GUIs mit Java (oder C#) entwickelt werden einfacher plattformunabhängig sehr gute Werkzeuge vorhanden (sog. GUI Builder) Der Aufruf der C Bibliotheksfunktion in Java dann via JNI oder JNA (später) 63 von 75
63 Noch Fragen? 64 von 75
64 make-utility 65 von 75
65 Das make-utility Jedes etwas grössere Programm setzt sich aus einer ganzen Reihe von Dateien zusammen Schon bei Veränderungen einer Datei kann es nötig sein, mehrere Module neu zu übersetzen Wird z.b. ein Header-File verändert, so sollten alle Quelltextfiles, die dieses Header-File einbinden, neu übersetzt werden Bei grossen Projekten kann das schnell sehr unübersichtlich werden 66 von 75
66 Das make-utility Das Utility make hilft dabei, ein Programm aus mehreren Modulen unter Berücksichtigung der Abhängigkeiten zu erstellen Hinweis: Das frei verfügbare und im Funktionsumfang bedeutend erweiterte GNU-Make trägt meist den Namen gmake Beim Aufruf arbeitet make die Regeln einer im aktuellen Verzeichnis liegenden Makefile-Datei ab 67 von 75
67 Makefile Ein Makefile enthält die Regeln, wann, was und wie es auszuführen ist Es besteht aus: Kommentaren, beginnend mit # Direktiven Variablendefinitionen Expliziten Regeln 68 von 75
68 Makefile Eine Regel ist wie folgt aufgebaut: Target: Was zu erstellen ist target: dependencies <TAB> command Dependencies: Legen fest, wann das zu geschehen hat, nämlich wenn eines von ihnen jünger ist als target Command: Das oder die abzuarbeitenden Kommandos; wichtig ist der Tabulator am Zeilenanfang Da als dependencies auch andere targets angegeben werden können ist eine Verschachtelung der Regeln möglich 69 von 75
69 Makefile Beispiel Das Programm rechner wird aus den Modulen main.o, add.o, sub.o, mul.o sowie div.o gebildet Alle Quelltextfiles nutzen das gemeinsame Headerfile def.h Nach Änderungen an def.h sollten also auch alle Quelltextfiles neu übersetzt werden. 70 von 75
70 Makefile Beispiel # Ausschliesslich explizite Regeln # # rechner wird aus den Objektfiles (.o) zusammengebaut: rechner: add.o sub.o mul.o div.o main.o cc -o rechner add.o sub.o mul.o div.o main.o # Objektfiles loeschen clean: rm -f *.o rechner Forts von 75
71 Makefile Beispiel # Und so entstehen die.o-files (def.h sowie Makefile # werden angegeben, um auch bei Veraenderungen daran # die Übersetzung zu starten): add.o: add.c def.h Makefile cc -c add.c sub.o: sub.c def.h Makefile cc -c sub.c mul.o: mul.c def.h Makefile cc -c mul.c div.o: div.c def.h Makefile cc -c div.c 72 von 75
72 Makefile Beispiel Mit Hilfe von Variablen lassen sich Regeln einfacher ändern (vor allem, wenn sie an mehreren Stellen benötigt werden) Beim Aufruf von make lassen sich auch Variablenzuweisungen übergeben diese haben höhere Priorität als die Festlegungen im Makefile Man muss nicht alle Regeln und Variablen angeben make verwendet dann seine Voreinstellungen 73 von 75
73 Makefile Beispiel # Variante mit Variablen, impliziten Regeln und # gmake's Pattern-Regeln OBJS = add.o sub.o mul.o div.o main.o CC = gcc CFLAGS = -g rechner: $(OBJS) $(CC) $(CFLAGS) -o rechner $(OBJS) clean: rm -f *~ *.o rechner $(OBJS): %.o: %.c def.h Makefile $(CC) $(CFLAGS) -c $< -o $@ Inference Rule: xyz.o depends on xyz.c, def.h and Makefile The source file of the current dependency Full name of the current target 74 von 75
74 Anhang: Calling Convention und Name Decoration Der Name wird anhand der Aufrufkonvention "dekoriert" 75 von 75
Ü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,
MehrFACHHOCHSCHULE MANNHEIM
für Java-Programmierer Der Präprozessor Prof. Dr. Wolfgang Schramm FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Präprozessor Ist dem Compiler vorgeschaltet ( Prä -). Spezielle Anweisungen
MehrGrundlagen der Informatik Vorlesungsskript
Grundlagen der Informatik Vorlesungsskript Prof. Dr. T. Gervens, Prof. Dr.-Ing. B. Lang, Prof. Dr. F.M. Thiesing, Prof. Dr.-Ing. C. Westerkamp 16 AUTOMATISCHES ÜBERSETZEN VON PROGRAMMEN MIT MAKE... 2 16.1
MehrPräprozessor und make. einfache Makros Makros nehmen eine Textersetzung vor. Erst nach der Ersetzung muss gültiger C-Code vorliegen.
Bevor der eigentliche Kompilier-Vorgang stattfindet, wird vom sogenannten eine Vorverarbeitung durchgeführt. Hierbei werden zum Beispiel Kommentare entfernt, aber auch explizite Anweisungen an den verarbeitet.
MehrProgrammieren 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
MehrModulare Programmierung und Bibliotheken
Modulare Programmierung und Bibliotheken Proseminar-Vortrag am 24.06.2011 von Ludwig Eisenblätter Ludwig Eisenblätter 1 von 25 Modulare Programmierung und Bibliotheken Inhaltsübersicht Motivation / Einleitung
MehrGrundlagen der Programmiersprache C für Studierende der Naturwissenschaften
Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 10: Präprozessor, Header und Bibliotheken Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung
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).
MehrEinleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens
Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität
Mehr5. Modulare Programmierung
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@zhaw.ch Marc
MehrOrganisatorisches. Übungsleiter: Karsten Otto Homepage: Aufgaben
Organisatorisches Übungsleiter: Karsten Otto (otto@inf.fu-berlin.de) Homepage: http://www.inf.fu-berlin.de/lehre/ss04/sysi/ Aufgaben Montags im Netz Vorbesprechung Dienstag/Mittwoch in den Übungen Abgabe
MehrC/C++ Programmierung
1 C/C++ Programmierung Grundlagen: Der Präprozessor Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Der Präprozessor
MehrDr. Monika Meiler. Inhalt
Inhalt 8 Das Konfigurationswerkzeug make...8-2 8.1 Modularisierung...8-2 8.2 Modulübersetzung...8-4 8.3 Konfigurationswerkzeug make und Aufbau eines Makefiles...8-8 8.3.1 Abhängigkeiten und Kommandos...
MehrSystempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom Foliensatz 2
Systempraktikum im Wintersemester 2009/2010 (LMU): Vorlesung vom 29.10. Foliensatz 2 Modularisierung (T) Eigene Headerdateien und Bibliotheken (P) Arten der Parameterübergabe (P) Arrays und Strukturen
MehrProgrammierkurs C++ Kapitel 6 Module Seite 1
Programmierkurs C++ Kapitel 6 Module Seite 1 (Quell-)Module Unter einem Modul versteht man einen Teil des Programms, der eigenständig übersetzt werden kann. In der Syntax der Programmiersprachen werden
Mehr2Binden 3. und Bibliotheken
3 Vom C-Programm zum laufenden Prozess 3.1 Übersetzen - Objektmodule 1Übersetzen 3. - Objektmodule (2) Teil III 3Vom C-Programm zum laufenden Prozess 2. Schritt: Compilieren übersetzt C-Code in Assembler
MehrVorlesung Informatik I
Vorlesung Informatik I Universität Augsburg Wintersemester 2010/2011 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik Programmieren in C Der Compilierungsprozess 1 Aufbau eines C-Programms 1. Direktiven
MehrC++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen
C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,
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
MehrSystemprogrammierung
Systemprogrammierung 3Vom C-Programm zum laufenden Prozess 6. November 2008 Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2008 SS 2006 SOS 1 (03-Pro.fm 2008-11-06 08.52) 3 Vom C-Programm
MehrCompilieren und Linken von C- und C++-Dateien
Compilieren und Linken von C- und C++-Dateien 1999-2011 Dipl.Phys. Gerald Kempfer Lehrbeauftragter / Gastdozent an der Beuth Hochschule für Technik-Berlin Internet: public.beuth-hochschule.de/~kempfer
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
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:
MehrGrundlagen. Die Komponenten eines C Programms. Das erste Programm
Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen
MehrC- Kurs 06 Übersetzung & Module
C- Kurs 06 Übersetzung & Module Dipl.- Inf. Jörn Hoffmann jhoffmann@informaek.uni- leipzig.de Universität Leipzig InsEtut für InformaEk Technische InformaEk Übersetzung Überblick Übersetzung mit Modulen
MehrVorlesung Informatik II
Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm
MehrProgramm in Source-Files aufteilen Erhöht Lesbarkeit Aufteilung orientier t sich an logischer Struktur des Programms Getrenntes Übersetzen möglich:
Source-Files Programm == Source-File nicht sinnvoll Unübersichtlich Bei jeder kleinen Änderung gesamtes File neu übersetzen Übersetzen dauert lange Keine Gruppenarbeit möglich Programm in Source-Files
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
MehrCompiler und Präprozessor (1) Erstellen eines Projektes
Compiler und Präprozessor (1) Erstellen eines Projektes Projekte bestehen meist aus mehreren Dateien, z.b. Quelldateien, Funktionssammlungen in Bibliotheken Zur Definition eines Projektes sind folgende
MehrDr. Monika Meiler. Inhalt
Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 1)
DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume
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.
MehrPrüfungsvorleistung Datenstrukturen
Prüfungsvorleistung Datenstrukturen Allgemeine Hinweise Als Prüfungsvorleistung für die Klausur Datenstrukturen müssen Hausaufgaben gelöst werden. Jede Hausaufgabe wird mit einer bestimmten Anzahl an Punkten
MehrBerichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung
Berichte aus der Informatik Dieter Pawelczak Start in die C-Programmierung Shaker Verlag Aachen 2012 Inhaltsverzeichnis Inhaltsverzeichnis i 1 Einleitung 1 1.1 Umfeld und Aufbau des Buches 1 Die Programmiersprache
MehrGlobale Variablen Diverses. Globale Variablen. Globale Variablen
lokale Variablen Variablen bisher nur am Anfang von Funktionen auch erlaubt: am Anfang innerer Codeblöcke (innerhalb geschweifter Klammern) in C99 und als gcc-erweiterung: an beliebiger Stelle innerhalb
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
MehrC++ - Variablen: Gültigkeit - Sichtbarkeit
C++ - Variablen: Gültigkeit - Sichtbarkeit Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Attribute von Variablen und Funktionen Attribute von Variablen sind Name (name), Typ (type), Wert (value) Attribute von
MehrKonzepte von Betriebssystem-Komponenten. Programmstart & dynamische Bibliotheken SS 05. Wladislaw Eckhardt.
Proseminar KVBK Programmstart dynamische Bibliotheken Konzepte von Betriebssystem-Komponenten Programmstart & dynamische Bibliotheken SS 05 Wladislaw Eckhardt Wladi23@gmx.net 1 1 Einleitung 1.1 Problematik
MehrAlgorithmus: Kochrezept
Algorithmus: Kochrezept Ziel: Menü mit drei Gängen für 4 Personen Grundlegende Spezifikation: 1. Vorspeise: Badische Flädlesuppe 2. Hauptgericht: Überbackene Schinkenröllchen mit Spargel 3. Dessert: Vanilleeis
MehrProgrammieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff
Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Der Anfänger sollte nicht entmutigt sein, wenn er nicht die Voraussetzungen besitzt, um die Voraussetzungen zu verstehen...
MehrGrundlagen der Programmentwicklung
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Über C++ Über C++ C++ ist eine in der Industrie
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrC++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland.
C++ Klassen, Vererbung Philipp Lucas phlucas@cs.uni-sb.de Sebastian Hack hack@cs.uni-sb.de Wintersemester 2008/09 saarland university computer science 1 Inhalt Klassen in C++ Sichtbarkeit Erzeugen von
MehrErste Schritte der Programmierung in C
Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)
MehrInhaltsverzeichnis Ubersetzung und Pr aprozessor
Inhaltsverzeichnis 4 Übersetzung und Präprozessor 2 4.1 Phasen der Übersetzung........................... 2 4.1.1 Die Präprozessorphase....................... 2 4.1.2 Die Kompilierungsphase......................
MehrLinux Prinzipien und Programmierung
Linux Prinzipien und Programmierung Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2011/2012 1 / 22 popen Programmentwicklung unter Linux make gcc, objdump, readelf 2 / 22 Die Funktion popen Im
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.............................
MehrATM18-Projekt Arbeiten mit CodeVisionAVR C-Compiler Teil 02 - Aufbau eines C-Projektes
Teil 01 - Einführung 1 Eine Einführung in C 1.1 Warum C? 1.2 Wie entstand C? 1.3 Der AVR-Mikrocontroller in einem eingebetteten System 1.4 1.5 Editieren von Quell-Dateien 2 Was ist ein C-Projekt? 2.1 Erzeugen
Mehr1. Vom Sourcecode zum Programm
1. Vom Sourcecode zum Programm 1.1 Programmablauf source1.cpp source2.cpp header.h makefile Compiler Präprozessor Übersetzer Assembler object.obj object.obj Linker library.dll programm.exe Abbildung: Erstellung
MehrModul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016
MehrEinleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++
Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend
MehrBeispiel. Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio)
Beispiel Beispiel: Namensliste konvertieren (Karl Egon Meier Meier, Karl Egon). s/(.*) (.*)/$2, $1/; Problem: mehrteilige Nachnamen (von Goethe, Mac Donald, Di Caprio) s/(.*) (.*)/$2, $1/; s/(.*) ([a-z]+
MehrObjektorientierung: Klassen und Objekte
Objektorientierung: Klassen und Objekte Klasse: Beschreibung für eine Menge von Objekten Schablone, Bauplan abstrakte Form Objekt: Instanz einer Klasse konkreter Inhalt (Werte) Klassen bestehen aus Attributen
MehrMicrocontroller Praktikum SS2010 Dipl. Ing. R. Reisch
Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch Die wichtigsten Unterlagen/Tools Für das Praktikum Unterlagen/Kenntnisse/Tools wichtig: Datenblatt des AT80USB1287 µc Schaltplan des im Praktikum verwendeten
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrÜbungen zu Systemprogrammierung 1 (SP1)
Übungen zu Systemprogrammierung 1 (SP1) Ü1-2 Speicherverwaltung Andreas Ziegler, Stefan Reif, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität
MehrAgenda. Informatik I WS05/06 Folien von Tobias Dezulian
15.12.2005 Agenda Geltungsbereich (Scope) von Variablen Blöcke Der Call-Stack Einschub: Debugging unter Eclipse Der Heap Lebensdauer von Objekten Müllabfuhr: Garbage Collection Exceptions Geltungsbereich
MehrJava: Eine kurze Einführung an Beispielen
Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse
MehrPraktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization
Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10 Übersicht In den ersten Wochen: Einführung in objektorientierte Programmierung mit C++ Anschließend: Einführung in die programmierbare
MehrBakefiles. TgZero Technik.Blosbasis.net. April 1, 2013
TgZero Technik.Blosbasis.net April 1, 2013 1 Inhaltsverzeichnis 1 Makefile 3 1.1 Was sind Makefiles?........................ 3 2 Bakefile 3 3 Aufbau einer Bakefile 4 3.1 Targets...............................
MehrGrundlagen der Programmierung
Grundlagen der Programmierung 5. Vorlesung 09.11.2016 1 Beispiel: Hello World #include Beginn Hauptprogramm int main() { Blockbeginn printf("hello World\n"); Einbinden der Headerdatei(en) für
MehrÜbung zu Grundlagen der Betriebssysteme. Einführungsveranstaltung 16.10.2012
Übung zu Grundlagen der Betriebssysteme Einführungsveranstaltung 16.10.2012 Termine Übungen wöchentlich, Dienstags 14 Uhr (c.t.), Raum E312 15 Uhr (s.t.), Raum E312 Jede Woche 1 Übungsblatt http://userpages.uni-koblenz.de/~mips/bs/uebung/
MehrVariablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes
Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!
MehrModellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 16.1.2013 IAM Institut für Angewandte Mathematik C-Präprozessor: Einfügungen Standard-Header #include Fügt den Text der Headerdatei
Mehr- dynamisches Laden -
- - Fachbereich Technik Department Elektrotechnik und Informatik 21. Juni 2012 1/23 2/23 s dynamisch Code kann von mehreren Programmen genutzt werden => kleinere Programme einzelne Teile eines Programms
MehrSpeicherklassen (1) Lokale Variablen
Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden
Mehrjavascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.
javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline. Inhalts-Verzeichnis 1. Allgemeine Richtlinien...1 1.1 Anzahl
MehrProgrammiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm
Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i
MehrShell-Scripting Linux-Kurs der Unix-AG
Shell-Scripting Linux-Kurs der Unix-AG Andreas Teuchert 8. Juli 2014 Was ist ein Shell-Script? Aneinanderreihung von Befehlen, die ausgeführt werden Bedingte und wiederholende Ausführung möglich Nützlich
MehrFunktionen in JavaScript
Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.
MehrComputergrundlagen Programmieren in C
Computergrundlagen Programmieren in C Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2013/14 Die Sprache C D. M. Ritchie, 1941 2011 Entwickelt 1971-1973 aktueller Standard:
Mehr10 Die Programmiersprache C99: Zusammenfassung
10 Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 25. September 2014, 18:40 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html
MehrBegriffe. Textdatei mit C-Anweisungen, meistens mit der Extension.c (KLEIN!)
Begriffe Quellcode, Sourcecode: Befehle einer höheren Programmiersprache z.b. C, C++, Java, Fortran im Klartext, d.h. es handelt sich hier um reine Textdateien. C-Quellcode-Datei: Textdatei mit C-Anweisungen,
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,
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,
MehrC++ Teil 6. Sven Groß. 27. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 14
C++ Teil 6 Sven Groß 27. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 27. Mai 2016 1 / 14 Themen der letzten Vorlesung Musterlösung A2 Wdh.: Zeiger und Felder Kopieren von Feldern Dynamische Speicherverwaltung
MehrEntwicklung mit mehreren Dateien
Frühjahrsemester 2011 CS104 Programmieren II Teil II: C++ Programmierung Kapitel 9: Entwicklungsprozess in C++ H. Schuldt Entwicklung mit mehreren Dateien In C++ ist es üblich, den Quelltext in mehreren
MehrGrundlagen. Kapitel 1
Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die
MehrComputergrafik 1 Übung, Wintersemester 2011. Eclipse Hands-On. C++ Projektsetup mit OpenGL und GLUT unter Eclipse für Windows 22.10.
Computergrafik 1 Übung, Wintersemester 2011 Eclipse Hands-On C++ Projektsetup mit OpenGL und GLUT unter Eclipse für Windows 22.10.12 1 Eclipse - Die IDE 1. Entwicklungsumgebung (IDE) herunterladen / installieren
MehrGrundlagen der Informatik - 6. Praktikum
Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt
Mehr1 Native C Code in C# Umgebung mit Visual Studio 2010
1 Native C Code in C# Umgebung mit Visual Studio 2010 29.07.2013 1.1 Ziel Ein Embedded C Code soll innerhalb einer C# Umgebung lauf- und debuggfähig sein. Der C# Anteil stellt dem Embedded C Code einen
MehrPraktikumstermin B-07: make & Makefiles
Praktikumstermin B-07: make & Makefiles Version 2014-11-26: Problem mit dem Löschbefehl gelöst. Ursache: Auf den Terminalrechnern funkt ein Softwarepaket aus einer anderen Lehrveranstaltung dazwischen
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrComputergrundlagen Programmieren in C
Die Compilersprache C Computergrundlagen Programmieren in C Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Geschichte D. M. Ritchie, *1941 1971-73: Entwickelt von
MehrArrays (Felder/Vektoren)
Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff
MehrPraktikum 2: Erste C Programme, Kommandozeileneingabe
Praktikum 2: Erste C Programme, Kommandozeileneingabe Ziele Ein weiteres Beispielprogramm testen und verstehen Entwicklungsumgebung für C auf dem Notebook Einführung Nach dem letzten Praktikum sollten
Mehr3. Klassen Statische Komponenten einer Klasse. Klassenvariablen
Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.
MehrDie Programmiersprache C Eine Einführung
Die Programmiersprache C Eine Einführung Christian Gentsch Fakutltät IV Technische Universität Berlin Projektlabor 2. Mai 2014 Inhaltsverzeichnis 1 Einführung Entstehungsgeschichte Verwendung 2 Objektorientiert
MehrGI Vektoren
Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung
MehrBash-Scripting Linux-Kurs der Unix-AG
Bash-Scripting Linux-Kurs der Unix-AG Zinching Dang 02. Juli 2013 Was ist ein Bash-Script? Aneinanderreihung von Befehlen, die ausgeführt werden Bedingte und wiederholende Ausführung möglich Nützlich bei
MehrÜbung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9
Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere
MehrKompaktkurs C-Programmierung
Kompaktkurs C-Programmierung 26. 03. 2007 Franz Schenk Organisatorisches Vorlesung Accountvergabe Skriptverkauf Übungen: zwei Blöcke (13:15-14:45 / 14:45-16:15) Gruppenübung Rechnerübung Klausur Ferien:
Mehr1.4. Funktionen. Objektorientierte Programmierung mit C++
mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -
MehrInformatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen
Informatik I Übung 2 : Programmieren in Eclipse 5. März 2014 Daniel Hentzen dhentzen@student.ethz.ch Downloads : http://n.ethz.ch/~dhentzen/download/ Heute 1. Nachbesprechung Übung 1 2. Theorie 3. Vorbesprechung
MehrProgrammierkurs C++ Grundlagen. Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.
Programmierkurs C++ Grundlagen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Algorithmen, Maschinen- und Programmiersprachen Algorithmen
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
MehrC für Java-Programmierer
Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im
MehrInhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler
Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale
MehrÜbung 1 - Betriebssysteme I
Prof. Dr. Th. Letschert FB MNI 13. März 2002 Aufgabe 0: Basiswissen Rechnerarchitektur: Übung 1 - Betriebssysteme I Aus welchen Komponenten besteht ein Rechner mit Von-Neumann Architektur? Was sind Bits
Mehr