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

Größe: px
Ab Seite anzeigen:

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

Transkript

1 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 trditionelle Methode bis Mitte der 80er Jhre fst usschließlich verwendet n Progrmmiersprchen wie Fortrn, Cobol, Pscl oder C orientiert Objekt-orientierter Entwurf moderne, sehr ktuelle Methode Ziel: Bewältigung sehr komplexer Probleme uf Progrmmiersprchen wie C++, Smlltlk oder Jv usgerichtet 2 Top-down Entwurf (2) Problem: Gliederung betrifft nur die Aktivitäten, nicht die Struktur der Dten Gefhr: Sehr viele Funktionen rbeiten "wild" uf einer Unmenge schlecht strukturierter Dten Funktion1 Funktion2 Funktion3 Funktion4 Funktion5 Funktion6 Dten Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-25 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Top-down Entwurf Zentrle Frgestellung ws ist zu tun? in welche Teilufgben lässt sich die Aufgbe untergliedern? Beispiel: Rechnung für Kunden usgeben Rechnungspositionen zusmmenstellen Lieferungsposten einlesen Preis für Produkt ermitteln Mehrwertsteuer ermitteln Rechnungspositionen ddieren Positionen formtiert usdrucken 2 Top-down Entwurf (3) Modul-Bildung Lösung: Gliederung von Dtenbeständen zusmmen mit Funktionen, die druf operieren Funktion1 Modul Funktion2 Funktion4 Funktion3 Funktion5 Funktion6 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-26 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-28

2 3 Module in C Teile eines C-Progrmms können uf mehrere.c-dteien (C-Quelldteien) verteilt Logisch zusmmengehörende Dten und die druf operierenden Funktionen sollten jeweils zusmmengefsst Modul Jede C-Quelldtei knn seprt übersetzt (Option -c) Zwischenergebnis der Übersetzung wird in einer.o-dtei bgelegt % cc -c prog.c (erzeugt Dtei prog.o ) % cc -c f1.c (erzeugt Dtei f1.o ) % cc -c f2.c f3.c (erzeugt f2.o und f3.o ) Ds Kommndo cc knn mehrere.c Dteien übersetzen und ds Ergebnis zusmmen mit.o Dteien binden: % cc -o prog prog.o f1.o f2.o f3.o f4.c f5.c 4 Gültigkeit von Nmen Gültigkeitsregeln legen fest, welche Nmen (Vriblen und Funktionen) wo im Progrmm beknnt sind Mehrere Stufen 1. Globl im gesmten Progrmm (über Modul- und Funktionsgrenzen hinweg) 2. Globl in einem Modul (uch über Funktionsgrenzen hinweg) 3. Lokl innerhlb einer Funktion 4. Lokl innerhlb eines Blocks Überdeckung bei Nmensgleichheit eine lokle Vrible innerhlb einer Funktion überdeckt gleichnmige globle Vriblen eine lokle Vrible innerhlb eines Blocks überdeckt gleichnmige globle Vriblen und gleichnmige lokle Vriblen in umgebenden Blöcken Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-29 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Module in C (2)!!!.c Quelldteien uf keinen Fll mit Hilfe der #include Anweisung in ndere Quelldteien einkopieren Bevor eine Funktion us einem nderen Modul ufgerufen knn, muss sie deklriert Prmeter und Rückgbewerte müssen beknnt gemcht Mkrodefinitionen und Deklrtionen, die in mehreren Quelldteien eines Progrmms benötigt, zu Heder-Dteien zusmmengefsst Heder-Dteien mit der #include Anweisung des Preprozessors in C-Quelldteien einkopiert der Nme einer Heder-Dtei endet immer uf.h 5 Globle Vriblen Gültig im gesmten Progrmm Globle Vriblen ußerhlb von Funktionen definiert Globle Vriblen sind b der Definition in der gesmten Dtei zugreifbr Globle Vriblen, die in nderen Modulen definiert wurden, müssen vor dem ersten Zugriff beknntgemcht ( extern Deklrtion = Typ und Nme beknntmchen) Beispiele: extern Typ Nme extern int, b; extern chr c;, ; Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-30 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-32

3 5 Globle Vriblen (2) Probleme mit globlen Vriblen Zusmmenhng zwischen Dten und druf operierendem Progrmmcode geht verloren Funktionen können Vriblen ändern, ohne dss der Aufrufer dies erwrtet (Seiteneffekte) Progrmme sind schwer zu pflegen, weil bei Änderungen der Vriblen erst lle Progrmmteile, die sie nutzen gesucht müssen globle Vriblen möglichst vermeiden!!! 6 Einschränkung der Gültigkeit uf ein Modul Zugriff uf eine globle Vrible oder Funktion knn uf ds Modul (= die Dtei) beschränkt, in der sie definiert wurde Schlüsselwort sttic vor die Definition setzen sttic Vriblen-/Funktionsdefinition extern-deklrtionen in nderen Modulen sind nicht möglich Die sttic-vriblen bilden zusmmen den Zustnd eines Moduls, die Funktionen des Moduls operieren uf diesem Zustnd Hilfsfunktionen innerhlb eines Moduls, die nur von den Modulfunktionen benötigt, sollten immer sttic definiert sie ddurch nicht Bestndteil der Modulschnittstelle (= des "Vertrgs" mit den Modulbenutzern)!!! ds Schlüsselwort sttic gibt es uch bei loklen Vriblen (mit nderer Bedeutung!) Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-33 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Globle Funktionen Funktionen sind generell globl (es sei denn, die Erreichbrkeit wird explizit uf ds Modul begrenzt) Funktionen us nderen Modulen müssen ebenflls vor dem ersten Aufruf deklriert (= Typ, Nme und Prmetertypen beknntmchen) Ds Schlüsselwort extern ist bei einer Funktionsdeklrtion nicht notwendig 7 Lokle Vriblen Vriblen, die innerhlb einer Funktion oder eines Blocks definiert, sind lokle Vriblen bei Nmensgleichheit zu globlen Vriblen oder loklen Vriblen eines umgebenden Blocks gilt die jeweils letzte Definition lokle Vriblen sind ußerhlb des Blocks, in dem sie definiert wurden, nicht zugreifbr und hben dort keinen Einfluss uf die Zugreifbrkeit von Vriblen Beispiele: double sinus(double); flot power(flot, int); Globle Funktionen (und soweit vorhnden die globlen Dten) bilden die äußere Schnittstelle eines Moduls "vertrgliche" Zusicherung n den Benutzer des Moduls Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-34 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-36

4 8 Gültigkeitsbereiche Übersicht Funktion1 Funktion2 Funktion4 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-37 Funktion3 Funktion5 Funktion6 Modul1 Modul2 Modul3 globle Vriblen modul-lokle Vriblen =globl sttic funktionslokle Vriblen modullokle Funktion modul-lokle Funktion (= sttic) globle Funktionen 9 Lebensduer von Vriblen (2) uto-vriblen Alle loklen Vriblen sind utomtic-vriblen der Speicher wird bei Betreten des Blocks / der Funktion reserviert und bei Verlssen wieder freigegeben der Wert einer loklen Vriblen ist beim nächsten Betreten des Blocks nicht mehr sicher verfügbr! Lokle uto-vriblen können durch beliebige Ausdrücke initilisiert die Initilisierung wird bei jedem Eintritt in den Block wiederholt!!! wird eine uto-vrible nicht initilisiert, ist ihr Wert vor der ersten Zuweisung undefiniert (= irgendws) Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Lebensduer von Vriblen Die Lebensduer einer Vriblen bestimmt, wie lnge der Speicherpltz für die Vrible ufgehoben wird Zwei Arten Speicherpltz bleibt für die gesmte Progrmmusführungszeit reserviert sttische (sttic) Vriblen Speicherpltz wird bei Betreten eines Blocks reserviert und dnch wieder freigegeben dynmische (utomtic) Vriblen 9 Lebensduer von Vriblen (3) sttic-vriblen Der Speicher für lle globlen Vriblen ist generell von Progrmmstrt bis Progrmmende reserviert Lokle Vriblen erhlten bei Definition mit dem Schlüsselwort sttic eine Lebensduer über die gesmte Progrmmusführung hinweg der Inhlt bleibt bei Verlssen des Blocks erhlten und ist bei einem erneuten Eintreten in den Block noch verfügbr!!! Ds Schlüsselwort sttic ht bei globlen Vriblen eine völlig ndere Bedeutung (Einschränkung des Zugriffs uf ds Modul) Sttic-Vriblen können durch beliebige konstnte Ausdrücke initilisiert die Initilisierung wird nur einml beim Progrmmstrt vorgenommen (uch bei loklen Vriblen!) erfolgt keine explizite Initilisierung, wird utomtisch mit 0 vorbelegt Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-38 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-40

