300 likes | 524 Views
Informatik II Grundlagen 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. Was kennen wir schon von C?. Woher kommt C? 1.
E N D
Informatik IIGrundlagen der ProgrammierungProgrammieren in CAnnäherung an C Hochschule Fulda – FB ET Sommersemester 2010 http://www.rz.hs-fulda.de/et Peter Klingebiel, HS Fulda, DVZ
Was kennen wir schon von C? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 ProgrammingLanguage C • 1990 ISO Standard C90 • 1995 erweiterter ISO Standard C95 • 1999 ISO/IEC 9899:1999 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Woher kommt C? 2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 (??) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie wird ein C-Programm entworfen? 1 • Pseudocode, Bsp. Euklidischer Algorithmuseuklid(a, b)wenn a = 0 dann liefere b sonst solangeb ≠ 0 wenn a > b dann a = a – b sonst b = b – a liefere a Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie wird ein C-Programm entworfen? 2 • On the fly? Quick and dirty? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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);} Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie wird ein C-Programm entworfen? 4 • Programmablaufplan • wirklich geeignet? • eher für Assembler • doch oft eingesetzt Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie wird ein C-Programm entworfen? 5 • Struktogramm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie wird ein C-Programm entworfen? 6 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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. Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie wird ein C-Programm ausgeführt? 2 • Betriebssystem • Mikrocontroller Anwendungsprogramm Funktionsbibliotheken Systemcalls / Systemaufrufe Hardware / Prozessor Anwendungsprogramm(incl. aller Funktionen) Hardware / Prozessor Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie wird ein C-Programm ausgeführt? 3 • Betriebssystem • Mikrokontroller Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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);} Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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() Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 */} Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie ist ein C-Programm aufgebaut? 5 • Beispiel: Temperaturregelung Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie soll ein C-Programm nicht aussehen? 1 • Quelle: International Obfuscated C Code Contest Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie soll ein C-Programm nicht aussehen? 2 • Quelle: main.c des X-Programms xterm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie soll ein C-Programm nicht aussehen? 3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie soll ein C-Programm nicht aussehen? 4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Wie soll ein C-Programm nicht aussehen? 5 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
So kann ein C-Programm aussehen! 1 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
So kann ein C-Programm aussehen! 2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