Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Hochschule Fulda – FB ET Sommersemester 2014

Ähnliche Präsentationen


Präsentation zum Thema: "Hochschule Fulda – FB ET Sommersemester 2014 "—  Präsentation transkript:

1 Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C
Hochschule Fulda – FB ET Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ

2 Motivation 1 Frage: Warum müssen Sie programmieren?
Einige wenige Antworten: moderne Geräte sind software-intensiv und software- bestimmt Wertschöpfung in Produkten erfolgt durch Software Software erlaubt gänzlich neue Einsatz-möglichkeiten Software spart Produktentwicklungskosten Produktentwicklung fast nur noch software-gestützt möglich Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

3 Motivation 2 Frage: Warum C? Einige wenige Antworten:
C ist (trotz einiger Tücken) (relativ) einfach C ist (immer noch) sehr verbreitet C hat ein sehr weites Anwendungsspektrum C erlaubt problemnahe Programmierung C erlaubt hardwarenahe Programmierung C ist Ausgangspunkt für höhere Sprachen wie ParC, C++, C#, Objective C, Java, … und und und .. Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

4 "In C programmieren heisst, den Computer zu verstehen!"
Motivation 3 "Was ich nicht in C programmieren kann, kann ich überhaupt nicht programmieren!" "In C programmieren heisst, den Computer zu verstehen!" Zitate: Peter Gietz, Softwareentwickler und Geschäftsführer einer Firma Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4 4

5 Motivation 4 C ist eine imperative Programmiersprache
Anweisungen: Befehle, Daten C ist in Ansätzen eine deklarative Sprache (Rekursion) keine Skriptsprache auch wenn es C-Interpreter gibt keine objektorientierte Sprache auch wenn C Objektorientierung erlaubt keine Sprache für die funktionale Programmierung keine Sprache mit eingebauter Nebenläufigkeit auch wenn in C parallel programmiert werden kann (Betriebssystem-Prozesse, -Threads) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

6 eine Folge von Anweisungen für einen Computer
Was ist ein Programm? Grundsatzerklärung einer Partei Abfolge von Sendungen in Fernsehen oder Radio Abfolge von Vorträgen auf einer Tagung Abfolge von zu behandelnden Tages-ordnungspunkten und und und eine Folge von Anweisungen für einen Computer Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

7 Programm 1 Ein Programm / C-Programm besteht (vereinfacht dargestellt) aus  Daten  Funktionen Daten Eingangsdaten  Ergebnisdaten evtl. (viele) Zwischendaten Konstante Daten  Werte unveränderbar Variable Daten  Werte veränderbar Funktionen  verarbeiten die Daten

8 Programm 2

9 Programm 3

10 Programm 4

11 Programm 5

12 Programm 6 Typischer Ablauf eines C-Programms

13 Wie entsteht ein Programm? 1
Programme werden formuliert von Menschen Programme werden ausgeführt von Computern Problemlösungen werden sofort als Programm formuliert ???? Besser nicht! wie komme ich zu einem Programm? erst: es gibt ein Problem dann: Verstehen des eigentlichen Problems ggfs. Zerlegung des Problems in Teilprobleme dann: Modellierung einer Problemlösung erst dann: Umsetzen in ein Computerprogramm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

14 Wie entsteht ein Programm? 2
Problem analysieren und Modell 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

15 Wie entsteht ein Programm? 3
Nach Problemanalyse und dem Entwurf des Lösungsalgorithmus: Entwurf des Programms in Pseudocode, mit Hilfe von Programmablaufplänen, Strukto- grammen oder anderen Entwurfsverfahren Kodieren des Programmtextes mit Editor (standalone oder in Programmierumgebung) Übersetzen des Programmtextes mit einem Compiler und Montieren zu einem ausführbaren Programm Programm testen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