5 10 Werteustusch zwischen Funktionen Mechnismus Aufrufer Funktion Funktion Aufrufer Prmeter j mit Hilfe von Zeigern Funktionswert nein j globle Vriblen j j Verwendung globler Vriblen? Vriblen, die von vielen Funktionen verwendet und/oder oft ls Prmeter übergeben müssten Menge der Funktionen muss überschubr bleiben Zugriff uf Modul begrenzen (globle sttic-vriblen) sonst sehr schlechter Progrmmierstil Vriblen, die keiner Funktion ls Vrible oder Prmeter fest zugeordnet können Modul suchen, dem die Vrible zugeordnet knn!!! Vriblen, deren Lebensduer nicht beschränkt sein drf, die ber nicht in min() deklriert sollen in zugehöriger Funktion lokl-sttic defininieren Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Getrennte Übersetzung Beispiel (2) Heder-Dtei (Dtei trig.h ) #include <stdio.h> #define PI double tn(double), cot(double); double cos(double), sin(double); Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Getrennte Übersetzung von Progrmmteilen Beispiel Huptprogrmm (Dtei fplot.c ) #include "trig.h" #define INTERVALL 0.01 /* * Funktionswerte usgeben */ int min(void) chr c; double i; printf("funktion (Sin, Cos, Tn, cot)? "); scnf("%x", &c); switch (c) cse T : for (i=-pi/2; i < PI/2; i+=intervall) printf("%lf %lf\n", i, tn(i)); brek;; 11 Getrennte Übersetzung Beispiel (3) Trigonometrische Funktionen (Dtei trigfunc.c ) #include "trig.h" double tn(double x) return(sin(x)/cos(x)); double cot(double x) return(cos(x)/sin(x)); double cos(double x) return(sin(pi/2-x)); Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-42 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-44

6 11 Getrennte Übersetzung Beispiel (4) Trigonometrische Funktionen Fortsetzung (Dtei trigfunc.c ) double sin (double x) double summe; double x_qudrt; double rest; int k; k = 0; summe = 0.0; rest = x; x_qudrt = x*x; while ( fbs(rest) > 1e-9 ) summe += rest; k += 2; rest *= -x_qudrt/(k*(k+1)); return(summe); 2 Überblick Eine Zeigervrible (pointer) enthält ls Wert die Adresse einer nderen Vriblen der Zeiger verweist uf die Vrible Über diese Adresse knn mn indirekt uf die Vrible zugreifen Drus resultiert die große Bedeutung von Zeigern in C Funktionen können ihre Argumente verändern (cll-by-reference) dynmische Speicherverwltung effizientere Progrmme Aber uch Nchteile! Progrmmstruktur wird unübersichtlicher (welche Funktion knn uf welche Vrible zugreifen?) häufigste Fehlerquelle bei C-Progrmmen ' Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-45 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Zeiger(-Vriblen) 2. 3 Definition von Zeigervriblen 1 Einordnung Konstnte: Bezeichnung für einen Wert Syntx: Typ *Nme ; Beispiele Vrible: Bezeichnung eines Dtenobjekts Zeiger-Vrible (Pointer): Bezeichnung einer Referenz uf ein Dtenobjekt chr *p = &; int x = 5; int *; int y; = &x; y = *; ➋ x y 5 5 ➋ p Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-46 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-48

7 4 Adressopertoren 5 Zeiger ls Funktionsrgumente (2) Adressopertor &. &x Verweisopertor *. der unäre Adress-Opertor liefert eine Referenz uf den Inhlt der Vriblen (des Objekts) x *x der unäre Verweisopertor * ermöglicht den Zugriff uf den Inhlt der Vriblen (des Objekts), uf die der Zeiger x verweist min(void) int, b; void swp (int *, int *); swp(&, &b); b Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-49 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Zeiger ls Funktionsrgumente Prmeter in C by-vlue übergeben 5 Zeiger ls Funktionsrgumente (2) die ufgerufene Funktion knn den ktuellen Prmeter beim Aufrufer nicht verändern uch Zeiger by-vlue übergeben, d. h. die Funktion erhält lediglich eine Kopie des Adressverweises über diesen Verweis knn die Funktion jedoch mit Hilfe des *-Opertors uf die zugehörige Vrible zugreifen und sie verändern cll-by-reference min(void) int, b; void swp (int *, int *); swp(&, &b); void swp (int *px, int *py) int tmp; tmp = *px; *px = *py; *py = tmp; b px py tmp Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-50 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-52

8 5 Zeiger ls Funktionsrgumente (2) 5 Zeiger ls Funktionsrgumente (2) min(void) int, b; void swp (int *, int *); swp(&, &b); b min(void) int, b; void swp (int *, int *); swp(&, &b); b void swp (int *px, int *py) int tmp; tmp = *px; *px = *py; *py = tmp; px py tmp void swp (int *px, int *py) int tmp; tmp = *px; ➋ *px = *py; *py = tmp; *px px py tmp ➋ Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-53 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Zeiger ls Funktionsrgumente (2) 5 Zeiger ls Funktionsrgumente (2) min(void) int, b; void swp (int *, int *); swp(&, &b); b min(void) int, b; void swp (int *, int *); swp(&, &b); b void swp (int *px, int *py) int tmp; tmp = *px; *px = *py; *py = tmp; px py tmp void swp (int *px, int *py) int tmp; tmp = *px; *px = *py; ➌ *py = tmp; *px px *py py tmp ➌ Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-54 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-56

9 5 Zeiger ls Funktionsrgumente (2) 6 Zeiger uf Strukturen Konzept nlog zu "Zeiger uf Vriblen" min(void) int, b; void swp (int *, int *); swp(&, &b); void swp (int *px, int *py) int tmp; tmp = *px; ➋ *px = *py; ➌ *py = tmp; ➍ b px *py py tmp ➍ Adresse einer Struktur mit &-Opertor zu bestimmen Zeigerrithmetik berücksichtigt Strukturgröße Beispiele struct student stud1; struct student *pstud; pstud = &stud1; /* pstud stud1 */ Besondere Bedeutung zum Aufbu verketteter Strukturen Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-57 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Zeiger ls Funktionsrgumente (2) 6 Zeiger uf Strukturen (2) min(void) int, b; void swp (int *, int *); swp(&, &b); b Zugriff uf Strukturkomponenten über einen Zeiger Beknnte Vorgehensweise *-Opertor liefert die Struktur.-Opertor zum Zugriff uf Komponente Opertorenvorrng bechten void swp (int *px, int *py) int tmp; tmp = *px; ➋ *px = *py; ➌ *py = tmp; ➍ px py tmp ➌ ➍ ➋ Syntktische Verschönerung (*pstud).best = n ; (*pstud).best = n ; unleserlich! ->-Opertor (*pstud).best pstud->best = = n ; n ; Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-58 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-60

