52
Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014 http://c-et.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ

Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ

Embed Size (px)

Citation preview

Page 1: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

Programmieren in C

Einführung

Hochschule Fulda – FB ET

Sommersemester 2014

http://c-et.rz.hs-fulda.de

Peter Klingebiel, HS Fulda, DVZ

Page 2: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Page 3: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Zur Vorlesung

• Peter Klingebiel– Dipl. Ing. Maschinenbau– Leiter DVZ HS Fulda– Raum E318– Telefon 0661/9640-172– http://www.hs-fulda.de/~klingebiel– mailto:[email protected]

• Webseite der Vorlesung– Folien, Aufgaben, Demoprogramme, Links usw.– http://c-et.rz.hs-fulda.de

Page 4: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmieren in C 1

• Quelle: Eines Tages - Spiegel Online

Page 5: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmieren in C 2

• Quelle: Eines Tages - Spiegel Online

Page 6: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmieren in C 3

• Chaplin: Moderne Zeiten - Trailer (auf youtube)• Chaplin: Moderne Zeiten (auf youtube)

Page 7: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmieren in C 4

• Programmieren ???• in• C

Page 8: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmieren in C 5

• Programmieren• in

• C ???

Page 9: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmieren ???

Page 10: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmieren

• Wikipedia:http://de.wikipedia.org/wiki/Programmierung

• Definition:„Programmieren ist eine Tätigkeit, bei der versucht wird, durch systematischen Einsatz einer gegebenen Programmiersprache ein gestelltes Problem zu lösen.“aus: H. Balzert, Lehrbuch Grundlagen der Informatik, 1999

Page 11: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programm

• Wikipedia:http://de.wikipedia.org/wiki/Computerprogramm

• Definition:„Algorithmen, die von einem automatischen Prozessor abgearbeitet werden, bezeichnet man als Programme. Ein Programm stellt die Realisierung eines Algorithmus dar. Im Gegensatz zu einem Algorithmus ist ein Programm konkreter und eingeschränkter.“aus: Balzert, Lehrbuch ...

Page 12: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Algorithmus

• Wikipedia:http://de.wikipedia.org/wiki/Algorithmus

• Definition:„Algorithmus (Plural: Algorithmen), Problemlösungsbeschreibung, die festlegt, wie ein Problem gelöst werden soll.“aus: Balzert, Lehrbuch ...

Page 13: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Euklidischer Algorithmus 1

• Wikipedia:http://de.wikipedia.org/wiki/Euklidischer_Algorithmus

• „Wenn CD aber AB nicht misst, und man nimmt bei AB, CD abwechselnd immer das kleinere vom größeren weg, dann muss (schließlich) eine Zahl übrig bleiben, die die vorangehende misst.“aus: Euklid, Die Elemente, hrg. v. C. Thaer

• Algorithmus zur Bestimmung des größten gemeinsamen Teilers (ggT)

Page 14: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Euklidischer Algorithmus 2

• Alter Algorithmus, iterativ, Pseudocode

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

Page 15: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Euklidischer Algorithmus 3

Page 16: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Euklidischer Algorithmus 4

• Alter Algorithmus, rekursiv, Pseudocode

euklid(a, b) wenn b = 0 dann liefere a sonst wenn a = 0 dann liefere b sonst wenn a > b dann liefere euklid(a-b, b) sonst liefere euklid(a, b-a)

Page 17: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Euklidischer Algorithmus 5

Page 18: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Euklidischer Algorithmus 6

• Neuer Algorithmus, iterativ, Pseudocode

euklid(a, b) solange b ≠ 0 h = a modulo b a = b b = h liefere a

Page 19: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Euklidischer Algorithmus 7

Page 20: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Euklidischer Algorithmus 8

• Neuer Algorithmus, rekursiv, Pseudocode

euklid(a, b) wenn b = 0 dann liefere a sonst liefere euklid(b, a modulo b)

Page 21: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Euklidischer Algorithmus 9

Page 22: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Kochrezept 1

Page 23: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Kochrezept 2

Page 24: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Montageanleitung

Page 25: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Kaffee kochen 1

Page 26: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Kaffee kochen 2

Page 27: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Kaffee kochen 3