16 Wie entsteht ein Programm? 4
Einfaches Beispiel: Kapitalberechnung Problem: Berechnung eines fest verzinsten Kapitals über eine feste Laufzeit in Jahren. Jährliche Ausgabe von Zinsen und Kapital Was benötigen wir für die Lösung? Ausgangsdaten Berechnungsalgorithmus Ablauf der Berechnung Was brauchen wir noch? Datenmodellierung (= Datentypen für Daten) eventuell Hilfsdaten Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

17 Wie entsteht ein Programm? 5
Anfangsdaten - Eingangsdaten Berechnungsalgorithmus Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

18 Wie entsteht ein Programm? 6
Ablauf der Berechnung - Programmablauf Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

19 Wie entsteht ein Programm? 7
Benötigte Hilfsdaten - Temporäre Daten Modellierung der Daten  Datentypen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

20 Wie entsteht ein Programm? 8
Pseudocode für Kapitalberechnung Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

21 Wie entsteht ein Programm? 9
Realisierung mit C Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

22 Wie entsteht ein Programm? 10
Lauf des Programms kapital.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

23 Wie entsteht ein Programm? 11
Das Programm ist sehr einfach gestrickt Mögliche Erweiterungen / Verbesserungen? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

24 Pseudocode Formulierung der Lösung kleinerer Probleme in sog. Pseudocode Pseudocode: Verständliche Anweisungen für Menschen Ohne strikte Syntax, aber intuitiv Ähnlich unserer Umgangssprache Dann: Übertragung Pseudocode in Programmiersprache Ggfs. Zusammenfügen der Codeteile zu einem das Problem lösenden größeren Programm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

25 Sprachmittel Sequenz („sodann“)
Auswahl und Verzweigungen (Fallunterscheidungen) Wiederholung (Schleifen) Wiederverwendbare Einheiten (Funktionen) Kommentare Sprünge Zusicherung (Bedingungen, die erfüllt sein müssen) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

26 Sequenz Einfaches Sprachmittel Anweisung 1 – Anweisung 2 – Anweisung 3
Beispiele: Einfaches Rezept Formel mit Werten berechnen Grafische Darstellungen: Flussdiagrammsymbole nach DIN 66001 Struktogramm Beispiel: Ergebnis = 90 Punkte Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

27 Fallunterscheidung wenn … dann … sonst
falls … dann … sonst … andernfalls … ende Beispiel: wenn Punktzahl > dann bestanden sonst nicht bestanden Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

28 Schleifen 1 Beispiele in Pseudocode: wiederhole … solange
solange … mache … ende solange von … bis … mache … nächstes für alle … mache … nächstes while … do … end while repeat … until … for … to … step … next for all … do … next Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

29 Schleifen 2 Abweisende Schleife (kopfgesteuert)
Beispiel: solange bierglas nicht voll bier in glas einschenken Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

30 Schleifen 3 Offene Schleife (fußgesteuert)
Beispiel: bier zapfen solange bestellungen offen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

31 Schleifen 4 Endlosschleife
Beispiel: immer auf tastendruck oder mausklick warten und aktion ausführen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

32 Pseudocodebeispiele 1 Algorithmus: MaxElementInArray
Input: Ein Feld A mit n Integerwerten Output: Das größte Element im Feld A Pseudocode: currentMax = A[1] for i = 1 to n do if A[i] > currentMax then currentMax = A[i] endif endfor return currentMax Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

33 Pseudocodebeispiele 2 Algorithmus: MaxStudentInClass
Input: Reihen von besetzten Stühlen Output: Maximale Größe oder -1 Pseudocode: max = -1 // Jeder ist größer als -1 for each Reihe im Raum for each Stuhl in Reihe if Stuhl besetzt & Größe Teilnehmer auf Stuhl > max then max = Größe Teilnehmer auf Stuhl endif endfor endfor return max Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

34 Programmieren - Alltagsproblem
Friedemann Weise: Fall asleep optimizing (auf youtube) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 34

35 Was kennen wir schon von C?
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

36 Woher kommt C? 1 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 X 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

37 Woher kommt C? 2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

38 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

