Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2014

Ähnliche Präsentationen


Präsentation zum Thema: "Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C 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 Peter Klingebiel, HS Fulda, DVZ

2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ2 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

3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ3 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..

4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ4 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

5 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ5 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)

6 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ6 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

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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ13 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

14 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ14 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 (??)

15 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ15 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

16 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ16 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

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

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

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

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

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

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

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

24 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ24 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

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

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

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

28 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ28 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

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

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

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

32 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ32 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

33 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ33 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

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

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

36 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ36 Woher kommt C? 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 C erweiterter ISO Standard C ISO/IEC 9899:1999

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

38 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ38 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

39 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ39 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 (??)

40 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ40 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

41 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ41 Wie wird ein C-Programm entworfen? 1 Pseudocode, Bsp. Euklidischer Algorithmus euklid(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

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

43 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ43 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); }

44 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ44 Wie wird ein C-Programm entworfen? 4 Programmablaufplan wirklich geeignet? eher für Assembler doch oft eingesetzt

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

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

47 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ47 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.

48 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ48 Wie wird ein C-Programm ausgeführt? 2 Betriebssystem Mikrocontroller Hardware / Prozessor Anwendungsprogramm Funktionsbibliotheken Systemcalls / Systemaufrufe Anwendungsprogramm (incl. aller Funktionen) Hardware / Prozessor

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

50 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ50 Wie ist ein C-Programm aufgebaut? 1 Beispiel hallo.c /* * hallo.c */ #include int main(void) { char *text = Hallo, Welt!; puts(text); return(0); }

51 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ51 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!

52 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ52 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()

53 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ53 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 */ }

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

55 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ55 Wie ist ein C-Programm aufgebaut? 6 Beispiel: Temperaturregelung

56 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ56 Wie soll ein C-Programm nicht aussehen? 1 Quelle: International Obfuscated C Code ContestInternational Obfuscated C Code Contest

57 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ57 Wie soll ein C-Programm nicht aussehen? 2 Quelle: main.c des X-Programms xtermmain.c des X-Programms xterm

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

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

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

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

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

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


Herunterladen ppt "Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2014"

Ähnliche Präsentationen


Google-Anzeigen