Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren in C Grundlagen C 2 Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ.

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren in C Grundlagen C 2 Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ."—  Präsentation transkript:

1 Programmieren in C Grundlagen C 2 Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ

2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ2 Anweisung / Ausdruck 1 Programm setzt sich aus vielen Anweisungen (Zuweisungen, Vergleichen, Operationen, Funktionsaufrufen, usw.) zusammen Anweisung (statement) im strengen Sinn in C unbekannt Anweisung hat kein verwertbares Ergebnis Beispiel: Zuweisung in Pascal, Ada, … integer i; i := 123; Variable i hat nach Zuweisung den Wert 123, die Zuweisung selbst ist allerdings nicht weiter auswertbar!

3 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ3 Anweisung / Ausdruck 2 C kennt keine Anweisungen (statements), sondern nur Ausdrücke (expressions) Ausdruck hat einen Wert (wie in Assembler!) Beispiel: Zuweisung in C int i; i = 4711; Zuweisung kann auch ausgewertet werden: int a, b, c, i, j; a = b = c = 3; if(i = 4711)... while(j = 1)...

4 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ4 Anweisung / Ausdruck 3 Ausdruck Gültige Kombination von Konstanten, Variablen, Operatoren, Funktionen Reihenfolge der Auswertung –Vorrangregeln der Operatoren legen Reihenfolge der Auswertung implizit fest –Klammern ( ) legen Vorrangregeln explizit fest –Sind Vorrangregeln nicht eindeutig Reihenfolge der Auswertung nicht definiert –Compiler kann Ausdrücke / Teilausdrücke in effizient auswerten / optimieren

5 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ5 Datentyp short, int, long 1 Ganze Zahlen Typen short, int, long, long long Speicherbedarf maschinenabhängig –short <= int <= long <= long long –Heute z.B: short 16 Bit, int 32 Bit, long 64 Bit Vorzeichen –signed mit Vorzeichen –unsigned vorzeichenlos Konstanten, Beispiele: int a = 4711, b = -18; dezimal short x = 0x20 sedezimal (Basis 16) int y = 020; oktal (Basis 8)

6 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ6 Datentyp short, int, long 2 Syntaxdiagramm

7 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ7 Datentyp short, int, long 3 Dezimal-, Sedezimal-, Binärdarstellung

8 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ8 Datentyp short, int, long 4 Operatoren / Operationen: Zuweisung = –Beispiel: int i; i = 4711; Vorzeichen + - –Beispiel: int j = -4711; Arithm. Op. + - * / % –Beispiel: k = i + j * 3 % 8;

9 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ9 Datentyp short, int, long 5 Vergleichsoperatoren == != = expr1 op expr2 Ergebnis: wahr 1, falsch 0 Ergebnistyp int

10 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ10 Datentyp short, int, long 6 Logische Operatoren ! && || Ergebnis: wahr 1, falsch 0 (Typ int ) expr1 op expr2

11 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ11 Datentyp short, int, long 7 Bitoperatoren ~ & | ^ expr1 op expr2 bzw. ~expr

12 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ12 Datentyp short, int, long 8 Bitshiftoperatoren > expr1 op expr2 Bits in expr1 um expr2 Bits verschoben –Bsp. 1 << 2 1 um 2 Bits nach links –Bsp: n >> 5 n um 5 Bits nach rechts

13 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ13 Datentyp short, int, long 9 Inkrement- / Dekrementoperatoren Linkseitiger Operator ++n --n –Wert von n wird inkrementiert / dekrementiert –das Resultat wird als Ergebnis geliefert Rechtsseitiger Operator n++ n-- –Wert von n wird als Ergebnis geliefert –Danach wird n inkrementiert / dekrementiert

14 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ14 Datentyp char 1 Einzelzeichen oder Integer 8 Bit Speicherbedarf 1 Byte (8 Bit) Konstanten, Zeichen durch ' ' geklammert char c1 = 'A', c2 = '1', c3 = '\n' Sonderzeichen mit \ beschrieben, Bsp: '\n' Zeilentrenner (NL) '\t' Tabulator (TAB) '\0' Stringende (NUL) '\"' Anführungszeichen '\\' Backslash, Fluchtzeichen Darstellung im ASCII-Code char Untertyp von Ganzzahlen int

15 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ15 Datentyp char 2 ASCII-Zeichensatz 7 Bit

16 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ16 Datentyp char 3 ASCII-Zeichensatz 8 Bit (PC, MS-DOS)

17 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ17 Datentyp char 4 ANSI-Zeichensatz 8 Bit (Windows)

18 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ18 Datentyp char 5 Repräsentation (ASCII): Sinnvolle Operatoren/Operationen bei char : = (Zuweisung) + - (arithm. Operationen) == != = (Vergleich) Wird char als Byte (8 Bit-Integer) genutzt alle int -Operationen sinnvoll

