1 / 33

Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 2

Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 2. Hochschule Fulda – FB ET Sommersemester 2010 http://www.rz.hs-fulda.de/et Peter Klingebiel, HS Fulda, DVZ. Anweisung / Ausdruck 1.

Download Presentation

Informatik II Grundlagen der Programmierung Programmieren in C Grundlagen C 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatik IIGrundlagen der ProgrammierungProgrammieren in CGrundlagen C 2 Hochschule Fulda – FB ET Sommersemester 2010 http://www.rz.hs-fulda.de/et 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 vonKonstanten, 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 • signedmit Vorzeichen • unsignedvorzeichenlos • Konstanten, Beispiele:int a = 4711, b = -18; dezimalshort x = 0x20 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 = 2010 - 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 = -21.56, b = 0.54671.0 0.0 (Obacht: 1 oder 0  int)7.0e-3 (0.007) 7.6543e2(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 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 anBsp: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

More Related