Systemnahe Programmierung in C (SPiC)

Größe: px
Ab Seite anzeigen:

Download "Systemnahe Programmierung in C (SPiC)"

Transkript

1 Systemnhe Progrmmierung in C (SPiC) Überblick: Teil C Systemnhe Softwreentwicklung Teil C Systemnhe Softwreentwicklung Jürgen Kleinöder, Dniel Lohmnn Lehrstuhl für Informtik 4 Verteilte Systeme und Betriebssysteme 12 Progrmmstruktur und Module 13 Zeiger und Felder 14 µc-systemrchitektur V_SPIC_hndout Friedrich-Alexnder-Universität Erlngen-Nürnberg Sommersemester V_SPIC_hndout Softwreentwurf Beispiel-Projekt: Eine Wettersttion Softwreentwurf: Grundsätzliche Überlegungen über die Struktur eines Progrmms vor Beginn der Progrmmierung Ziel: Zerlegung des Problems in beherrschbre Einheiten Es gibt eine Vielzhl von Softwreentwurfs-Methoden Objektorientierter Entwurf [ GDI, 06] Stnd der Kunst Dekomposition in Klssen und Objekte An Progrmmiersprchen wie C++ oder Jv usgelegt Top-Down-Entwurf / Funktionle Dekomposition Bis Mitte der 80er Jhre fst usschließlich verwendet Dekomposition in Funktionen und Funktionsufrufe An Progrmmiersprchen wie Fortrn, Cobol, Pscl oder C orientiert Systemnhe Softwre wird oft (noch) mit Funktionler Dekomposition entworfen und entwickelt. Typisches eingebettetes System Mehrere Sensoren 0+&1 Wind -)#''8)# Luftdruck Tempertur 2#$3 Mehrere Aktoren ; # < (hier: Ausgbegeräte) LCD-Anzeige 95: PC über RS232 PC über USB Sensoren und Aktoren n den µc ngebunden über verschiedene Bussysteme I 2 C RS232 Wie sieht die funktionle Dekomposition der Softwre us? ;<%&()%..#),=>?4@ "+'3.*A c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.1 Einführung 12 1 c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.2 Funktionle Dekomposition 12 2

2 Funktionle Dekomposition: Beispiel Funktionle Dekomposition: Probleme Funktionle Dekomposition der Wettersttion (Auszug): 1. Sensordten lesen 0+&1 1.1 Tempertursensor lesen -)#''8)# I 2 C-Dtenübertrgung intiieren 2#$ Dten vom I 2 C-Bus lesen ; # < 1.2 Drucksensor lesen 95: 1.3 Windsensor lesen 2. Dten ufbereiten (z. B. glätten) 3. Dten usgeben 3.1 Dten über RS232 versenden Budrte und Prität festlegen (einmlig) Dten schreiben 3.2 LCD-Disply ktulisieren 4. Wrten und b Schritt 1 wiederholen ;<%&()%..#),=>?4@ "+'3.*A Erzielte Gliederung betrchtet nur die Struktur der Aktivitäten, nicht jedoch die die Struktur der Dten Gefhr: Funktionen rbeiten wild uf einer Unmenge schlecht strukturierter Dten mngelhfte Trennung der Belnge sendbuf[] RS232Init() bud RS232Send() init curdev I2CRec() I2CStrt() lsttemp lstwind GetTemp() Dten min() SendToPC() Aktivitäten c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.2 Funktionle Dekomposition 12 3 c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.2 Funktionle Dekomposition 12 4 Funktionle Dekomposition: Probleme Zugriff uf Dten (Vriblen) Erzielte Gliederung betrchtet nur die Struktur der Aktivitäten, nicht jedoch die die Struktur der Dten Gefhr: Funktionen rbeiten wild uf einer Unmenge schlecht strukturierter Dten mngelhfte Trennung der Belnge Vriblen hben 10 1 Sichtbrkeit (Scope) Wer knn uf die Vrible zugreifen? Lebensduer Wie lnge steht der Speicher zur Verfügung? Wird festgelegt durch Position (Pos) und Speicherklsse (SK) Pos SK Sichtbrkeit Lebensduer Prinz der Trennung der Belnge Dinge, die nichts miteinnder zu tun hben, sind uch getrennt unterzubringen! Trennung der Belnge (Seprtion of Concerns) ist ein Fundmentlprinz der Informtik (wie uch jeder nderen Ingenieursdiszlin). Lokl keine, uto Definition Blockende Definition Blockende sttic Definition Blockende Progrmmstrt Progrmmende Globl keine unbeschränkt Progrmmstrt Progrmmende sttic modulweit Progrmmstrt Progrmmende int = 0; sttic int b = 47; void f() uto int = b; sttic int c = 11; // : globl // b: locl to module // : locl to function (uto optionl) // destroyed t end of block // c: locl to function, not destroyed c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.2 Funktionle Dekomposition 12 4 c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.3 Globle Vriblen 12 5

3 Zugriff uf Dten (Vriblen) (Forts.) Sichtbrkeit und Lebensduer sollten restriktiv usgelegt werden Sichtbrkeit so beschränkt wie möglich! Überrschende Zugriffe von ußen usschließen (Fehlersuche) Implementierungsdetils verbergen (Blck-Box-Prinz, informtion hiding) Lösung: Modulrisierung Seprtion jeweils zusmmengehöriger Dten und Funktionen in übergeordnete Einheiten Module Lebensduer so kurz wie möglich Speicherpltz spren Insbesondere wichtig uf µ-controller-plttformen 1 4 sendbuf[] bud init curdev lsttemp lstwind min() Konsequenz: Globle Vriblen vermeiden! Globle Vriblen sind überll sichtbr Regel: Globle Vriblen belegen Speicher über die gesmte Progrmmlufzeit Vriblen erhlten stets die geringstmögliche Sichtbrkeit und Lebensduer RS232Init() RS232Send() RS232.c I2CRec() I2CStrt() I2C.c SendToPC() GetTemp() wether.c c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.3 Globle Vriblen 12 6 c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.4 Modulrisierung 12 7 Ws ist ein Modul? Module in C [ Jv] Modul := (<Menge von Funktionen>, <Menge von Dten>, <Schnittstelle>) ( clss in Jv) Module sind größere Progrmmbusteine 9 1 Problemorientierte Zusmmenfssung von Funktionen und Dten Trennung der Belnge Ermöglichen die einfche Wiederverwendung von Komponenten Ermöglichen den einfchen Austusch von Komponenten Verbergen Implementierungsdetils (Blck-Box-Prinz) Zugriff erfolgt usschließlich über die Modulschnittstelle Modul Abstrktion 4 1 Die Schnittstelle eines Moduls bstrhiert Von der ttsächlichen Implementierung der Funktionen Von der internen Drstellung und Verwendung von Dten In C ist ds Modulkonzept nicht Bestndteil der Sprche, 3 12 sondern rein idiomtisch (über Konventionen) relisiert Modulschnittstelle.h-Dtei (enthält Deklrtionen 9 7 ) Modulimplementierung.c-Dtei (enthält Definitionen 9 3 ) Modulverwendung #include <Modul.h> void RS232Init( uint16_t br ); RS232.h: Schnittstelle / Vertrg (öffentl.) void RS232Send( chr ch ); Deklrtion der bereitgestellten Funktionen (und ggf. Dten) #include <RS232.h> RS232.c: Implementierung (nicht öffentl.) sttic uint16_t bud = 2400; Definition der bereitgestellten sttic chr sendbuf[16]; Funktionen (und ggf. Dten) void RS232Init( uint16_t br) Ggf. modulinterne Hilfsfunktionen und Dten (sttic) bud = br; void RS232Send( chr ch ) sendbuf[] = ch; Inklusion der eigenen Schnittstelle stellt sicher, dss der Vertrg eingehlten wird c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.4 Modulrisierung 12 8 c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.5 Module in C 12 9