19 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ19 Datentyp char 6 Ascii-Tabelle ausgeben: ascii.c

20 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ20 Datentypen float, double, long double 1 Fließkommazahlen Typen float, double, long double Speicherbedarf –float < double < long double –float 32 Bit, double 64 Bit, long double 128 Bit Repräsentation nach IEEE 754IEEE 754 –Beispiel: float 32 Bit

21 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ21 Datentypen float, double, long double 2 Syntaxdiagramm

22 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ22 Datentypen float, double, long double 3 Konstanten, Beispiele: float p = 3.141, a = , b = (Obacht: 1 oder 0 int) 7.0e-3 (0.007) e2(765.43) Operatoren / Operationen: = (Zuweisung) + - (Vorzeichen) + - * / (arithm. Op.) == != = (Vergleich) Vorsicht bei Vergleichsoperationen wegen Ungenauigkeiten in Darstellung (z.B. bei 0.0)

23 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ23 Weitere Operatoren 1 Spezielle Zuweisungsoperatoren verkürzte Schreibweise für Operationen auf Variablen a op= b a = a op b Arithm. Operatoren: + - * / % Bitoperatoren: > & | ^ Beispiele: int n = 12 n -= 24 n /= 3 n <<= 3

24 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ24 Weitere Operatoren 2 Operator sizeof Ermittelt Größe von Typ / Variablen in Bytes Beispiel: long l; sl = sizeof(l) sd = sizeof(double) Beispiel: Sun Sparc 32 Bit

25 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ25 Weitere Operatoren 3 Komma-Operator, Erlaubt die Aneinanderreihung mehrerer Ausdrücke Wert = Wert des letzen Teilausdrucks Beispiel (etwas sinnlos): Beispiel (sinnvoller): for(i = 0, j = 0, k = 1; … )

26 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ26 Weitere Operatoren 4 Bedingte Bewertung ? : expr1 ? expr 2 : expr3 Verkürzte Formulierung von Bedingungen Auswertung –Erst Auswertung von expr1 –Wenn expr1 0 dann gesamter Ausdruck expr2 –Sonst gesamter Ausdruck expr3 Beispiel max(a, b) und min(a, b):

27 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ27 Vorrangregeln bei Operatoren OperatorenklasseOperatorenAssoziativität Unär ! ~ Von rechts nach links Multiplikativ * / % Von links nach rechts Additiv + - Von links nach rechts Shift > Von links nach rechts Relational >= Von links nach rechts Gleichheit == != Von links nach rechts Bitweise & Von links nach rechts Bitweise ^ Von links nach rechts Bitweise | Von links nach rechts Logisch && Von links nach rechts Logisch || Von links nach rechts Bedingte Bewertung ?: Von rechts nach links Zuweisung = op= Von rechts nach links Reihung, Von links nach rechts

28 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ28 Typumwandlung in Ausdrücken 1 Automatische Typumwandlung bei unterschiedlicher Typen in Ausdrücken

29 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ29 Typumwandlung in Ausdrücken 2 Beispiel: Explizite Typumwandlung (casting) (type) expr

30 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ30 Felder 1 Ein Feld (array) ist die Zusammenfassung von Daten gleichen Typs in einer Variablen Felder haben eine oder auch mehrere Dimensionen (Vektoren, Matrizen, …) Definition von Feldern: char sbuf[128]; int arr[] = { 1, 8, 7, -1, 2 }; short mat[2][2] = { 11, 12, 21, 22}; Mit der Felddefinition wird der benötigte Speicherplatz für die Variable reserviert

31 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ31 Felder 2 Zugriff auf Feldelemente mit Index in [] : char c; c = sbuf[32]; sbuf[0] = 'A'; Die Feldindizierung beginnt immer mit 0! short s, mat[3][3]; s = mat[0][0]; Felder werden elementweise und Zeile für Zeile hintereinander abgespeichert Es gibt beim Zugriff keinerlei Überprüfungen auf Bereichsgrenzen von Feldern!

32 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ32 Felder 3 Feldnamen sind eigentlich Pointer, zeigen auf das erste Element im Feld Felder werden mit Adresse an Funktionen übergeben (wie Pointer) Feldindizes sind eigentlich Offsets und geben den Abstand zum Feldanfang an Bsp: ia[3] *(&ia[0] + 3 * sizeof(int))

33 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ33 Felder und Zeiger Felder reservieren bei der Definition den benötigten Speicherplatz Zeiger erhalten den Speicherplatz erst bei der Zuweisung des Objekts, auf das sie zeigen, oder bei dynamischer Speicherallokation Ähnlichkeit von Feldern und Zeigern mächtige Pointerarithmetik möglich Manchmal ein wenig unverständlich! Pointer essentiell bei Zeichenketten (strings)


Herunterladen ppt "Programmieren in C Grundlagen C 2 Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ."

Ähnliche Präsentationen


Google-Anzeigen