Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Hochschule Fulda – FB ET Sommersemester 2014

Ähnliche Präsentationen


Präsentation zum Thema: "Hochschule Fulda – FB ET Sommersemester 2014 "—  Präsentation transkript:

1 Informatik II Grundlagen der Programmierung Programmieren in C Variablen, Konstanten, Typen
Hochschule Fulda – FB ET Sommersemester 2014 Peter Klingebiel, HS Fulda, DVZ

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

3 Variablen 2 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

4 Wie speichert C? 1 Hauptspeicher
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

5 Wie speichert C? 2 Beispiel: Zugriff auf Variable

6 Wie speichert C? 3 Vor Programmstart

7 Wie speichert C? 4 Programmstart und Aufruf von main()

8 Wie speichert C? 5 Zuweisung a = 4;

9 Wie speichert C? 6 Zuweisung b = 8;

10 Wie speichert C? 7 Berechnung a * b;

11 Wie speichert C? 8 Zuweisung c = a * b;

12 Wie speichert C? 9 Danach

13 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/Definition bei Variablen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

14 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

15 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

16 Datentypen 4 Typ Wertebereich Größe char -128 bis 127 1 Byte
unsigned char 0 bis 255 short int bis 2 Byte unsigned short int 0 bis int bis 4 Byte unsigned int 0 bis long int unsigned long int long long bis 8 Byte unsigned long long 0 bis Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 16

17 Datentypen 5 Gleitkommatypen Normaler Typ ist double
Typ float mit 6 Stellen Genauigkeit für die meisten Anwendungen nicht geeignet Type long double für Spezialfälle mit hohen Anforderungen an Genauigkeit und Breite Typ Bereich Genauigkeit Größe float 1.2e-38 bis 3.4e38 6 Stellen 4 Byte double 2.3e-308 bis 1.7e308 15 Stellen 8 Byte long double 3.4e-4932 bis 1.2e4932 33 Stellen 16 Byte Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 17

18 Konstante Werte 1 Dezimal, sedezimal (Hex), oktal Ganze Zahlen
signed (ist Standard) unsigned: 4711u oder 4711U long: 4711l oder 4711L unsigned long: 4711ul oder 4711UL Warum? Der Datentyp bestimmt über Speicherplatz und Ergebnisse bei Rechnungen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 18

19 Konstante Werte 2 Gleitkommakonstanten Fließkommazahlen
mindestens ein Punkt (kein Komma!) Exponential- oder Festkommaschreibweise Fließkommazahlen float: 5.f oder 5.0e1F (nicht 5f) double (Standard): 3.14 long double: 7.l oder 7.L Warum? Der Datentyp bestimmt über Speicherplatz und Ergebnisse bei Rechnungen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 19

20 Konstante Werte 3 Zeichen char Keine Codierung nach UNICODE
1 Byte, i.d.R. 8 Bit char c = 'A'; Konstanten in Hochkommata / einfachen Anführungszeichen Kodierung nach ASCII-Code Keine Codierung nach UNICODE 2 Byte / 16 Bit für internationale Zeichensätze Datentyp wchar_t definiert in <stddef.h> dazu eine Fülle von passenden Funktionen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 20

21 Konstante Werte 4 Zeichenketten / Strings char *s = "Fulda";
Konstanten in Hochkommata / doppelten Anführungszeichen Terminiert mit NUL (ASCII-NUL) im Speicher immer ein Byte mehr als gültige Zeichen für terminierendes NUL-Zeichen kann Steuerzeichen (wie '\n') enthalten F u l d a \0 70 117 108 100 97 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 21

22 Variablen und Typen Typbindung bedeutet:
Variable ist von einem bestimmten Typ Funktion liefert einen bestimmten Typ Variable und Typ im Quelltext festgelegt Zuweisungen a = b; Typ von b wird zum Typ von a gewandelt Der Wert wird a zugewiesen Bsp: int a = 4711; // ok Bsp: int pi = ; // pi liefert 3! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

23 Typwandlung 1 Implizite Typwandlung durch Compiler Implizit char  int
erweiterund von "kleiner" zu "größer" Bsp: unsigned long l = 3; Achtung: unsigned long l = -1; l hat dann den Wert , da unsigned! Implizit char  int Compiler rechnet intern mit int Achtung char im Bereich -127 bis 128 oder 0 bis 255 (unsigned) Achtung: Konstante EOF ist mit -1 definiert! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 23