10 7 Zusmmenfssung Vrible int ; 5 Zeiger int ; *p = &; 5 p Struktur struct int ; sint ; chr c;; struct s s1 = 2, ; s1 2 Zeiger uf Struktur int struct ; s *sp = &s1; s1 2 sp 2 Kurzeinführung in die Progrmmiersprche C 2.10 Explizite Typumwndlung Cst-Opertor 10Explizite 2. Typumwndlung Cst-Opertor C enthält Regeln für eine utomtische Konvertierung unterschiedlicher Typen in einem Ausdruck Beispiel: In mnchen Fällen wird eine explizite Typumwndlung benötigt (vor llem zur Umwndlung von Zeigern) Syntx: (Typ) Vrible int i = 5; flot f = 0.2; double d; Beispiele: (int) (flot) b d = i * f; (int *) (chr *) flot double Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-61 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A sizeof-Opertor 2. 2 Kurzeinführung in die Progrmmiersprche C 2.9 sizeof-opertor In mnchen Fällen ist es notwendig, die Größe (in Byte) einer Vriblen oder Struktur zu ermitteln z. B. zum Anfordern von Speicher für ein Feld ( mlloc) Syntx: sizeof x sizeof (Typ) Ds Ergebnis ist vom Typ size_t (entspricht meist int) (#include <stddef.h>!) liefert die Größe des Objekts x in Bytes liefert die Größe eines Objekts vom Typ Typ in Bytes 2 Kurzeinführung in die Progrmmiersprche C 2.11 Speicherverwltung 1Speicherverwltung 2. void *mlloc(size_t size): Reservieren eines Speicherbereiches void free(void *ptr): Freigeben eines reservierten Bereiches struct person *p1 = (struct person *) mlloc(sizeof(struct person)); if (p1 == NULL) perror("mlloc person p1"); free(p1); mlloc-prototyp ist in stdlib.h definiert (#include <stdlib.h>) int ; size_t b; b = sizeof ; /* b = 2 oder b = 4 */ b = sizeof(double) /* b = 8 */ Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-62 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-64

11 12Felder 2. 2 Kurzeinführung in die Progrmmiersprche C 2.12 Felder 1 Eindimensionle Felder eine Reihe von Dten desselben Typs knn zu einem Feld zusmmengefsst 2 Kurzeinführung in die Progrmmiersprche C 2.12 Felder 3 Initilisierung eines Feldes (2) Felder des Typs chr können uch durch String-Konstnten initilisiert chr nme1[5] = "Otto"; chr nme2[] = "Otto"; bei der Definition wird die Anzhl der Feldelemente ngegeben, die Anzhl ist konstnt! der Zugriff uf die Elemente erfolgt durch Indizierung, beginnend bei Null Definition eines Feldes Typ Nme [ Gnzzhl- Konstnte ] Initilisierung ; Beispiele: int x[5]; double f[20]; Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-65 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.12 Felder 2 Initilisierung eines Feldes = konstnter Ausdruck Ein Feld knn durch eine Liste von konstnten Ausdrücken, die durch Komm getrennt sind, initilisiert int prim[4] = 2, 3, 5, 7; chr nme[5] = O, t, t, o, \0 ; wird die explizite Felddimensionierung weggelssen, so bestimmt die Zhl der Initilisierungskonstnten die Feldgröße int prim[] = 2, 3, 5, 7; chr nme[] = O, t, t, o, \0 ;, 2 Kurzeinführung in die Progrmmiersprche C 2.12 Felder 4 Zugriffe uf Feldelemente Indizierung: wobei: Beispiele: Feldnme [ Ausdruck ] 0 <= Wert(Ausdruck) < Feldgröße prim[0] == 2 prim[1] == 3 nme[1] == t nme[4] == \0 zu wenig Initilisierungskonstnten ngegeben, so die restlichen Elemente mit 0 initilisiert Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-66 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-68

12 2 Kurzeinführung in die Progrmmiersprche C 2.12 Felder 5 Mehrdimensionle Felder neben eindimensionlen Felder knn mn uch mehrdimensionle Felder vereinbren Definition eines mehrdimensionlen Feldes Typ Nme [ int mtrix[4][4]; Gnzzhl- Konstnte ] Initilisierung ; 2 Kurzeinführung in die Progrmmiersprche C 2.12 Felder 7 Initilisierung eines mehrdimensionlen Feldes ein mehrdimensionles Feld knn - wie ein eindimensionles Feld - durch eine Liste von konstnten Werten, die durch Komm getrennt sind, initilisiert wird die explizite Felddimensionierung weggelssen, so bestimmt die Zhl der Initilisierungskonstnten die Größe des Feldes int feld[3][4] = 1, 3, 5, 7, /* feld[0][0-3] */ 2, 4, 6 /* feld[1][0-2] */ ; feld[1][3] und feld[2][0-3] in dem Beispiel mit 0 initilisiert! Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-69 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.12 Felder 6 Zugriffe uf Feldelemente bei mehrdim. Feldern Indizierung: Feldnme [ A 1 ] [ A n ] 13Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert wobei: 0 <= A i < Größe der Dimension i des Feldes n = Anzhl der Dimensionen des Feldes int feld[5][8]; feld[2][3] = 10; ist äquivlent zu: es gilt: int rry[5]; int * = rry; int *ep; ep = &rry[0]; ➋ rry ➋ 1 ➍ int feld[5][8]; int *f1; f1 = (int*)feld; f1[2*8 + 3] = 10; ep = &rry[2]; ➌ *ep = 1; ➍ ep ➋ ➌ ➌ Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-70 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-72

13 13Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert 13Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert es gilt: es gilt: int rry[5]; rry int rry[5]; rry int * = rry; Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-73 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert 13Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert es gilt: es gilt: int rry[5]; rry int rry[5]; rry int * = rry; int * = rry; int *ep; ep Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-74 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-76

14 13Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert 13Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert es gilt: es gilt: 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 ➌ Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-77 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert 13Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert es gilt: es gilt: 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 ➌ Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-78 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-80

15 13Zeiger 2. und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert es gilt: int rry[5]; rry 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder 1 Arithmetik mit Adressen ++ -Opertor: Inkrement = nächstes Objekt int rry[3]; int * = rry; ++; ➋ ++; ➌ rry ➋ ➌ int * = rry; int *ep; ep = &rry[0]; ep = &rry[2]; *ep = 1; ➍ *ep ep 1 ➍ -- -Opertor: Dekrement = vorheriges Objekt +, Addition und Subtrktion von Zeigern und gnzzhligen Werten. Dbei wird immer die Größe des Objekttyps berücksichtigt! int rry[5]; = rry; = +3; ➋ ➋!!! Achtung: Assozitivität der Opertoren bechten!! Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-81 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder 13Zeiger 2. und Felder ' 2 Zeigerrithmetik und Felder ' ein Feldnme ist ein konstnter Zeiger uf ds erste Element des Feldes im Gegenstz zu einer Zeigervriblen knn sein Wert nicht verändert es gilt: int rry[5]; int * = rry; int *ep; ep = &rry[0]; ➋ ep = &rry[2]; ➌ *ep = 1; ➍ rry ep ➋ ➋ ➌ 1 ➍ ➌ Ein Feldnme ist eine Konstnte, für die Adresse des Feldnfngs Feldnme ist ein gnz normler Zeiger Opertoren für Zeiger nwendbr ( *, [] ) ber keine Vrible keine Modifiktionen erlubt es gilt: keine Zuweisung, kein ++, --, +=, int rry[5]; /* rry ist Konstnte für den Wert &rry[0] */ int * = rry;/* int * = &rry[0] */ int *ep; /* Folgende Zuweisungen sind äquivlent */ rry[i] = 1; [i] = 1; *(+i) = 1; /* Vorrng! */ *(rry+i) = 1; ep = &rry[i]; *ep = 1; ep = rry+i; *ep = 1; Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-82 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-84

16 2 Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder 2 Zeigerrithmetik und Felder int rry[5]; int *pointer; chr buffer[6]; chr *bptr; rry[0] = 10; ➋ rry[1] = 920; ➌ strcpy(buffer,"hllo"); ➍ pointer = rry; ➎ bptr = buffer; Fomle Prmeter der Funktion strcpy ziel quelle Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-85 ➌ ➌ rry pointer buffer ➍ ➎ bptr ➎ "hllo" h l l o \0 ➍ 10 ➋920 h l l o \0 ➌ 2 Kurzeinführung in die Progrmmiersprche C 2.14 Eindimensionle Felder ls Funktionsprmeter 14Eindimensionle 2. Felder ls Funktionsprmeter gnze Felder können in C nicht by-vlue übergeben wird einer Funktion ein Feldnme ls Prmeter übergeben, wird dmit der Zeiger uf ds erste Element "by vlue" übergeben die Funktion knn über den formlen Prmeter (=Kopie des Zeigers) in gleicher Weise wie der Aufrufer uf die Feldelemente zugreifen (und diese verändern!) bei der Deklrtion des formlen Prmeters wird die Feldgröße weggelssen die Feldgröße ist utomtisch durch den ktuellen Prmeter gegeben die Funktion kennt die Feldgröße dmit nicht ggf. ist die Feldgröße über einen weiteren int-prmeter der Funktion explizit mitzuteilen die Länge von Zeichenketten in chr-feldern knn normlerweise durch Suche nch dem \0-Zeichen bestimmt Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.13 Zeiger und Felder 2 Kurzeinführung in die Progrmmiersprche C 2.14 Eindimensionle Felder ls Funktionsprmeter 2 Zeigerrithmetik und Felder 14Eindimensionle 2. Felder ls Funktionsprmeter (2) int rry[5]; int *pointer; chr buffer[6]; chr *bptr; rry[0] = 10; ➋ rry[1] = 920; ➌ strcpy(buffer,"hllo"); ➍ pointer = rry; ➎ bptr = buffer; ➏ pointer++; ➐ bptr++; ➑ *pointer = 700; ➒ rry++; rry ➒ pointer buffer ➏ ➏ ➐ ➑ 700 h l l o \0 wird ein Feldprmeter ls const deklriert, können die Feldelemente innerhlb der Funktion nicht verändert Funktionsufruf und Deklrtion der formlen Prmeter m Beispiel eines int-feldes: int, b; int feld[20]; func(, feld, b); int func(int p1, int p2[], int p3); oder: int func(int p1, int *p2, int p3); die Prmeter-Deklrtionen int p2[] und int *p2 sind vollkommen äquivlent! bptr ➐ Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-86 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-88

17 2 Kurzeinführung in die Progrmmiersprche C 2.14 Eindimensionle Felder ls Funktionsprmeter 14Eindimensionle 2. Felder ls Funktionsprmeter (3) Beispiel 1: Bestimmung der Länge einer Zeichenkette (String) int strlen(const chr string[]) int i=0; while (string[i]!= \0 ) ++i; return(i); 2 Kurzeinführung in die Progrmmiersprche C 2.15 Zeiger, Felder und Zeichenketten 15Zeiger, 2. Felder und Zeichenketten Zeichenketten sind Felder von Einzelzeichen (chr), die in der internen Drstellung durch ein \0 Zeichen bgeschlossen sind Länge eines Strings ermitteln Aufruf strlen(x); /* 1. Version */ int strlen(const chr *s) int n; for (n=0; *s!= \0 ; s++) n++; return(n); x s n=0 h l s++ l o \0 n=4 n=5 /* 2. Version */ int strlen(const chr *s) chr *p = s; while (*p!= \0 ) p++; return(p-s); x s h l p l o \0 p++ Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-89 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.14 Eindimensionle Felder ls Funktionsprmeter 14Eindimensionle 2. Felder ls Funktionsprmeter (4) Beispiel 2: Konkteniere Strings void strct(chr to[], const chr from[]) int i=0, j=0; while (to[i]!= \0 ) i++; while ( (to[i++] = from[j++])!= \0 ) ; ' 2 Kurzeinführung in die Progrmmiersprche C 2.15 Zeiger, Felder und Zeichenketten 15Zeiger, 2. Felder und Zeichenketten (2) wird eine Zeichenkette zur Initilisierung eines chr Feldes verwendet, ist der Feldnme ein konstnter Zeiger uf den Anfng der Zeichenkette chr messge[] = "now is the time"; n o w _ i s _ t h e _ t i m e \0 messge Funktionsufruf mit Feld-Prmetern ls ktueller Prmeter beim Funktionsufruf wird einfch der Feldnme ngegeben chr s1[50] = "text1"; chr s2[] = "text2"; strct(s1, s2);/* s1= "text1text2" */ strct(s1, "text3");/* s1= "text1text2text3" */ Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-90 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-92

18 2 Kurzeinführung in die Progrmmiersprche C 2.15 Zeiger, Felder und Zeichenketten 15Zeiger, 2. Felder und Zeichenketten (3) wird eine Zeichenkette zur Initilisierung eines chr Zeigers verwendet, ist der Zeiger eine Vrible, die mit der Anfngsdresse der Zeichenkette initilisiert wird chr *pmessge = "hello world"; h e l l o _ w o r l d \0 ➋ pmessge pmessge++; ➋ printf("%s", pmessge); pmessge /*gibt "ello world" us*/ wird dieser Zeiger überschrieben, ist die Zeichenkette nicht mehr dressierbr! h e l l o _ w o r l d \0 h l l o \0 ➌ pmessge = "hllo"; 2 Kurzeinführung in die Progrmmiersprche C 2.15 Zeiger, Felder und Zeichenketten 15Zeiger, 2. Felder und Zeichenketten (5) Zeichenketten kopieren /* 1. Version */ void strcpy(chr to[], const chr from[]) int i=0; while ( (to[i] = from[i])!= \0 ) i++; /* 2. Version */ void strcpy(chr *to, const chr *from) while ( (*to = *from)!= \0 ) to++, from++; /* 3. Version */ void strcpy(chr *to, const chr *from) while ( *to++ = *from++ ) ; Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-93 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.15 Zeiger, Felder und Zeichenketten 15Zeiger, 2. Felder und Zeichenketten (4) die Zuweisung eines chr Zeigers oder einer Zeichenkette n einen chr Zeiger bewirkt kein Kopieren von Zeichenketten! pmessge = messge; weist dem Zeiger pmessge lediglich die Adresse der Zeichenkette "now is the time" zu n o w _ i s _ t h e _ t i m e \0 messge pmessge wird eine Zeichenkette ls ktueller Prmeter n eine Funktion übergeben, erhält diese eine Kopie des Zeigers 2 Kurzeinführung in die Progrmmiersprche C 2.15 Zeiger, Felder und Zeichenketten 15Zeiger, 2. Felder und Zeichenketten (6) in ANSI-C können Zeichenketten in nicht-modifizierbren Speicherbereichen ngelegt (je nch Compiler) Schreiben in Zeichenketten (Zuweisungen über dereferenzierte Zeiger) knn zu Progrmmbstürzen führen! Beispiel: pmessge ber! strcpy("zu ueberschreiben", "reinschreiben"); chr *pmessge = "hello world"; h e l l o _ w x o r l d \0 pmessge[6] = x ; chr messge[] = "hello world"; messge[6] = x ; ok! ' Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-94 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-96

19 16Felder 2. von Zeigern 2 Kurzeinführung in die Progrmmiersprche C 2.16 Felder von Zeigern Auch von Zeigern können Felder gebildet Deklrtion int *pfeld[5]; int i = 1 int j; Zugriffe uf einen Zeiger des Feldes pfeld[3] = &i; ➋ Zugriffe uf ds Objekt, uf ds ein Zeiger des Feldes verweist j = *pfeld[3]; ➍ ➍ ➌ pfeld pfeld[3] ➌ * pfeld[3] ➋ ➋ i 1 ➍ j 2 Kurzeinführung in die Progrmmiersprche C 2.17 Argumente us der Kommndozeile 17Argumente 2. us der Kommndozeile beim Aufruf eines Kommndos können normlerweise Argumente übergeben der Zugriff uf diese Argumente wird der Funktion min( ) durch zwei Aufrufprmeter ermöglicht: int min (int rgc, chr *rgv[]) oder int min (int rgc, chr **rgv) der Prmeter rgc enthält die Anzhl der Argumente, mit denen ds Progrmm ufgerufen wurde der Prmeter rgv ist ein Feld von Zeiger uf die einzelnen Argumente (Zeichenketten) der Kommndonme wird ls erstes Argument übergeben (rgv[0]) Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-97 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.16 Felder von Zeigern 16Felder 2. von Zeigern (2) Definition und Initilisierung eines Zeigerfeldes: chr *month_nme(int n) sttic chr *Montsnmen[] = "Unzulessiger Mont", "Jnur", "Dezember" ; Montsnmen return ( (n<0 n>12)? Montsnmen[0] : Montsnmen[n] ); U n z u l M o n t \0 J n u r \0 F e b r u r \0 M e r z \0 1 Dtenufbu Kommndo: 2 Kurzeinführung in die Progrmmiersprche C 2.17 Argumente us der Kommndozeile rgc 5 rgv cc -A -o uf9 uf9.c Dtei cc.c: min(int rgc, chr *rgv[]) rgv[1] NULL 0 c c \0 - A \0 - o \0 u f 9 * rgv[1] oder rgv[1][0] \0 u f 9. c \0 rgv[3][1] D e z e m b e r \0 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-98 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-100

20 2 Kurzeinführung in die Progrmmiersprche C 2.17 Argumente us der Kommndozeile 2 Zugriff Beispiel: Ausgeben ller Argumente (1) ds folgende Progrmmstück gibt lle Argumente der Kommndozeile us (ußer dem Kommndonmen) int min (int rgc, chr *rgv[]) int i; for ( i=1; i<rgc; i++) printf("%s%c", rgv[i], (i < rgc-1)? : \n ); rgc 5 rgv rgv[1] rgv[2] rgv[3] rgv[4] rgv[5] NULL 0 c c \0 - A \0 - o \0 u f 9 1. Version \0 u f 9. c \0 ' 18Zeiger 2. uf Zeiger 2 Kurzeinführung in die Progrmmiersprche C 2.18 Zeiger uf Zeiger ein Zeiger knn uf eine Vrible verweisen, die ihrerseits ein Zeiger ist int x = 5; int * = &x; int **p = &; /* ** p = 5 */ x 5 p wird vor llem bei der Prmeterübergbe n Funktionen benötigt, wenn ein Zeiger "cll bei reference" übergeben muss (z. B. swp-funktion für Zeiger) Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.17 Argumente us der Kommndozeile 2 Zugriff Beispiel: Ausgeben ller Argumente (2) ds folgende Progrmmstück gibt lle Argumente der Kommndozeile us (ußer dem Kommndonmen) int min (int rgc, chr **rgv) while (--rgc > 0) rgv++; linksseitiger Opertor: erst dekrementieren, 2. Version dnn while-bedingung prüfen Schleife läuft für rgc=4,3,2,1 printf("%s%c", *rgv, (rgc>1)? : \n ); 19Strukturen 2. Initilisierung 2 Kurzeinführung in die Progrmmiersprche C 2.19 Strukturen Strukturen ls Funktionsprmeter Felder von Strukturen Zeiger uf Strukturen rgc rgv *rgv nch 1x rgv++ *rgv nch 4x rgv++ NULL 0 c c \0 - A \0 - o \0 u f 9 \0 u f 9. c \0 Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-104

21 2 Kurzeinführung in die Progrmmiersprche C 2.19 Strukturen 1 Initilisieren von Strukturen Srukturen können wie Vriblen und Felder bei der Definition initilisiert Beispiele struct student stud1 = "Meier", "Hns", " ", , 5, n ; struct komplex c1 = 1.2, 0.8, c2 = 0.5, 0.33;!!! Vorsicht bei Zugriffen uf eine Struktur die Komponenten durch die Komponentennmen identifiziert, bei der Initilisierung jedoch nur durch die Postion potentielle Fehlerquelle bei Änderungen der Strukturtyp-Deklrtion 2 Kurzeinführung in die Progrmmiersprche C 2.19 Strukturen 3 Felder von Strukturen Von Strukturen können wie von normle Dtentypen Felder gebildet Beispiel struct student gruppe8[35]; int i; for (i=0; i<35; i++) printf("nchnme %d. Stud.: ", i); scnf("%s", gruppe8[i].nchnme); gruppe8[i].gruppe = 8; if (gruppe8[i].mtrnr < ) gruppe8[i].best = y ; else gruppe8[i].best = n ; Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.19 Strukturen 2 Strukturen ls Funktionsprmeter Strukturen können wie normle Vriblen n Funktionen übergeben Übergbesemntik: cll by vlue Funktion erhält eine Kopie der Struktur uch wenn die Struktur ein Feld enthält, wird dieses komplett kopiert!!!! Unterschied zur direkten Übergbe eines Feldes Strukturen können uch Ergebnis einer Funktion sein Möglichkeit mehrere Werte im Rückgbeprmeter zu trnsportieren Beispiel struct komplex komp_dd(struct komplex x, struct komplex y) struct komplex ergebnis; ergebnis.re = x.re + y.re; ergebnis.im = x.im + y.im; return(ergebnis); 2 Kurzeinführung in die Progrmmiersprche C 2.19 Strukturen 4 Zeiger uf Felder von Strukturen Ergebnis der Addition/Subtrktion bhängig von Zeigertyp! Beispiel struct student gruppe8[35]; struct student *gp1, *gp2; gp1 = gruppe8; /* gp1 zeigt uf erstes Element des Arrys */ printf("nchnme des ersten Studenten: %s", gp1->nchnme); gp2 = gp1 + 1; /* gp2 zeigt uf zweite Element des Arrys */ printf("nchnme des zweiten Studenten: %s", gp2->nchnme); printf("byte-differenz: %d", (chr*)gp2 - (chr*)gp1); Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-108

22 2 Kurzeinführung in die Progrmmiersprche C 2.19 Strukturen 5 Zusmmenfssung Vrible int ; 5 Zeiger int ; *p = &; 5 p Feld int ; [3]; Feld von Zeigern int ; *p[3]; p Struktur struct int ; sint ; chr c;; struct s s1 = 2, ; s1 2 Zeiger uf Struktur int struct ; s *sp = &s1; s1 2 sp Feld von Strukturen s struct s s[3]; 21Ein-/Ausgbe 2. 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe E-/A-Funktionlität nicht Teil der Progrmmiersprche Relisisierung durch "normle" Funktionen Bestndteil der Stndrd-Funktionsbibliothek einfche Progrmmierschnittstelle effizient portbel betriebssystemnh Funktionsumfng Öffnen/Schließen von Dteien Lesen/Schreiben von Zeichen, Zeilen oder beliebigen Dtenblöcken Formtierte Ein-/Ausgbe Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.20 Zeiger uf Funktionen 20Zeiger 2. uf Funktionen Dtentyp: Zeiger uf Funktion Vriblendef.: <Rückgbetyp> (*<Vriblennme>)(<Prmeter>); int (*fptr)(int, chr*); int test1(int, chr *s) printf("1: %d %s\n",, s); int test2(int, chr *s) printf("2: %d %s\n",, s); fptr = test1; fptr(42,"hllo"); fptr = test2; fptr(42,"hllo"); 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 1 Stndrd Ein-/Ausgbe Jedes C-Progrmm erhält beim Strt utomtisch 3 E-/A-Knäle: stdin Stndrdeingbe normlerweise mit der Tsttur verbunden Dteiende (EOF) wird durch Eingbe von CTRL-D m Zeilennfng signlisiert bei Progrmmufruf in der Shell uf Dtei umlenkbr prog <eingbedtei ( bei Erreichen des Dteiendes wird EOF signlisiert ) stdout Stndrdusgbe normlerweise mit dem Bildschirm (bzw. dem Fenster, in dem ds Progrmm gestrtet wurde) verbunden bei Progrmmufruf in der Shell uf Dtei umlenkbr prog >usgbedtei stderr Ausgbeknl für Fehlermeldungen normlerweise ebenflls mit Bildschirm verbunden Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-112

23 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 1 Stndrd Ein-/Ausgbe (2) Pes die Stndrdusgbe eines Progrmms knn mit der Stndrdeingbe eines nderen Progrmms verbunden Aufruf prog1 prog2! Die Umlenkung von Stndrd-E/A-Knäle ist für die ufgerufenen Progrmme völlig unsichtbr utomtische Pufferung Eingbe von der Tsttur wird normlerweise vom Betriebssystem zeilenweise zwischengespeichert und erst bei einem NEWLINE-Zeichen ( \n ) n ds Progrmm übergeben! 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 2 Öffnen und Schließen von Dteien (2) #include <stdio.h> int min(int rgc, chr *rgv[]) FILE *eingbe; if (rgv[1] == NULL) fprintf(stderr, "keine Eingbedtei ngegeben\n"); exit(1); /* Progrmm bbrechen */ if ((eingbe = fopen(rgv[1], "r")) == NULL) /* eingbe konnte nicht geoeffnet */ perror(rgv[1]); /* Fehlermeldung usgeben */ exit(1); /* Progrmm bbrechen */ /* Progrmm knn jetzt von eingbe lesen */ Schließen eines E/A-Knls int fclose(file *fp) schließt E/A-Knl fp Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 2 Öffnen und Schließen von Dteien Neben den Stndrd-E/A-Knälen knn ein Progrmm selbst weitere E/A-Knäle öffnen Zugriff uf Dteien Öffnen eines E/A-Knls Funktion fopen: #include <stdio.h> FILE *fopen(chr *nme, chr *mode); nme Pfdnme der zu öffnenden Dtei mode Art, wie die Dtei geöffnet soll "r" zum Lesen "w" zum Schreiben "" ppend: Öffnen zum Schreiben m Dteiende "rw" zum Lesen und Schreiben Ergebnis von fopen: Zeiger uf einen Dtentyp FILE, der einen Dteiknl beschreibt im Fehlerfll wird ein NULL-Zeiger geliefert 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 3 Zeichenweise Lesen und Schreiben Lesen eines einzelnen Zeichens von der Stndrdeingbe int getchr( ) lesen ds nächste Zeichen geben ds gelesene Zeichen ls int-wert zurück geben bei Eingbe von CTRL-D bzw. m Ende der Dtei EOF ls Ergebnis zurück Schreiben eines einzelnen Zeichens uf die Stndrdusgbe int putchr(int c) von einem Dteiknl schreiben ds im Prmeter c übergeben Zeichen int getc(file *fp ) uf einen Dteiknl int putc(int c, FILE *fp ) geben gleichzeitig ds geschriebene Zeichen ls Ergebnis zurück Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-116

24 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 3 Zeichenweise Lesen und Schreiben (2) copy-progrmm, Aufruf: copy Quelldtei Zieldtei #include <stdio.h> Teil 1: Aufrufrgumente int min(int rgc, chr *rgv[]) uswerten FILE *quelle, *ziel; int c; /* gerde kopiertes Zeichen */ if (rgc < 3) /* Fehlermeldung, Abbruch */ if ((quelle = fopen(rgv[1], "r")) == NULL) perror(rgv[1]);/* Fehlermeldung usgeben */ exit(exit_failure);/* Progrmm bbrechen */ if ((ziel = fopen(rgv[2], "w")) == NULL) /* Fehlermeldung, Abbruch */ while ( (c = getc(quelle))!= EOF ) putc(c, ziel); fclose(quelle); fclose(ziel); 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 4 Formtierte Ausgbe Bibliotheksfunktionen Prototypen (Schnittstelle) int printf(chr *formt, /* Prmeter */ ); int fprintf(file *fp, chr *formt, /* Prmeter */ ); int sprintf(chr *s, chr *formt, /* Prmeter */ ); int snprintf(chr *s, int n, chr *formt, /* Prmeter */ ); Die sttt ngegebenen Prmeter entsprechend der Angben im formt-string usgegeben bei printf uf der Stndrdusgbe bei fprintf uf dem Dteiknl fp (für fp knn uch stdout oder stderr eingesetzt ) sprintf schreibt die Ausgbe in ds chr-feld s (chtet dbei ber nicht uf ds Feldende -> Pufferüberluf möglich!) snprintf rbeitet nlog, schreibt ber mximl nur n Zeichen (n sollte ntürlich nicht größer ls die Feldgröße sein) Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 3 Zeilenweise Lesen und Schreiben Lesen einer Zeile von der Stndrdeingbe chr *fgets(chr *s, int n, FILE *fp) liest Zeichen von Dteiknl fp in ds Feld s bis entweder n-1 Zeichen gelesen wurden oder \n oder EOF gelesen wurde s wird mit \0 bgeschlossen ( \n wird nicht entfernt) gibt bei EOF oder Fehler NULL zurück, sonst s für fp knn stdin eingesetzt, um von der Stndrdeingbe zu lesen Schreiben einer Zeile int fputs(chr *s, FILE *fp) schreibt die Zeichen im Feld s uf Dteiknl fp für fp knn uch stdout oder stderr eingesetzt ls Ergebnis wird die Anzhl der geschriebenen Zeichen geliefert 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 4 Formtierte Ausgbe (2) Zeichen im formt-string können verschiedene Bedeutung hben normle Zeichen: Escpe-Zeichen: einfch uf die Ausgbe kopiert z. B. \n oder \t, durch die entsprechenden Zeichen (hier Zeilenvorschub bzw. Tbultor) bei der Ausgbe ersetzt Formt-Anweisungen: beginnen mit %-Zeichen und beschreiben, wie der dzugehörige Prmeter in der Liste nch dem formt-string ufbereitet soll Formt-Anweisungen %d, %i int Prmeter ls Dezimlzhl usgeben %f flot Prmeter wird ls Fließkommzhl (z. B ) usgegeben %e flot Prmeter wird ls Fließkommzhl in 10er-Potenz-Schreibweise (z. B e+02) usgegeben %c chr-prmeter wird ls einzelnes Zeichen usgegeben %s chr-feld wird usgegeben, bis \0 erreicht ist Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-120

25 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 5 Formtierte Eingbe 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 5 Formtierte Eingbe (3) Bibliotheksfunktionen Prototypen (Schnittstelle) int scnf(chr *formt, /* Prmeter */ ); int fscnf(file *fp, chr *formt, /* Prmeter */ ); int sscnf(chr *s, const chr *formt, /* Prmeter */ ); Die Funktionen lesen Zeichen von stdin (scnf), fp (fscnf) bzw. us dem chr-feld s. formt gibt n, welche Dten hiervon extrhiert und in welchen Dtentyp konvertiert sollen Die folgenden Prmeter sind Zeiger uf Vriblen der pssenden Dtentypen (bzw. chr-felder bei Formt %s), in die die Resultte eingetrgen reltiv komplexe Funktionlität, hier nur Kurzüberblick für Detils siehe Mnul-Seiten %d int %hd %ld %lld short long int %f flot %lf %Lf long long int double long double nlog uch %e oder %g %c chr %s String, wird utomtisch mit \0 bgeschl. nch % knn eine Zhl folgen, die die mximle Feldbreite ngibt %3d = 3 Ziffern lesen %5c = 5 chr lesen (Prmeter muss dnn Zeiger uf chr-feld sein) %5c überträgt exkt 5 chr (hängt ber kein \0 n!) %5s liest mx. 5 chr (bis white spce) und hängt \0 n Beispiele: int, b, c, d, n; chr s1[20]="xxxxxx", s2[20]; n = scnf("%d %2d %3d %5c %s %d", &, &b, &c, s1, s2, &d); Eingbe: sows hmm Ergebnis: n=5, =12, b=12, c=345 s1="67 sox", s2="ws" Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 5 Formtierte Eingbe (2) White spce (Spce, Tbultor oder Newline \n) bildet jeweils die Grenze zwischen Dten, die interpretiert white spce wird in beliebiger Menge einfch überlesen Ausnhme: bei Formt-Anweisung %c wird uch white spce eingelesen Alle nderen Dten in der Eingbe müssen zum formt-string pssen oder die Interprettion der Eingbe wird bgebrochen wenn im formt-string normle Zeichen ngegeben sind, müssen diese exkt so in der Eingbe uftuchen wenn im Formt-String eine Formt-Anweisung (%) ngegeben ist, muss in der Eingbe etws hieruf pssendes uftuchen diese Dten dnn in den entsprechenden Typ konvertiert und über den zugehörigen Zeiger-Prmeter der Vriblen zugewiesen 2 Kurzeinführung in die Progrmmiersprche C 2.21 Ein-/Ausgbe 6 Fehlerbehndlung Fst jeder Systemcll/Bibliotheksufruf knn fehlschlgen Fehlerbehndlung unumgänglich! Vorgehensweise: Rückgbewerte von Systemclls/Bibliotheksufrufen bfrgen Im Fehlerfll (meist durch Rückgbewert -1 ngezeigt): Fehlercode steht in der globlen Vrible errno Fehlermeldung knn mit der Funktion perror uf die Fehlerusgbe usgegeben : #include <errno.h> void perror(const chr *s); Die scnf-funktionen liefern ls Ergebnis die Zhl der erfolgreich n die Prmeter zugewiesenen Werte Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A Jürgen Kleinöder Universität Erlngen-Nürnberg Informtik 4, 2006 SS 2006 SOS 1 (02-Einf.fm ) A 2-124

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

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

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

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

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

E-/A-Funktionalität nicht Teil der Programmiersprache

E-/A-Funktionalität nicht Teil der Programmiersprache C Ein-/Ausgabe C Ein-/Ausgabe C.1 Überblick E-/A-Funktionalität nicht Teil der Programmiersprache Realisisierung durch "normale" Funktionen Bestandteil der Standard-Funktionsbibliothek einfache Programmierschnittstelle

Mehr

Strukturen können wie normale Variablen an Funktionen übergeben werden. Strukturen können auch Ergebnis einer Funktion sein

Strukturen können wie normale Variablen an Funktionen übergeben werden. Strukturen können auch Ergebnis einer Funktion sein 19 Strukturen 19.2Strukturen als Funktionsparameter 19.2 Strukturen als Funktionsparameter Strukturen können wie normale Variablen an Funktionen übergeben werden Übergabesemantik: call by value Funktion

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

Ü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

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

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

2 Beispiel Sinusberechnung

2 Beispiel Sinusberechnung 2 Beispiel Sinusberechnung #include #include double sinus (double x) { double summe; double x_quadrat; double rest; int k; main() { double wert; D.8 Funktionen printf("berechnung des

Mehr

16 Felder von Zeigern

16 Felder von Zeigern 16Felder 4. von Zeigern (2) 16 Felder von Zeigern Beispiel: Definition und Initialisierung eines Zeigerfeldes: char *month_name( n) { static char *Monatsnamen[] = { "Unzulaessiger Monat", "Januar", "Dezember"

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

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

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

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

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

Systemnahe Programmierung in C (SPiC)

Systemnahe Programmierung in C (SPiC) 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

Mehr

K Ergänzungen zur Einführung in C

K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K.1 Zeiger, Felder und Zeichenketten Zeichenketten sind Felder von Einzelzeichen (char), die in der internen Darstellung durch ein \0

Mehr

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2

Mehr

Besprechung Aufgabe 1. Pointer. Register und Ports. SPiC - Ü U3.1

Besprechung Aufgabe 1. Pointer. Register und Ports. SPiC - Ü U3.1 U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2

Mehr

C Kurzeinführung in die Programmiersprache C. C-3 Datentypen und Variablen. C-2 Struktur eines C-Programms. C-1 Überblick. 1 Standardtypen in C

C Kurzeinführung in die Programmiersprache C. C-3 Datentypen und Variablen. C-2 Struktur eines C-Programms. C-1 Überblick. 1 Standardtypen in C C Kurzeinführung in die Programmiersprache C C Kurzeinführung in die Programmiersprache C C-3 Datentypen und Variablen C-3 Datentypen und Variablen Literatur zur C-Programmierung: Datentypen legen fest:

Mehr

Systemprogrammierung

Systemprogrammierung IEinführung I in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: A Software Engineering Approach. Springer 1991 Kernighan, Ritchie. The C Programming Language. Prentice-Hall

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

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C

Ein-/Ausgabe, Dateisystem. Kapitel 9: Ein-/Ausgabe. Programmieren in C für Elektrotechniker. Programmieren in C. Dateisystem. Programmieren in C für Elektrotechniker Kapitel 9: Dateisystem, Dateisystem E/A-Konzept in UNIX und C UNIX (und damit auch C) verwendet Datenströme (streams) als Konzept zur Verbindung von Programmen mit E/A-Geräten und

Mehr

b) Dasselbe System, die Unbekannten sind diesmal durchnummeriert:

b) Dasselbe System, die Unbekannten sind diesmal durchnummeriert: 1 Linere Gleichungssysteme 1. Begriffe Bspl.: ) 2 x - 3 y + z = 1 3 x - 2 z = 0 Dies ist ein Gleichungssystem mit 3 Unbeknnten ( Vriblen ) und 2 Gleichungen. Die Zhlen vor den Unbeknnten heißen Koeffizienten.

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

