Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Informatik II Grundlagen der Programmierung Programmieren in C Variablen, Konstanten, Typen Hochschule Fulda – FB ET Sommersemester 2014

Ähnliche Präsentationen


Präsentation zum Thema: "Informatik II Grundlagen der Programmierung Programmieren in C Variablen, Konstanten, Typen 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 Peter Klingebiel, HS Fulda, DVZ

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

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

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

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

14 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ14 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 12 Stellen genau) void ohne Wert (z.B. Zeiger)

15 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ15 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

16 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ16 Datentypen 4 TypWertebereichGröße char-128 bis 1271 Byte unsigned char0 bis 2551 Byte short int bis Byte unsigned short int0 bis Byte int bis Byte unsigned int0 bis Byte long int bis Byte unsigned long int0 bis Byte long bis Byte unsigned long long0 bis Byte

17 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ17 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 TypBereichGenauigkeitGröße float1.2e-38 bis 3.4e386 Stellen4 Byte double2.3e-308 bis 1.7e30815 Stellen8 Byte long double3.4e-4932 bis 1.2e Stellen16 Byte

18 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ18 Konstante Werte 1 Dezimal, sedezimal (Hex), oktal –4711, 0x1267, 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

19 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ19 Konstante Werte 2 Gleitkommakonstanten –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

20 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ20 Konstante Werte 3 Zeichen char –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 –dazu eine Fülle von passenden Funktionen

21 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ21 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 Fulda\

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

23 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ23 Typwandlung 1 Implizite Typwandlung durch Compiler –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!

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

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

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

27 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ27 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...

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

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

30 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ30 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 –Sichtbarkeit global –static Sichtbarkeit im Quelldateikontext Variablen können innerhalb von Blöcken, d.h. lokal oder automatisch definiert werden

31 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ31 Speicherklassen 2 auto –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 sichtba r extern –Variable ist in anderer C-Quelle definiert register –Variable CPU-Register, hat keine Adresse! volatile –Variable kann ausserhalb Programm verändert werden

32 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ32 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

33 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ33 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

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

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

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

37 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ37 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

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

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

40 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ40 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

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

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

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


Herunterladen ppt "Informatik II Grundlagen der Programmierung Programmieren in C Variablen, Konstanten, Typen Hochschule Fulda – FB ET Sommersemester 2014"

Ähnliche Präsentationen


Google-Anzeigen