4 Module in C Export [ Jv] Module in C Import [ Jv] Ein C-Modul exportiert eine Menge von definierten Symbolen Alle Funktionen und globlen Vriblen ( public in Jv) Export knn mit sttic unterbunden werden ( privte in Jv) ( Einschränkung der Sichtbrkeit 12 5 ) Export erfolgt beim Übersetzungsvorgng (.c-dtei.o-dtei) Ein C-Modul importiert eine Menge nicht-definierter Symbole Funktionen und globle Vriblen, die verwendet werden, im Modul selber jedoch nicht definiert sind Werden beim Übersetzen ls unufgelöst mrkiert Quelldtei (br.c) Objektdtei (br.o) Quelldtei (foo.c) uint16_t ; // public sttic uint16_t b; // privte void f(void) sttic void g(int) foo.c Compiler foo.o // public // privte Objektdtei (foo.o), f Symbole und f werden exportiert. Symbole b und g sind sttic definiert und werden deshlb nicht exportiert. extern uint16_t ; // declre void f(void); void min() = 0x4711; f(); // declre // public // use // use Symbol min wird exportiert. Symbole und f sind unufgelöst. c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.5 Module in C c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.5 Module in C Module in C Import (Forts.) [ Jv] Module in C Heder [ Jv] Die eigentliche Auflösung erfolgt durch den Linker foo.c foo.o Compiler Compiler br.c br.o, f min, f Linker min,, f br Elemente us fremden Modulen müssen deklriert werden Funktionen durch normle Deklrtion 9 7 void f(void); Globle Vriblen durch extern extern uint16_t ; Ds extern unterscheidet eine Vriblendeklrtion von einer Vriblendefinition. Linken ist nicht typsicher! Typinformtionen sind in Objektdteien nicht mehr vorhnden Auflösung durch den Linker erfolgt usschließlich über die Symbolnmen (Bezeichner) Typsicherheit muss beim Übersetzen sichergestellt werden Einheitliche Deklrtionen durch gemeinsme Heder-Dtei Die Deklrtionen erfolgen sinnvollerweise in einer Heder-Dtei, die von der Modulentwicklerin bereitgestellt wird Schnittstelle des Moduls ( interfce in Jv) Exportierte Funktionen des Moduls Exportierte globle Vriblen des Moduls Modulspezifische Konstnten, Typen, Mkros Verwendung durch Inklusion ( import in Jv) Wird uch vom Modul inkludiert, um Übereinstimmung von Deklrtionen und Definitionen sicher zu stellen ( implements in Jv) c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.5 Module in C c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.5 Module in C 12 13

5 Module in C Heder (Forts.) [ Jv] Zurück zum Beispiel: Wettersttion Modulschnittstelle: foo.h // foo.h #ifndef _FOO_H #define _FOO_H // declrtions extern uint16_t ; void f(void); #endif // _FOO_H Modulimplementierung foo.c // foo.c #include <foo.h> // definitions uint16_t ; void f(void) Modulverwendung br.c (vergleiche ) RS232.h I2C.h preprocess Quellmodule Objektmodule link compile ELF-Binry RS232.c I2C.c wether.c io.h.h gcc gcc (Compiler) gcc (Compiler) (Compiler) RS232.o I2C.o wether.o ld (Linker) io.o.o.o.o.o.o vr-libc.lib wether // br.c extern uint16_t ; void f(void); #include <foo.h> void min() = 0x4711; f(); Jedes Modul besteht us Heder- und Implementierungsdtei(en).h-Dtei definiert die Schnittstelle.c-Dtei implementiert die Schnittstelle, inkludiert.h-dtei, um sicherzustellen, dss Deklrtion und Definition übereinstimmen Modulverwendung durch Inkludieren der modulspezifischen.h-dtei Ds Gnze funktioniert entsprechend bei Bibliotheken c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.5 Module in C Zusmmenfssung c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.5 Module in C Überblick: Teil C Systemnhe Softwreentwicklung Prinz der Trennung der Belnge Modulrisierung Wiederverwendung und Austusch wohldefinierter Komponenten Verbergen von Implementierungsdetils In C ist ds Modulkonzept nicht Bestndteil der Sprche, sondern idiomtisch durch Konventionen relisiert Modulschnittstelle.h-Dtei (enthält Deklrtionen) Modulimplementierung.c-Dtei (enthält Definitionen) Modulverwendung #include <Modul.h> privte Symbole ls sttic definieren Die eigentliche Zusmmenfügung erfolgt durch den Linker Auflösung erfolgt usschließlich über Symbolnmen Linken ist nicht typsicher! Typsicherheit muss beim Übersetzen sichergestellt werden durch gemeinsme Heder-Dtei V_SPIC_hndout 12 Progrmmstruktur und Module 13 Zeiger und Felder 14 µc-systemrchitektur c dl SPiC (Teil C, SS 15) 12 Progrmmstruktur und Module 12.6 Zusmmenfssung 12 16

6 Einordnung: Zeiger (Pointer) Zeiger (Pointer) Literl: Drstellung eines Wertes Vrible: chr ; Behälter für einen Wert Eine Zeigervrible (Pointer) enthält ls Wert die Adresse einer nderen Vriblen Ein Zeiger verweist uf eine Vrible (im Speicher) Über die Adresse knn mn indirekt uf die Zielvrible (ihren Speicher) zugreifen Drus resultiert die große Bedeutung von Zeigern in C Zeiger-Vrible: chr *p = &; Behälter für eine Referenz uf eine Vrible ein p Funktionen können Vriblen des Aufrufers verändern 9 5 (cll-by-reference) Speicher lässt sich direkt nsprechen Effizienz durch Effizientere Progrmme Mschinennähe 3 13 Aber uch viele Probleme! Progrmmstruktur wird unübersichtlicher (welche Funktion knn uf welche Vriblen zugreifen?) Zeiger sind die häufigste Fehlerquelle in C-Progrmmen! c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.1 Zeiger Einführung 13 1 Definition von Zeigervriblen c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.1 Zeiger Einführung 13 2 Adress- und Verweisopertoren Zeigervrible := Behälter für Verweise ( Adresse) Syntx (Definition): Typ * Bezeichner ; Beispiel int x = 5; x 5 int *; int y; = &x; y = *; ➋ y 5 ➋ Adressopertor: & x Der unäre &-Opertor liefert die Referenz ( Adresse im Speicher) der Vriblen x. Verweisopertor: * y Der unäre * -Opertor liefert die Zielvrible ( Speicherzelle / Behälter), uf die der Zeiger y verweist (Dereferenzierung). Es gilt: (* (& x)) x Der Verweisopertor ist die Umkehropertion des Adressopertors. Achtung: Verwirrungsgefhr (*** Ich seh überll Sterne ***) Ds * -Symbol ht in C verschiedene Bedeutungen, je nch Kontext 1. Multliktion (binär): x * y in Ausdrücken 2. Typmodifizierer: uint8_t *p1, *p2 typedef chr* CPTR in Definitionen und Deklrtionen 3. Verweis (unär): x = *p1 in Ausdrücken Insbesondere 2. und 3. führen zu Verwirrung * wird fälschlicherweise für ein Bestndteil des Bezeichners gehlten. c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.2 Zeiger Definition 13 3 c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.2 Zeiger Definition 13 4

7 Zeiger ls Funktionsrgumente Zeiger ls Funktionsrgumente (Forts.) Prmeter werden in C immer by-vlue übergeben 9 5 Prmeterwerte werden in lokle Vriblen der ufgerufenen Funktion kopiert Aufgerufene Funktion knn ttsächliche Prmeter des Aufrufers nicht ändern Ds gilt uch für Zeiger (Verweise) [ GDI, 04-26] Aufgerufene Funktion erhält eine Kopie des Adressverweises Mit Hilfe des *-Opertors knn drüber jedoch uf die Zielvrible zugegriffen werden und diese verändert werden Cll-by-reference Beispiel (Gesmtüberblick) void swp (int *, int *); int min() int =47, b=11; swp(&, &b); void swp (int *, int *) tmp = *; ➋ * = *; ➌ * = tmp; ➍ b tmp ➌ ➍ ➋ c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.3 Zeiger und Funktionen 13 5 Zeiger ls Funktionsrgumente (Forts.) Zeiger ls Funktionsrgumente (Forts.) void swp (int *, int *); int min() int =47, b=11; swp(&, &b); 47 b 11 void swp (int *, int *); int min() int =47, b=11; swp(&, &b); 47 b 11 void swp (int *, int *) void swp (int *, int *) tmp tmp

8 Zeiger ls Funktionsrgumente (Forts.) Zeiger ls Funktionsrgumente (Forts.) void swp (int *, int *); int min() int =47, b=11; swp(&, &b); 47 b 11 void swp (int *, int *); int min() int =47, b=11; swp(&, &b); 47 b 11 void swp (int *, int *) tmp = *; ➋ * tmp void swp (int *, int *) tmp = *; ➋ * = *; ➌ * * tmp 47 Zeiger ls Funktionsrgumente (Forts.) Zeiger ls Funktionsrgumente (Forts.) void swp (int *, int *); int min() int =47, b=11; swp(&, &b); 11 b 11 void swp (int *, int *); int min() int =47, b=11; swp(&, &b); 11 b 47 void swp (int *, int *) tmp = *; ➋ * = *; ➌ ➌ tmp 47 void swp (int *, int *) tmp = *; ➋ * = *; ➌ * = tmp; ➍ ➍ tmp 47