Grundbegriffe der Informatik Aufgabenblatt 7

Grundbegriffe der Informatik Aufgabenblatt 7 Mtrnr: Nchnme: Vornme: Grundbegriffe der Informtik Aufgbenbltt 7 Tutorium: Nr Nme des Tutors: Ausgbe: 4 Februr 2017 Abgbe: 9 Februr 2017, 16:00 Uhr im GBI-Briefksten im Untergeschoss von Gebäude 5034 Lösungen

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

Teil II. Literatur zur C-Programmierung:

Teil II. Literatur zur C-Programmierung: Teil II 2Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: A Software Engineering Approach. Springer 1991 Kernighan, Ritchie. The C Programming Language.

Mehr

Ulrich Stein

Ulrich Stein Von C nach MATLAB Einführung in MATLAB für Personen mit C-Kenntnissen Datentypen ähnlich in C und MATLAB, dort aber automatische Typzuweisung möglich double a = 2; Arrays a = double( 2 ); aber auch a =

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

I Dateisysteme. I.1 Allgemeine Konzepte. Einordnung. Prozessor (CPU, Central processing unit) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices)

I Dateisysteme. I.1 Allgemeine Konzepte. Einordnung. Prozessor (CPU, Central processing unit) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices) I Dateisysteme I Dateisysteme I.1 Allgemeine Konzepte Einordnung Prozessor (CPU, Central processing unit) Hauptspeicher (Memory) Ein-, Ausgabegeräte/ Periphere Geräte (I/O Devices) externe Schnittstellen

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

