Inhalt. 4.8 Strukturen in C
|
|
- Benjamin Heinrich
- vor 6 Jahren
- Abrufe
Transkript
1 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 Pointern 4.6 Arbeit mit Zeichenketten 4.7 Funktionen 4.8 Strukturen R. Großmann, Strukturen in C Aus C-Sicht stellen Strukturen eine Zusammenfassung von Datenelementen unterschiedlichen Typs unter einem Namen dar. Strukturen sind aus C++ Sicht Klassen (Typen) deren Elemente öffentlich (public) sind. Dadurch sind sie vergleichbar mit Feldern, die eine Zusammenfassung (Reihung) von Datenelementen gleichen Typs unter einem Namen darstellen. Der Zugriff auf Datenelemente ist allerdings unterschiedlich: bei Feldern über den Index hinter dem Feldnamen, z.b. feld[i] bei Strukturen durch den Datenelementnamen hinter dem Strukturnamen und einem Punkt (. ), z.b. Person.Name 132
2 Aufbau und Deklaration einer Struktur Person Name Vorname Geschlecht Gehalt struct Person { char Name[30]; ; char Vorname[30]; int Geschlecht; float Gehalt; Person ist der Strukturname (und damit wie ein Typ) und Name, Vorname,... sind Komponentennamen. 133 Aufbau und Deklaration einer Struktur (1) Deklaration von Struktur-Variablen Da die Deklaration einer Struktur wie eine Typdefinition wirkt, können Variable diesen Strukturtyps folglich unter Nennung von struct Strukturname deklariert werden. Beispiel: struct Person {...; struct Person p1,p2; Es wäre auch eine Kombination möglich: struct Person {... p1,p2; 134
3 Aufbau und Deklaration einer Struktur (2) Deklaration von Struktur-Variablen mittels Typ- Definition typedef struct Person {... person_t; person_t p1,p2; Ein per typdef geschaffener Typ kann wie ein Standarddatentyp (int, float, usw.) zur Deklaration von Variablen und zur Deklaration weiterer Strukturen benutzt werden Wertebelegung von Strukturvariablen Wertebelegung von Struktur-Variablen: Eine Möglichkeit besteht in der Initialisierung bei der Deklaration: Beispiel: struct Person p1={"krause","jens",1, , p2={"meier","ines",0, ; oder es erfolgt eine Wertezuweisung an die Komponenten: strcpy( p1.name, "Krause" ); p1.gehalt = ; 136
4 6.3 Schachtelung von Strukturen Strukturen können wieder Strukturen enthalten Beispiel: struct Datum { int tag; char monat[10]; int jahr; ; struct Person { char name[30]; char vorname[20]; struct Datum beginn; // Struktur in Struktur int geschlecht; ; 137 Schachtelung von Strukturen Die Schachtelung darf aber nur in der angegebenen Weise erfolgen, d.h. man darf eine Struktur-Deklaration nicht direkt in eine weitere Struktur aufnehmen, sondern ausschließlich über eine Strukturvariable. Zugriff auf geschachtelte Strukturen: z.b.: struct person p1; und person enthält die geschachtelte Struktur struct datum beginn; p1.name aber p1.beginn.monat 138
5 Felder von Strukturen Strukturen können als Elemente in Feldern gereiht werden Beispiel: struct Person { char name[30]; char vorname[20]; struct Datum beginn; int geschlecht; ; struct Person mitarbeiter [5] ; Zugriff: mitarbeiter[1].name mitarbeiter[1].beginn.monat 139 Ein Beispiel mit Strukturen (1) Auf Übungsblatt 5, Teilaufgabe 3 (für allg. Maschinenbau) sind Messwerte und Orte im Speicher zu organisieren, zu sortieren und auszugeben. Bislang hatten wir zwei unabhängige Felder benutzt: float werte[max_werte]; char orte[max_werte] [MAX_STRLEN]; Hier bietet sich an, Wert und Ort in einer Struktur zusammenzufassen. struct messung { float wert; char ort[max_strlen]; ; struct messung m[max_werte]; // Feld struct messung zws_messung; // Zwischenspeicher für Tausch 140
6 Ein Beispiel mit Strukturen (2) i=0; ende=0; n_werte=0; while(!ende) { if (i<max_werte) { printf("eingabe Messwert Ort [%d]:",i); gets(eingabestring); sscanf(eingabestring,"%f", &m[i].wert); if (m[i].wert==999.0) ende=1; else { sscanf(eingabestring,"%s",dummystring); strcpy( m[i].ort, &eingabestring[strlen(dummystring)]); i = i + 1; n_werte ++; else // Gesamtanzahl der Messwerte erreicht ende = 1; 141 Ein Beispiel mit Strukturen (3) Zuweisung von Strukturen, hier im Kontext des Tauschs der Elemente. if (tausch) { // Umspeichern der Strukturen zws_messung = m[i]; m[i] = m[i+1]; m[i+1] = zws_messung; Eine Zuweisung von Strukturvariable beinhaltet das Kopieren aller Komponenten auf die Zielstruktur. Hier werden auch die Zeichenketten kopiert. 142
7 Zuweisen, Kopieren von Strukturvariablen Bei der Zuweisung von Strukturen a = b werden immer alle Elemente von b nach a kopiert. Das ist gleichbedeutend mit Kopieren der Speicherinhalte, die eine Strukturvariable einnimmt. Die Länge einer Struktur (hier kann der Typ oder die Strukturvariable benutzt werden) wird mit dem Operator size_t sizeof (strukturname); ermittelt. Vor dem C99-Standard wurde die Größe noch zur Übersetzungszeit ins Programm eingesetzt. Spätere Compiler erlauben, die Größe dynamisch zur Laufzeit zu bestimmen. 143 sizeof - Operator size_t sizeof (name); wobei name eine Variable, eine Struktur, ein Typ oder eine Feld sein kann. Namen für Felder werden hier aber nicht wie die Anfangsadresse auf das erste Element gewertet, sondern stehen für den Gesamtspeicherplatz des Feldes. Beispiele: #define MAX_STRLEN 120 struct messung { float wert; char ort[max_strlen]; ; struct messung mvar, m[10]; int l1 = sizeof(messung); // ergibt 124 int l2 = sizeof(mvar); // ergibt auch 124 int l3 = sizeof(m); // ergibt
8 Zeiger auf Strukturen (1) Es können Zeiger auf Strukturen erklärt werden Beispiel: struct datum { int tag; char monat[10]; int jahr; d1,d2; struct datum *zeig; zeiger = &d1; // Adresse der Strukturvariablen d1 (*zeiger).tag //Zugriff auf Komponente zeiger->tag //Zugriff auf Komponente beide Schreibweisen sind identisch! 145 Zeiger auf Strukturen (2) Das Kopieren von Strukturen, ausgehend von Zeigern: Beispiel: struct datum { int tag; char monat[10]; int jahr; d1,d2; datum *zeiger1 = &d1; // Adresse der Strukturvariablen d1 datum *zeiger2 = &d2; // Adresse d2 (*zeiger2) = (*zeiger1); // ist eine Möglichkeit memcpy(zeiger2,zeiger1,sizeof(datum)); // die andere Möglichkeit 146
9 Zeiger auf Strukturen an Funktionen übergeben Es können Zeiger auf Strukturen als Parameter von Funktionen auftreten. Beispiel: struct datum { int tag; char monat[10]; int jahr; d[5]={{7, April,1981,{12, Juni,1979, {20, Mai,1980,{4, Juni,1974,{0,,0; int finde(int j,struct datum *p) { int i=0; while ((p->tag)!=0){if ((p->jahr)==j) return (p->tag);else p++;; return 0; Aufruf: finde(1980,d); 147 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 Pointern 4.6 Arbeit mit Zeichenketten 4.7 Funktionen 4.8 Strukturen 4.9 Typen, Variable und Konstante R. Großmann, 148
10 4.9 Typen, Variable und Konstante Überblick: Gültigkeitsbereiche von Variablen, Sichtbarkeit Speicherklassen Type-Umwandlungen durch Typecasts Präprozessorkonstanten und Makro-Funktionen durch #define 149 Gültigkeitsbereiche (1) Variablen können verschiedene Gültigkeitsbereiche besitzen: lokale Gültigkeit und globale Gültigkeit Lokale Gültigkeit Variablen können nur in der Funktion benutzt werden, in der sie deklariert werden. Eine lokale Gültigkeit kann auf die main-funktion, aber auf jede andere Funktion, oder auch auf Verbundanweisungen bezogen sein. Lokale Gültigkeit innerhalb der main()-funktion: Die Variablen sind nur innerhalb der main-funktion sichtbar. Andere Funktionen (Prozeduren) können nicht direkt auf diese Variablen zugreifen. Bei Bedarf muss der Wert der Variablen den Funktionen über Parameter vermittelt werden. 150
11 Gültigkeitsbereiche (2) Beispiel zur lokalen Gültigkeit innerhalb der main()-funktion: int berechne(int arg) { // b, c sind hier nicht sichtbar, a wird über arg vermittelt return arg*2; main() { int a, b, c; b = berechne(a); 151 Gültigkeitsbereiche (3) lokale Gültigkeit in einer Funktion (Prozedur): Nur der Code innerhalb der Funktion kann diese Variable benutzen. Wird aus der Funktion zurückgesprungen, sind die Variablen nicht mehr sichtbar. Ihr Speicherplatz wird freigegeben und für andere Zwecke verwendet. double fakultaet(int arg) { double f=1.0; int i; // ist nur lokal gültig if (arg<2) return 1.0; for (i=2;i<=arg;i++) f = f * (double)i; return f; main() { double y = fakultaet(42); printf( %lf, y); printf( %d,i); // Fehler: i ist hier nicht sichtbar 152
12 Gültigkeitsbereiche (4) lokale Gültigkeit in einer Funktion (Prozedur) Achtung: Bei mehrmaligem Aufruf einer Funktion bleibt der Wert einer lokalen Variablen i.a. nicht gespeichert (Ausnahme durch spezielle Speicherklasse). Die Variable verliert zwischenzeitlich ihre Gültigkeit und wird bei jedem neuen Eintritt in die Funktion neu erzeugt. Sichtbarkeit und Überdeckung lokaler Variable: void f1(int *a) { int x=5; *a = *a+f2(&x); void f2(int *a) { int x=77; *a = *a+x; Die Variable x in f2 überdeckt x aus f1. Innerhalb f2 wird mit dem Wert x=77 gearbeitet. Die Variable x innerhalb f1 bleibt bestehen, ist aber nicht sichtbar, wenn f2 abgearbeitet wird 153 Gültigkeitsbereiche (5) Globale Gültigkeit: Globale Variablen sind über alle Funktionen hinweg gültig. Eine Ausnahme ist die lokale Überdeckung durch gleich benannte Variablen in Funktionen oder Verbundanweisungen. Durch globale Variable können Daten zu und von Funktionen vermittelt werden: Vorteile: bequem für Programmierer; schnell, da kein Kopieraufwand bei Aufruf der Funktion Nachteil: Die Funktionsdeklaration enthält keine Information, welche globalen Daten zur Eingabe und/oder Ausgabe benutzt werden. Man verliert schnell den Überblick und kann nicht mehr einschätzen, ob der Aufruf von Funktionen eventuell unerwünschte Nebenwirkungen hat. Globale Variablen sehr sparsam verwenden! 154
13 Beispiel für globale Gültigkeit: Gültigkeitsbereiche (6) int vermoegen=0; // globale Variable void erbschaft( int betrag) { vermoegen = vermoegen + betrag; zahle_erb_steuer(betrag); void zahle_erb_steuer(int erb_betrag) { vermoegen = vermoegen (int)( (float)erb_betrag * (float) E_STEUERSATZ/100.0); main() {... vermoegen = X; erbschaft(y); if (vermoegen >= ) printf( Ich bin reich! \n ); 155 Speicherklassen (1) C besitzt vier Schlüsselworte, um die Speicherklasse von Variablen zu definieren. Sie teilen dem Übersetzer mit, wie eine Variable zu speichern ist. auto Standard für lokale Variablen register wie auto, Variable wird vorrangig in einem Prozessorregister gespeichert (anstatt im Hauptspeicher) auto und register nur für lokale Variablen static Variable behält den Wert auch zwischen Funktionsaufrufen extern Variable ist bereits an anderer Stelle deklariert und soll nur als Bezeichner noch einmal eingeführt werden sinnvoll bei mehreren Quelletextdateien. 156
14 Speicherklassen (2) Beispiel für static: int zaehlen() { static int zahl=0; zahl++; return zahl; main() { int x, ergebnis; for ( x=1;x<47;x++) ergebnis = zaehlen(); printf( Das Ergebnis lautet %d\n, ergebnis); 157 Typecasts Der Übersetzer wandelt Typen von einem in einen anderen um, wenn es notwendig wird. In einigen Fällen werden Warnungen generiert, falls es zu Genauigkeitsverlust kommt oder Zuweisungen mit unterschiedlichem Wertebereich angewiesen werden. Man kann durch Typcasts aber auch eine Typumwandlung explizit anweisen. Typischer Fall: int a=3,b=5; float x_verhaeltnis_ab = a/b; // ergibt Warnung und Ergebnis 0 float y_verhaeltnis_ab = (float) a/b; // ergibt Ergebnis 0.0 float z_verhaeltnis_ab = (float) a/(float) b; // ergibt
15 Präprozessor-Konstanten (1) Für Parameter, die zur Übersetzungszeit festgelegt werden, bieten sich Präprozessorkonstanten an. Allgemeine Form: #define NAME WERT NAME ist der Konstantenname, der im Programm benutzt wird WERT ist dabei eine Zeichenkette, die aber auch einen Zahlenwert repräsentieren kann. Vor den eigentlichen Übersetzen wertet der Präprozessor die #define Anweisungen aus, und setzt überall dort, wo NAME als Bezeichner im Quellcode steht, die Zeichenkette WERT ein 159 Präprozessor-Konstanten (2) Beispiel: //#define STADT Dresden #define STADT Cuxhafen #define STEUERSATZ 19 #define PI //#define BEGRUESS_STRING Sehr geehrtes Publikum #define BEGRUESS_STRING Liebe Seeleute und Sportschiffer //#define BEGRUESS_STRING Liebe Parteigenossen #define RICHTUNG gesenkt //#define RICHTUNG erhoeht printf( %s, unabhaengig von der Zahl Pi mit dem Wert %f gilt in %s ein Steuersatz von %d Prozent.\n, BEGRUESS_STRING,PI,STADT,STEURSATZ); printf( Wir stehen dafuer, dass der Steuersatz in %s %s wird!\n, STADT, RICHTUNG); 160
16 Präprozessor-Konstanten (3) Beispiel: Maximale Anzahl von Pixeln in einem Bild #define MAX_HORIZ 4000 #define MAX_VERT 4000 struct { char r,g,b; pixel; pixel bild[max_vert][max_horiz]; for(int v=0;v<max_vert;v++) for(int h=0;h<max_horiz;h++) bild[v][h] = ; 161 Präprozessor-Makros (1) Der Präprozessor kann auch kleine Makro-Funktionen mit Parametern in dem Code ersetzen. #define ABS(x) ((x)<0?-(x):(x)). float a,b; int x,y;. b = ABS(a); // wird ersetzt durch: b = a<0?-a:a; y = ABS(x); // wird ersetzt durch: y = x<0?-x:x; Vorteil: Man kann Details in Funktionen verbergen. Der Aufwand eines Funktionsaufrufs wird aber zur Laufzeit vermieden. Programme laufen dadurch schneller! 162
17 Präprozessor-Makros (2) Unterschied Makros gegenüber echten C-Funktionen: Makro-Funktionen werden durch Ersetzung im Quelltext realisiert. C-Funktionen werden zur Laufzeit aufgerufen und als ganzes ausgeführt. Wenn Operationen innerhalb und außerhalb der Makros/Funktionen verschiedene Prioritäten aufweisen, kann sich ein unterschiedliches Verhalten ergeben, je nachdem ob man eine Makro-Funktion oder eine echte C-Funktion benutzt. Beispiel: #define F(x,y) (x)+(y) a=1; b=2; c=3; int f(int x, int y) { return x+y; a=1; b=2; c=3; d=f(a,b)*c; // d = a+b*c; // d = 1+2*3 = d1=f(a,b)*c; // f(1,2) = 3 // d = 3* c = 9 163
Inhalt. 4.9 Typen, Variable und Konstante
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 Pointern
MehrProgrammierung in C: Vermischtes (Teil 1)
Programmierung in C: Vermischtes (Teil 1) Gültigkeitsbereiche für Variablen C-Präprozessor (#define EPS 0.00001) Inkremtieren und Dekrementieren ( jahr++; restzeit--;) Speicherklassen (static) Typecasts
MehrStrukturen in C. Strukturen stellen eine Zusammenfassung von Datenelementen unterschiedlichen Typs unter einem Namen dar.
Strukturen in C Strukturen stellen eine Zusammenfassung von Datenelementen unterschiedlichen Typs unter einem Namen dar. Dadurch sind sie vergleichbar mit Feldern, die eine Zusammenfassung (Reihung) von
Mehr2. 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)
MehrProgrammierung in C: Vermischtes
Programmierung in C: Vermischtes Gültigkeitsbereiche für Variablen C-Präprozessor (#define EPS 0.00001) Inkremtieren und Dekrementieren ( jahr++; restzeit--;) Speicherklassen (static) Typecasts Kommandozeilenparameter
Mehr2. 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)
MehrInhalt. 4.4 Fortsetzung: Zeiger (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) und Zeigern 4.5 Zeichen
MehrInhalt. 1 Einstieg in die Welt von C Erste Schritte in C 31. Vorwort... 15
Vorwort... 15 1 Einstieg in die Welt von C 17 1.1 Die Sprache C... 17 1.2 Die C-Standardbibliothek... 18 1.3 Die nötigen Werkzeuge für C... 21 1.4 Übersetzen mit der Entwicklungsumgebung... 23 1.5 Übersetzen
MehrSpeicherklassen (1) Lokale Variablen
Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden
MehrInhalt. 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
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten Operatoren, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)
MehrInformatik. Strukturen und Aufzählungstypen. Vorlesung
Informatik Vorlesung 06 Strukturen und Aufzählungstypen 03. Dezember 2018 WiSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Datentypen Die bisher benutzten Datentypen waren
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
MehrGlobale Variablen Diverses. Globale Variablen. Globale Variablen
lokale Variablen Variablen bisher nur am Anfang von Funktionen auch erlaubt: am Anfang innerer Codeblöcke (innerhalb geschweifter Klammern) in C99 und als gcc-erweiterung: an beliebiger Stelle innerhalb
MehrZeiger (1) Allgemeines
Zeiger (1) Allgemeines In C häufig verwendet zur Realisierung mancher Programmierkonzepte Sehr enge Verknüpfung von Zeigern und Feldern Vielseitiges Hilfsmittel, birgt allerdings auch Gefahren für Programmierfehler
MehrTyp : void* aktuelle Parameter Pointer von beliebigem Typ
2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben
MehrProgrammieren in C. Speicher anfordern, Unions und Bitfelder. Prof. Dr. Nikolaus Wulff
Programmieren in C Speicher anfordern, Unions und Bitfelder Prof. Dr. Nikolaus Wulff Vergleich: Felder und Strukturen Felder müssen Elemente vom selben Typ enthalten. Strukturen können Elemente unterschiedlichen
MehrC++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.
Mehr1 pulsierender Speicher
1 pulsierender Speicher 1.1 Aufgabentyp Gegeben sei das folgende C-Programm: [...] (a) Geben Sie den Gültigkeitsbereich jedes Objektes des Programms an. (b) Stellen Sie die Rechnung des Programms für die
Mehr2. 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)
MehrTeil 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
MehrFelder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden
Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden Dim arrayname (dim1,dim2, ) As Typ Bei eindimensionalen Feldern
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
MehrVerwendung 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
MehrFunktionen. mehrfach benötigte Programmteile nur einmal zu schreiben und mehrfach aufzurufen
Funktionen Funktionen erlauben, dem Programmcode hierarchisch zu strukturieren ein Hauptprogramm steuert dabei die Abfolge von Schritten, die einzelnen Schritte können durch Funktionen realisiert werden
MehrBeispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung
Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]
Mehr2. 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)
MehrHerzlich willkommen!
Programmiertechnik 1 Herzlich willkommen! Dozent: Dipl.-Ing. Jürgen Wemheuer Teil 6: Zusammenfassung und Beispiele Mail: wemheuer@ewla.de Online: http://cpp.ewla.de/ Zusammenfassung (1) 2 1. Programm in
Mehr2. 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)
MehrFelder fester Länge (1)
Felder fester Länge (1) Felder: Aneinanderreihung von mehreren Variablen gleichen Typs Ursprünglich als 1-dimensionale Organisationsform gedacht, aber auch zwei- und höherdimensional (Matrizen u.ä.) Benutzung
MehrC- Kurs 07 Höhere Datentypen
C- Kurs 07 Höhere Datentypen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa?k.uni- leipzig.de Universität Leipzig Ins?tut für Informa?k Technische Informa?k Höhere Datentypen Überblick Höhere Datentypen Werden
MehrInhalt. Peter Sobe 63. Felder in C
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Streuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern
Mehreinlesen 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
MehrInstitut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke
Java 2 Markus Reschke 07.10.2014 Datentypen Was wird gespeichert? Wie wird es gespeichert? Was kann man mit Werten eines Datentyps machen (Operationen, Methoden)? Welche Werte gehören zum Datentyp? Wie
MehrTeil 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
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
MehrDr. Monika Meiler. Inhalt
Inhalt 12 Strukturierte Datentpen - Strukturen... 12-2 12.1 Definition und Deklaration von Strukturtpen und Strukturen... 12-2 12.2 Strukturen als Funktionsparameter und Funktionswert... 12-4 12.3 Felder
MehrGrundlagen und Konzepte von C Datenstrukturen
Grundlagen und Konzepte von C Datenstrukturen Ausarbeitung von Andreas Gadelmaier Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik,
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29
Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente
MehrPraxis der Programmierung
Arrays, Pointerarithmetik, Konstanten, Makros Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vektoren) 2 Arrays: Motivation
Mehr7 Laufzeit-Speicherverwaltung
7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
MehrÜbersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)
Übersicht 9.1 Strukturen (Verwendung) 9.2 Strukturen (Typdeklaration) 9.3 Strukturen (Variablendeklaration) 9.4 Felder aus Strukturen 9.5 Zugriff auf Strukturkomponenten 9.6 Zugriff auf Strukturkomponenten
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
MehrK 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
MehrTeil 6: Strukturen und Unionen Gliederung
Teil 6: Strukturen und Unionen Gliederung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen 6.2 Strukturen Ursprung in Pascal als Datentyp record, Verbunddatentyp Strukturtyp
MehrVorkurs Informatik WiSe 16/17
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 05.10.2016 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2016
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrEinführung in C. Alexander Batoulis. 5. Mai Fakutltät IV Technische Universität Berlin
Fakutltät IV Technische Universität Berlin 5. Mai 2014 Inhaltsverzeichnis 1 2 3 4 5 6 7 Überblick Beispielprogramm in Java Beispielprogramm in C 1 2 3 4 5 6 7 Beispielprogramm in Java Beispielprogramm
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
MehrINE1 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
MehrPROCESSING EINE ZUSAMMENFASSUNG. Created by Michael Kirsch & Beat Rossmy
PROCESSING EINE ZUSAMMENFASSUNG Created by Michael Kirsch & Beat Rossmy INHALT 1. Typen und Operatoren 1. Datentypen 3. Klassen und Objekte 1. Klassen und Objekte 2. Operatoren 2. Konstruktor 3. Typkonversion
MehrGrundlagen der OO- Programmierung in C#
Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3
MehrViel Erfolg bei der Bearbeitung der Aufgaben!
Musterlösung Name:... 1 2 3 4 5 Gesamt Note 12 8 10 15 11 56 Bitte tragen Sie auf dem Deckblatt Ihr Namen und Ihre Matrikelnummer ein und auf allen weiteren Seiten nur noch Ihre Matrikelnummer. Lösungen
MehrDatenstrukturen. InE1 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert
Datenstrukturen InE1 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was gehtes? Rangliste Winti-Marathon benötigte Information pro Teilnehmer Variable Typ Daten Name String Vorname
MehrCS1005 Objektorientierte Programmierung
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Funktionen / statische Methoden - Definition - Verwendung - Ausführung Seite 1 Th Letschert Funktionen: Definition und Verwendung
MehrVorkurs Informatik WiSe 17/18
Java Ausdrücke und Variablen Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 05.10.2017 Technische Universität Braunschweig, IPS Überblick Ausdrücke, Datentypen und Variablen Kontrollstrukturen 05.10.2017
MehrEinführung in C. EDV1-04C-Einführung 1
Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags
MehrVorlesung Programmieren
Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Lokale und globale Variablen Namensräume Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund
Mehr4. Objektorientierte Programmierung mit C++
4. Objektorientierte Programmierung mit C++ Einführung C++ / Entwicklung der Sprachfamilie Erweiterungen der Sprache C: Ein- und Ausgabe, Referenzen, Speicherallokation und Freigabe Grundlagen des Typkonzepts
MehrInteger Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen
1 C-Schlüsselwörter Schlüsselwörter sind in allen Programmiersprachen reservierte Wörter. In C sind auch alle Namen _[A-Z]... und... reserviert, auch _... bereichsweise. Weiterhin durch die Standard-
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrFelder, Zeiger und Adreßrechnung
Felder, Zeiger und Adreßrechnung Felder bestehen aus Variablen eines einzigen Datentyps. Bisher kennen wir eindimensionale Felder. In C sind Felder mit beliebigen Dimensionen möglich. Unsere räumliche
Mehr4.2 Programmiersprache C
4.2.1. Elementare Datentypen (signed) int, unsigned int, (signed) short (int), unsigned short (int), (signed) long (int), unsigned long (int) Elementare Datentypen für ganze Zahlen mit oder ohne Vorzeichen.
MehrC/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
Mehr1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
Mehr1. Referenzdatentypen: Felder und Strings
1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen
MehrPhysische Datenstrukturen
Elementare Datentypen Strukturierte Datentypen Zeiger Seite 1 Einfache Datentypen Datentyp char Verwendung: ASCII-Zeichen Wertebereich: alle darstellbaren Zeichen, 8 bit lange Ganzzahlen im Intervall -128
MehrOperatoren in C. Gastvorlesung Andreas Textor
Operatoren in C Gastvorlesung - 11.01.10 Andreas Textor andreas.textor@hs-rm.de Terminologie Operand 4 + 2 Operand Operator Unterscheidung nach Anzahl Operanden Unäre, Binäre und Ternäre Operatoren Z.B.:!x;
MehrKontrollfragen Mikrocontroller Programmiersprache C H1203 Felix Rohrer
Block 1 1. Welcher Wert hat w? int w = 034; 28 (Dezimal) 034 wird als Octal interpretiert 34oct = 28dec 2. Wie lauten die Ergebnisse? unsigned int a = 3, b = 5, c = 7; unsigned int x, y, z; x = a == 3;
MehrMethoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
MehrZeichenketten. Peter Sobe
Zeichenketten existieren in C nicht als eigener Typ. Es können nur Zeichenkettenkonstante z.b. zur Ausgabe benutzt werden. Beispiel: printf( Guten Tag!\n ); Eine Zeichenkette als Variable kann aber in
MehrInformatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5
Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in
MehrKapitel 8. Adressen und Zeiger
Kapitel 8 Adressen und Zeiger 1 Gliederung Kapitel 8 Adressen und Zeiger 8.1 Definition 8.2 Einfache Beispiele 8.3 Zeigerarithmetik und Vektoren 8.4 Vektoren als Funktionsparameter 8.5 Messwertprogramm,
MehrProbeklausur 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
MehrArrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3
Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................
Mehr3. Exkurs in weitere Arten der Programmierung
3. Exkurs in weitere Arten der Programmierung Inhalt: Objektorientierte Programmierung in C++ Logische Programmierung in Prolog Peter Sobe Objektorientierte Programmierung in C++ C++ ist eine objektorientierte
MehrInhalt. 4.7 Funktionen
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 Pointern
MehrTeil 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.
MehrKapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz
Kapitel 10 Verweise und Referenzen Inhalt von Kapitel 10 Verweise und Referenzen 10.1 Das Schlüsselwort this Definition Verwendungszweck Klassenmethoden EINSCHUB: Musterlösung zu Übung 4.1 10.2 Objektreferenzen
MehrKapitel 3. Programmierkurs. Arten von Anweisungen. 3.1 Was sind Anweisungen?
Kapitel 3 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Anweisungen, Variablen Arten von Anweisungen Variablen Konstanten Höchste Zeit für ein Programm Gültigkeitsbereich von Variablen
MehrÜbersicht. Speichertypen. Speicherverwaltung und -nutzung. Programmieren in C
Übersicht Speichertypen Speicherverwaltung und -nutzung Speichertypen Beim Laden eines Programms in den Speicher (Programmausführung) kommen 3 verschiedene Speicherbereiche zum Einsatz: Text Segment (Code
MehrFunktionen: Rückgabewert
Funktionen: Rückgabewert Jede Funktion in C++ (außer Konstruktoren und Destruktoren siehe später) MUSS einen Rückgabewert-Typ vereinbaren. Gibt sie nichts zurück, muss der Rückgabetyp void sein. Jede return-anweisung
MehrEinführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Gültigkeitsbereiche Inhalt Lokale und globale
MehrC++ - Funktionen und mehr -
C++ - Funktionen und mehr - Friedrich-Schiller-Universität Jena Kerstin Gößner und Ralf Wondratschek Prof. Dr. habil. Wolfram Amme Dipl.-Inf. Thomas Heinze Inhaltsverzeichnis 1 Einleitung 3 2 Deklaration,
MehrEinstieg in die Informatik mit Java
1 / 21 Einstieg in die Informatik mit Java Felder, eindimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 21 1 Überblick: Was sind Felder? 2 Vereinbarung von Feldern
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
MehrZeiger (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