Download - Programmieren in C Einführung
![Page 1: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/1.jpg)
Programmieren in C
Einführung
Hochschule Fulda – FB AI
Wintersemester 2014/15
http://c-ai.rz.hs-fulda.de
Peter Klingebiel, HS Fulda, DVZ
![Page 2: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/2.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 2
![Page 3: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/3.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 3Programmieren 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-ai.rz.hs-fulda.de
![Page 4: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/4.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4
Programmieren in C 1
• Programmieren
• in
• C ???
![Page 5: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/5.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5
Programmieren in C 2
• Quelle: Eines Tages - Spiegel Online
![Page 6: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/6.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6
Programmieren in C 3
• Quelle: Eines Tages - Spiegel Online
![Page 7: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/7.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 7
Programmieren !?!?!?
![Page 8: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/8.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 8
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 9: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/9.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 9
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 10: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/10.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 10
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 11: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/11.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11
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 12: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/12.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 12
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 13: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/13.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 13
Euklidischer Algorithmus 3
![Page 14: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/14.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 14
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 euclid(a-b, b) sonst liefere euklid(a, b-a)
![Page 15: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/15.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 15
Euklidischer Algorithmus 5
![Page 16: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/16.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 16
Euklidischer Algorithmus 6
• Neuer Algorithmus, iterativ, Pseudocode
euklid(a, b) solange b ≠ 0 h = a modulo b a = b b = h liefere a
![Page 17: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/17.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 17
Euklidischer Algorithmus 7
![Page 18: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/18.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 18
Euklidischer Algorithmus 8
• Neuer Algorithmus, rekursiv, Pseudocode
euklid(a, b) wenn b = 0 dann liefere a sonst liefere euklid(b, a modulo b)
![Page 19: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/19.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 19
Euklidischer Algorithmus 9
![Page 20: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/20.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20
Kochrezept 1
![Page 21: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/21.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 21Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 21
Kochrezept 2
![Page 22: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/22.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 22Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 22
Montageanleitung
![Page 23: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/23.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23
Kaffee kochen 1
![Page 24: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/24.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24
Kaffee kochen 2
![Page 25: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/25.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25
Kaffee kochen 3
![Page 26: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/26.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26
Temperaturregelung Bügeleisen 1
![Page 27: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/27.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27
Temperaturregelung Bügeleisen 2
• Schematischer Aufbau
![Page 28: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/28.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28
Temperaturregelung Bügeleisen 3
• Wirkungsplan / Regelkreis
![Page 29: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/29.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29
Temperaturregelung Bügeleisen 4
• Temperaturverlauf
![Page 30: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/30.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 30
Algorithmus Temperaturregelung ?
![Page 31: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/31.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 31
Temperaturregelung in Assembler
![Page 32: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/32.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 32
Temperaturregelung in C
![Page 33: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/33.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 33
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 34: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/34.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 34
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 35: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/35.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 35
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 36: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/36.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 36
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 37: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/37.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 37
Programmiersprachen 5
• 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 38: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/38.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 38
Programmiersprachen 7
• Beispiele Typisierung
• Stammbaum Programmiersprachen (Wikipedia)
![Page 39: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/39.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 39
Programmentwicklung 1
• Problem analysierenModell entwerfenAlgorithmus entwickeln
• Programm kodieren• Programm übersetzen
(bis syntaktisch fehlerfrei)• Programm testen
(bis semantisch fehlerfrei ?)• Programm produktiv
![Page 40: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/40.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 40Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 40
Programmentwicklung 2
• Friedemann Weise: Doppelkaffeetasse (auf youtube)
![Page 41: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/41.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 41Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 41
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 42: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/42.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 42Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 42
Mikrokontroller 1
• Beispiel: Arduino Uno
![Page 43: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/43.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 43Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 43
Mikrokontroller 2
• Beispiel: Arduino Nano
![Page 44: Programmieren in C Einführung](https://reader036.vdocuments.pub/reader036/viewer/2022062422/5681310d550346895d9749e9/html5/thumbnails/44.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 44Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 44
Mikrokontroller 3