Page 28: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Temperaturregelung Bügeleisen 1

Page 29: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Temperaturregelung Bügeleisen 2

• Schematischer Aufbau

Page 30: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Temperaturregelung Bügeleisen 3

• Wirkungsplan / Regelkreis

Page 31: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Temperaturregelung Bügeleisen 4

• Temperaturverlauf

Page 32: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Algorithmus Temperaturregelung ???

Page 33: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Temperaturregelung in Assembler

Page 34: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Temperaturregelung in C

Page 35: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmiersprachen 1

• Wikipedia:http://de.wikipedia.org/wiki/Programmiersprache

• Definition:„Um Problemlösungen in einem Formalismus niederschreiben zu können, legt man Programmiersprachen fest.“aus: Balzert, Lehrbuch ...

Page 36: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmiersprachen 2

• Eine Programmiersprache ist eine formale Sprache (im Gegensatz z.B. zur Umgangs-sprache)

• Programmiersprachen haben ein exakt de-finiertes Alphabet (i.d.R. Buchstaben, Ziffern und Sonderzeichen)

• Programmiersprachen haben einen meist sehr kleinen Wortschatz (C etwa kennt nur 32 Worte!)

• Programmiersprachen haben i.d.R. eine exakt einzuhaltende Syntax

Page 37: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmiersprachen 3

Problemstellung

Hochsprachen(z.B. Fortran, Pascal, C, C++, Java, SQL, PHP)

Assemblersprachen(für reale oder virtuelle Maschine / CPU)

Maschinensprachen(Bitcode, Bytecode, Microcode)

Hardware / Rechner / CPU

Page 38: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmiersprachen 4

• Skriptsprachenwerden während der Ausführung vom Sprachinterpreter in Maschinencode übersetzt.Beispiele: Shell, Perl, PHP, SQL, Basic

• Compilersprachenmüssen vor der Ausführung von einem Übersetzersystem (Compiler, Linker) in Maschinencode übersetzt werden.Beispiele: Pascal, C, C++, C#, Java

Page 39: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmiersprachen 5

• Skriptsprachen

• Compilersprachen

Page 40: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmiersprachen 6

• Paradigmata– Imperative Sprachen (Fortran, Pascal, C, Ada)

– Deklarative Sprachen (SQL, Lisp)

– Objektorientierte Sprachen (Java, C++)

– Nebenläufige Sprachen (Ada, Java, Par C)

• Typisierung– Typenlose Sprachen (JavaScript, PHP)

– Stark typisierte Sprachen (Ada)

– Schwach typisierte Sprachen (C, C++)

Page 41: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmiersprachen 7

• Beispiele Typisierung

• Stammbaum Programmiersprachen (Wikipedia)

Page 42: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmentwicklung 1

• Problem analysierenModell entwerfenAlgorithmus entwickeln

• Programm kodieren• Programm übersetzen

(bis syntaktisch fehlerfrei)• Programm testen

(bis semantisch fehlerfrei ?)• Programm produktiv

Page 43: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmentwicklung 2

• Friedemann Weise: Doppelkaffeetasse (auf youtube)

Page 44: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmentwicklung 3

• Beispiel: Entwicklungsumgebungen für C– Kommandozeile mit Systemtools

• Unix / Linux / Windows / iOS:• Editor, Systemcompiler (gcc), Debugger, usw.• GCC (http://gcc.gnu.org/)

– Integrierte Entwicklungsumgebung (IDE)• NetBeans (https://netbeans.org/)• z.B. mit Cygwin (http://www.cygwin.com/)• Code::Blocks (http://www.codeblocks.org/)• z.B. mit MinGW (http://www.mingw.org/)• u.v.a.m.

Page 45: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Rasperry Pi 1

Page 46: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Rasperry Pi 2

Page 47: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Rasperry Pi 3

Page 48: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Computer auf SD-Karte 1

Page 49: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Computer auf SD-Karte 2

Page 50: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Computer auf SD-Karte 3

Page 51: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Auf dem Weg zum autonomen Auto

Page 52: Programmieren in C Einführung Hochschule Fulda – FB ET Sommersemester 2014  Peter Klingebiel, HS Fulda, DVZ

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

Programmiersprache C

• Was kennen wir schon von C?