programmieren in c grundlagen c 1 hochschule fulda – fb ai sommersemester 2014 peter klingebiel,...
TRANSCRIPT
![Page 1: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/1.jpg)
Programmieren in C
Grundlagen C 1
Hochschule Fulda – FB AISommersemester 2014http://c-ai.rz.hs-fulda.de
Peter Klingebiel, HS Fulda, DVZ
![Page 2: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/2.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 2
C-Programm 1
• Ein 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
![Page 3: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/3.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 3
C-Programm 2
![Page 4: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/4.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4
C-Programm 3
![Page 5: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/5.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 5
C-Programm 4
![Page 6: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/6.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 6
C-Programm 5
![Page 7: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/7.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 7
C-Programm 6
• Typischer Ablauf eines C-Programms
![Page 8: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/8.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 8
Zeichensatz von C 1
• Buchstaben (incl. Unterstrich)ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_
• Ziffern0123456789
• Semikolon (z.B. am Ende einer Anweisung);
• Punkt (Gleitpunktzahlen, Selektionsoperator).
![Page 9: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/9.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 9
Zeichensatz von C 2
• Sonderzeichen (Operatoren, Satzzeichen)( ) [ ] < > + - * / % ^ ~ & | = ! ? , :
• Anführungszeichen (Einzelzeichen, Strings)' "
• Blockklammern{ }
• Fluchtzeichen (für Sonderzeichen)\
• Doppelkreuz (Preprozessordirektiven)#
![Page 10: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/10.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 10
Reservierte Worte in C 1
• C kennt 32 reservierte Worte
auto break case charconst continue default dodouble else enum externfloat for goto ifint long register returnshort signed sizeof staticstruct switch typedef unionunsigned void volatile while
![Page 11: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/11.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11
Reservierte Worte in C 2
• Aus den "Grundbausteinen" von C
![Page 12: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/12.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 12
Reservierte Worte in C 3
werden "Programme" ...
![Page 13: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/13.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 13
Reservierte Worte in C 4
• auto Speicherklasse automatisch• break Verlassen von Schleife/Mehrfachauswahl• case Auswahl in Mehrfachauswahl• char Typbezeichner für Zeichen• const Attribut bei Typangabe• continue Fortsetzungsanweisung• default Standardauswahl bei Mehrfachauswahl• do Schleifenanweisung• double Typbezeichner Fließkommazahl• else Teil von Einfach-, Mehrfachalternative
![Page 14: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/14.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 14
Reservierte Worte in C 5
• enum Typbezeichner für Aufzählungstyp• extern Speicherklasse extern• float Typbezeichner Fließkommazahl• for Schleifenanweisung• if Alternative oder bedingte Anweisung• int Typbezeichner Ganzzahl• long Typbezeichner Ganzzahl• register Speicherklasse Register• return Rückkehranweisung• short Typbezeichner Ganzzahl
![Page 15: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/15.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 15
Reservierte Worte in C 6
• signed Typbezeichner, -modifizierer• sizeof Operator zur Größenbestimmung• static Speicherklasse statisch• struct Strukturvereinbarung• switch Auswahlanweisung• typedef Typnamenvereinbarung• union Datenstruktur mit Alternativen• unsigned Typbezeichner, -modifizierer• void Typbezeichner• while Schleifenanweisung
![Page 16: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/16.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 16
Datentypen 1
• Menge von Werten undMenge von Operationen auf diesen Werten
• Konstanten / Variablen• Datentypen bestimmen
– Darstellung der Werte im Rechner– benötigten Speicherplatz– zulässige Operationen
• Festlegung des Datentyps– implizit durch Schreibweise bei Konstanten– explizit durch Deklaration bei Variablen
![Page 17: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/17.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 17
Datentypen 2
• Vordefinierte Grunddatentypen
char Zeichen (ASCII-Kode, 8 Bit)int Ganzzahl (maschinenabhängig, meist 16 oder 32 Bit)float Gleitkommazahl (32 Bit, IEEE, etwa auf 6 Stellen genau)double doppelt genaue Gleitkommazahl (64 Bit, IEEE, etwa auf 12 Stellen genau)void ohne Wert (z.B. Zeiger)
![Page 18: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/18.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 18
Datentypen 3
• Type-Modifier spezifizieren Grunddatentypen
short int, long int- legen Länge der Ganzzahl fest- maschinenabhängig, 16 Bit, 32 Bit - int kann auch fehlenlong double - Gleitkommazahl, erw. Genauigkeit- oft 128 Bit, IEEEsigned, unsigned - char/int mit/ohne Vorzeichen
![Page 19: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/19.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 19
Bezeichner 1
• Bezeichner (Identifier) für Konstanten, Variablen, Funktionen, Typen usw. müssen mit einem Buchstaben oder Unterstrich beginnen
• danach können Buchstaben, Unterstriche und Ziffern folgen
• Groß- und Kleinschreibung wird streng unterschieden
• keine Sonderzeichen (z.B. $ oder #)• keine reservierten Worte• Vorsicht bei vordefinierten Funktionsnamen
![Page 20: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/20.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20
Bezeichner 2
• Syntaxdiagramm
![Page 21: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/21.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 21
Bezeichner 3
• Backus-Naur-Form (BNF)
letter ::= A|B|…|Y|Z|a|b|…|y|z|_digit ::= 0|1|2|3|4|5|6|7|8|9
identifier ::= letter { letter | digit }
• BNF / EBNF zur Beschreibung formaler Sprachen
• Vielfältige Formen / Notationen
![Page 22: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/22.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 22
Bezeichner 4
![Page 23: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/23.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23
Konstanten
• Konstanten haben einen festgelegten, unveränderbaren Wert
• explizite Deklaration, z.B.const float pi = 3.141;
• implizite Notation, z.B.u = 2 * r * 3.141;
• mittels CPP textuelle implizite Ersetzung#define PI 3.141...
u = 2 * PI * r;
![Page 24: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/24.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24
Variablen 1
• Variable sind Platzhalter für Daten• haben einen festgelegten Speicherort,
an dem der aktuelle Wert gespeichert wird• der aktuelle Wert (an seinem Speicherort)
ist veränderbar• Attribute von Variablen:
– Datentyp– Namen (Bezeichner, Identifier)– Lebensdauer / Speicherklasse– evtl. initialer Wert– Sichtbarkeit (Scope)
![Page 25: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/25.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 25
Variablen 2
• Deklaration / Definition von Variablen
![Page 26: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/26.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26
Variablen 3
• Variablen-Definitionen, z.B.double u;short int i, tab = 5;char *hallo = "Hallo, Welt!";
• Position im Programm:– außerhalb von Funktionen– am Anfang eines Blocks, also nach {
• Wert ist veränderbar (Zuweisung, Operation)• Programmstruktur Lebensdauer / Scope
![Page 27: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/27.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 27
Wie speichert C? 1
• Hauptspeicher
![Page 28: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/28.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 28
Wie speichert C? 2
• Beispiel: Zugriff auf Variable
![Page 29: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/29.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 29
Wie speichert C? 3
• Vor Programmstart
![Page 30: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/30.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 30
Wie speichert C? 4
• Programmstart und Aufruf von main()
![Page 31: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/31.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 31
Wie speichert C? 5
• Zuweisung a = 4;
![Page 32: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/32.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 32
Wie speichert C? 6
• Zuweisung b = 8;
![Page 33: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/33.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 33
Wie speichert C? 7
• Berechnung a * b;
![Page 34: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/34.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 34
Wie speichert C? 8
• Zuweisung c = a * b;
![Page 35: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/35.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 35
Wie speichert C? 9
• Danach
![Page 36: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/36.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 36
Exkurs: Zeiger 1
• Wdh: Jede Variable hat einen Speicherort,d.h. eine Adresse im Hauptspeicher
• Zeiger (Pointer) sind Variable, die auf eine andere Variable verweisen, oderexakter: den Speicherort bzw. die Adresse dieser Variablen als Wert haben
• Pointerdefinition: int *ip; int i = 5;
• Adresszuweisung: ip = &i;• Zugriff auf Wert: *ip = *ip + *ip;
![Page 37: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/37.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 37
Exkurs: Zeiger 2
• Zugriff auf Variable mit Pointer
![Page 38: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/38.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 38
Exkurs: Zeiger 3
• Vor Programmstart
![Page 39: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/39.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 39
Exkurs: Zeiger 4
• Programmstart und Aufruf von main()
![Page 40: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/40.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 40
Exkurs: Zeiger 5
• Zuweisung i = 5;
![Page 41: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/41.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 41
Exkurs: Zeiger 6
• Zuweisung ip = &i;
![Page 42: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/42.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 42
Exkurs: Zeiger 7
• Berechnung *ip + *ip;
![Page 43: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/43.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 43
Exkurs: Zeiger 8
• Zuweisung *ip = *ip + *ip;
![Page 44: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/44.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 44
Exkurs: Zeiger 9
• Danach
![Page 45: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/45.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 45
Exkurs: Zeiger 10
• Warum und wozu Zeiger?
![Page 46: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/46.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 46
Exkurs: Zeiger 11
• In anderes Programmiersprachen, z.B. Ada oder Pascal, werden Pointer i.d.R. nur für dynamische Datentypen verwendet
• In C werden Zeiger leider schon von Anfang an für einfache Grundoperationen benötigt!
• Pointer notwendig für Eingaben:scanf("%d", &i);
• Pointer notwendig als Funktionsparameter:Funktionsdefinition: void getint(int *i) {} Funktionsaufruf: getint(&i);
![Page 47: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/47.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 47
Noch ein Exkurs: Ein-/Ausgabe 1
• Wdh: Aufbau eines C-Programms:
#include <stdio.h> int main(void){
int a, b, c;
scanf("%d", &a);scanf("%d", &b);c = a * b;printf("c = %d\n", c);return(0);
}
![Page 48: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/48.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 48
Noch ein Exkurs: Ein-/Ausgabe 2
• Jedes laufende C-Programm (= Prozess) hat voreingestellt drei Ein-/Ausgabekanäle:– stdin Standardeingabe, meist Tastatur– stdout Standardausgabe, meist Bildschirm– stderr Standardfehlerausgabe, Bildschirm
• Die Standardkanäle sind umlenkbar:$ meinprog <InFile >OutFile 2>ErrFile
• Bei einigen C-Compilern ist unter Windows auch der Kanal stdprn als Standarddrucker definiert
![Page 49: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/49.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 49
Noch ein Exkurs: Ein-/Ausgabe 3
• Einfache zeichenweise Ein- und Ausgabe mit getchar() und putchar(), z.B.:int c;
c = getchar(); /* Zeichen von stdin */putchar(c); /* Zeichen auf stdout */
• Formatierte Ein- und Ausgabe mit printf() und scanf(), z.B.:int c;
scanf("%c", &c);printf("%c", c);
![Page 50: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/50.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 50
Noch ein Exkurs: Ein-/Ausgabe 4
• Obacht: getchar() liefert, bzw. putchar() benötigt als Parameter den Typ int!
• Typumwandlung von char int erfolgt meist automatisch
• Hauptgründe:– historisch ist char eine Art Untertyp von int– die Zeichenkonstante EOF als Endekennzeichner
für die Eingabe ist in stdio.h als -1 definiert• Simples Kopierprogrammfragment:while((c = getchar())!= EOF) putchar(c);
![Page 51: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/51.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 51
Noch ein Exkurs: Ein-/Ausgabe 5
• Formatierte Ausgabe mit printf()• Aufruf: printf(fmt, args)• printf() konvertiert und gibt die Parameter args unter Kontrolle des Formatstrings fmt auf stdout aus
• Der Formatstring fmt ist eine Zeichenkette• Parameter args können auch fehlen• Die Parameter args müssen den Typ haben,
wie er im Formatstring fmt angegeben ist
![Page 52: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/52.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 52
Noch ein Exkurs: Ein-/Ausgabe 6
• Formatierte Eingabe mit scanf()• Aufruf: scanf(fmt, args)• scanf() konvertiert und liest die Parameter args unter Kontrolle des Formatstrings fmt von stdin ein
• Der Formatstring fmt ist eine Zeichenkette• Die Parameter args müssen den Typ haben,
wie er im Formatstring fmt angegeben ist• Die Parameter args müssen Pointer sein
![Page 53: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/53.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 53
Noch ein Exkurs: Ein-/Ausgabe 7
• Wichtige Formatzeichen: %c Einzelzeichen / char%d Ganzzahl / int%ld Ganzzahl / long int%f Gleitkommazahl / float%lf Gleitkommazahl / double%s Zeichenkette / char *
• Wichtige Sonderzeichen\n Newline, Zeilensprung\t Tabulator\0 EOS - Endezeichen in String\' einfaches Anführungszeichen '\" doppeltes Anführungszeichen "\% Prozentzeichen %\\ Fluchtzeichen \
![Page 54: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/54.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 54
Noch ein Exkurs: Ein-/Ausgabe 8
• Beispiele:
char c;int a, b;double d;
printf("integer a und b eingeben: ");scanf("%d %d", &a, &b);printf("a=%d b=%d\n", a, b);printf("char c und double d: ");scanf("%c %lf", &c, &d);printf("c=%c d=%lf\n", c, d);
![Page 55: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/55.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 55
Funktionsaufruf und Parameter
• Parameterübergabe als Werte (call by value), z.B. bei printf()
Variable werden als Werte in den Adressraum der Funktion kopiert
• Parameterübergabe als Adresse (call by reference), z.B. bei scanf()
Adressen der Variablen werden in den Adressraum der Funktion kopiert
• In der Funktion sind die Parameter Zeiger!
![Page 56: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/56.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 56
Call by value 1
• Beispiel: Funktionsaufruf cbv
![Page 57: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/57.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 57
Call by value 2
• Vor Programmstart
![Page 58: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/58.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 58
Call by value 3
• Zuweisung a = 4
![Page 59: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/59.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 59
Call by value 4
• Kopie des Parameters an Funktion
![Page 60: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/60.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 60
Call by value 5
• Aufruf der Funktion
![Page 61: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/61.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 61
Call by value 6
• Zuweisung b = b * 2
![Page 62: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/62.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 62
Call by value 7
• Rückkehr aus Funktion
![Page 63: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/63.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 63
Call by value 8
• Variable a unverändert!!!
![Page 64: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/64.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 64
Call by reference 1
• Beispiel: Funktionsaufruf cbr
![Page 65: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/65.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 65
Call by reference 2
• Vor Programmstart
![Page 66: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/66.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 66
Call by reference 3
• Wo ist der Unterschied cbv – cbr?
![Page 67: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/67.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 67
Call by reference 4
• Aufruf: Adresse der Variablen!!!
![Page 68: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/68.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 68
Call by reference 5
• In Funktion: Zeiger auf Variable!!!
![Page 69: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/69.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 69
Call by reference 6
• Zuweisung a = 4
![Page 70: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/70.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 70
Call by reference 7
• Kopie der Adresse an Funktion
![Page 71: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/71.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 71
Call by reference 8
• Aufruf der Funktion
![Page 72: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/72.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 72
Call by reference 9
• Zuweisung *b = *b * 2
![Page 73: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/73.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 73
Call by reference 10
• Rückkehr aus Funktion
![Page 74: Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ](https://reader035.vdocuments.pub/reader035/viewer/2022062411/570491c91a28ab14218dcc9b/html5/thumbnails/74.jpg)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 74
Call by reference 11
• Variable a verändert!!!