Programmieren in C Grundlagen C 2 Hochschule Fulda

  • Slides: 29
Download presentation
Programmieren in C Grundlagen C 2 Hochschule Fulda – FB AI Wintersemester 2014/15 http:

Programmieren in C Grundlagen C 2 Hochschule Fulda – FB AI Wintersemester 2014/15 http: //c-ai. rz. hs-fulda. de Peter Klingebiel, HS Fulda, DVZ

Anweisung / Ausdruck 1 • Programm setzt sich aus vielen Anweisungen (Zuweisungen, Vergleichen, Operationen,

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

Anweisung / Ausdruck 2 • C kennt keine Anweisungen (statements), sondern nur Ausdrücke (expressions)

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

Anweisung / Ausdruck 3 • Ausdruck Gültige Kombination von – Konstanten, Variablen, Operatoren –

Anweisung / Ausdruck 3 • Ausdruck Gültige Kombination von – Konstanten, Variablen, Operatoren – Operatoren, Funktionsaufrufen • 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 effizient auswerten / optimieren Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 4

Datentyp short, int, long 1 • Ganze Zahlen, Integerzahlen • Typen short, int, long

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

Datentyp short, int, long 2 • Syntaxdiagramm Programmieren in C - Peter Klingebiel -

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

Datentyp short, int, long 3 • Dezimal-, Sedezimal-, Binärdarstellung Programmieren in C - Peter

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

Datentyp short, int, long 4 • Operatoren / Operationen: • Zuweisung = – Beispiel:

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

Datentyp short, int, long 5 • Vergleichsoperatoren == != < > <= >= •

Datentyp short, int, long 5 • Vergleichsoperatoren == != < > <= >= • expr 1 op expr 2 • Ergebnis: wahr 1, falsch 0 • Ergebnistyp int Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 9

Datentyp short, int, long 6 • Logische Operatoren ! && || • Ergebnis: wahr

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

Datentyp short, int, long 7 • Bitoperatoren ~ & | ^ • expr 1

Datentyp short, int, long 7 • Bitoperatoren ~ & | ^ • expr 1 op expr 2 bzw. ~expr Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 11

Datentyp short, int, long 8 • Bitshiftoperatoren << >> • expr 1 op expr

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

Datentyp short, int, long 9 • Inkrement- / Dekrementoperatoren ++ • Linkseitiger Operator ++n

Datentyp short, int, long 9 • Inkrement- / Dekrementoperatoren ++ • Linkseitiger Operator ++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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 13

Datentyp char 1 • Einzelzeichen oder Integer 8 Bit • Speicherbedarf 1 Byte (8

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

Datentyp char 2 • ASCII-Zeichensatz 7 Bit Programmieren in C - Peter Klingebiel -

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

Datentyp char 3 • ASCII-Zeichensatz 8 Bit (PC, MS-DOS) Programmieren in C - Peter

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

Datentyp char 4 • ANSI-Zeichensatz 8 Bit (Windows) Programmieren in C - Peter Klingebiel

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

Datentyp char 5 • Repräsentation (ASCII): • Sinnvolle Operatoren/Operationen bei char: = (Zuweisung) +

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

Datentyp char 6 • Ascii-Tabelle ausgeben: ascii. c Programmieren in C - Peter Klingebiel

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

Datentypen float, double, long double 1 • Fließkommazahlen • Typen float, double, long double

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 754 – Beispiel: float 32 Bit Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20

Datentypen float, double, long double 2 • Syntaxdiagramm Programmieren in C - Peter Klingebiel

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

Datentypen float, double, long double 3 • Konstanten, Beispiele: float p = 3. 141,

Datentypen float, double, long double 3 • Konstanten, Beispiele: float p = 3. 141, a = -21. 56, b = 0. 5467 1. 0 0. 0 (Obacht: 1 oder 0 int) 7. 0 e-3 (0. 007) 7. 6543 e 2(765. 43) • Operatoren / Operationen: = + + - * / == != < > <= >= (Zuweisung) (Vorzeichen) (arithm. Op. ) (Vergleich) • Vorsicht bei Vergleichsoperationen wegen Ungenauigkeiten in Darstellung (z. B. bei 0. 0) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 22

Weitere Operatoren 1 • Spezielle Zuweisungsoperatoren verkürzte Schreibweise für Operationen auf Variablen • a

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

Weitere Operatoren 2 • Operator sizeof • Ermittelt Größe von Typ / Variablen in

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

Weitere Operatoren 3 • Komma-Operator , • Erlaubt die Aneinanderreihung mehrerer Ausdrücke • Wert

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

Weitere Operatoren 4 • Bedingte Bewertung ? : expr 1 ? expr 2 :

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

Vorrangregeln bei Operatorenklasse Operatoren Assoziativität Unär ! ~ ++ Multiplikativ * / % Additiv

Vorrangregeln bei Operatorenklasse Operatoren Assoziativität Unär ! ~ ++ Multiplikativ * / % Additiv + - Shift << Relational < Gleichheit == 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 = Reihung , -- + - Von rechts nach links Von links nach rechts >> <= Von links nach rechts > >= != op= Programmieren in C - Peter Klingebiel - HS Fulda - DVZ Von links nach rechts Von rechts nach links Von links nach rechts 27

Typumwandlung in Ausdrücken 1 • Automatische Typumwandlung bei unterschiedlicher Typen in Ausdrücken Programmieren in

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

Typumwandlung in Ausdrücken 2 • Beispiel: • Explizite Typumwandlung (casting) (type) expr Programmieren in

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