9 Einordnung: Felder (Arrys) [ Jv] Feldinitilisierung Feldvrible := Behälter für eine Reihe von Werten desselben Typs Syntx (Definition): Typ Bezeichner [ IntAusdruck ] ; Typ Typ der Werte [=Jv] Wie ndere Vriblen uch, knn ein Feld bei Definition eine initile Wertzuweisung erhlten uint8_t LEDs[4] = RED0, YELLOW0, GREEN0, BLUE0 ; int prim[5] = 1, 2, 3, 5, 7 ; Bezeichner Nme der Feldvriblen [=Jv] IntAusdruck Beispiele: sttic uint8_t LEDs[ 8*2 ]; void f( int n ) uto chr [ NUM_LEDS * 2]; uto chr b[ n ]; Konstnter Gnzzhl-Ausdruck, definiert die Feldgröße ( Anzhl der Elemente). Ab C99 drf IntAusdruck bei uto-feldern uch vribel (d. h. beliebig, ber fest) sein. // constnt, fixed rry size [ Jv] // constnt, fixed rry size // C99: vrible, fixed rry size Werden zu wenig Initilisierungselemente ngegeben, so werden die restlichen Elemente mit 0 initilisiert uint8_t LEDs[4] = RED0 ; // => RED0, 0, 0, 0 int prim[5] = 1, 2, 3 ; // => 1, 2, 3, 0, 0 Wird die explizite Dimensionierung usgelssen, so bestimmt die Anzhl der Initilisierungselemente die Feldgröße uint8_t LEDs[] = RED0, YELLOW0, GREEN0, BLUE0 ; int prim[] = 1, 2, 3, 5, 7 ; c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.4 Felder Einführung 13 7 c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.4 Felder Einführung 13 8 Feldzugriff Felder sind Zeiger Syntx: Feld [ IntAusdruck ] Wobei 0 IntAusdruck < n für n = Feldgröße Achtung: Feldindex wird nicht überprüft häufige Fehlerquelle in C-Progrmmen Beispiel uint8_t LEDs[] = RED0, YELLOW0, GREEN0, BLUE0 ; LEDs[ 3 ] = BLUE1; for( unit8_t i = 0; i < 4; ++i ) sb_led_on( LEDs[ i ] ); LEDs[ 4 ] = GREEN1; // UNDEFINED!!! [=Jv] [ Jv] Ein Feldbezeichner ist syntktisch äquivlent zu einem konstnten Zeiger uf ds erste Element des Feldes: rry &rry[0] Ein Alis kein Behälter Wert knn nicht verändert werden Über einen so ermittelten Zeiger ist ein indirekter Feldzugriff möglich Beispiel (Gesmtüberblick) int rry[5]; int * = rry; int *ep; ep = &rry[0]; ➋ ep = &rry[2]; ➌ *ep = 1; ➍ rry ep ➋ ➋ ➌ 1 ➍ ➌ c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.4 Felder Einführung 13 9 c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.5 Syntktische Äquivlenz 13 10

10 Felder sind Zeiger Ein Feldbezeichner ist syntktisch äquivlent zu einem konstnten Zeiger uf ds erste Element des Feldes: rry &rry[0] Ein Alis kein Behälter Wert knn nicht verändert werden Über einen so ermittelten Zeiger ist ein indirekter Feldzugriff möglich Felder sind Zeiger Ein Feldbezeichner ist syntktisch äquivlent zu einem konstnten Zeiger uf ds erste Element des Feldes: rry &rry[0] Ein Alis kein Behälter Wert knn nicht verändert werden Über einen so ermittelten Zeiger ist ein indirekter Feldzugriff möglich int rry[5]; rry int rry[5]; rry int * = rry; int *ep; ep = &rry[0]; ➋ int * = rry; int *ep; ep = &rry[0]; ➋ ep = &rry[2]; ➌ ep ➌ ep = &rry[2]; ➌ *ep = 1; ➍ ep *ep ➌ c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.5 Syntktische Äquivlenz c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.5 Syntktische Äquivlenz Zeiger sind Felder Rechnen mit Zeigern Ein Feldbezeichner ist syntktisch äquivlent zu einem konstnten Zeiger uf ds erste Element des Feldes: rry &rry[0] Diese Beziehung gilt in beide Richtungen: *rry rry[0] Ein Zeiger knn wie ein Feld verwendet werden Insbesondere knn der [ ] - Opertor ngewndt werden 13 9 Im Unterschied zu einem Feldbezeichner ist eine Zeigervrible ein Behälter Ihr Wert ist veränderbr Neben einfchen Zuweisungen ist dbei uch Arithmetik möglich int rry[3]; int * = rry; rry Beispiel (vgl ) uint8_t LEDs[] = RED0, YELLOW0, GREEN0, BLUE0 ; LEDs[ 3 ] = BLUE1; uint8_t *p = LEDs; for( unit8_t i = 0; i < 4; ++i ) sb_led_on( p[ i ] ); ++; ➋ ++; ➌ int rry[5]; = rry; ➋ ➌ (+3) &[3] Bei der Zeigerrithmetik wird immer die Größe des Objekttyps mit berücksichtigt. c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.5 Syntktische Äquivlenz c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.6 Zeigerrithmetik 13 12

11 Zeigerrithmetik Opertionen Felder sind Zeiger sind Felder Zusmmenfssung Arithmetische Opertionen ++ Prä-/Postinkrement Verschieben uf ds nächste Objekt In Kombintion mit Zeigerrithmetik lässt sich in C jede Feldopertion uf eine äquivlente Zeigeropertion bbilden. Prä-/Postdekrement Verschieben uf ds vorngegngene Objekt Für int i, rry[n], * = rry; mit 0 i < N gilt: +, Addition / Subtrktion eines int-wertes Ergebniszeiger ist verschoben um n Objekte Subtrktion zweier Zeiger Anzhl der Objekte n zwischen beiden Zeigern (Distnz) rry &rry[0] &[0] *rry rry[0] * [0] *(rry + i) rry[i] * ( + i) [i] rry++ ++ Vergleichsopertionen: <, <=, ==, >=, >,! = 7 3 Zeiger lssen sich wie Gnzzhlen vergleichen und ordnen Fehler: rry ist konstnt! Umgekehrt können Zeigeropertionen uch durch Feldopertionen drgestellt werden. Der Feldbezeichner knn ber nicht verändert werden. c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.6 Zeigerrithmetik c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.6 Zeigerrithmetik Felder ls Funktionsprmeter Felder ls Funktionsprmeter (Forts.) Felder werden in C immer ls Zeiger übergeben Cll-by-reference sttic uint8_t LEDs[] = RED0, YELLOW1; void enlight( uint8_t *rry, unsigned n ) for( unsigned i = 0; i < n; ++i ) sb_led_on( rry[i] ); [=Jv] Felder werden in C immer ls Zeiger übergeben Cll-by-reference Wird der Prmeter ls const deklriert, so knn die Funktion die Feldelemente nicht verändern Guter Stil! void enlight( const uint8_t *rry, unsigned n ) [=Jv] [ Jv] void min() enlight( LEDs, 2 ); uint8_t moreleds[] = YELLOW0, BLUE0, BLUE1; enlight( moreleds, 3); R 0 Y 0 G 0 B 0 R 1 Y 1 G 1 B 1 Informtionen über die Feldgröße gehen dbei verloren! Die Feldgröße muss explizit ls Prmeter mit übergeben werden In mnchen Fällen knn sie uch in der Funktion berechnet werden (z. B. bei Strings durch Suche nch dem bschließenden NUL-Zeichen) Um nzuzeigen, dss ein Feld (und kein Zeiger uf Vrible ) erwrtet wird, ist uch folgende äquivlente Syntx möglich: void enlight( const uint8_t rry[], unsigned n ) Achtung: Ds gilt so nur bei Deklrtion eines Funktionprmeters Bei Vriblendefinitionen ht rry[] eine völlig ndere Bedeutung (Feldgröße us Initilisierungsliste ermitteln, 13 8 ) c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.7 Felder ls Funktionsprmeter c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.7 Felder ls Funktionsprmeter 13 16

