Hochschule Fulda – FB ET Sommersemester 2014

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Hochschule Fulda – FB ET Sommersemester 2010
Forschungszentrum caesar
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Einführung in die Programmierung Zusammenfassung
Hochschule Fulda – FB ET Sommersemester 2010
der Universität Oldenburg
Objektorientierter Entwurf
Gliederung des Inhalts
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Imperative Programmierung Funktionen und Parameter
Hochschule Fulda – FB ET Sommersemester 2010
Informatik II Grundlagen der Programmierung Programmieren in C Add Ons Hochschule Fulda – FB ET Sommersemester Peter.
Das Java-Hamstermodell
Der C-Präprozessor EDV1 - 04Präprozessor.
Einführung in Visual C++
Der C-Präprozessor 08-CPräprozessor.
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Dateien Datei = File (engl.) Mögliche Inhalte einer Datei
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung
Programmieren in C Einführung
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Programmierung 1. Einführung Seite 1
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Programmieren in C Einführung
Programmieren in C Dynamische Listen / Bäume
Programmieren in C Grundlagen C 5
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
MODULA-2.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Programmieren in C Grundlagen C 3 Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Programmieren ... in C++ Prof. Dr.-Ing. Franz-Josef Behr, HfT Stuttgart Programmeiren I.
Informatik II Grundlagen der Programmierung Programmieren in C printf() mit variabler Feldbreite Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Einführung
Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Ausflug printf() Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Gestern: Kara Steuerung: Endliche Automaten.
Programmieren in C Annäherung an C
Programmieren in C Grundlagen C 3
Programmieren in C Module und Bibliotheken Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Dateien
Programmieren in C Grundlagen C 2
Hochschule Fulda – FB AI Sommersemester 2014
Programmieren in C Sortieren, Suchen
Hochschule Fulda – FB AI Sommersemester 2014
Frühjahrs-/Sommersemester 2013
Grundlagen, Prinzipien und Aufgaben eines Betriebssystems
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
Programmiersprache PASCAL
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Programmieren Hexenwerk oder Zauberspuk? Kinderuniversität Mittwoch, 16. März 2016 Kinder-Akademie Fulda & Hochschule Fulda Peter Klingebiel, HS Fulda,
Programmieren in C Annäherung an C
Programmieren in C Einführung
 Präsentation transkript:

Informatik II Grundlagen der Programmierung Programmieren in C Annäherung an C Hochschule Fulda – FB ET Sommersemester 2014 http://c-et.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ

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

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

"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

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

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

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

Programm 2

Programm 3

Programm 4

Programm 5

Programm 6 Typischer Ablauf eines C-Programms

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Woher kommt C? 1 1971-73 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 X3.159-1989 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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