Systemnahe Programmierung in C (SPiC)
|
|
- Helmuth Maximilian Wagner
- vor 5 Jahren
- Abrufe
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;
Ü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 12 Programmstruktur und Module 13 Zeiger und Felder 14 µc-systemarchitektur Einordnung: Zeiger (Pointer) Literal: a Darstellung eines Wertes a 0110 0001
MehrGrundlagen 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
MehrSystemnahe 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
MehrGrundlagen 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
MehrGrundlagen 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
Mehr2 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
MehrMechanismus 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
Mehr3. 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
MehrZentrale 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
MehrF 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
Mehr3 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
MehrObjektorientierte 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
MehrAusdrü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
MehrGrundlagen 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
MehrProblem: 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
MehrSystemnahe 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
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
MehrF 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
MehrGrundlagen 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
MehrGrundlagen 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
MehrGrundlagen 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
MehrGrundlagen 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 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
Mehr11-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,
MehrObjektorientierte 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
MehrGrundlagen 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
Mehr5.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
MehrProgrammieren 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
Mehr2. 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.
MehrGrundlagen 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
MehrSatz 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
MehrRWTH 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
Mehr2. 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.
MehrG2 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,
MehrHM 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..................................
Mehrx 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
MehrEinfü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
MehrMultiplikative 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
MehrAutomaten 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
MehrFORMALE 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
MehrInformatik 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
MehrBetriebssysteme, 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/
Mehr6. 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
MehrRü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
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) =
Mehr6.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
MehrErstellen 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) Sebastian Maier (Lehrstuhl Informatik 4) Übung 4 Sommersemester 2016 Inhalt Module Schnittstellenbeschreibung Ablauf vom Quellcode zum laufenden Programm
MehrReal-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
MehrFelder (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
Mehr1. 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
MehrQuadratische Funktionen
Qudrtische Funktionen Die Scheitelpunktform ist eine spezielle Drstellungsform von qudrtischen Funktionen, nhnd der viele geometrische Eigenschften des Funktionsgrphen bgelesen werden können. Abbildung
Mehr7-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
MehrInhalt. Ü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)
MehrPython 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
MehrE 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
MehrBisher 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
MehrRepetitorium 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
MehrGliederung. 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
MehrFalls 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
MehrMathematik 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
MehrFelder (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
MehrBerlin 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
MehrProgrammiersprachen 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
MehrMathematik 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
MehrKapitel 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
MehrAlgebraische 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
MehrProgrammiertechnik. 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
MehrEinstieg 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
MehrAutomaten 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
MehrKlausur ü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,
MehrDef.: 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.
MehrProgrammieren 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
MehrExportmodul 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
MehrUngleichungen. 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...............................
MehrFORMALE 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
Mehr1 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 Ü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 Übung 3 Rebecca Felsheim Benedict Herzog Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl für
MehrAutomaten 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
MehrUniversitä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.
MehrFelder (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
MehrZeiger 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,
MehrVorlesung. 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
MehrFinite-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
Mehr4. 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
MehrS 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
MehrInhalt. Ü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
MehrGrundlagen 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 2017-11-21 Bernhard Heinloth Lehrstuhl für Informatik 4 Friedrich-Alexander-Universität Erlangen-Nürnberg Lehrstuhl
MehrKurvenintegrale. 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
MehrLaborü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
MehrBerechenbarkeitstheorie 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
MehrMinimierung 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
MehrProgrammierung 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
MehrShareProjects 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
MehrAutomaten 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:
MehrVariablen. 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