12 Felder ls Funktionsprmeter (Forts.) Zeiger uf Zeiger Die Funktion int strlen(const chr *) us der Stndrdbibliothek liefert die Anzhl der Zeichen im übergebenen String void min() const chr *string = "hllo"; // string is rry of chr sb_7seg_shownumber( strlen(string) ); Dbei gilt: Implementierungsvrinten Vrinte 1: Feld-Syntx "hllo" h l l o \ Vrinte 2: Zeiger-Syntx Ein Zeiger knn uch uf eine Zeigervrible verweisen int x = 5; int * = &x; int **p = &; /* ** p = 5 */ x 5 p Wird vor llem bei der Prmeterübergbe n Funktionen benötigt Zeigerprmeter cll-by-reference übergeben (z. B. swp()-funktion für Zeiger) Ein Feld von Zeigern übergeben int strlen( const chr s[] ) int n=0; while( s[n]!= 0 ) n++; return n; int strlen( const chr *s ) const chr *end = s; while( *end ) end++; return end - s; c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.7 Felder ls Funktionsprmeter c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.8 Erweiterte Zeigertypen Zeiger uf Funktionen Zeiger uf Funktionen (Forts.) Ein Zeiger knn uch uf eine Funktion verweisen Dmit lssen sich Funktionen n Funktionen übergeben Funktionen höherer Ordnung Beispiel // invokes job() every second void doperiodiclly( void (*job)(void) ) while( 1 ) job(); // invoke job for( voltile uint16_t i = 0; i < 0xffff; ++i ) ; // wit second void blink( void ) sb_led_toggle( RED0 ); void min() doperiodiclly( blink ); // pss blink() s prmeter Syntx (Definition): Typ ( * Bezeichner )( FormlePrm opt ); (sehr ähnlich zur Syntx von Funktionsdeklrtionen) 9 3 Typ Bezeichner Rückgbetyp der Funktionen, uf die dieser Zeiger verweisen knn Nme des Funktionszeigers FormlePrm opt Formle Prmeter der Funktionen, uf die dieser Zeiger verweisen knn: Typ 1,..., Typ n Ein Funktionszeiger wird genu wie eine Funktion verwendet Aufruf mit Bezeichner ( TtPrm ) 9 4 Adress- (&) und Verweisopertor (*) werden nicht benötigt 13 4 Ein Funktionsbezeichner ist ein konstnter Funktionszeiger void blink( uint8_t which ) sb_led_toggle( which ); void min() void (*myfun)(uint8_t); // myfun is pointer to function myfun = blink; // blink is constnt pointer to function myfun( RED0 ); // invoke blink() vi function pointer blink( RED0 ); // invoke blink() c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.8 Erweiterte Zeigertypen c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.8 Erweiterte Zeigertypen 13 20

13 Zeiger uf Funktionen (Forts.) Zusmmenfssung Funktionszeiger werden oft für Rückruffunktionen (Cllbcks) zur Zustellung synchroner Ereignisse verwendet ( Listener in Jv) // Exmple: synchronous button events with libspicbord #include <vr/interrupt.h> // for sei() #include <7seg.h> // for sb_7seg_shownumber() #include <button.h> // for button stuff Ein Zeiger verweist uf eine Vrible im Speicher Möglichkeit des indirekten Zugriffs uf den Wert Grundlge für die Implementierung von cll-by-reference in C Grundlge für die Implementierung von Feldern Wichtiges Element der Mschinennähe von C Häufigste Fehlerursche in C-Progrmmen // cllbck hndler for button events (invoked on interrupt level) void onbutton( BUTTON b, BUTTONEVENT e ) sttic int8_t count = 1; sb_7seg_shownumber( count++ ); // show no of button presses if( count > 99 ) count = 1; // reset t 100 Die syntktischen Möglichkeiten sind vielfältig (und verwirrend) Typmodifizierer *, Adressopertor &, Verweisopertor * Zeigerrithmetik mit +, -, ++ und -- syntktische Äquivlenz zu Feldern ([] Opertor) void min() sb_button_registerlistener( // register cllbck BUTTON0, BTNPRESSED, // for this button nd events onbutton // invoke this function ); sei(); // enble interrupts (necessry!) while( 1 ) ; // wit forever Zeiger können uch uf Funktionen verweisen Übergeben von Funktionen n Funktionen Prinz der Rückruffunktion c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.8 Erweiterte Zeigertypen c dl SPiC (Teil C, SS 15) 13 Zeiger und Felder 13.9 Zusmmenfssung 13 22

c dl SPiC (Teil C, SS 11) 13 Zeiger und Felder 13.1 Zeiger Einführung 13 1 Zeigervariable := Behälter für Verweise ( Adresse) Beispiel int x = 5;

c dl SPiC (Teil C, SS 11) 13 Zeiger und Felder 13.1 Zeiger Einführung 13 1 Zeigervariable := Behälter für Verweise ( Adresse) Beispiel int x = 5; Überblick: Teil C Systemnhe Softwreentwicklung Einordnung: Zeiger (Pointer) Literl: Drstellung eines Wertes 0110 0001 12 Progrmmstruktur und Module Vrible: Bezeichnung chr ; eines Dtenobjekts Behälter

Mehr

Überblick: Teil C Systemnahe Softwareentwicklung

Überblick: Teil C Systemnahe Softwareentwicklung Überblick: Teil C Systemnahe Softwareentwicklung 12 Programmstruktur und Module 13 Zeiger und Felder 14 µc-systemarchitektur Einordnung: Zeiger (Pointer) Literal: a Darstellung eines Wertes a 0110 0001

Mehr

Grundlagen der Systemnahen Programmierung in C (GSPiC)

Grundlagen der Systemnahen Programmierung in C (GSPiC) Grundlagen der Systemnahen Programmierung in C (GSPiC) Teil C Systemnahe Softwareentwicklung Daniel Lohmann Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität

Mehr

Systemnahe Programmierung in C (SPiC)

Systemnahe Programmierung in C (SPiC) Systemnahe Programmierung in C (SPiC) Teil C Systemnahe Softwareentwicklung Jürgen Kleinöder, Daniel Lohmann Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme V_SPIC_handout Friedrich-Alexander-Universität

Mehr

Grundlagen der Systemnahen Programmierung in C (GSPiC)

Grundlagen der Systemnahen Programmierung in C (GSPiC) Grundlgen der Systemnhen Progrmmierung in C (GSPiC) Überblick: Teil C Systemnhe Softwreentwicklung Teil C Systemnhe Softwreentwicklung 12 Progrmmstruktur und Module 13 Zeiger und Felder V_GSPIC_hndout

Mehr

Grundlagen der Systemnahen Programmierung in C (GSPiC)

Grundlagen der Systemnahen Programmierung in C (GSPiC) Grundlgen der Systemnhen Progrmmierung in C (GSPiC) Überblick: Teil C Systemnhe Softwreentwicklung 12 Progrmmstruktur und Module Teil C Systemnhe Softwreentwicklung 13 Zeiger und Felder Dniel Lohmnn 14

Mehr

2 Kurzeinführung in die Programmiersprache C 2.7 Programmstruktur & Module. 2 Kurzeinführung in die Programmiersprache C 2.7 Programmstruktur & Module

2 Kurzeinführung in die Programmiersprache C 2.7 Programmstruktur & Module. 2 Kurzeinführung in die Programmiersprache C 2.7 Programmstruktur & Module 2 Kurzeinführung in die Progrmmiersprche C 2.7 Progrmmstruktur & Module 10 Werteustusch zwischen Funktionen Mechnismus Aufrufer Funktion Funktion Aufrufer Prmeter j mit Hilfe von Zeigern Funktionswert

Mehr

Mechanismus Aufrufer Funktion Funktion Aufrufer Parameter ja mit Hilfe von Zeigern Funktionswert nein ja globale Variablen ja ja

Mechanismus Aufrufer Funktion Funktion Aufrufer Parameter ja mit Hilfe von Zeigern Funktionswert nein ja globale Variablen ja ja 2 Kurzeinführung in die Progrmmiersprche C 2.7 Progrmmstruktur & Module 10 Werteustusch zwischen Funktionen Mechnismus Aufrufer Funktion Funktion Aufrufer Prmeter j mit Hilfe von Zeigern Funktionswert

Mehr

3. Gültigkeit von Definitionen

3. Gültigkeit von Definitionen 3. Gültigkeit von Definitionen GPS-3-1 Themen dieses Kpitels: Definition und Bindung von Bezeichnern Verdeckungsregeln für die Gültigkeit von Definitionen Gültigkeitsregeln in Progrmmiersprchen 2005 bei

Mehr

Zentrale Fragestellung. Grundsätzliche Überlegungen über die Struktur eines Programms vor Beginn der Programmierung. Verschiedene Design-Methoden

Zentrale Fragestellung. Grundsätzliche Überlegungen über die Struktur eines Programms vor Beginn der Programmierung. Verschiedene Design-Methoden 7 Progrmmstruktur & Module 7Progrmmstruktur & Module 7.1 Softwredesign 7.1 Softwredesign Grundsätzliche Überlegungen über die Struktur eines Progrmms vor Beginn der Progrmmierung Verschiedene Design-Methoden

Mehr

F Zeiger, Felder und Strukturen in C

