Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda –...

30
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

Transcript of Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda –...

Page 1: Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2010 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

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 .

Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 30

So kann ein C-Programm aussehen! 2