Übungspaket 28 Module und getrenntes Übersetzen
|
|
- Babette Gerhardt
- vor 5 Jahren
- Abrufe
Transkript
1 Übungspaket 28 Module und getrenntes Übersetzen Übungsziele: Skript: 1. Verteilen von Programmteilen auf mehrere Dateien 2. Richtige Verwendung der Header-Dateien 3. Richtiger Umgang mit dem C-Compiler Kapitel: 55 und 39 sowie insbesondere auch Übungspaket 17 Semester: Wintersemester 2018/19 Betreuer: Thomas, Tim und Ralf Synopsis: Im Gegensatz zu vielen klassischen Programmiersprachen bietet C die Möglichkeit, das Programm auf mehrere Dateien zu verteilen. Diese Verteilung gestattet es, nur diejenigen Dateien zu übersetzen, die sich auch wirklich geändert haben; die anderen.o-dateien können bleiben, wie sie sind. Diese Option führt zu übersichtlichen Quelltext-Dateien und kann die notwendige Übersetzungszeit bei großen Programmen deutlich reduzieren. Allerdings tritt beim Aufteilen des Quelltextes auf mehrere Dateien das Problem der Konsistenzhaltung auf: es kann vorkommen, dass eine Funktion in einer Datei anders definiert ist, als sie in einer anderen Datei aufgerufen wird. Hier hilft der richtige Umgang mit den Header-Dateien und den #include-direktiven, was wir im Rahmen dieses Übungspaketes probieren wollen.
2 Teil I: Stoffwiederholung Aufgabe 1: Fragen zum Compiler Wie heißen die vier Teilprogramme, die der Compiler nacheinander aufruft? 1. Präprozessor 2. (eigentlicher) Compiler 3. Assembler 4. Linker/Binder Welcher Teil des Compilers bearbeitet die #include-direktiven? Der Präprozessor Welche Phasen beinhaltet der eigentliche Übersetzungsvorgang? Phasen 1-3 Mittels welcher Option hört der Compiler vor dem Binden auf? -c Gib hierfür ein Beispiel. In welcher Datei landet das Ergebnis der eigentlichen Übersetzung? Was weiß der Compiler nach dem Übersetzen von datei.c? gcc -c datei.c datei.o Rein gar nichts. Nehmen wir nun an, wir würden zwei Dateien übersetzen. Was weiß der Compiler von der ersten Datei, beim Übersetzen der zweiten, wenn wir folgende Kommandos verwenden? gcc -c datei-1.c und gcc -c datei-2.c gcc -c datei-1.c datei-2.c Absolut nichts Ebenso wenig Erkläre nochmals kurz in eigenen Worten, was die #include-direktive macht. Der Compiler ersetzt die #include-direktive 1:1 durch die angegebene Datei. Vervollständige die beiden folgenden Beispiele: #include-direktive #include <math.h> #include "vowels.h" Effekt Fügt die Datei math.h ein. Fügt die Datei vowels.h ein; diese wird zunächst im aktuellen Verzeichnis gesucht. Erkläre mit eigenen Worten, wofür man üblicherweise sogenannte.h-dateien verwendet: Die Endung.h ist eine Konvention und steht für Header-Datei. In diese Dateien schreibt man üblicherweise Definitionen (#define-direktiven) und Funktionsdeklarationen hinein, damit der Compiler beim Übersetzen die definierten Werte sowie die Signaturen der Funktionen kennt. Die Datei stdio.h ist eine der besten Beispiele hierfür Wintersemester 2018/19, Einführung in die Praktische Informatik
3 Teil II: Quiz Aufgabe 1: Übersetzen und Binden (Linken) Im Folgenden gehen wir davon aus, dass wir eine Reihe von Dateien haben und diese mittels des C-Compilers übersetzen und/oder binden wollen. in der ersten Spalte steht jeweils das auszuführende Kommando. In der zweiten soll jeweils stehen, welche Dateien übersetzt werden. In der dritten Spalte soll stehen, ob ein lauffähiges Programm zusammengebunden wird und wie ggf. dessen Name lautet. Vervollständige die fehlenden Spalten. Kommando übersetzte Dateien gebundenes Programm gcc datei-1.c datei-1.c a.out gcc datei-1.c -o badman datei-1.c badman gcc -c a.c b.c a.c, b.c ---- gcc a.o b.o ---- a.out gcc -o temperatur x.c y.o x.c (y.o gibt es schon) temperatur gcc -c inge.c peter.c inge.c, peter.c ---- gcc -o supi supi.c supi.c supi Einführung in die Praktische Informatik, Wintersemester 2018/
4 Teil III: Fehlersuche Aufgabe 1: Eine einfache verteilte Anwendung Chefprogrammierer Dr. Modell-Hammer hat versucht, eine erste kleine verteilte Anwendung zu schreiben. Dabei hat er folgende Struktur im Sinn gehabt: test.c main() hello.h hello.c hello() Übersetzen: gcc -x test test.c hello.h hello.c In dieser Struktur befindet sich in der Datei test.c das Hauptprogramm, das seinerseits die Funktion hello() aufruft, die einen netten Begrüßungstext ausgibt. Diese Funktion gibt den Geburtstag, der als Struktur definiert ist, an die aufrufende Stelle zurück. Leider hat auch Dr. Modell-Hammer ein paar kleine Fehler gemacht... er ist desperate... Das Hauptprogramm: test.c 1 # include <stdio.h> 2 # include " hello.c" 3 4 int main ( int argc, char ** argv ) 5 { 6 struct birthdate birth = hello ( " frida " ); 7 printf ( "my birthday is: %d. %d. %d\n", 8 birth.day, birth. month, birth. year ); 9 } Die Header-Datei: hello.h 1 struct birthdate hello ( char * name ); Das Modul: hello.c 1 # include <stdio.h> 2 # include " hello.h" 3 4 struct birthdate { int day ; int month ; int year ; }; 5 6 struct birthdate hello ( char * name ) 7 { 8 struct birthdate birth ; 9 printf ( " hello %s, my darling!\n", name ); 10 birth. day = 30; birth. month = 2; birth. year = 1991; 11 return birth ; 12 } 28-3 Wintersemester 2018/19, Einführung in die Praktische Informatik
5 hello.c: 4 Zeile Fehler Erläuterung Korrektur struct... Das geht leider schief. Der Compiler kann die Datei hello.c einwandfrei übersetzen. Da aber im Regelfalle alle anderen Dateien nicht eine.c sondern eine.h-datei einbinden, bekommt der Compiler dort nicht mit, was struct birthdate sein soll. Mit anderen Worten: Diese Definition gehört in die.h-datei, damit der Compiler auch bei den anderen.c-dateien weiß, was mit struct birthdate gemeint ist. Verschieben nach hello.h hello.h: 1 Fehlende Definition Wie eben erläutert, muss hier die Definition für die Struktur birthdate hin. dito test.c: 2 hello.c Das Einbinden einer anderen.c-datei wollen wir ja gerade nicht. Dann hätten wir hier gleich alle Zeilen der Datei hello.c hinschreiben können. Wir wollen ja gerade, dass die C-Anweisungen in getrennten Dateien bleiben. Daher bindet man hier üblicherweise eine Header-Datei.h ein. Diese dient dann dem Compiler, damit er weiß, was los ist und somit leichter Fehler entdecken kann, was wiederum uns bei der Programmentwicklung sehr hilft. dito Kommando hello.h zu viel Beim Aufruf des Compilers müssen wir die.c- Dateien angeben; die.h-dateien werden durch die #include-direktiven vom C-Compiler automatisch eingebunden. hello.h streichen Aufgrund seiner Länge haben wir das komplette Programm auf der nächsten Seite abgedruckt. Einführung in die Praktische Informatik, Wintersemester 2018/
6 Das Hauptprogramm: test.c 1 # include <stdio.h> 2 # include " hello.h" 3 4 int main ( int argc, char ** argv ) 5 { 6 struct birthdate birth = hello ( " frida " ); 7 printf ( "my birthday is: %d. %d. %d\n", 8 birth.day, birth. month, birth. year ); 9 } Die Header-Datei: hello.h 1 struct birthdate { int day ; int month ; int year ; }; 2 3 struct birthdate hello ( char * name ); Das Modul: hello.c 1 # include <stdio.h> 2 # include " hello.h" 3 4 struct birthdate hello ( char * name ) 5 { 6 struct birthdate birth ; 7 printf ( " hello %s, my darling!\n", name ); 8 birth. day = 30; birth. month = 2; birth. year = 1991; 9 return birth ; 10 } Kommando zum Übersetzen: gcc -o test test.c hello.c 28-5 Wintersemester 2018/19, Einführung in die Praktische Informatik
7 Teil IV: Anwendungen Ziel dieses Übungspaketes ist es, ein kleines Programm zu entwickeln, das auf zwei Dateien verteilt ist und dennoch zu einem lauffähigen Programm zusammengebunden wird. Um keine weiteren Probleme zu erzeugen, verwenden wir das Programm zum Zählen von Vokalen aus Übungspaket 24. Vorbemerkung Bevor wir mit der Arbeit loslegen, wiederholen wir hier als Lehrkörper nochmals drei wesentliche Punkte aus dem Skript: 1. Dem Compiler ist es es völlig egal, wo sich welche Funktionen befinden. Er muss aber wissen, in welchen Dateien sie kodiert sind, damit er sie übersetzen und am Ende zu einem Programm zusammenbinden kann. 2. Wenn der Compiler mehrere Dateien übersetzt, egal ob mittels eines oder mehrerer Kommandos, dann übersetzt er die angegebenen Dateien nacheinander. Nach dem Übersetzen jeder einzelnen Datei schreibt er das Ergebnis in eine Ergebnis-Datei (meist eine.o-datei) und vergisst sofort alles! Das bedeutet folgendes: Der Compiler merkt sich nicht irgendwelche Definitionen und/oder Funktionsköpfe; wir müssen selbst dafür sorgen, dass er alles zur richtigen Zeit mitbekommt. 3. Die Verwendung von.h-dateien ist nicht notwendig aber hilft uns und dem Compiler. In einer.h-datei stehen üblicherweise Konstantendefinitionen (beispielsweise #define SIZE 10) und Funktionsdeklarationen (beispielsweise int my ia prt( FILE *fp, int *a, int size );), die auch Prototypen genannt werden. Durch diese Deklarationen kann der Compiler Inkonsistenzen feststellen und uns diese mitteilen, wodurch die Programmentwicklung für uns stark vereinfacht wird. Aufgabe 1: Getrenntes Übersetzen am Beispiel 1. Aufgabenstellung Wir wollen wieder die Anzahl Vokale zählen, die sich in einer Zeichenkette befinden. Damit wir nicht von vorne anfangen müssen, greifen wir auf die Programme aus den Übungspaketen 24 (Anwendungsteil, Aufgaben 2) und 25 zurück. Aber diesmal packen wir die damals entwickelte Funktion int vokale( char * str ) in eine gesonderte Datei. Beide Dateien wollen wir getrennt übersetzen und zu einem Programm zusammenbinden. Das Testen erledigen wir mittels des argc/argv-mechanismus. Einführung in die Praktische Informatik, Wintersemester 2018/
8 2. Pflichtenheft Aufgabe : Trennen von Funktion (Funktionalität) und Hauptprogramm in mehrere Dateien Eingabe : keine; die Testdaten werden über argc/argv übergeben Ausgabe : Zahl der Vokale je Zeichenkette Sonderfälle : keine 3. Entwurf Da wir diesmal die Programmzeilen trennen wollen, benötigen wir ein paar Überlegungen zum Thema Entwurf, wobei wir ein wenig helfen wollen ;-) Wir wollen also das Hauptprogramm (main) vom Zählen der Vokale (vokale()) trennen. Ferner wollen wir sicherstellen, dass der Compiler überall die selbe Vorstellung bezüglich Funktionstyp und Parameter (Signatur) von der Funktion vokale() hat. Wie viele Dateien benötigen wir? Definiere die benötigten Dateinamen: Drei Dateien main.c, vokale.c und vokale.h 4. Implementierung Hier brauchen wir uns keine weiteren Gedanken machen, da wir bereits alle notwendigen Programmzeilen in den Übungspaketen 24 und 25 entwickelt haben. 5. Kodierung Zuerst die Schnittstelle vokale.h: 1 /* 2 * datei : vokale. h 3 * das hier ist die schnittstelle fuer vokale. c 4 */ 5 6 int vokale ( char * str ); // that s it! simple as this Da wir diese Datei jetzt überall mittels #include "vokale.h" einbinden, kann der Compiler die Konsistenz über die Dateigrenzen hinweg sicherstellen Wintersemester 2018/19, Einführung in die Praktische Informatik
9 Nun die Implementierung der Funktion vokale(): 1 /* 2 * datei : vokale. c 3 * das ist die implementierung der funktion vokale () 4 */ 5 6 # include " vokale.h" 7 8 int vokale ( char * str ) 9 { 10 int cnt ; 11 if ( str!= 0 ) // if ( str ) would be fine as well 12 { 13 for ( cnt = 0; * str ; str ++ ) 14 if ( * str == a * str == A 15 * str == e * str == E 16 * str == i * str == I 17 * str == o * str == O 18 * str == u * str == U ) 19 cnt ++; 20 } 21 else cnt = -1; 22 return cnt ; 23 } Und schließlich das Hauptprogramm main(): 1 /* 2 * datei : main.c 3 * hier befindet sich das hauptprogramm 4 */ 5 6 # include <stdio.h> 7 # include " vokale.h" // nicht vokale.c!!! 8 9 int main ( int argc, char ** argv ) 10 { 11 int i; 12 for ( i = 1; i < argc ; i ++ ) 13 printf ( " str = %s vowels =%d\n", 14 argv [ i ], vokale ( argv [ i ] ) ); 15 } Das war s auch schon :-) Einführung in die Praktische Informatik, Wintersemester 2018/
Übungspaket 25 Kommandozeilenargumente
Übungspaket 25 Kommandozeilenargumente Übungsziele: Skript: 1. Umgang mit argc/argv 2. argc/argv als Schnittstelle von Programm und Betriebssystem 3. Vereinfachtes Testen mit argc/argv Kapitel: 51 und
MehrÜbungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
MehrÜbungspaket 10 Fallunterscheidungen
Übungspaket 10 Fallunterscheidungen Übungsziele: Skript: 1. Umgang mit der einfachen Fallunterscheidung, 2. sowie mehrfachen Fallunterscheidung und 3. problemangepasster Auswahl Kapitel: 24 und 25 Semester:
MehrÜbungspaket 17 Der gcc Compiler
Übungspaket 17 Der gcc Compiler Übungsziele: Skript: 1. Sicherer Umgang mit gemischten Ausdrücken 2. Herleiten der unterschiedlichen Datentypen in gemischten Ausdrücken 3. Kenntnis über die implizite Durchführung
MehrÜbungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrÜbungspaket 12 Der Datentyp char
Übungspaket 12 Der Datentyp char Übungsziele: Skript: 1. Umgang mit dem Datentyp char, 2. Deklarationen von char-variablen, 3. char-konstanten 4. und char-rechenoperationen. Kapitel: 29 bis 31 sowie 24,
MehrÜbungspaket 9 Logische Ausdrücke
Übungspaket 9 Logische Ausdrücke Übungsziele: Skript: 1. Umgang mit logischen Vergleichs- und Verknüpfungsoperatoren 2. Bilden einfacher und komplexer logischer Ausdrücke Kapitel: 22 Semester: Wintersemester
MehrÜbungspaket 23 Mehrdimensionale Arrays
Übungspaket 23 Mehrdimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung mehrdimensionaler Arrays Kapitel: 49 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrÜbungspaket 14 Eindimensionale Arrays
Übungspaket 14 Eindimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung eindimensionaler Arrays Kapitel: 33 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrÜbungspaket 8 Datentyp int
Übungspaket 8 Datentyp int Übungsziele: Skript: 1. Umgang mit dem Datentyp int, 2. Deklarationen von int-variablen, 3. int-konstanten 4. und int-rechenoperationen. Kapitel: 21 Semester: Wintersemester
MehrÜbungspaket 17 Der gcc Compiler
Übungspaket 17 Der gcc Compiler Übungsziele: Skript: 1. Sicherer Umgang mit gemischten Ausdrücken 2. Herleiten der unterschiedlichen Datentypen in gemischten Ausdrücken 3. Kenntnis über die implizite Durchführung
MehrÜbungspaket 7 Angemessenes Formatieren von C-Programmen
Übungspaket 7 Angemessenes Formatieren von C-Programmen Übungsziele: Skript: 1. Gute Layout-Struktur durch Einrücken. Richtiges Verwenden von Kommentaren Kapitel: 19 Semester: Wintersemester 016/17 Betreuer:
MehrÜbungspaket 12 Der Datentyp char
Übungspaket 1 Der Datentyp char Übungsziele: Skript: 1. Umgang mit dem Datentyp char,. Deklarationen von char-variablen, 3. char-konstanten 4. und char-rechenoperationen. Kapitel: 9 bis 31 sowie 4, 5 und
MehrÜbungspaket 32 Einfach verkettete, sortierte Liste
Übungspaket 32 Einfach verkettete, sortierte Liste Übungsziele: Skript: 1. Aufbau einer einfach verketteten, sortierten Liste 2. Traversieren von Listen 3. Vereinfachung durch ein Dummy-Element Kapitel:
MehrÜbungspaket 3 Mein erstes Programm: Fläche eines Rechtecks
Übungspaket 3 Mein erstes Programm: Fläche eines Rechtecks Übungsziele: Skript: 1. Der Software Life Cycle im Überblick. Umgang mit Editor und Compiler 3. Editieren und Starten eines eigenen Programms
MehrÜbungspaket 13 Der Datentyp double
Übungspaket 13 Der Datentyp double Übungsziele: Skript: 1. Umgang mit dem Datentyp double, 2. Deklarationen von double-variablen, 3. double-konstanten 4. und double-rechenoperationen. Kapitel: 32 Semester:
MehrÜbungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungsziele: Skript: In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
MehrÜbungspaket 8 Datentyp int
Übungspaket 8 Datentyp int Übungsziele: Skript: 1. Umgang mit dem Datentyp int, 2. Deklarationen von int-variablen, 3. int-konstanten 4. und int-rechenoperationen. Kapitel: 21 Semester: Wintersemester
MehrÜbungspaket 22 Rekursive Funktionsaufrufe
Übungspaket 22 Rekursive Funktionsaufrufe Übungsziele: Skript: 1. Technische Voraussetzungen für rekursive Funktionsaufrufe 2. Umsetzung mathematisch definierter Rekursionen in entsprechende C-Programme
MehrÜbungspaket 19 Programmieren eigener Funktionen
Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame
MehrÜbungspaket 7 Angemessenes Formatieren von C-Programmen
Übungspaket 7 Angemessenes Formatieren von C-Programmen Übungsziele: Skript: 1. Gute Layout-Struktur durch Einrücken. Richtiges Verwenden von Kommentaren Kapitel: 19 Semester: Wintersemester 018/19 Betreuer:
MehrÜbungspaket 20 Zeiger und Zeigervariablen
Übungspaket 20 Zeiger und Zeigervariablen Übungsziele: Skript: 1. Definition von Zeigervariablen 2. Verwendung von Zeigern 3. Arrays und Adressberechnungen Kapitel: 45 und 46 Semester: Wintersemester 2017/18
MehrÜbungspaket 4 Klassifikation von Dreiecken
Übungspaket 4 Klassifikation von Dreiecken Übungsziele: Skript: 1. Selbstständiges Entwickeln eines ersten Programms 2. Anwenden der Methoden des Software Life Cycles 3. Programmentwurf durch Anwendung
MehrÜbungspaket 19 Programmieren eigener Funktionen
Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame
MehrC++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung
MehrÜbungspaket 30 Kopieren von Dateien
Übungspaket 30 Kopieren von Dateien Übungsziele: Skript: 1. Öffnen und Schließen von Dateien 2. Einfaches Lesen und Schreiben 3. Behandlung der EOF-Marke 4. Kopieren ganzer Dateien Kapitel: 59 bis 67 und
MehrÜbungspaket 21 Funktionen mit Zeigern und Arrays als Parameter
Übungspaket 21 Funktionen mit Zeigern und Arrays als Parameter Übungsziele: Skript: 1. Funktionen mit Zeigern als Parameter 2. Emulation von Variablenparametern 3. Funktionen mit Arrays als Parameter 4.
MehrÜbungspaket 24 Zeichenketten
Übungspaket 24 Zeichenketten Übungsziele: Skript: 1. Verständnis über die interne Repräsentation von Zeichenketten 2. Arbeiten mit Zeichenketten 3. Definition konstanter Zeichenketten 4. Verwendung diverser
MehrÜbungspaket 20 Zeiger und Zeigervariablen
Übungspaket 20 Zeiger und Zeigervariablen Übungsziele: Skript: 1. Definition von Zeigervariablen 2. Verwendung von Zeigern 3. Arrays und Adressberechnungen Kapitel: 45 und 46 Semester: Wintersemester 2017/18
MehrÜbungspaket 3 Mein erstes Programm: Fläche eines Rechtecks
Übungspaket 3 Mein erstes Programm: Fläche eines Rechtecks Übungsziele: Skript: 1. Der Software Life Cycle im Überblick. Umgang mit Editor und Compiler 3. Editieren und Starten eines eigenen Programms
MehrÜbungspaket 4 Funktionszeiger
Übungspaket 4 Funktionszeiger Übungsziele: Literatur: 1. Verstehen von Funktionszeigern. 2. Anwenden von Funktionszeigern. C-Skript 1, Kapitel: 85 Semester: Wintersemester 2017/18 Betreuer: Kevin, Peter
MehrÜbungspaket 13 Der Datentyp double
Übungspaket 13 Der Datentyp double Übungsziele: Skript: 1. Umgang mit dem Datentyp double, 2. Deklarationen von double-variablen, 3. double-konstanten 4. und double-rechenoperationen. Kapitel: 32 Semester:
MehrÜbungspaket 22 Rekursive Funktionsaufrufe
Übungspaket 22 Rekursive Funktionsaufrufe Übungsziele: Skript: 1. Technische Voraussetzungen für rekursive Funktionsaufrufe 2. Umsetzung mathematisch definierter Rekursionen in entsprechende C-Programme
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
MehrEine Mini-Shell als Literate Program
Eine Mini-Shell als Literate Program Hans-Georg Eßer 16.10.2013 Inhaltsverzeichnis 1 Eine Mini-Shell 1 1.1 Einen Befehl parsen......................... 2 1.2 Was tun mit dem Kommando?...................
MehrMichael Dienert. 8. Dezember 2016
C für Unverdrossene Michael Dienert 8. Dezember 2016 Vorbemerkung Natürlich könnte ich als erstes C-Programm Hello World nehmen. Um mit dem Kompiler zu spielen, kann man aber auch gleich einen sinnvolleren
MehrPeter Prinz. Das Übungsbuch. CTestfragen und Aufgaben mit Lösungen
Peter Prinz Das Übungsbuch CTestfragen und Aufgaben mit Lösungen Grundlagen Dieses Kapitel enthält grundlegende Fragen und Aufgaben zur Erstellung von C-Programmen. Hierzu gehören folgende Themen: Header-Dateien
MehrÜbungspaket 24 Zeichenketten
Übungspaket 4 Zeichenketten Übungsziele: Skript: 1. Verständnis über die interne Repräsentation von Zeichenketten. Arbeiten mit Zeichenketten 3. Definition konstanter Zeichenketten 4. Verwendung diverser
MehrÜbungspaket 21 Funktionen mit Zeigern und Arrays als Parameter
Übungspaket 21 Funktionen mit Zeigern und Arrays als Parameter Übungsziele: Skript: 1. Funktionen mit Zeigern als Parameter 2. Emulation von Variablenparametern 3. Funktionen mit Arrays als Parameter 4.
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:
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
Mehr8.1 Vom Quellcode zur ausführbaren Programm
8. Die Umgebung von C- 8.1 Vom Quellcode zur Programmausführung 8.2 Präprozessor-Anweisungen 8.3 Compiler, Assembler, Binder 8.4 Das Make-Utility 8.5 Datenübergabe vom und zum Betriebssystem 8-1 8.1 Vom
MehrVorlesung Informatik I
Vorlesung Informatik I Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 11. Programmieren in C Der Compilierungsprozess 1 Aufbau eines C-Programms 1. Direktiven
MehrTeil II. Literatur zur C-Programmierung:
Teil II 2Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: A Software Engineering Approach. Springer 1991 Kernighan, Ritchie. The C Programming Language.
MehrÜbungspaket 30 Kopieren von Dateien
Übungspaket 30 Kopieren von Dateien Übungsziele: Skript: 1. Öffnen und Schließen von Dateien 2. Einfaches Lesen und Schreiben 3. Behandlung der EOF-Marke 4. Kopieren ganzer Dateien Kapitel: 59 bis 67 und
MehrProseminar. C-Programmierung Grundlagen und Konzepte. Der Präprozessor. von: Svenja Neef
Proseminar C-Programmierung Grundlagen und Konzepte Der Präprozessor von: Svenja Neef Inhaltsverzeichnis 1Der C-Präprozessor...2 1.1Was ist der C-Präprozessor...2 1.2Präprozessor-Befehle...2 1.2.1Zusammenführen
MehrPraktikum Ingenieurinformatik. Termin 4. Funktionen, numerische Integration
Praktikum Ingenieurinformatik Termin 4 Funktionen, numerische Integration 1 Praktikum Ingenieurinformatik Termin 4 1. Funktionen. Numerische Integration, Trapezverfahren 1.1. Funktionen Eine Funktion ist
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
MehrProgrammierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen.
Programmierung mit C Modularisierung von Programmen. Präprozessor-Anweisungen nutzen. Modularisierung Zerlegung eines Programms in überschaubare Einheiten Die einzelnen Einheiten werden als Modul bezeichnet.
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
MehrProgrammübersetzung & modulare Programme INE2 M. Thaler, Office TG208
Programmübersetzung & modulare Programme INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 slide Um was geht es? C-Quellprogramm ausführbarer Code #include Quellecodedatei
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 - PRÄPROZESSOR. Seminar effiziente C Programmierung WS 2012/13. Von Christian Peter
C - PRÄPROZESSOR Seminar effiziente C Programmierung WS 2012/13 Von Christian Peter Themen Was sind Präprozessoren? Beispiele für Präprozessoren Funktionsweisen Der C - Präprozessor Der # Präfix #include
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
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,
MehrU1 3. Übung U1 3. Übung. Die Kommandos auf den folgenden Folien dienen der Veranschaulichung. Sind nicht direkt auf die Übungsaufgabe übertragbar
U1 3. Übung U1 3. Übung Besprechung Aufgabe 0 Make und Makefiles Aufgabe 2 U1-1 Hinweise Die Kommandos auf den folgenden Folien dienen der Veranschaulichung Sind nicht direkt auf die Übungsaufgabe übertragbar
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.
MehrK Ergänzungen zur Einführung in C
K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K.1 Zeiger, Felder und Zeichenketten Zeichenketten sind Felder von Einzelzeichen (char), die in der internen Darstellung durch ein \0
MehrKlausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Was liefert
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
MehrUlrich Stein
Von C nach MATLAB Einführung in MATLAB für Personen mit C-Kenntnissen Datentypen ähnlich in C und MATLAB, dort aber automatische Typzuweisung möglich double a = 2; Arrays a = double( 2 ); aber auch a =
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
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!
MehrHochschule Für Angewandte Wissenschaften FH München Sommersemester Thomas Kolarz. Folie 1.
Praktikum Btib Betriebssysteme t I Hochschule Für Angewandte Wissenschaften FH München Sommersemester 2010 thomas.kolarz@hm.edu Folie 1 Vorbereitung Booten Sie den Rechner unter Linux und melden Sie sich
MehrDer C-Präprozessor. Lukas Stabe
Der C-Präprozessor Lukas Stabe Inhaltsverzeichnis 1 Einleitung 1 2 Makros 1 2.1 Parameterlose............................ 1 2.2 Parameterbehaftete......................... 3 2.3 Verbreitete Fehler..........................
MehrViel Erfolg bei der Bearbeitung der Aufgaben!
Musterlösung Name:... 1 2 3 4 5 Gesamt Note 12 8 10 15 11 56 Bitte tragen Sie auf dem Deckblatt Ihr Namen und Ihre Matrikelnummer ein und auf allen weiteren Seiten nur noch Ihre Matrikelnummer. Lösungen
MehrC Kurzeinführung in die Programmiersprache C
C Kurzeinführung in die Programmiersprache C C Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: A Software Engineering Approach. Springer 1991 Kernighan,
MehrC Kurzeinführung in die Programmiersprache C. C-3 Datentypen und Variablen. C-2 Struktur eines C-Programms. C-1 Überblick. 1 Standardtypen in C
C Kurzeinführung in die Programmiersprache C C Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Datentypen legen fest: Darnell, Margolis. C: A Software Engineering Approach. Springer
MehrSystemprogrammierung
IEinführung I in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: Software Engineering pproach. Springer 1991 Kernighan, Ritchie. The C Programming Language. Prentice-Hall
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
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
MehrÜbungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)
Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines
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
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...
MehrKlausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.
Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert
MehrProgrammierung in C: Vermischtes (Teil 1)
Programmierung in C: Vermischtes (Teil 1) Gültigkeitsbereiche für Variablen C-Präprozessor (#define EPS 0.00001) Inkremtieren und Dekrementieren ( jahr++; restzeit--;) Speicherklassen (static) Typecasts
MehrEinführung Makros Includes Errors und Warnings Pragmas Diverses. Der C-Präprozessor. Lukas Stabe. Universität Hamburg
Der C-Präprozessor Lukas Stabe Universität Hamburg Proseminar C - Grundlagen und Konzepte, 2013 Lukas Stabe C-Präprozessor 1 / 19 Inhalt 1. Einführung 2. Makros 3. Includes 4. Errors und Warnings 5. Pragmas
MehrKapitel 2. Einfache Beispielprogramme
Kapitel 2 Einfache Beispielprogramme 2.1 Ausgabe auf dem Bildschirm 2.2 Lokale Variablen, Ausdrücke und Schleifen 2.3 Zahlen von der Tastatur einlesen 2.4 Formatierung bei der Ausgabe 2.5 Zusammenfassung
MehrEinführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz
Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public
MehrOrganisatorisches Einführung Quellen. Einführung. Praktikum C-Programmierung. Eugen Betke, Nathanael Hübbe, Michael Kuhn, Jakob Lüttgau, Jannek Squar
Einführung Praktikum C-Programmierung Eugen Betke, Nathanael Hübbe, Michael Kuhn, Jakob Lüttgau, Jannek Squar Wissenschaftliches Rechnen Fachbereich Informatik Universität Hamburg 2018-10-22 Michael Kuhn
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
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
MehrC- Kurs 05 Funk-onen. Dipl.- Inf. Jörn Hoffmann leipzig.de. Universität Leipzig Ins-tut für Informa-k Technische Informa-k
C- Kurs 05 Funk-onen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa-k.uni- leipzig.de Universität Leipzig Ins-tut für Informa-k Technische Informa-k Wiederholung Institut für Informatik C-Programm Präprozessor
MehrAufgabe 1. Universität Duisburg-Essen Fachbereich Mathematik Dr. O. Rheinbach
Universität Duisburg-Essen SS09 Fachbereich Mathematik Dr. O. Rheinbach 21.04.2009 Aufgabe 1 Öffnen Sie Visual Studio 2008 und wählen unter Datei Neu Projekt im Dialogfenster erst Win32 und dann rechts
MehrÜbungspaket 5 Abstrakte Programmierung
Übungspaket 5 Abstrakte Programmierung Übungsziele: Skript: 1. Strukturierung einer gegebenen Aufgabe, 2. Bearbeitung von Arbeitsabläufen des alltäglichen Lebens mittels Struktogrammen 3. und der Methode
MehrKlausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 15 Pkt.) Was liefert
MehrFH Ravensburg-Weingarten Schriftlich Prüfung Programmieren
FH Ravensburg-Weingarten Schriftlich Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit Aufgabenblätter erreichbare Punktzahl zugelassene Hilfsmittel, 0800 1000 Uhr (120 min) 16 Seiten (einschl. Deckblatt)
MehrKlausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:
Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Geben
MehrInhalt. 4.9 Typen, Variable und Konstante
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern
Mehr