F Zeiger, Felder und Strukturen in C F Zeiger, Feder und Strukturen in C F Zeiger, Feder und Strukturen in C 3 Definition von Zeigervriben F.1 Zeiger(-Vriben) F.1 Zeiger(-Vriben) Syntx: Typ *Nme ; 1 Einordnung Konstnte: Bezeichnung für einen

Mehr

3 Module in C. 4 Gültigkeit von Namen. 5 Globale Variablen (2) Gültig im gesamten Programm

3 Module in C. 4 Gültigkeit von Namen. 5 Globale Variablen (2) Gültig im gesamten Programm 3 Module in C 5 Glole Vrilen!!!.c Quelldteien uf keinen Fll mit Hilfe der #include Anweisung in ndere Quelldteien einkopieren Bevor eine Funktion us einem nderen Modul ufgerufen werden knn, muss sie deklriert

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Progrmmierung Bis jetzt kennen wir (fst) nur primitive Dtentypen. Diese entsprechen weitestgehend der Hrdwre des Rechners (z.b. besitzt ein Rechner Hrdwre um zwei flots zu ddieren). Wir

Mehr

Ausdrücke haben einen Wert sin(math.pi) wird zu 1 sin(kreisradius) wird zur Laufzeit ausgewertet. Informatik I Kapitel 6

Ausdrücke haben einen Wert sin(math.pi) wird zu 1 sin(kreisradius) wird zur Laufzeit ausgewertet. Informatik I Kapitel 6 Informtik I Kpitel 6 Ausdrücke hben einen Wert sin(mth.pi) wird zu 1 sin(kreisrdius) wird zur Lufzeit usgewertet Elementre Konzepte von Progrmmiersprchen Zusmmenfssung des Kpitel 6 Küchlin, Weber, Einführung

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 7. Arrays

Grundlagen der Programmierung Prof. H. Mössenböck. 7. Arrays Grundlgen der Progrmmierung Prof. H. Mössenböck 7. Arrys Eindimensionle Arrys Arry = Tbelle gleichrtiger Elemente [0] [1] [2] [3] Nme bezeichnet ds gesmte Arry Elemente werden über Indizes ngesprochen

Mehr

Problem: Gliederung betrifft nur die Aktivitäten, nicht die Struktur der Daten

Problem: Gliederung betrifft nur die Aktivitäten, nicht die Struktur der Daten 7Progrmmstruktur 2. & Module 1 Softwredesign Grundsätzliche Überlegungen über die Struktur eines Progrmms vor Beginn der Progrmmierung Verschiedene Design-Methoden Top-down Entwurf / Prozedurle Progrmmierung

Mehr

Systemnahe Programmierung in C (SPiC)

Systemnahe Programmierung in C (SPiC) Systemnahe Programmierung in C (SPiC) 9 Funktionen Jürgen Kleinöder, Daniel Lohmann, Volkmar Sieh Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg

Mehr

Übungen zur Systemprogrammierung I Wintersemester 2001/2002

Übungen zur Systemprogrammierung I Wintersemester 2001/2002 1 Orgnistorisches Orgnistorisches Folien der Üungen im WWW Üungen zur Systemprogrmmierung I Wintersemester 2001/2002 URL zur Üung http://www4.informtik.uni-erlngen.de/lehre/ws01/v_sp1/ueung/ hier findet

Mehr

F Zeiger, Felder und Strukturen in C

F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts

Mehr

Grundlagen der Systemnahen Programmierung in C (GSPiC)

Grundlagen der Systemnahen Programmierung in C (GSPiC) Grundlagen der Systemnahen Programmierung in C (GSPiC) Überblick: Teil C Systemnahe Softwareentwicklung Teil C Systemnahe Softwareentwicklung 12 Programmstruktur und Module 13 Zeiger und Felder V_GSPIC_handout

Mehr

Grundlagen der Systemnahen Programmierung in C (GSPiC)

Grundlagen der Systemnahen Programmierung in C (GSPiC) Grundlagen der Systemnahen Programmierung in C (GSPiC) Teil C Systemnahe Softwareentwicklung Daniel Lohmann Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme V_GSPIC_handout Friedrich-Alexander-Universität

Mehr

Grundlagen der Systemnahen Programmierung in C (GSPiC)

Grundlagen der Systemnahen Programmierung in C (GSPiC) Grundlagen der Systemnahen Programmierung in C (GSPiC) Teil C Systemnahe Softwareentwicklung Daniel Lohmann Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme V_GSPIC_handout Friedrich-Alexander-Universität

Mehr

Grundlagen der Systemnahen Programmierung in C (GSPiC)

Grundlagen der Systemnahen Programmierung in C (GSPiC) Grundlagen der Systemnahen Programmierung in C (GSPiC) Überblick: Teil C Systemnahe Softwareentwicklung Teil C Systemnahe Softwareentwicklung 12 Programmstruktur und Module 13 Zeiger und Felder V_GSPIC_handout

Mehr

Überblick: Teil B Einführung in C

Überblick: Teil B Einführung in C Überblick: Teil B Einführung in C 3 Java versus C Erste Beispiele 4 Softwareschichten und Abstraktion 5 Sprachüberblick 6 Einfache Datentypen 7 Operatoren und Ausdrücke 8 Kontrollstrukturen V_SPIC_handout

Mehr

11-Praeprozessor: c dl SPiC (Teil B, SS 13) 11 Präprozessor 11.1 Einführung Leeres Makro (Flag)

11-Praeprozessor: c dl SPiC (Teil B, SS 13) 11 Präprozessor 11.1 Einführung Leeres Makro (Flag) Überblick: Teil B Einführung in C Der C-Präprozessor 3 Java versus C Erste Beispiele 4 Softwareschichten und Abstraktion 5 Sprachüberblick 6 Einfache Datentypen Bevor eine C-Quelldatei übersetzt wird,

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Objektorientierte Programmierung. Objektorientierte Programmierung

Objektorientierte Programmierung. Objektorientierte Programmierung. Objektorientierte Programmierung. Objektorientierte Programmierung Ojektorientierte Progrmmierung Bis jetzt kennen wir (fst) nur primitive Dtentypen. Ojektorientierte Progrmmierung Angenommen wir möchten eine Adressverwltung schreien. Dzu müßten wir zunächst eine Adresse

Mehr

Grundlagen der Systemnahen Programmierung in C (GSPiC)

Grundlagen der Systemnahen Programmierung in C (GSPiC) Grundlagen der Systemnahen Programmierung in C (GSPiC) Teil C Systemnahe Softwareentwicklung Daniel Lohmann Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme V_GSPIC_handout Friedrich-Alexander-Universität

Mehr

5.2 BASIC MSC (BMSC) BASIC MSC. Kommunikation zwischen Instanzen. Message Sequence Charts

5.2 BASIC MSC (BMSC) BASIC MSC. Kommunikation zwischen Instanzen. Message Sequence Charts BASIC MSC Ein System besteht us Instnzen. Eine Instnz ist eine bstrkte Einheit, deren Interktion mit nderen Instnzen oder mit der Umgebung mn (teilweise) beobchten knn. Instnzen kommunizieren untereinnder

Mehr

Programmieren in C/C++ und MATLAB. Programmieren in C/C++ und MATLAB. Sebastian Bauer Sven Willert Sabine Schmidt

Programmieren in C/C++ und MATLAB. Programmieren in C/C++ und MATLAB. Sebastian Bauer Sven Willert Sabine Schmidt Progrmmieren in C/C und MATLAB Sestin Buer Sven Willert Sine Schmidt Institut für Geowissenschften Christin-Alrechts-Universität zu Kiel Sestin Buer Institut für Geowissenschften Progrmmieren in C/C und

Mehr

2. Das Rechnen mit ganzen Zahlen (Rechnen in )

2. Das Rechnen mit ganzen Zahlen (Rechnen in ) . Ds Rechnen mit gnzen Zhlen (Rechnen in ).1 Addition und Subtrktion 5 + = 7 Summnd Summnd Summe 5 - = Minuend Subtrhend Differenz In Aussgen mit Vriblen lssen sich nur gleiche Vriblen ddieren bzw. subtrhieren.

Mehr

Grundlagen der Systemnahen Programmierung in C (GSPiC)

Grundlagen der Systemnahen Programmierung in C (GSPiC) Grundlagen der Systemnahen Programmierung in C (GSPiC) Teil C Systemnahe Softwareentwicklung Daniel Lohmann Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme V_GSPIC_handout Friedrich-Alexander-Universität

Mehr

Satz 6.5 (Mittelwertsatz der Integralrechnung) Sei f : [a, b] R stetig. Dann gibt es ein ξ [a, b], so dass. b a. f dx = (b a)f(ξ) f dx (b a)m.