39 Wie entsteht ein C-Programm? 1
Problem analysieren und Modell entwerfen Algorithmus entwickeln Programm in C kodieren Programm mit C-Compiler übersetzen (bis fehlerfrei) Programm testen (bis semantisch fehlerfrei ?) Programm produktiv (??) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

40 Wie entsteht ein C-Programm? 2
Übersetzung passiert in mehreren Schritten: C-Preprozessor (cpp) - reine Textoperationen (include, define, if, ..) im Quelltext C-Compiler übersetzt C-Quelltext in maschinenabhängigen Assemblercode Assembler erzeugt noch nicht ausführbaren Maschinencode, sog. Objektcode Linker montiert den Objektcode mit Funktionen aus Bibliotheken zu einem dann ausführbarem Programm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

41 Wie wird ein C-Programm entworfen? 1
Pseudocode, Bsp. Euklidischer Algorithmus euklid(a, b) wenn a = dann liefere b sonst solange b ≠ wenn a > b dann a = a – b sonst b = b – a liefere a Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

42 Wie wird ein C-Programm entworfen? 2
On the fly? Quick and dirty? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

43 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

44 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

45 Wie wird ein C-Programm entworfen? 5
Struktogramm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

46 Wie wird ein C-Programm entworfen? 6
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

47 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

48 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

49 Wie wird ein C-Programm ausgeführt? 3
Betriebssystem Mikrokontroller Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

50 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

51 Wie ist ein C-Programm aufgebaut? 2
Kommentare, mit /* und */ geklammert, keine Schachtelung möglich!!! Zeilenkommentare mit // Preprozessoranweisungen beginnen mit # Schlüsselwörter, z.B. return Bezeichner (Identifier) für Variablen, Funk-tionsnamen usw. fangen mit Buchstaben oder Unterstrich _ an, enthalten dann weitere Buchstaben, _ und Ziffern. Jede Anweisung wird durch ; beendet! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

52 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

53 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 */ } Start Programm ... Start Schleife Wenn nicht eingeschaltet Schleife verlassen Temperatur messen Wenn Temperatur >= Solltemperatur Heizen aus / Kontakt öffnen Sonst Heizen ein / Kontakt schließen Ende Schleife Ende Programm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

54 Wie ist ein C-Programm aufgebaut? 5
Beispiel: Kapitalberechnung Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

55 Wie ist ein C-Programm aufgebaut? 6
Beispiel: Temperaturregelung Start Programm ... Start Schleife Wenn nicht eingeschaltet Schleife verlassen Temperatur messen Wenn Temperatur >= Solltemperatur Heizen aus / Kontakt öffnen Sonst Heizen ein / Kontakt schließen Ende Schleife Ende Programm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

56 Wie soll ein C-Programm nicht aussehen? 1
Quelle: International Obfuscated C Code Contest Start Programm ... Start Schleife Wenn nicht eingeschaltet Schleife verlassen Temperatur messen Wenn Temperatur >= Solltemperatur Heizen aus / Kontakt öffnen Sonst Heizen ein / Kontakt schließen Ende Schleife Ende Programm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

57 Wie soll ein C-Programm nicht aussehen? 2
Quelle: main.c des X-Programms xterm Start Programm ... Start Schleife Wenn nicht eingeschaltet Schleife verlassen Temperatur messen Wenn Temperatur >= Solltemperatur Heizen aus / Kontakt öffnen Sonst Heizen ein / Kontakt schließen Ende Schleife Ende Programm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

58 Wie soll ein C-Programm nicht aussehen? 3
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

59 Wie soll ein C-Programm nicht aussehen? 4
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

60 Wie soll ein C-Programm nicht aussehen? 5
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

61 So kann ein C-Programm aussehen! 1
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

62 So kann ein C-Programm aussehen! 2
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

63 So kann ein C-Programm aussehen! 3
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ


Herunterladen ppt "Hochschule Fulda – FB ET Sommersemester 2014 "

Ähnliche Präsentationen


Google-Anzeigen