Systemprogrammierung

Systemprogrammierung Systemprogrammierung Grundlage von Betriebssystemen ITeil A II. Einführung in die Programmiersprache C I Jürgen Kleinöder Literatur zur C-Programmierung: Darnell, Margolis. C: A Software Engineering Approach.

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

Das Rechnen mit Logarithmen

Das Rechnen mit Logarithmen Ds Rechnen mit Logrithmen Etw in der 0. Klssenstufe kommt mn in Kontkt mit Logrithmen. Für die, die noch nicht so weit sind oder die, die schon zu weit dvon entfernt sind, hier noch einml ein kleiner Einblick:

Mehr

11. DER HAUPTSATZ DER DIFFERENTIAL- UND INTEGRALRECHNUNG

11. DER HAUPTSATZ DER DIFFERENTIAL- UND INTEGRALRECHNUNG 91 Dieses Skript ist ein Auszug mit Lücken us Einführung in die mthemtische Behndlung der Nturwissenschften I von Hns Heiner Storrer, Birkhäuser Skripten. Als StudentIn sollten Sie ds Buch uch kufen und

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 3 Definition von Zeigervariablen F.1 Zeiger(-Variablen) F.1 Zeiger(-Variablen) Syntax: Typ *Name ; 1 Einordnung Konstante: Bezeichnung