Satz 6.5 (Mittelwertsatz der Integralrechnung) Sei f : [a, b] R stetig. Dann gibt es ein ξ [a, b], so dass. b a. f dx = (b a)f(ξ) f dx (b a)m. Stz 6.5 (Mittelwertstz der Integrlrechnung) Sei f : [, b] R stetig. Dnn gibt es ein ξ [, b], so dss 9:08.06.2015 gilt. f dx = (b )f(ξ) Lemm 6.6 Sei f : [, b] R stetig und m f(x) M für lle x [, b]. Dnn

Mehr

RWTH Aachen Lehrgebiet Theoretische Informatik Rossmanith Dreier Hark Kuinke. SS 2017 Blatt

RWTH Aachen Lehrgebiet Theoretische Informatik Rossmanith Dreier Hark Kuinke. SS 2017 Blatt RWTH Achen Lehrgeiet Theoretische Informtik Rossmnith Dreier Hrk Kuinke SS 2017 Bltt 4 22.5.2017 Lösungsvorschlg zur Vorlesung Formle Sprchen, Automten und Prozesse Aufge T11 1. L, d L, er / L. L, d für

Mehr

2. Das Rechnen mit ganzen Zahlen (Rechnen in )

2. Das Rechnen mit ganzen Zahlen (Rechnen in ) . Ds Rechnen mit gnzen Zhlen (Rechnen in ).1 Addition und Subtrktion 5 + = 7 Summnd Summnd Summe 5 - = 3 Minuend Subtrhend Differenz In Aussgen mit Vriblen lssen sich nur gleiche Vriblen ddieren bzw. subtrhieren.

Mehr

G2 Grundlagen der Vektorrechnung

G2 Grundlagen der Vektorrechnung G Grundlgen der Vektorrechnung G Grundlgen der Vektorrechnung G. Die Vektorräume R und R Vektoren Beispiel: Physiklische Größen wie Krft und Geschwindigkeit werden nicht nur durch ihre Mßzhl und ihre Einheit,

Mehr

HM I Tutorium 14. Lucas Kunz. 9. Februar 2018

HM I Tutorium 14. Lucas Kunz. 9. Februar 2018 HM I Tutorium 14 Lucs Kunz 9. Februr 218 Inhltsverzeichnis 1 Theorie 2 1.1 Uneigentliche Integrle............................. 2 1.1.1 Typ 1.................................. 2 1.1.2 Typ 2..................................

Mehr

x x x Eine solche Verzweigung ist als Verzweigung der vom Signal getragenen Information

x x x Eine solche Verzweigung ist als Verzweigung der vom Signal getragenen Information 73 3.4.4 Signlflußplndrstellung Neben dem bisher behndelten rein mthemtischen Modellen in Gleichungsform zur Beschreibung des Signlübertrgungsverhltens dynmischer Systeme eistiert noch eine bildliche und

Mehr

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz

Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public

Mehr

Multiplikative Inverse

Multiplikative Inverse Multipliktive Inverse Ein Streifzug durch ds Bruchrechnen in Restklssen von Yimin Ge, Jänner 2006 Viele Leute hben Probleme dbei, Brüche und Restklssen unter einen Hut zu bringen. Dieser kurze Aufstz soll

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011 Automten und Formle Sprchen lis Theoretische Informtik Sommersemester 011 Dr. Snder Bruggink Üungsleitung: Jn Stückrth Snder Bruggink Automten und Formle Sprchen 1 Reguläre Sprchen Wir eschäftigen uns

Mehr

FORMALE SYSTEME. 7. Vorlesung: Reguläre Ausdrücke. TU Dresden, 2. November Markus Krötzsch

FORMALE SYSTEME. 7. Vorlesung: Reguläre Ausdrücke. TU Dresden, 2. November Markus Krötzsch FORMALE SYSTEME 7. Vorlesung: Reguläre Ausdrücke Mrkus Krötzsch TU Dresden, 2. November 2017 Rndll Munroe, https://xkcd.com/851_mke_it_better/, CC-BY-NC 2.5 Mrkus Krötzsch, 2. November 2017 Formle Systeme

Mehr

Informatik I Modul 3: Schaltnetze

Informatik I Modul 3: Schaltnetze Herbstsemester 2, Institut für Informtik IFI, UZH, Schweiz Informtik I Modul 3: Schltnetze 2 Burkhrd Stiller M3 Modul 3: Schltnetze Einführung in die formlen Grundlgen logischer Beschreibungen Boolesche

Mehr

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2) Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/

Mehr

6. Quadratische Gleichungen

6. Quadratische Gleichungen 6. Qudrtische Gleichungen 6. Vorbemerkungen Potenzieren und Wurzelziehen, somit uch Qudrieren und Ziehen der Qudrtwurzel, sind entgegengesetzte Opertionen. Sie heben sich gegenseitig uf. qudrieren Qudrtwurzel

Mehr

Rückblick auf die letzte Vorlesung

Rückblick auf die letzte Vorlesung Rückblick uf die letzte Vorlesung 1. Ljpunov-Funktion 2. Rndwertprobleme 3. Lösbrkeit und Eindeutigkeit Ausblick uf die heutige Vorlesung 1. Vritionsrechnung 2. Brchistochrone 3. Euler-Lgrnge Gleichung

Mehr

Übungen mit dem Applet Grundfunktionen und ihre Integrale

Übungen mit dem Applet Grundfunktionen und ihre Integrale Grundfunktionen und ihre Integrle 1 Übungen mit dem Applet Grundfunktionen und ihre Integrle 1 Ziele des Applets... 2 2 Begriffe und ihre Drstellung mit dem Applet... 2 b 2.1 Bestimmtes Integrl I (b) =

Mehr

6.4 Die Cauchysche Integralformel

6.4 Die Cauchysche Integralformel Die Cuchysche Integrlformel 6.4 39 Abb 6 Integrtionswege im Fresnelintegrl r ir 2 r 6.4 Die Cuchysche Integrlformel Aus dem Cuchyschen Integrlst folgt eine fundmentle Formel für die Drstellung einer holomorphen

Mehr

Erstellen einer DLL-Datei zur Verwendung in LabView 8.2 mittels Microsoft Visual C Express Edition

Erstellen einer DLL-Datei zur Verwendung in LabView 8.2 mittels Microsoft Visual C Express Edition Seite: 1 von 5 Erstellen einer DLL-Dtei zur Verwendung in LView 8.2 mittels Mirosoft Visul C++ 2005 Express Edition Im Auftrg von Dieses Dokument ist in keiner Weise urheerrehtlih geshützt und drf von

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC)

Übungen zu Systemnahe Programmierung in C (SPiC) Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier (Lehrstuhl Informatik 4) Übung 4 Sommersemester 2016 Inhalt Module Schnittstellenbeschreibung Ablauf vom Quellcode zum laufenden Programm

Mehr

Real-time Simulation Center for Automation

Real-time Simulation Center for Automation we use it: for Virtul Commissioning Seite 0 Rel-time Simultion Center for Automtion Automtisierungssysteme (AS) - us externen Dtenbsen Ziele: utomtisches Simultions-Engineering gesicherte Qulität schnelles

Mehr

Felder (Arrays) und Zeiger (Pointers) - Teil I

Felder (Arrays) und Zeiger (Pointers) - Teil I Felder (Arrays) und Zeiger (Pointers) - Teil I Feldtypen, Sieb des Eratosthenes, Iteration, Zeigertypen, Zeigerarithmetik, dynamische Speicherverwaltung Felder: Motivation n Wir können jetzt über Zahlen

Mehr

1. Voraussetzung. 2. Erste Schritte 2.1. Web-Account anlegen Einloggen

1. Voraussetzung. 2. Erste Schritte 2.1. Web-Account anlegen Einloggen Toll Collect Serviceprtner-Portl ANLEITUNG Inhlt 1. Vorussetzung 2. Erste Schritte 2.1. Web-Account nlegen 2. 2. Einloggen 3. Serviceprtner-Portl verwenden 3.1. Überblick (Strtseite) 3.2. Fhrzeugdten suchen

Mehr

Quadratische Funktionen

Quadratische Funktionen Qudrtische Funktionen Die Scheitelpunktform ist eine spezielle Drstellungsform von qudrtischen Funktionen, nhnd der viele geometrische Eigenschften des Funktionsgrphen bgelesen werden können. Abbildung

Mehr

7-1 Elementare Zahlentheorie. 1 a ist quadratischer Rest modulo p, 1 falls gilt a ist quadratischer Nichtrest modulo p, 0 p a. mod p, so ist.