24 Typwandlung 2 float  double wie char  int Berechnungen erfolgen im ranghöchsten Typ char < short < int < long < long long float < double < long double integer < "floating point" signed und unsigned vom selben Rang Typwandlung höherwertig  niederwertig kann Informationsverlust bedeuten int geteilt durch int gibt int: 1 / 2 = 0 Plattform- und Compilerabhängigkeiten! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 24

25 Typumwandlung 3 Automatische implizite Typumwandlung bei unterschiedlicher Typen in Ausdrücken

26 Typumwandlung 4 Explizite Typumwandlung (Typecast)
Fehlervermeidung durch implizite Typwandlung (typ) ausdruck // typecast Bsp: (float) i / (float) j; Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 26 26

27 Definition und Deklaration 1
Pseudocode  lax, interpretierbar C-Code  strikt, eindeutig Variablen können nicht einfach so verwendet werden, sie müssen vor Verwendung definiert und deklariert werden Deklaration es gibt eine Variable von diesem Typ mit diesem Namen irgendwie, irgendwo, irgendwann ... Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

28 Definition und Deklaration 2
Definition: Typ, Name und Speicher für die Variable werden festgelegt Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

29 Definition und Deklaration 3
Deklaration / Definition von Variablen Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

30 Speicherklassen 1 Funktionen können nur global, d.h. ausserhalb von Blöcken definiert werden Sichtbarkeit global static  Sichtbarkeit nur im Quelldateikontext Variablen können ausserhalb von Blöcken, d.h. global definiert werden static  Sichtbarkeit im Quelldateikontext Variablen können innerhalb von Blöcken, d.h. lokal oder automatisch definiert werden Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

31 Speicherklassen 2 auto static extern register volatile
nur innerhalb eines Blocks, Standardklasse Variable existiert / ist sichtbar nur im Block static in Block: Variable erhält ihren Wert sonst: Variable/Funktion nur in C-Quelle sichtbar extern Variable ist in anderer C-Quelle definiert register Variable  CPU-Register, hat keine Adresse! volatile Variable kann ausserhalb Programm verändert werden Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

32 Sichtbarkeit 1 Der Sichtbarkeitsbereich (Scope) einer Variablen  Programmabschnitt, in dem die Variable sichtbar/nutzbar/gültig ist Der Scope wird durch den Ort der Definition bzw. Deklaration der Variablen festgelegt innerhalb eines Blocks  sichtbar von der Stelle der Definition bis zum Blockende ausserhalb  sichtbar von Stelle der Definition bzw. Deklaration bis zum Ende der Quelldatei mit static definierte Variablen sind nur im Modul (entspricht C-Quelle) sichtbar Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

33 Sichtbarkeit 2 Globale Variable müssen ausserhalb von Blöcken definiert sein Variablen aus anderen Modulen (globale Variable) müssen explizit als extern deklariert werden Scope einer Funktion: Bereich auf Ebene des Programms, in der die Funktion nutzbar ist global sollte dann vor Nutzung bekannt sein (Prototype) lokal nur im Modul bei Definition als static Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

34 Sichtbarkeit 3 Beispiel: 2 Module / Quelldateien
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

35 Sichtbarkeit 4 Beispiel: scope.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

36 Sichtbarkeit 5 Welche Ausgaben erzeugt scope?
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

37 Lebensdauer 1 Lebensdauer einer Variablen ist die Zeit, in der diese Variable Speicherplatz belegt lokale / automatische Variable „lebt“, d.h. hat einen Speicherort vom Anfang bis zum Ende des Blocks, in dem sie definiert ist Speicherplatz wird bei Verlassen des Blocks wieder freigegeben  Variable ist ungültig! Zugriff darauf ist dann undefiniert Globale oder statische Variable „lebt“ vom Anfang bis zum Ende des Programms Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

38 Lebensdauer 2 Beispiel: lifetime.c
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

39 Lebensdauer 3 Welche Ausgaben erzeugt lifetime?
Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

40 Speichersegmentierung 1
Programmcode und Programmdaten eines Programms werden von Betriebssystem in unterschiedliche Speichersegmente geladen Programmcode  Textsegment globale / statische Daten  Datensegmente Konstanten initialisierte Daten nicht initialisierte Daten automatische Daten  Stacksegment Daten werden erst bei Eintritt in Block erzeugt Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

41 Speichersegmentierung 2
Beispiel (Sun Solaris) Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

42 Speichersegmentierung 3
Warum Speichersegmentierung? Welche Vorteile hat das? Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

43 Speichersegmentierung 4
Beispiel: segment.c Programmieren in C - Peter Klingebiel - HS Fulda - DVZ


Herunterladen ppt "Hochschule Fulda – FB ET Sommersemester 2014 "

Ähnliche Präsentationen


Google-Anzeigen