Mehr

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

Teil 5: Zeiger, Felder, Zeichenketten Gliederung Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik

Mehr

C Kurzeinführung in die Programmiersprache C. C-3 Datentypen und Variablen. C-2 Struktur eines C-Programms. C-1 Überblick. 1 Standardtypen in C

C Kurzeinführung in die Programmiersprache C. C-3 Datentypen und Variablen. C-2 Struktur eines C-Programms. C-1 Überblick. 1 Standardtypen in C C Kurzeinführung in die Programmiersprache C C Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Datentypen legen fest: Darnell, Margolis. C: A Software Engineering Approach. Springer

Mehr

C Kurzeinführung in die Programmiersprache C

C Kurzeinführung in die Programmiersprache C C Kurzeinführung in die Programmiersprache C C Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: A Software Engineering Approach. Springer 1991 Kernighan,

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

Arrays (Felder/Vektoren)

Arrays (Felder/Vektoren) Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff

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

Zeichen und Texte. Felder (Arrays) und Zeiger (Pointers) - Teil II. Der Typ char ( character ) Der ASCII-Code. Der ASCII-Code 10/21/12

Zeichen und Texte. Felder (Arrays) und Zeiger (Pointers) - Teil II. Der Typ char ( character ) Der ASCII-Code. Der ASCII-Code 10/21/12 Felder (Arrys) und Zeiger (Pointers) - Teil II Zeichen und Texte n Texte hben wir schon gesehen: std::cout