7-1 Elementare Zahlentheorie. 1 a ist quadratischer Rest modulo p, 1 falls gilt a ist quadratischer Nichtrest modulo p, 0 p a. mod p, so ist. 7-1 Elementre Zhlentheorie 7 Ds udrtische Rezirozitätsgesetz 70 Erinnerung Sei eine ungerde Primzhl, sei Z In 114 wurde ds Legendre-Symbol eingeführt: 1 ist udrtischer Rest modulo, 1 flls gilt ist udrtischer

Mehr

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Globale Variablen

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Inhalt. Globale Variablen Übungen zu Systemnahe Programmierung in C (SPiC) Peter Wägemann, Heiko Janker, Moritz Strübe, Rainer Müller () Wintersemester 24/25 volatile Verwendung Module Hinweise zur Aufgabe Übungen zu SPiC (WS 24/5)

Mehr

Python 1. Vorlesung Computerlinguistische Techniken Alexander Koller. 27. Oktober 2014

Python 1. Vorlesung Computerlinguistische Techniken Alexander Koller. 27. Oktober 2014 Python 1 Vorlesung Computerlinguistische Techniken Alexnder Koller 27. Oktober 2014 Übersicht Rest von hift-reduce Ws ist Python und wrum lernen wir es? Ausdrücke und Anweisungen Komplexe Dtentypen und

Mehr

E Mikrocontroller-Programmierung. E.2 Beispiel: AVR-Mikrocontroller (ATmega-Serie) 1 Mikrocontroller-Umgebung. E.1 Überblick.

E Mikrocontroller-Programmierung. E.2 Beispiel: AVR-Mikrocontroller (ATmega-Serie) 1 Mikrocontroller-Umgebung. E.1 Überblick. E Mikrocontroller-Progrmmierung E Mikrocontroller-Progrmmierung 1 Mikrocontroller-Umgebung E.1 Überblick E.1 Überblick Mikrocontroller-Umgebung Prozessor m Beispiel AVR-Mikrocontroller Speicher Peripherie

Mehr

Bisher haben wir keine Annahmen bzgl. der Sortierung der gegebenen Werte gemacht, d.h. sie durften in beliebiger Reihenfolge im Array a stehen

Bisher haben wir keine Annahmen bzgl. der Sortierung der gegebenen Werte gemacht, d.h. sie durften in beliebiger Reihenfolge im Array a stehen 4.2.2 Binäre Suche Bisher hben wir keine Annhmen bzgl. der Sortierung der gegebenen Werte gemcht, d.h. sie durften in beliebiger Reihenfolge im Arry stehen Nehmen wir n, dss die Werte im Arry gemäß der

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case

Mehr

Gliederung. Kapitel 1: Endliche Automaten

Gliederung. Kapitel 1: Endliche Automaten Gliederung 0. Motivtion und Einordnung 1. Endliche Automten 2. Formle Sprchen 3. Berechnungstheorie 4. Komplexitätstheorie 1.1. 1.2. Minimierungslgorithmus 1.3. Grenzen endlicher Automten 1/1, S. 1 2017

Mehr

Falls die Werte von X als Ergebnisse eines Zufallsvorgangs resultieren, wird X zu einer stetigen Zufallsvariable.

Falls die Werte von X als Ergebnisse eines Zufallsvorgangs resultieren, wird X zu einer stetigen Zufallsvariable. Sttistik I für Sttistiker, Mthemtiker und Informtiker Lösungen zu Bltt 11 Gerhrd Tutz, Jn Ulbricht, Jn Gertheiss WS 7/8 Theorie: Stetige Zufllsvriblen Begriff Stetigkeit: Eine Vrible oder ein Merkml X

Mehr

Mathematik mit Mathcad. 2.6 Terme. Eine Aussage ist eine Äußerung, von der man entscheiden kann, ob sie wahr oder falsch ist.

Mathematik mit Mathcad. 2.6 Terme. Eine Aussage ist eine Äußerung, von der man entscheiden kann, ob sie wahr oder falsch ist. Mthemtik mit Mthcd MK 4.5.0 0_06_Grund_Terme.mcd Mthemtische Aussgen.6 Terme Eine Aussge ist eine Äußerung, von der mn entscheiden knn, ob sie whr oder flsch ist. Es regnet ( ) > 5 ( f ) Mein Auto ht vier

Mehr

Felder (Arrays) und Zeiger (Pointers) - Teil I

Felder (Arrays) und Zeiger (Pointers) - Teil I Felder (Arrays) und Zeiger (Pointers) - Teil I Feldtypen, Sieb des Eratosthenes, Iteration, Zeigertypen, Zeigerarithmetik, dynamische Speicherverwaltung Felder: Motivation Wir können jetzt über Zahlen

Mehr

Berlin Klassik Mehr. 2. Helft Vater Huber bei der Entscheidung, indem ihr die Tabelle ausfüllt kwh kostet der Strom pro Jahr:

Berlin Klassik Mehr. 2. Helft Vater Huber bei der Entscheidung, indem ihr die Tabelle ausfüllt kwh kostet der Strom pro Jahr: 4 Terme, Vriblen und Gleichungen LS 01.M1 Fmilie Huber zieht in Kürze von Byern nch Berlin um. Sie hben eine schöne Wohnung gefun. Leider hben sie noch keinen Strom! Nun sitzt Vter Huber uf Umzugskisten

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 8: Felder und Zeichenketten Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen

Mehr

Mathematik Name: Vorbereitung KA2 K1 Punkte:

Mathematik Name: Vorbereitung KA2 K1 Punkte: Pflichtteil (etw 40 min) Ohne Tschenrechner und ohne Formelsmmlung (Dieser Teil muss mit den Lösungen bgegeben sein, ehe der GTR und die Formlsmmlung verwendet werden dürfen.) Aufgbe : [4P] Leiten Sie

Mehr

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1 Kapitel 13 Definition von Klassen OOP Thomas Klinker 1 OOP Thomas Klinker 2 Datenabstraktion Der Mensch abstrahiert, um komplexe Sachverhalte darzustellen. Dinge und Vorgänge werden auf das wesentliche

Mehr

Algebraische Topologie WS 2016/17 Lösungen der Woche 9

Algebraische Topologie WS 2016/17 Lösungen der Woche 9 6.132 - Algebrische Topologie WS 2016/17 Lösungen der Woche 9 Mrtin Frnklnd 5.1.2017 Aufgbe 1. Es sei X ein Rum und X = α U α eine disjunkte Vereinigung offener Teilmengen U α X. Zeigen Sie, dss X ds Koprodukt

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Automaten mit dot erstellen

Automaten mit dot erstellen Automten mit dot erstellen 1 Ws ist dot? dot ist ein Progrmm zum Kompilieren von dot-dteien in verschiedene Grfikformte, sowie der Nme einer Sprche, mit der mn Grphen spezifizieren knn. Unter Anderem können

Mehr

Klausur über den Stoff der Vorlesung Grundlagen der Informatik II (90 Minuten)

Klausur über den Stoff der Vorlesung Grundlagen der Informatik II (90 Minuten) Institut für Angewndte Informtik und Formle Beschreiungsverfhren 2.7.24 Klusur üer den Stoff der Vorlesung Grundlgen der Informtik II (9 Minuten) Nme: Vornme: Mtr.-Nr.: Semester: (SS 24) Ich estätige,

Mehr

Def.: Sei Σ eine Menge von Zeichen. Die Menge Σ* aller Zeichenketten (Wörter) über Σ ist die kleinste Menge, für die gilt:

Def.: Sei Σ eine Menge von Zeichen. Die Menge Σ* aller Zeichenketten (Wörter) über Σ ist die kleinste Menge, für die gilt: 8. Grundlgen der Informtionstheorie 8.1 Informtionsgehlt, Entropie, Redundnz Def.: Sei Σ eine Menge von Zeichen. Die Menge Σ* ller Zeichenketten (Wörter) über Σ ist die kleinste Menge, für die gilt: 1.

Mehr

Programmieren in C/C++ und Matlab

Programmieren in C/C++ und Matlab Progrmmieren in C/C und Mtl Sine Schmidt & Sestin Buer Institut für Geowissenschften Christin-Alrechts-Universität zu Kiel Progrmmieren in C/C und Mtl CAU, SS 08 for- / while-schleifen: - numerische Integrlerechnung

Mehr

Exportmodul Artikel-Nr.: 20208

Exportmodul Artikel-Nr.: 20208 Seite 1 / 5 V5.32 Exportmodul Artikel-Nr.: 20208 Erweiterungsmodul für ds ELV-TimeMster Komplettsystem Hndbuch und Beschreibungen Ab der Version 5 befinden sich die Kurznleitung und ds gesmte Hndbuch ls

Mehr

Ungleichungen. Jan Pöschko. 28. Mai Einführung

