Programmieren in C Einführung Hochschule Fulda – FB AI Sommersemester 2014 http://c-ai.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Zur Vorlesung Peter Klingebiel Webseite der Vorlesung Dipl. Ing. Maschinenbau Leiter DVZ HS Fulda Raum E318 Telefon 0661/9640-172 http://www.hs-fulda.de/~klingebiel mailto:klingebiel@hs-fulda.de Webseite der Vorlesung Folien, Aufgaben, Demoprogramme, Links usw. http://c-ai.rz.hs-fulda.de Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 3
Programmieren C ??? Programmieren in C 1 in Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Programmieren in C 2 Quelle: Eines Tages - Spiegel Online Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5
Programmieren in C 3 Quelle: Eines Tages - Spiegel Online Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6
Programmieren !?!?!? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 ... Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 ... Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Euklidischer Algorithmus 3 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
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) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Euklidischer Algorithmus 5 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
Euklidischer Algorithmus 6 Neuer Algorithmus, iterativ, Pseudocode euklid(a, b) solange b ≠ 0 h = a modulo b a = b b = h liefere a Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Euklidischer Algorithmus 7 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
Euklidischer Algorithmus 8 Neuer Algorithmus, rekursiv, Pseudocode euklid(a, b) wenn b = 0 dann liefere a sonst liefere euklid(b, a modulo b) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Euklidischer Algorithmus 9 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
Kochrezept 1 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20
Kochrezept 2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 21
Montageanleitung Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 22
Kaffee kochen 1 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23
Kaffee kochen 2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24
Kaffee kochen 3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25
Temperaturregelung Bügeleisen 1 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26
Temperaturregelung Bügeleisen 2 Schematischer Aufbau Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27
Temperaturregelung Bügeleisen 3 Wirkungsplan / Regelkreis Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28
Temperaturregelung Bügeleisen 4 Temperaturverlauf Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29
Algorithmus 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
Temperaturregelung in Assembler 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
Temperaturregelung in C 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
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 ... Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Hardware / Rechner / CPU 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Programmiersprachen 4 Skriptsprachen werden während der Ausführung vom Sprachinterpreter in Maschinencode übersetzt. Beispiele: Shell, Perl, PHP, SQL, Basic Compilersprachen müssen vor der Ausführung von einem Übersetzersystem (Compiler, Linker) in Maschinencode übersetzt werden. Beispiele: Pascal, C, C++, C#, Java Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Programmiersprachen 5 Paradigmata Typisierung 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++) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Beispiele Typisierung Programmiersprachen 7 Beispiele Typisierung Stammbaum Programmiersprachen (Wikipedia) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Programmentwicklung 1 Problem analysieren 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
Programmentwicklung 2 Friedemann Weise: Doppelkaffeetasse (auf youtube) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 40
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. Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 41