Mehr

1 Differenzen- und Differentialquotient 2. 2 Differentiationsregeln 5. 3 Ableitung spezieller Funktionen 6. 4 Unbestimmtes und bestimmtes Integral 7

1 Differenzen- und Differentialquotient 2. 2 Differentiationsregeln 5. 3 Ableitung spezieller Funktionen 6. 4 Unbestimmtes und bestimmtes Integral 7 Universität Bsel Wirtschftswissenschftliches Zentrum Abteilung Quntittive Methoden Mthemtischer Vorkurs Dr. Thoms Zehrt Differentil- und Integrlrechnung Inhltsverzeichnis 1 Differenzen- und Differentilquotient

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

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

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

Hintergrundspeicher (Secondary storage) Katalog. SPiC

Hintergrundspeicher (Secondary storage) Katalog. SPiC J Dateisysteme J Dateisysteme J.2 Allgemeine Konzepte (3) J.2 Allgemeine Konzepte (2) J.1 Allgemeine Konzepte Einordnung Prozessor (CPU, Central processing unit) Datei speichert Daten oder Programme Katalog

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

einlesen n > 0? Ausgabe Negative Zahl

einlesen n > 0? Ausgabe Negative Zahl 1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen

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

Lineare Algebra und Numerische Mathematik für D-BAUG

Lineare Algebra und Numerische Mathematik für D-BAUG R Käppeli L Herrmnn W Wu Herbstsemester 206 Linere Algebr und Numerische Mthemtik für D-BAUG Beispiellösung für Serie 5 ETH Zürich D-MATH Aufgbe 5 5) Seien u und v Lösungen des LGS Ax = b mit n Unbeknnten

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

Vorkurs Mathematik für Ingenieure WS 2016/2017 Übung 3. (a) Berechnen Sie die fehlenden Strecken und Winkel im folgenden rechtwinkligen Dreieck: b h

Vorkurs Mathematik für Ingenieure WS 2016/2017 Übung 3. (a) Berechnen Sie die fehlenden Strecken und Winkel im folgenden rechtwinkligen Dreieck: b h Prof. Dr. J. Pnnek Dynmics in Logistics Vorkurs Mthemtik für Ingenieure WS 206/207 Übung 3 Aufgbe : Trigonometrie () Berechnen Sie die fehlenden Strecken und Winkel im folgenden rechtwinkligen Dreieck:

Mehr

U8 7. Übung U8 7. Übung

U8 7. Übung U8 7. Übung U8 7. Übung U8 7. Übung Dynamische Speicherverwaltung Generisches Sortieren Aufgabe 7 U8.1 U8-1 Dynamische Speicherverwaltung U8-1 Dynamische Speicherverwaltung Erzeugen von Feldern der Länge n: mittels:

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

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

Mathematik K1, 2017 Lösungen Vorbereitung KA 1

