informatik ii grundlagen der programmierung programmieren in c annäherung an c
Post on 03-Jan-2016
47 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 2
Was kennen wir schon von C?
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
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4
Woher kommt C? 2
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
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 (??)
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
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!
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
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
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11
Wie wird ein C-Programm entworfen? 2
• On the fly? Quick and dirty?
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);}
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
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 14
Wie wird ein C-Programm entworfen? 5
• Struktogramm
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 15
Wie wird ein C-Programm entworfen? 6
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.
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
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 18
Wie wird ein C-Programm ausgeführt? 3
• Betriebssystem
• Mikrokontroller
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);}
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!
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()
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 */}
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23
Wie ist ein C-Programm aufgebaut? 5
• Beispiel: Temperaturregelung
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24
Wie soll ein C-Programm nicht aussehen? 1
• Quelle: International Obfuscated C Code Contest
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25
Wie soll ein C-Programm nicht aussehen? 2
• Quelle: main.c des X-Programms xterm
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26
Wie soll ein C-Programm nicht aussehen? 3
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27
Wie soll ein C-Programm nicht aussehen? 4
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28
Wie soll ein C-Programm nicht aussehen? 5
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29
So kann ein C-Programm aussehen! 1
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 30
So kann ein C-Programm aussehen! 2
top related