Hochschule Fulda – FB ET Sommersemester 2014

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
Hochschule Fulda – FB ET Sommersemester 2010
Forschungszentrum caesar
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Hochschule Fulda – FB ET Sommersemester 2010
Variablen und Datentypen
Java: Objektorientierte Programmierung
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Sprache
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Objekte und Arbeitsspeicher
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Zusammenfassung Vorwoche
Hochschule Fulda – FB ET Sommersemester 2010
Informatik II Grundlagen der Programmierung Programmieren in C Add Ons Hochschule Fulda – FB ET Sommersemester Peter.
Das erste Programm (Folie 16)
Grundkonzepte Java - Klassendefinition
Einführung in die Programmiersprache C 1
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Programmieren in C Einführung
Programmierung 1. Einführung Seite 1
Arduino Kurs Abend 2.
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Programmieren in C Einführung
Programmieren in C Dynamische Listen / Bäume
Variablen in Programmiersprachen
Programmieren in C Grundlagen C 5
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Datentypen: integer, char, string, boolean
Datentypen Überblick Datentypen Einfache / fundamentale Datentypen
Programmieren in C Grundlagen C 3 Hochschule Fulda – FB AI Wintersemester 2013/14 Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
Informatik II Grundlagen der Programmierung Programmieren in C printf() mit variabler Feldbreite Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Einführung
Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Informatik II Grundlagen der Programmierung Programmieren in C Ausflug printf() Hochschule Fulda – FB ET Sommersemester 2014
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Annäherung an C
Programmieren in C Grundlagen C 3
Programmieren in C Module und Bibliotheken Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Programmieren in C Dateien
Programmieren in C Grundlagen C 2
Hochschule Fulda – FB AI Sommersemester 2014
Programmieren in C Sortieren, Suchen
Programmieren in C "Was ist wichtig?"
Programmieren in C Grundlagen C 1 Hochschule Fulda – FB AI Sommersemester Peter Klingebiel, HS Fulda, DVZ.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Programmieren in C Grundlagen C 2
Programmieren in C Grundlagen C 1
Programmieren in C Wie speichert C
Projektmodul DM Kurze Einführung C-Programmierung
Einführung in die Programmierung
 Präsentation transkript:

Informatik II Grundlagen der Programmierung Programmieren in C Variablen, Konstanten, Typen Hochschule Fulda – FB ET Sommersemester 2014 http://c-et.rz.hs-fulda.de Peter Klingebiel, HS Fulda, DVZ

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

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

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

Wie speichert C? 2 Beispiel: Zugriff auf Variable

Wie speichert C? 3 Vor Programmstart

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

Wie speichert C? 5 Zuweisung a = 4;

Wie speichert C? 6 Zuweisung b = 8;

Wie speichert C? 7 Berechnung a * b;

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

Wie speichert C? 9 Danach

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

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

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

Datentypen 4 Typ Wertebereich Größe char -128 bis 127 1 Byte unsigned char 0 bis 255 short int -32.768 bis 32.767 2 Byte unsigned short int 0 bis 65.535 int -2.147.483.648 bis 2.147.483.647 4 Byte unsigned int 0 bis 4.294.967.295 long int unsigned long int long long -9.223.372.036.854.755.808 bis 9.223.372.036.854.755.807 8 Byte unsigned long long 0 bis 18.446.744.073.709.551.615 Programmieren in C - Peter Klingebiel - HS Fulda - DVZ 16

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

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

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

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

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

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 = 3.1415; // pi liefert 3! Programmieren in C - Peter Klingebiel - HS Fulda - DVZ

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 4294967295, 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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