Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Programmieren in C Grundlagen C 1
Hochschule Fulda – FB AI Wintersemester 2014/15 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
3
C-Programm 2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
4
C-Programm 3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
5
C-Programm 4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
6
C-Programm 5 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
7
C-Programm 6 Typischer Ablauf eines C-Programms
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
8
Zeichensatz von C 1 Buchstaben (incl. Unterstrich) ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz _ Ziffern Semikolon (z.B. am Ende einer Anweisung) ; Punkt (Gleitpunktzahlen, Selektionsoperator) . 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) # Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
10
Reservierte Worte in C 1 C kennt 33 reservierte Worte auto break case char const continue default do double else enum extern float for goto inline if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
11
Reservierte Worte in C 2 Aus den "Grundbausteinen" von C
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
12
Reservierte Worte in C 3 werden "Programme" ...
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 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 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
16
Datentypen 1 Menge von Werten und Menge 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 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 Stellen genau) void ohne Wert (z.B. Zeiger) 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 fehlen long double - Gleitkommazahl, erw. Genauigkeit - oft 128 Bit, IEEE signed, unsigned - char/int mit/ohne Vorzeichen 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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
20
Bezeichner 2 Syntaxdiagramm
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
22
Bezeichner 4 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 u = 2 * PI * r; 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) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
25
Variablen 2 Deklaration / Definition von Variablen
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
27
Wie speichert C? 1 Hauptspeicher
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
28
Wie speichert C? 2 Beispiel: Zugriff auf Variable
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
29
Wie speichert C? 3 Vor Programmstart
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
30
Wie speichert C? 4 Programmstart und Aufruf von main()
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
31
Wie speichert C? 5 Zuweisung a = 4;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
32
Wie speichert C? 6 Zuweisung b = 8;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
33
Wie speichert C? 7 Berechnung a * b;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
34
Wie speichert C? 8 Zuweisung c = a * b;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
35
Wie speichert C? 9 Danach 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, oder exakter: 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; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
37
Exkurs: Zeiger 2 Zugriff auf Variable mit Pointer
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
38
Exkurs: Zeiger 3 Vor Programmstart
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
39
Exkurs: Zeiger 4 Programmstart und Aufruf von main()
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
40
Exkurs: Zeiger 5 Zuweisung i = 5;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
41
Exkurs: Zeiger 6 Zuweisung ip = &i;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
42
Exkurs: Zeiger 7 Berechnung *ip + *ip;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
43
Exkurs: Zeiger 8 Zuweisung *ip = *ip + *ip;
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
44
Exkurs: Zeiger 9 Danach Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
45
Exkurs: Zeiger 10 Warum und wozu Zeiger?
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); 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); } 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 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); 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); 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 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 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 \ 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); 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! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
56
Call by value 1 Beispiel: Funktionsaufruf cbv
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
57
Call by value 2 Vor Programmstart
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
58
Call by value 3 Zuweisung a = 4
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
59
Call by value 4 Kopie des Parameters an Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
60
Call by value 5 Aufruf der Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
61
Call by value 6 Zuweisung b = b * 2
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
62
Call by value 7 Rückkehr aus Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
63
Call by value 8 Variable a unverändert!!!
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
64
Call by reference 1 Beispiel: Funktionsaufruf cbr
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
65
Call by reference 2 Vor Programmstart
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
66
Call by reference 3 Wo ist der Unterschied cbv – cbr?
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
67
Call by reference 4 Aufruf: Adresse der Variablen!!!
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
68
Call by reference 5 In Funktion: Zeiger auf Variable!!!
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
69
Call by reference 6 Zuweisung a = 4
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
70
Call by reference 7 Kopie der Adresse an Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
71
Call by reference 8 Aufruf der Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
72
Call by reference 9 Zuweisung *b = *b * 2
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
73
Call by reference 10 Rückkehr aus Funktion
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
74
Call by reference 11 Variable a verändert!!!
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.