Präsentation herunterladen
1
Programmieren in C Grundlagen C 2
Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ
2
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
3
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
4
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
5
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 = 0x sedezimal (Basis 16) int y = 020; oktal (Basis 8) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
6
Datentyp short, int, long 2
Syntaxdiagramm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
7
Datentyp short, int, long 3
Dezimal-, Sedezimal-, Binärdarstellung Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
8
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; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
9
Datentyp short, int, long 5
Vergleichsoperatoren == != < > <= >= expr1 op expr2 Ergebnis: wahr 1, falsch 0 Ergebnistyp int Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
10
Datentyp short, int, long 6
Logische Operatoren ! && || Ergebnis: wahr 1, falsch 0 (Typ int) expr1 op expr2 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
11
Datentyp short, int, long 7
Bitoperatoren ~ & | ^ expr1 op expr2 bzw. ~expr Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
12
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
13
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
14
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
15
Datentyp char 2 ASCII-Zeichensatz 7 Bit
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
16
Datentyp char 3 ASCII-Zeichensatz 8 Bit (PC, MS-DOS)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
17
Datentyp char 4 ANSI-Zeichensatz 8 Bit (Windows)
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
18
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
19
Datentyp char 6 Ascii-Tabelle ausgeben: ascii.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
20
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
21
Datentypen float, double, long double 2
Syntaxdiagramm Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
22
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) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
23
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
24
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
25
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
26
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): Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
27
Vorrangregeln bei Operatoren
Operatorenklasse Operatoren Assoziativität Unär ! ~ Von rechts nach links Multiplikativ * / % Von links nach rechts Additiv + - Shift << >> Relational < <= > >= Gleichheit == != Bitweise & ^ | Logisch && || Bedingte Bewertung ?: Zuweisung = op= Reihung , Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
28
Typumwandlung in Ausdrücken 1
Automatische Typumwandlung bei unterschiedlicher Typen in Ausdrücken Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
29
Typumwandlung in Ausdrücken 2
Beispiel: Explizite Typumwandlung (casting) (type) expr Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
30
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 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
31
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! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
32
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)) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
33
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) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.