Ungleichungen. Jan Pöschko. 28. Mai Einführung Ungleichungen Jn Pöschko 8. Mi 009 Inhltsverzeichnis Einführung. Ws sind Ungleichungen?................................. Äquivlenzumformungen..................................3 Rechnen mit Ungleichungen...............................

Mehr

FORMALE SYSTEME. Kleene s Theorem. Wiederholung: Reguläre Ausdrücke. 7. Vorlesung: Reguläre Ausdrücke. TU Dresden, 2.

FORMALE SYSTEME. Kleene s Theorem. Wiederholung: Reguläre Ausdrücke. 7. Vorlesung: Reguläre Ausdrücke. TU Dresden, 2. FORMALE SYSTEME 7. Vorlesung: Reguläre Ausdrücke Mrkus Krötzsch Rndll Munroe, https://xkcd.com/851_mke_it_etter/, CC-BY-NC 2.5 TU Dresden, 2. Novemer 2017 Mrkus Krötzsch, 2. Novemer 2017 Formle Systeme

Mehr

1 Zeiger als Funktionsargumente. U3-1 einfache swap_double Funktion. 1 Zeiger als Funktionsargumente. 1 Zeiger als Funktionsargumente.

1 Zeiger als Funktionsargumente. U3-1 einfache swap_double Funktion. 1 Zeiger als Funktionsargumente. 1 Zeiger als Funktionsargumente. U3 3. Üung U3 3. Üung 1 Zeiger l Funktionrgumente U3-1 einfche wp_doule Funktion Aufge 2 U3-1 einfche wp_doule Funktion Prmeter werden in C y-vlue üergeen die ufgerufene Funktion knn den ktuellen Prmeter

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2017/18

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2017/18 Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2017/18 Übung 3 Benedict Herzog Sebastian Maier Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für

Mehr

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2018/19

Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2018/19 Übungen zu Systemnahe Programmierung in C (SPiC) Wintersemester 2018/19 Übung 3 Rebecca Felsheim Benedict Herzog Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für

Mehr

Automaten und formale Sprachen Notizen zu den Folien

Automaten und formale Sprachen Notizen zu den Folien 5 Ds Pumping Lemm Schufchprinzip (Folie 144) Automten und formle Sprchen Notizen zu den Folien Im Block Ds Schufchprinzip für endliche Automten steht m n (sttt m > n), weil die Länge eines Pfdes die Anzhl

Mehr

Universität Karlsruhe Institut für Theoretische Informatik. Klausur: Informatik III

Universität Karlsruhe Institut für Theoretische Informatik. Klausur: Informatik III Nme Vornme Mtrikelnummer Lösungsvorschlg Universität Krlsruhe Institut für Theoretische Informtik o. Prof. Dr. P. Snders 8. März 2006 Klusur: Informtik III Aufgbe 1. Multiple Choice 10 Punkte Aufgbe 2.

Mehr

Felder (Arrays) und Zeiger (Pointers) - Teil I

Felder (Arrays) und Zeiger (Pointers) - Teil I Felder (Arrays) und Zeiger (Pointers) - Teil I Felder: Motivation Wir können jetzt über Zahlen iterieren: for (int i=0; i

Mehr

Zeiger in C und C++ Zeiger in Java und C/C++

Zeiger in C und C++ Zeiger in Java und C/C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,

Mehr

Vorlesung. Einführung in die mathematische Sprache und naive Mengenlehre

Vorlesung. Einführung in die mathematische Sprache und naive Mengenlehre Vorlesung Einführung in die mthemtische Sprche und nive Mengenlehre 1 Allgemeines RUD26 Erwin-Schrödinger-Zentrum (ESZ) RUD25 Johnn-von-Neumnn-Hus Fchschft Menge ller Studenten eines Institutes Fchschftsrt

Mehr

Finite-State Technology

Finite-State Technology Finite-Stte Technology Teil IV: Automten (2. Teil) 1 Definition eines -NEA Ein -NEA ist ein Quintupel A = (Q,, δ, q0, F), wobei Q = eine endliche Menge von Zuständen = eine endliche Menge von Eingbesymbolen

Mehr

4. Lineare Gleichungen mit einer Variablen

4. Lineare Gleichungen mit einer Variablen 4. Linere Gleichungen mit einer Vrilen 4. Einleitung Werden zwei Terme einnder gleichgesetzt, sprechen wir von einer Gleichung. Enthlten eide Terme nur Zhlen, so entsteht eine Aussge, die whr oder flsch

Mehr

S 1. Definition: Ein endlicher Automat ist ein 5-Tupel. Das endliche Eingabealphabet

S 1. Definition: Ein endlicher Automat ist ein 5-Tupel. Das endliche Eingabealphabet Der endliche Automt Modell: Eingend rechtsseitig unegrenzt F F F F F F F F F F F F F F Lesekopf S 1 Definition: Ein endlicher Automt ist ein 5-Tupel A = ( Σ;S;F;s 0 ; ϕ ) Dei ist Σ= {e 1;e 2...e n} Ds

Mehr

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Schnittstellenbeschreibung. Inhalt

Inhalt. Übungen zu Systemnahe Programmierung in C (SPiC) Schnittstellenbeschreibung. Inhalt Übungen zu Systemnahe Programmierung in C (SPiC) Sebastian Maier () Übung 4 Schnittstellenbeschreibung Ablauf vom Quellcode zum laufenden Programm Initialisierung eines Moduls Active-high & Active-low

Mehr

Grundlagen zu Datenstrukturen und Algorithmen Schmitt, Schömer SS 2001

Grundlagen zu Datenstrukturen und Algorithmen Schmitt, Schömer SS 2001 Grundlgen zu Dtenstrukturen und Algorithmen Schmitt, Schömer SS 001 http://www.mpi-sb.mpg.de/~sschmitt/info5-ss01 U N S A R I V E R S A V I E I T A S N I S S Lösungsvorschläge für ds 4. Übungsbltt Letzte

Mehr

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Wintersemester 2017/18

Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Wintersemester 2017/18 Übungen zu Grundlagen der systemnahen Programmierung in C (GSPiC) im Wintersemester 2017/18 2017-11-21 Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl

Mehr

Kurvenintegrale. 17. Juli 2006 (Korrigierte 2. Version) 1 Kurvenintegrale 1. Art (d.h. f ist Zahl, kein Vektor)

Kurvenintegrale. 17. Juli 2006 (Korrigierte 2. Version) 1 Kurvenintegrale 1. Art (d.h. f ist Zahl, kein Vektor) Kurvenintegrle Christin Mosch, Theoretische Chemie, Universität Ulm, christin.mosch@uni-ulm.de 7. Juli 26 (Korrigierte 2. Version Kurvenintegrle. Art (d.h. f ist Zhl, kein Vektor Bei Kurvenintegrlen. Art

Mehr

Laborübung aus Systemnahe Programmierung

Laborübung aus Systemnahe Programmierung Laborübung aus Systemnahe Programmierung C - Block für Fortgeschrittene Roman Obermaisser Institut für Technische Informatik 2008 Systemprogrammierung C-Block 1 Übersicht Strukturen Eigene Typen Funktionen

Mehr

Berechenbarkeitstheorie 4. Vorlesung

Berechenbarkeitstheorie 4. Vorlesung 1 Berechenbrkeitstheorie Dr. Institut für Mthemtische Logik und Grundlgenforschung WWU Münster WS 15/16 Alle Folien unter Cretive Commons Attribution-NonCommercil 3.0 Unported Lizenz. Reguläre Ausdrücke

Mehr

Minimierung von DFAs. Minimierung 21 / 98

Minimierung von DFAs. Minimierung 21 / 98 Minimierung von DFAs Minimierung 21 / 98 Ein Beispiel: Die reguläre Sprche L({, } ) Wie stellt mn fest, o ein Wort ds Suffix esitzt? Ein erster Anstz: Speichere im ktuellen Zustnd die eiden zuletzt gelesenen

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

ShareProjects im Einsatz Recording Projects and Times Mobile

ShareProjects im Einsatz Recording Projects and Times Mobile ShreProjects im Einstz Recording Projects nd Times Mobile Agend Übersicht Home Projekte verwlten Projekte nlegen Strukturierungsvorschlg Projektufgben nlegen Projektrum nlegen Filterfunktion Projektrum

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kurzer Einschub: das Schubfachprinzip.

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kurzer Einschub: das Schubfachprinzip. Reguläre Sprchen Automten und Formle Sprchen lis Theoretische Informtik Sommersemester 0 Ds Pumping-Lemm Wir hen is jetzt vier Formlismen kennengelernt, mit denen wir eine reguläre Sprche ngeen können:

Mehr

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr