Abgeleitete Datentypen (1) Richtlinien
|
|
- Philipp Schubert
- vor 5 Jahren
- Abrufe
Transkript
1 Abgeleitete Datentypen (1) Richtlinien Verbunddatentypen erlauben durch Kombination und Verschachteln beliebige komplexe Datenstrukturen Entwurf von Datenstrukturen hat wesentlichen Einfluss auf Art und Weise, wie Algorithmen darauf zugreifen können Entwurf auf Hinblick verwendeter Algorithmen Verwendung von struct und union Möglichst einfach und verständlich aufbauen Vermeidung von zu tiefen Verschachtelungsebenen Vermeidung hoher Anzahl von Attributen, besser kleinere, problemorientierte Datentypen Definition von Funktionen, die darauf zugreifen (interface functions) Vermeidung von redundanten Strukturen
2 Abgeleitete Datentypen (2) Strukturen Mit struct-vereinbarung kann ein neuer Datentyp aus vorhandenen zusammengesetzt werden struct Strukturname { Typ Attributname; //... Beispiel für Struktur Punkt_s, die Koordinaten eines Punktes speichert struct Punkt_s { double x, y;
3 Abgeleitete Datentypen (3) Strukturen Erzeugen von Variablen folgt nach dem Muster: struct Strukturname Variablenliste; Beispiel für struct-variablen, die auf der vorherigen Folie definiert wurden: struct Punkt_s p1, p2; In C kann man auch Strukturdefinition und Variablendefinition in einem Rutsch zu erledigen: struct Strukturname { Typ Attributname; //... } Variablenliste Beispiel mit den Koordinaten: struct Punkt_s { double x, y; } p1, p2; Besser ist, Definition und Initialisierung zu trennen (übersichtlicher)
4 Abgeleitete Datentypen (4) Strukturen Typdefinitionen möglichst in Header-Dateien sammeln Verfügbarkeit für mehrere Module Trennung von Datentypdefinition und Programmtext // Datei grafik.h struct Punkt_s { double x, y; //... // Datei grafik.c #include "grafik.h" //... struct Punkt_s p1, p2; //...
5 Abgeleitete Datentypen (5) Strukturen Initialisierung von Struktur-Variablen: struct Punkt_s p1 = { 4, 3 }, p2; Im Beispiel werden Variablen p1 und p2 definiert, p1 wird auch initialisieret, p2 hingegen nicht Initialwerte werden durch Kommas voneinander getrennt Auf Attribute der Struktur-Variablen kann mittels Punkt-Operator zugegriffen werden p2.x = 4; p2.y = 3;
6 Abgeleitete Datentypen (6) Strukturen Beispiel zur Berechnung des Euklidischen Abstands zweier Punkte: #include <math.h> //... double dist, dx, dy; //... dx = p2.x - p1.x; dy = p2.y - p1.y; dist = sqrt(dx * dx + dy * dy);
7 Abgeleitete Datentypen (7) Strukturen Beispiel zur Verschachtelung von Strukturen: struct Rechteck_s { struct Punkt_s pmin, pmax; Auch verschachtelte Strukturen lassen sich initialisieren: struct Rechteck_s r = { { 4, 3}, {15, 8}, Zugriff auf Elemente erfolgt wieder mittels.-operator: double flaeche; //... flaeche = (r.pmax.x - r.pmin.x) * (r.pmax.y - r.pmin.y);
8 Abgeleitete Datentypen (8) Strukturen Kopieren von Strukturen wird über den Zuweisungsoperator realisiert p2 = p1; // Kopiert die komplette Struktur p1 nach p2
9 Abgeleitete Datentypen (9) Funktionen und Strukturen Struktur-Variablen können ähnlich verwendet werden wie Variablen eingebauter Typen: struct Rechteck_s NeuesRechteck(const struct Punkt_s p1, const struct Punkt_s p2) { struct Rechteck_s rect; rect.pmin = p1; rect.pmax = p2; return rect; } Zwei Punkte werden übergeben und als Rechteck wieder zurückgegeben const bewirkt, dass die Daten nur gelesen werden
10 Abgeleitete Datentypen (10) Funktionen und Strukturen Folgende Erweiterung des Beispiels bewirkt, dass das Attribut pmin in der linken unteren Ecke und pmax in der rechten oberen Ecke landet struct Rechteck_s NeuesRechteck(const struct Punkt_s p1, { struct Rechteck_s rect; } const struct Punkt_s p2) rect.pmin.x = MIN(p1.x, p2.x); // früher vorgestellte MIN- und rect.pmin.y = MIN(p1.y, p2.y); // MAX-Makros rect.pmax.x = MAX(p1.x, p2.x); rect.pmax.y = MAX(p1.y, p2.y); return rect; Zur Übergabe der Funktionswerte werden Kopien der Parameter angelegt und zurückgegeben Problem, wenn große Datenmengen bei Datenmengen > 8 Byte besser Zeiger verwenden
11 Abgeleitete Datentypen (11) Zeiger auf Strukturen Wie gezeigt, ist es vorteilhaft, Zeiger zu verwenden, statt Kopien größerer Strukturen anzulegen struct Punkt_s p1 = {4, 3 struct Punkt_s *pp = &p1; Adresse der Strukturvariablen wird mit dem Adressoperator ermittelt Um auf Element x zuzugreifen, könnte man schreiben (*pp).x Klammerung ist notwendig, da der Punkt-Operator eine höhere Priorität hat Umständliche Schreibweise, stattdessen Verwendung des Selektionsoperators pp->x Hole das Attribut x aus dem Objekt, auf das pp zeigt. (korrekte Interpretation) pp zeigt auf x. (übliche Interpretation, aber nicht korrekt, da Zeiger pp auf p1 zeigt und nicht auf x)
12 Abgeleitete Datentypen (12) Zeiger auf Strukturen Modifikation des Rechteckbeispiels mit Zeigern: void NeuesRechteck( struct Rechteck_s * const rectp, const struct Punkt_s * const pp1, const struct Punkt_s * const pp2) { rectp->pmin.x = MIN(pp1->x, pp2->x); rectp->pmin.y = MIN(pp1->y, pp2->y); rectp->pmax.x = MAX(pp1->x, pp2->x); rectp->pmax.y = MAX(pp1->y, pp2->y); } // end NeuesRechteck Interpretation von rectp->pmin.x: rectp zeigt auf pmin Punkt x. Die Originaldaten werden per Zeiger an die Funktion übergeben Konstante Zeiger (Adressen können also nicht verändert werden) Übergebene Inhalte können nicht verändert werden const struct Punkt_s Rückgabewert muss beschreibbar sein (const fehlt hier)
13 Abgeleitete Datentypen (13) Zeiger auf Strukturen Abwägen, wann besser Kopien übergeben werden sollten und wann Zeiger Zeiger: Arbeiten an Originaldaten, performante Datenübergabe Kopien: sicher, da eine Originaldaten, Parameterübergabe nicht performant, da Kopien
14 Abgeleitete Datentypen (14) Felder von Strukturen Exemplarisches Beispiel: #define ADRESSE_NAME_LEN 30 #define ADRESSE_ORT_LEN 20 #define ADRESSE_STRASSE_LEN 50 struct Adresse_s { char name[adresse_name_len]; // Name der Person long plz; // Postleitzahl char ort[adresse_ort_len]; // Wohnort char strasse[adresse_strasse_len]; // Strasse long nummer; // Hausnummer #define ADRESSBUCH_LEN 100 struct Adresse_s Adressbuch[ADRESSBUCH_LEN];
15 Abgeleitete Datentypen (15) Felder von Strukturen Initialisierung wie bei Feldern ebenfalls möglich: struct Adresse_s KleinesAdressBuch[3] = { { "Joseph Haydn", 2471, "Rohrau", "Obere Hauptstraße", 25 }, { "Franz Schubert", { "Wolfgang Amadeus Mozart", 1090, 5020, "Wien", "Salzburg", "Nußdorfer Straße", "Getreidegasse", 54 9 } }, Statische und globale Variablen werden mit 0 initialisiert Bei unvollständigen Initialisierungen wird Rest mit 0 initialisiert
16 Abgeleitete Datentypen (16) Felder von Strukturen Zugriff auf Feldelemente: Auswahl an der Stelle, wo das Feld definiert ist: KleinesAdressBuch[0].nummer = 23; Die einzelnen Attribute werden wie die zugehörigen Basisvariablen behandelt, beispielsweise Kopieren von Zeichenketten: strcpy(kleinesadressbuch[0].name, "Johannes Brahms"); Adressierung eines einzelnen Zeichens aus der Zeichenkette erfolgt mittels KleinesAdressBuch[0].name[0] = J ;
17 Abgeleitete Datentypen (17) Bitfelder Für speicherkritische Anwendungen Wahrheitswerte struct Bitfelder_s { unsigned int a : 1; // Bitfeld der Länge 1 unsigned int b : 2; // Bitfeld der Länge 2 unsigned int c : 3; // Bitfeld der Länge 3 unsigned int d : 5; // Bitfeld der Länge 5 Nur Typ int erlaubt, Angabe von unsigned oder signed aus Portabilitätsgründen Bitfeld mit den Attributen a, b, c, d enthält 1, 2, 3, 5 Bits
18 Abgeleitete Datentypen (18) Bitfelder Anonyme Bitfelder struct Bitfelder_s { unsigned int a : 10; // Bitfeld der Länge 10 unsigned int : 6; // Anonymes Bitfeld unsigned int b : 10; // Bitfeld der Länge 10 unsigned int : 0; // Anonymes Bitfeld signed int c : 2; // Bitfeld der Länge 2 Wird kein Attributname angegeben, wird hier eine Lücke von n Bits eingefügt
19 Abgeleitete Datentypen (19) Bitfelder Zugriff auf Bitfelder wie bei allen anderen Variablen auch: struct Bitfeld_s bf; //... bf.a = 36; bf.b = 29; bf.c = -1;
20 Abgeleitete Datentypen (20) Unions Bei regulären Strukturen (structs, Bitfelder) haben die Datenelemente im Speicher aufeinanderfolgende Adressen Bei varianten Strukturen (unions) haben die Datenelemente die gleiche Adresse Resultierender Effekt bei Beschreiben eines Attributes: alle Attribute werden beschrieben, da sie an gleicher Stelle im Speicher stehen Unions werden eingesetzt, wenn Verschiedene Attribute zusammengefasst werden sollen, die nicht gleichzeitig auftreten können (z.b. geometrische Struktur ist Kreis oder Rechteck, kann aber nicht beides sein) Auf komplexe Datenstrukturen auf unterschiedliche Art und Weise zugegriffen werden soll )z.b. Datentelegramme) Definition mit dem Schlüsselwort union Nutzung äquivalent zu struct (unter Beachtung der unterschiedlichen Eigenschaften)
21 Abgeleitete Datentypen (21) Unions Definition einer varianten Struktur: union Unionname_u { Typ Attributname; //... Beispiel: ganzezahl union punktoderganzezahl { double punktzahl; long ganzezahl; punktzahl double belegt 64 Bit und long belegt auf 32-Bit-Rechnern nur 32 Bit Länge entspricht der des längsten Elementes
22 Abgeleitete Datentypen (22) Unions Definition einer union-variable: union Unionname_u Variablenliste; Beispiel: union Zahl_u punktoderganzezahl; Union-Definition und Variablen-Definition in einem Rutsch (nicht empfohlen): union Zahl_u { double punktzahl; long ganzezahl; } punktoderganzezahl; Zugriff auf Elemente a.ganzezahl = 5; // a.ganzezahl ist gültig, a.punktzahl ist ungültig // a.ganzezahl kann verwendet werden a.punktzahl = 1.3; // a.punktzahl ist gültig, a.ganzezahl ist ungültig // a.punktzahl kann verwendet werden
23 Abgeleitete Datentypen (23) Unions Beispiel struct Kreis_s { double x, y; // Position des // Mittelpunktes double r; // Radius struct Rechteck_s { double x, y; // Position des linken // unteren Punktes double b, h; // Breite, Höhe union GeoObjekt_u // Definition einer // varianten Struktur { struct Kreis_s kreis; struct Rechteck_s rechteck; enum GeoObjektTyp_e { GEOTYP_KREIS, GEOTYP_RECHTECK struct GeoObjekt_s { enum GeoObjektTyp_e typ; union GeoObjekt_u geoobjekt;
24 Abgeleitete Datentypen (24) Unions Im Beispiel kann typ einen von zwei angegebenen Möglichkeiten annehmen Ist typ gleich GEOTYP_KREIS, dann enthält die variante Struktur GeoObjekt_u einen Kreis, ist er GEOTYP_RECHTECK, ein Rechteck Beispiel zur Anwendung: struct GeoObjekt_s g; //... // Setzen der Daten für einen Kreis g.typ = GEOTYP_KREIS; g.geoobjekt.kreis.x = 2.3; g.geoobjekt.kreis.y = 4.5; g.geoobjekt.kreis.r = 8; Verwendung verschachtelter Datenstrukturen führt oft zu langen Namen
25 Abgeleitete Datentypen (25) Unions Zur Vermeidung langer Namen kann man eine union anonym (also ohne eigenen Typbezeichner) definieren, was innerhalb einer Strukturdefinition möglich ist: struct GeoObjekt_s { enum GeoObjektTyp_e typ; // GEOTYP_KREIS... Kreis // GEOTYP_RECHTECK... Rechteck union { struct Kreis_s kreis; struct GeoObjekt_s g; struct Rechteck_s rechteck; //... g.typ = GEOTYP_KREIS; g.kreis.x = 2.3; // Der "Name" der anonymen // varianten Struktur entfällt g.kreis.y = 4.5; g.kreis.r = 8; Achtung: es wird vorgetäuscht, dass die Union-Attribute Teil der äußeren Struktur sind
26 Abgeleitete Datentypen (26) Unions Beispiel für Anwendung alternativer Zugriffsmethoden zum Senden eines Datenpaketes union datentelegramm { struct // Struktur und Byte-Array im Speicher überlagert { int telegrammtyp; // Definition des Pakettyps zwecks Identifikation int laenge; // Anzahl der folgenden Bytes int[20]; // eigentliche Daten int crc; // Prüfsumme char[46] byte; // alternativ kann man über das Byte-Array zugreifen union datentelegramm datenfeld; //... for (i = 0; i < sizeof(datentelegramm); i++) sendebyte(datenfeld.byte[i]);
27 Abgeleitete Datentypen (27) Rekursive Strukturen Strukturen, die Verweise auf dieselben Strukturen verweisen Sinnvoll für dynamische Speicherverwaltung, z.b. Aufbau von Listen Beispiel: struct Eintrag_s { struct Eintrag_s *naechster; // Zeiger auf weitere Struktur long wert; // Inhalt des Elementes Es muss ein Zeiger verwendet werden, da innerhalb der Struktur diese nicht noch einmal verwendet werden kann Das Ende einer solchen Rekursion kann man als Nullzeiger angeben
28 Abgeleitete Datentypen (28) Deklaration von abgeleiteten Datentypen Abgeleitete Datentypen können in verschiedenen Programmmodulen verwendet werden (wie z.b. Funktionen) Sind diese an anderer Stelle im Projekt definiert, muss man dem Compiler nur bekannt machen, dass es diesen Datentyp gibt Beispiel: // Deklarationen von abgeleiteten Datentypen struct Punkt_s; union Zahl_u; enum Boolean_e; Erfolgt keine Definition an anderer Stelle, gibt es einen Compilerfehler, da dieser dann nicht weiß, wie groß die Variable ist. Es kann auch keine Adresse für einen Zeiger zugewiesen werden. Wichtig: Unterscheidung zwischen Deklaration und Definition Verwendung von Header-dateien für Typ-Definitionen
29 Abgeleitete Datentypen (29) Typdefinition mit Typedef Typedef definiert einen neuen Namen für einen Variablentyp. Beispiel: typedef char *string; Das Aussehen erinnert an eine Variablendefinition Wird eine Variable vom Typ string definiert, so wird sie effektiv so definiert, wie die scheinbare Variable in der Typdefinition Folgende Zeilen sind daher gleichwertig: char *text1 = "Hallo"; string text2 = "Welt"; Beispiel für eine Zeichenkette mit der Länge 20: typedef char namensfeld[20]; namensfeld name;
30 Abgeleitete Datentypen (30) Typdefinition mit Typedef Verfahren wird gern genutzt, um Programmcode lesbarer zu machen Beispielsweise kann man so die Angabe von struct wegdefinieren: typedef struct Adresse_s { char name[30]; // Name der Person long plz; char ort[20]; // Postleitzahl // Wohnort char strasse[50]; // Straße long nummer; } Adresse_t; // Hausnummer Für die Definition eines Adressbuches kann jetzt folgendes benutzt werden: Adresse_t Adressbuch[100]; Postfix t wird gern verwendet, um einen definierten Variablentypen anzuzeigen Mit typedef wird kein neuer Variablentyp erzeugt sondern nur ein weiterer Name für einen bestehenden Typ geschaffen
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
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
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
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)
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)
MehrKlassen als Datenstrukturen
Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung
MehrEinstieg in die Informatik mit Java
1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
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
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
MehrRO-Tutorien 3 / 6 / 12
RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft
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
MehrRO-Tutorien 15 und 16
Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft
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
MehrProgrammierkurs C++ Variablen und Datentypen
Programmierkurs C++ Variablen und Datentypen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Überblick Welche Datentypen gibt es in
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
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
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
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
MehrII. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )
Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:
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
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
MehrInformatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1
Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss
MehrC++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16
C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung
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
MehrRO-Tutorien 17 und 18
RO-Tutorien 17 und 18 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery TUTORIENWOCHE 2 AM 10.05.2012 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der
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,
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
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
MehrObjekte werden eindeutig beschrieben durch ihren Typ und einen beliebig wählbaren Bezeichner.
Grundlegende Deklarationen Seite 1 von 6 Jedes Programm benötigt Objekte. Ein Objekt ist ein reservierter Bereich im Systemspeicher in welchem Informationen abgelegt werden. Informationen sind z.b. Zahlen,
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
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
MehrObjekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3
Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................
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
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrEinführung in die Programmierung für NF MI. Übung 07
Einführung in die Programmierung für NF MI Übung 07 Inhalt Wiederholung Kommentare Wiederholung Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 07 2 Wiederholung Kommentare Kommentare
MehrVariablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes
Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!
Mehr6 ZEIGER UND REFERENZEN - ALLGEMEINES
6 ZEIGER UND REFERENZEN - ALLGEMEINES Leitideen: Zeiger sind Adressen mit zusätzlicher Typinformation über das dort gespeicherte Objekt. Die Vereinbarungssyntax soll der Ausdruckssyntax entsprechen und
MehrC++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
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.
Mehr10.4 Konstante Objekte
10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären
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
MehrC++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18
C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen
MehrTeil 6: Strukturen und Unionen Gliederung
Teil 6: Strukturen und Unionen Gliederung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen Typdefinitionen Unionen Dynamische Speicherverwaltung Strukturen 6.2 Strukturen Typdefinitionen
MehrC++ Teil 5. Sven Groß. 16. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16
C++ Teil 5 Sven Groß 16. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 16. Nov 2015 1 / 16 Themen der letzten Vorlesung Namensräume Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung
MehrProgrammierung und Angewandte Mathematik
Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden
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
MehrVariablen, Konstanten und Datentypen
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Variablen, Konstanten und Datentypen Überblick
MehrKlausur. 2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.
Programmieren bei Dr. Robert Heß TM&M1, IST1 und ET1 Anfang SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll
MehrProgrammiersprachen Einführung in C
Programmiersprachen Einführung in C Teil 8: Felder und Zeichenketten Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen
MehrArrays. Einleitung. Deklarieren einer Array Variablen
Arrays Einleitung bisher jede Variable einzeln deklariert: 12 3 14 12 32 32 3 32 5 3 double sum; int count; ÿ Sie können Zweck und Aufbau von Array-Datentypen erklären ÿ Sie können einen Array korrekt
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
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
MehrArrays (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
MehrKapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrEEPROM Strukturen speichern über SPI-Bus
EEPROM Strukturen speichern über SPI-Bus Experiment EEPROMstruct 7 A.Schultze / DK4AQ 18.06.2013 Es soll eine Tabelle aus verschiedenartigen Informationen im EEPROM abgelegt und wieder gelesen werden.
Mehr2. Aufgabe (3 Punkte) Ergänzen Sie die leeren Zellen derart, dass sich in einer Zeile die selben Zahlenwerte ergeben.
Programmieren bei Dr. Robert Heß TM&M1, IST1 und ET1 Ende SS 2003 Klausur 1. Aufgabe (2 Punkte) Kodieren Sie folgende Dezimalzahlen in Binärzahlen um. Zeigen Sie den Rechenweg, die negative Zahl soll im
MehrEinführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian
Einführung in die Programmierung Arvid Terzibaschian 1 Konstanten 2 Motivation Unveränderliche, wichtige Werte mathematische Konstanten z.b. PI String-Konstanten wie z.b. häufige statische Meldungen mögliche
Mehr8. Referenzen und Zeiger
8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen
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................................
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;
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
MehrElementare Datentypen in C++
Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen
MehrC++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15
C++ Teil 6 Sven Groß 23. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 23. Nov 2015 1 / 15 Themen der letzten Vorlesung const-deklaration Referenzen Zeiger Felder Sven Groß (IGPM, RWTH Aachen) C++
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
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Zusammenfassung Was ist eine Programmiersprache? Eine Sprache, die Formal eindeutig in Maschinenbefehle übersetzbar ist Für Menschen einfacher verständlich ist als Bytecode Zur Formulierung von Datenstrukturen
MehrZeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.
Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
MehrEinführung in die Programmierung Wintersemester 2018/19
Einführung in die Programmierung Wintersemester 2018/19 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Inhalt Einführung in das konzept Attribute / Methoden
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-
MehrBetriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)
Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/
MehrPraxis der Programmierung
Arrays, Pointer, Parameterbergabe Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vectoren) 2 Arrays: Motivation Gegeben:
Mehr7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor
7.2 Dynamischer Speicher in Objekten/Kopierkonstruktor Das Programmbeispiel aus dem letzten Abschnitt läßt sich bisher nicht zufriedenstellend zu Ende bringen. Unerklärliche Abstürze und Fehlverhalten
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
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
MehrC++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11
C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
MehrErste Schritte der Programmierung in C
Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)
MehrProgrammiersprachen Einführung in C
Programmiersprachen Einführung in C Teil 11: Strukturen, Aufzählungstypen Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen
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
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
MehrGrundlagen der Programmiersprache C für Studierende der Naturwissenschaften
Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 8: Benutzerdefinierte Datentypen Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung
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)
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
MehrStrukturierte Datentypen (struct) 2006 Pearson Education, Inc. All rights reserved.
1 8 Strukturierte Datentypen (struct) 2 8.1 Einführung 8.2 Definition von Strukturen 8.2.1 Selbstbezügliche Strukturen 8.2.2 Definition von Variablen strukturierter Datentypen 8.2.3 Bezeichner für Strukturen
MehrTutorium Rechnerorganisation
Woche 2 Tutorien 3 und 4 zur Vorlesung Rechnerorganisation 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl
MehrÜbungspaket 14 Eindimensionale Arrays
Übungspaket 14 Eindimensionale Arrays Übungsziele: Skript: Deklaration und Verwendung eindimensionaler Arrays Kapitel: 33 Semester: Wintersemester 2016/17 Betreuer: Kevin, Matthias, Thomas und Ralf Synopsis:
MehrProgrammierkurs C++ Datenstrukturen Seite 1
Programmierkurs C++ Datenstrukturen Seite 1 3 Datenstrukturen 3.1 Arrays Zur Wiederholung als Strukturelement der Programmierung gehört auf der Seite der Datenstrukturen die Liste. Eine Liste kann auf
MehrFelder (1) Allgemeines
Felder (1) Allgemeines Gleichartige Daten, wie Tabelle von Zahlen, Datumswerten, Namen etc. Felder (engl. Array) stellen einen Verbundtyp dar, in dem mehrere Daten desselben Typs gespeichert werden Oft
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
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;
MehrEinführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz
Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public
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
Mehr