![Page 1: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/1.jpg)
Informatik IIGrundlagen der Programmierung
Programmieren in C
Annäherung an C
Hochschule Fulda – FB ET
Sommersemester 2010
http://www.rz.hs-fulda.de/et
Peter Klingebiel, HS Fulda, DVZ
![Page 2: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/2.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 2
Was kennen wir schon von C?
![Page 3: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/3.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 3
Woher kommt C? 1
• 1971-73 Dennis Ritchie entwickelt bei den Bell Laboratorien C für die Programmierung des neuen UNIX-Betriebssystems
• 1973 Implementierung von UNIX in C
• Vorläufer: B (1969/70) und BCPL (1960er Jahre)
• 1978 Ritchie/Kernighan: „The C Programming Language“ (dt. „Programmieren in C“)
• 1989 Norm ANSI X3.159-1989 Programming Language C
• 1990 ISO Standard C90
• 1995 erweiterter ISO Standard C95
• 1999 ISO/IEC 9899:1999
![Page 4: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/4.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4
Woher kommt C? 2
![Page 5: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/5.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5
Einsatzgebiete von C
• CAD-, CAE-, Simulationssysteme• Text- und Grafikverarbeitungssysteme• Mathematik-, Numerische Systeme• Betriebssysteme (Unix, Linux, ...)• Systemprogramme (Unix, Linux, Windows, ...)• Sprachinterpreter, -compiler (GNU C++, CC)• Netz-, Webdienste (Apache Webserver, ...)• Steuerungs-, Regelungssysteme• Aber auch: Mathlab C-Code
![Page 6: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/6.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6
Wie entsteht ein C-Programm? 1
• Problem analysieren undModell entwerfen
• Algorithmus entwickeln• Programm kodieren• Programm übersetzen
(bis syntaktisch fehlerfrei)• Programm testen
(bis semantisch fehlerfrei ?)• Programm produktiv (??)
![Page 7: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/7.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 7
Wie entsteht ein C-Programm? 2
• Nach Problemanalyse und dem Entwurfdes Lösungsalgorithmus:
• Entwurf des Programms in Pseudocode, mitHilfe von Programmablaufplänen, Strukto-grammen oder anderen Entwurfsverfahren
• Kodieren des Programmtextes mit Editor(standalone oder in Programmierumgebung)
• Übersetzen des Programmtextes mit demC-Compiler und Montieren zu einem ausführbaren Programm
• Programm testen
![Page 8: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/8.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 8
Wie entsteht ein C-Programm? 3
• Beispiel: Programm Ausgabe eines Textes
$ ed hallo.c/* hallo.c */#include <stdio.h>int main(void){ puts(„Hallo Welt!\n“); return(0);}$ gcc –o hallo hallo.c$ ./halloHallo Welt!
![Page 9: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/9.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 9
Wie entsteht ein C-Programm? 4
• Übersetzung passiert in mehreren Schritten• C-Preprozessor (cpp) - reine Textoperationen
(include, define, if, ..) im Quelltext• C-Compiler übersetzt C-Quelltext in den
maschinenabhängigen Assemblercode• Assembler erzeugt noch nicht ausführbaren
Maschinencode• Linker montiert den Maschinencode mit
Funktionen aus Bibliotheken zu einem dann ausführbarem Programm
![Page 10: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/10.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 10
Wie wird ein C-Programm entworfen? 1
• Pseudocode, Bsp. Euklidischer Algorithmuseuklid(a, b) wenn a = 0 dann liefere b sonst solange b ≠ 0 wenn a > b dann a = a – b sonst b = b – a liefere a
![Page 11: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/11.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11
Wie wird ein C-Programm entworfen? 2
• On the fly? Quick and dirty?
![Page 12: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/12.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 12
Wie wird ein C-Programm entworfen? 3
• Pseudocode als Kommentar in C/* Funktion euklid – euklid. Algorithmus */int euklid(int a, int b){ /* wenn a = 0 dann liefere b */ if(a == 0) return(b); /* sonst solange b ≠ 0 */ while(b != 0) { /* wenn a > b dann a = a – b */ if(a > b) a = a – b;
/* sonst b = b – a */ else b = b –a; } /* liefere a */ return(a);}
![Page 13: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/13.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 13
Wie wird ein C-Programm entworfen? 4
• Programmablaufplan
• wirklich geeignet?• eher für Assembler• doch oft eingesetzt
![Page 14: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/14.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 14
Wie wird ein C-Programm entworfen? 5
• Struktogramm
![Page 15: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/15.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 15
Wie wird ein C-Programm entworfen? 6
![Page 16: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/16.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 16
Wie wird ein C-Programm ausgeführt? 1
• Ausführung direkt auf dem Prozessor– z.B. Temperaturregelung in Kühltruhe– Programm in ROM, EPROM o.ä. gespeichert– alle Funktionalitäten müssen im Programm in
Maschinencode vorhanden sein
• Ausführung auf einem Betriebssystem– Hardware ist durch das BS gekapselt– Starten/Beenden des Programms über das BS– Unterstützung durch BS bzw. BS-Funktionen,
z.B. IO, Dateien, Timer, Signale, Threads usw.
![Page 17: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/17.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 17
Wie wird ein C-Programm ausgeführt? 2
• Betriebssystem
• MikrocontrollerHardware / Prozessor
AnwendungsprogrammFunktionsbibliotheken
Systemcalls / Systemaufrufe
Anwendungsprogramm(incl. aller Funktionen)
Hardware / Prozessor
![Page 18: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/18.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 18
Wie wird ein C-Programm ausgeführt? 3
• Betriebssystem
• Mikrokontroller
![Page 19: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/19.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 19
Wie ist ein C-Programm aufgebaut? 1
• Beispiel hallo.c/* * hallo.c */
#include <stdio.h>
int main(void){ char *text = „Hallo, Welt!“; puts(text); return(0);}
![Page 20: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/20.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20
Wie ist ein C-Programm aufgebaut? 2
• Kommentare, mit /* und */ geklammert, keine Schachtelung möglich!!!
• Preprozessoranweisungen, beginnen mit #• Schlüsselwörter, z.B. return• Bezeichner (Identifier) für Konstanten,
Variablen, Funktionsnamen usw. fangen mit Buchstaben oder Unterstrich _ an, können dann weitere Buchstaben, _ und Ziffern enthalten. Keine Schlüsselwörter!
• Jede Anweisung wird durch ; beendet!
![Page 21: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/21.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 21
Wie ist ein C-Programm aufgebaut? 3
• Funktionen / Prozeduren• Funktionskopf gibt Typ des Rückgabewerts an,
den Namen der Funktion und in Klammern ggfs. die Parameter mit Typ und Bezeichnername
• Funktionskörper ist mit { und } geklammert,enthält Deklaration von Variablen, Konstanten, den Programmablauf sowie das return
• Jedes C-Programm hat eine Funktion main()
![Page 22: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/22.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 22
Wie ist ein C-Programm aufgebaut? 4
• Allgemeiner Aufbau eines C-Programms /* Kommentare *//* Preprozessoranweisungen *//* Globale Variablen *//* Funktionen / Unterprogramme */type function1(...){ /* Lokale Variablen */ /* Anweisungen */}/* Hauptprogramm */int main(...){ /* Lokale Variablen */ /* Anweisungen */}
![Page 23: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/23.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23
Wie ist ein C-Programm aufgebaut? 5
• Beispiel: Temperaturregelung
![Page 24: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/24.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24
Wie soll ein C-Programm nicht aussehen? 1
• Quelle: International Obfuscated C Code Contest
![Page 25: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/25.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25
Wie soll ein C-Programm nicht aussehen? 2
• Quelle: main.c des X-Programms xterm
![Page 26: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/26.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26
Wie soll ein C-Programm nicht aussehen? 3
![Page 27: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/27.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27
Wie soll ein C-Programm nicht aussehen? 4
![Page 28: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/28.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28
Wie soll ein C-Programm nicht aussehen? 5
![Page 29: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/29.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29
So kann ein C-Programm aussehen! 1
![Page 30: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010](https://reader036.vdocuments.pub/reader036/viewer/2022062622/55204d6249795902118b699e/html5/thumbnails/30.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 30
So kann ein C-Programm aussehen! 2