Mathematik K1, 2017 Lösungen Vorbereitung KA 1 Mthemtik K, 07 Lösungen Vorbereitung KA Pflichtteil (etw 0..0 min) Ohne Tschenrechner und ohne Formelsmmlung (Dieser Teil muss mit den Lösungen bgegeben sein, ehe der GTR und die Formlsmmlung verwendet

Mehr

Probeklausur Name: (c)

Probeklausur Name: (c) Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume

Mehr

Lösungen Quadratische Gleichungen. x = x x = Also probieren wir es 3 4 = 12. x + + = Lösen Sie die folgenden Gleichungen nach x auf:

Lösungen Quadratische Gleichungen. x = x x = Also probieren wir es 3 4 = 12. x + + = Lösen Sie die folgenden Gleichungen nach x auf: Aufgbe : ) Lösen Sie die folgenden Gleichungen nch uf: = kein Problem einfch die Wurel iehen und ds ± nicht vergessen.. = = ±, b) + 5 = 0 Hier hben wir bei jedem Ausdruck ein, lso können wir usklmmern:

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

8. Arbeiten mit Dateien

8. Arbeiten mit Dateien 8. Arbeiten mit Dateien www.c-programme.de Stefan Thiemert Kapitel 8 - Seite 1 von 6 8. 1. Allgemeines Bisher haben wir Daten, die wir in unseren Programmen erzeugt und verarbeitet haben, nur über den

Mehr

Resultat: Hauptsatz der Differential- und Integralrechnung

Resultat: Hauptsatz der Differential- und Integralrechnung 17 Der Huptstz der Differentil- und Integrlrechnung Lernziele: Konzept: Stmmfunktion Resultt: Huptstz der Differentil- und Integrlrechnung Methoden: prtielle Integrtion, Substitutionsregel Kompetenzen:

Mehr

INE1 Arrays, Zeiger, Datenstrukturen

INE1 Arrays, Zeiger, Datenstrukturen INE1 Arrays, Zeiger, Datenstrukturen Arrays Felder von Elementen gleichen Typs Verwenden von Adressen: Zeiger Datenstrukturen mit struct Zeiger auf Datenstrukturen Spezielle Zeiger und komplexe Deklarationen

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

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

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

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

Typ : void* aktuelle Parameter Pointer von beliebigem Typ 2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben

Mehr

Ausgewählte Bibliotheksfunktionen

Ausgewählte Bibliotheksfunktionen Ausgewählte Bibliotheksfunktionen fopen überträgt den Inhalt des Dateipuffers: Schreibmodus: Dateipuffer wird geschrieben Lesemodus: Puffer wird geleert if (fflush(fp) == EOF) printf("puffer nicht geschrieben\n");

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung Speicherverwaltung, 0, const Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Speicherverwaltung

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

1 Symbolisches und approximatives Lösen von Gleichungen

1 Symbolisches und approximatives Lösen von Gleichungen 1 Symbolisches und pproimtives Lösen von Gleichungen von Frnk Schumnn 1.1 Eine hrte Nuss von Gleichung Wir sind zu Gst in einer Privtstunde im Fch Mthemtik, Klssenstufe 11. Anwesende sind Herr Riner Müller-Herbst,

Mehr

Integrieren. Regeln. Einige Integrale die man auswendig kennen sollte. Partielle Integration

Integrieren. Regeln. Einige Integrale die man auswendig kennen sollte. Partielle Integration Integrieren Regeln (f() + g())d = f()d + g()d c f()d = c f()d b f()d = f()d b Einige Integrle die mn uswendig kennen sollte s d = s + s+ + C (für s ) d = ln + C cos d = sin + C sin d = cos + C sinh d =

Mehr

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer) Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Zeigern

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

Zum Satz von Taylor. Klaus-R. Loeffler. 2 Der Satz von Taylor 2

Zum Satz von Taylor. Klaus-R. Loeffler. 2 Der Satz von Taylor 2 Zum Stz von Tylor Klus-R. Loeffler Inhltsverzeichnis 1 Der verllgemeinerte Stz von Rolle 1 2 Der Stz von Tylor 2 3 Folgerungen, Anwendungen und Gegenbeispiele 4 3.1 Jede gnzrtionle Funktion ist ihr eigenes

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

12. STAMMFUNKTIONEN UND DAS UNBESTIMMTE INTEGRAL

12. STAMMFUNKTIONEN UND DAS UNBESTIMMTE INTEGRAL 98 Dieses Skript ist ein Auszug mit Lücken us Einführung in die mthemtische Behndlung der Nturwissenschften I von Hns Heiner Storrer, Birkhäuser Skripten. Als StudentIn sollten Sie ds Buch uch kufen und

Mehr

Leitfaden MSC 4.0 MSC TAPI Dokumentation

Leitfaden MSC 4.0 MSC TAPI Dokumentation 1. Instlltion der Jv 64Bit Version Seite 1/7 Um die TAPI Schnittstelle nutzen zu können, enötigen Sie die Jv Version 64Bit. Die ktuelle Version finden Sie unter diesem Link http://www.orcle.com/technetwork/jv/jvse/downlods/jre8-downlods-2133155.html.

Mehr

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt (bei) informatik.fh-wiesbaden.de Seite 1 File I/O Persistieren von Daten Gastvorlesung - 18.01.10 Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt

Mehr

Vorkurs Mathematik Frankfurt University Of Applied Sciences, Fachbereich 2 1

Vorkurs Mathematik Frankfurt University Of Applied Sciences, Fachbereich 2 1 Vorkurs Mthemtik Frnkfurt University Of Applied Sciences, Fchbereich 1 Rechnen mit Potenzen N bezeichnet die Menge der ntürlichen Zhlen, Q die Menge der rtionlen Zhlen und R die Menge der reellen Zhlen.

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

Algebra-Training. Theorie & Aufgaben. Serie 3. Bruchrechnen. Theorie: Katharina Lapadula. Aufgaben: Bernhard Marugg. VSGYM / Volksschule Gymnasium

Algebra-Training. Theorie & Aufgaben. Serie 3. Bruchrechnen. Theorie: Katharina Lapadula. Aufgaben: Bernhard Marugg. VSGYM / Volksschule Gymnasium Algebr-Trining Theorie & Aufgben Serie Bruchrechnen Theorie: Kthrin Lpdul Aufgben: Bernhrd Mrugg VSGYM / Volksschule Gymnsium Liebe Schülerin, lieber Schüler Der Leitspruch «Übung mcht den Meister» gilt

Mehr

Kapitel 6. Funktionen

Kapitel 6. Funktionen Kpitel 6 Funktionen Josef Leydold Mthemtik für VW WS 07/8 6 Funktionen / 49 Reelle Funktion Reelle Funktionen sind Abbildungen, in denen sowohl die Definitionsmenge ls uch die Wertemenge Teilmengen von

Mehr

Funktionen. Kapitel 6. Reelle Funktion. Graph einer Funktion. Beispiel. Beispiel. Zeichnen eines Graphen. Bijektivität

Funktionen. Kapitel 6. Reelle Funktion. Graph einer Funktion. Beispiel. Beispiel. Zeichnen eines Graphen. Bijektivität Reelle Funktion Kpitel 6 Funktionen Reelle Funktionen sind Abbildungen, in denen sowohl die Definitionsmenge ls uch die Wertemenge Teilmengen von R üblicherweise Intervlle) sind. Bei reellen Funktionen

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Crashkurs - Integration

Crashkurs - Integration Crshkurs - Integrtion emerkung. Wir setzen hier elementre Kenntnisse des Differenzierens sowie der Produktregel, Quotientenregel und Kettenregel vorus (diese werden später in der VO noch usführlich erklärt).

Mehr

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung Felder (Arrays) Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder Mehrdimensionale Felder Zeiger und Adressen Zeigerarithmetik Felder

Mehr

Zeiger (engl. Pointer)

Zeiger (engl. Pointer) Zeiger (engl. Pointer) Zeiger Ein Zeiger (engl. Pointer) speichert eine Adresse, unter der ein Wert im Speicher des Computers gespeichert werden kann. Eine Variable im Gegensatz speichert einen Wert. Der

Mehr

Kapitel 1: Integration

Kapitel 1: Integration Kpitel 1: Integrtion Vorbemerkungen: Wnn bruchen wir numerische Integrtion? nicht bei nlytisch integrierbren Funktionen, sondern bei nlytisch gegebenen, ber nicht nlytisch integrierbren Funktionen, bei

Mehr

Umwandlung von endlichen Automaten in reguläre Ausdrücke

Umwandlung von endlichen Automaten in reguläre Ausdrücke Umwndlung von endlichen Automten in reguläre Ausdrücke Wir werden sehen, wie mn us einem endlichen Automten M einen regulären Ausdruck γ konstruieren knn, der genu die von M kzeptierte Sprche erzeugt.

Mehr

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C Übersicht Funktionen Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion Sinn von Funktionen Wiederverwendung häufig verwendeter nicht banaler Programmteile Wiederverwendung

Mehr