Betriebssystembau (BSB)
|
|
- Karlheinz Winkler
- vor 5 Jahren
- Abrufe
Transkript
1 Betriebssystembau (BSB) 1. Übung Olaf Spinczyk AG Eingebettete System Informatik 12, TU Dortmund
2 Überblick Organisatorisches C++ Crashkurs (Teil 1) CGA-Programmierung und in einer Woche: C++ Crashkurs (Teil 2) Tastatur-Programmierung 2
3 Betriebssystembau: Übungen 2 SWS Tafel übung (hier :-)) und 2 SWS Rechnerübung Die Tafelübung vermittelt... Grundlagen der PC-Hardware-Architektur Grundwissen zur Bearbeitung der Rechnerübungen C++-Programmierkenntnisse...und dient der Abgabe der Aufgaben! Die Rechnerübung... dient zum Bearbeiten der Rechneraufgaben ist zum Fragen stellen da Es gibt keine theoretischen Aufgaben! 3
4 Betriebssystembau: Aufgaben Aufgaben alle 2-3 Wochen, insgesamt 7 Aufgaben Wettbewerb: 7. Aufgabe eine OOStuBS-Anwendung Bearbeitung in Dreiergruppen Anwesenheit zu den Abgabeterminen erforderlich! Abgabe innerhalb der Gruppe soll reihum erfolgen Jeder Gruppenteilnehmer sollte also die Lösung zu jeweils 2 der 6 Aufgaben demonstrieren und erläutern Demonstration auf echter PC-Hardware, nicht im Emulator Bearbeitung der Aufgaben auch zu Hause möglich auf Linux (ggf. VM installieren) 4
5 Überblick Organisatorisches C++ Crashkurs (Teil 1) CGA-Programmierung und in einer Woche: C++ Crashkurs (Teil 2) Tastatur-Programmierung 5
6 Betriebssystembau: Einführung C++ Grundlage für die Rechnerübungen Voraussetzungen: Programmierkenntnisse in einer objektorientierten Sprache (z.b. Java) Wir konzentrieren uns auf die Unterschiede zwischen Java und C++...und die kleinen Eigenheiten, auf die man achten muss, wenn man C++ für Systemprogrammierung einsetzt... 6
7 Literatur Es gibt jede Menge Bücher und Tutorials zu C++... Eine gute Einführung ( 17,95) ist Kostenlos und gut Folien und Skript von Prof. Ring, Uni Siegen: Marko Meyer: C++ programmieren im Klartext Pearson Verlag, ISBN außerdem der Kurs Von Java nach C++ von Prof. Müller und Frank Weichert die Basis für diese Folien 2C.pdf 7
8 C++ Wie so üblich: Hello, World in C++ #include <iostream> int main() { cout << "Hello, world" << endl; return 0; } Java-Version: import whatever.u.like.*; class Test { public static void main(string[] argv) { System.out.println("Hello, world"); } } 8
9 C++-Konzepte Kontrollstrukturen und Variablentypen in C++ Komplexe Datentypen (structs) Zeiger (Pointer) und Referenzen Quelltextorganisation Vererbung und Mehrfachvererbung Virtuelle Funktionen Überladen von Operatoren 9
10 Kontrollstrukturen und Variablentypen bedingte Anweisungen, Schleifen, Verbundanweisungen (Blöcke) sind identisch in C++ und Java! In C++ sind globale Funktionen möglich, in Java dagegen müssen Methoden immer innerhalb einer Klasse stehen insbesondere lassen sich in C++ auch normale C- und Assembler-Funktionen aufrufen...und man kann C++-Funktionen als von C und Assembler aufrufbar deklarieren mittels extern C (wird für OOStuBS aber nicht benötigt) eine wichtige globale Funktion ist die main -Funktion :-) 10
11 Kontrollstrukturen und Variablentypen Arrays (Felder) werden in C++ wie folgt definiert: Es findet keine Überprüfung der Array-Grenzen statt! int a[4]; // oder mit Initialisierung int a[] = { 1, 2, 3 }; Potentiell großes Sicherheitsproblem: Buffer Overflows, bei denen z.b. über die Grenzen von Arrays hinaus Werte (andere Variableninhalte, Rücksprungadressen auf dem Stack etc.) überschrieben werden Variablen haben keine Default-Werte, müssen also immer explizit initialisiert werden. Erfolgt das nicht, generiert der Compiler eine warning (aber keinen error!) Die Speicherverwaltung muss durch den Programmierer erfolgen. Ein Garbage Collector wie in Java ist nicht vorhanden 11
12 Typwandlung (type casting) In C++ können Typen wie in Java explizit gewandelt werden: (Typ) Ausdruck, z.b.: int a=3; double b=(double)a/2; // b==1.5 Eine weitere Möglichkeit, die nur in C++ verfügbar ist: Typ(Ausdruck), z.b.: int a=3; double b=double(a)/2; // b==1.5 12
13 Wertebereiche In C++ existieren vorzeichenbehaftete und nicht vorzeichenbehaftete Typen (char, short, int, long), z.b.: int von -2^31 bis 2^31-1 unsigned int von 0 bis 2^32-1 Bei arithmetischen Operationen erfolgt keine Überprüfung auf Overflow bzw. Underflow! Sicherheitsproblem! Die Wertebereiche sind maschinenabhängig! unsigned int i=0; i = i 1; // i== z.b. kann ein int 32 oder 64 Bit lang sein Mittels typedef lassen sich neue Namen für Datentypen definieren: typedef int Index; Index a = 3; 13
14 Komplexe Datentypen enums: Aufzählungstypen enum { caps_lock = 4, num_lock = 2, scroll_lock = 1 }; Oft Alternative zu #defines structs: Benutzerdefinierte zusammengesetzte Datentypen struct Rechteck { int xp, yp; int width, height; int color;... }; Verwendung: Rechteck r; r.xp = 100; r.yp = 200; r.width = 20; r.height = 40; 14
15 Klassen in C++ Eine Klasse in C++ besteht aus Deklaration in Headerdatei (z.b. keyctrl.h) class Keyboard_Controller {... }; und Implementierungsdatei (keyctrl.cc) #include machine/keyctrl.h... Name der.h/.cc-files und Name der Klasse müssen nicht übereinstimmen! 15
16 Aufbau der Headerdatei Ausschnitt aus keyctrl.h: class Keyboard_Controller { private: unsigned char code; // Attribute unsigned char prefix;... public: Keyboard_Controller (); // Konstruktor ~Keyboard_Controller (); // Destruktor Key key_hit (); // Methoden void reboot (); void set_repeat_rate (int speed, int delay);... }; 16
17 Aufbau der Headerdatei Beginn der Klassendefinition mit Schlüsselwort class Klassen sind immer public Attribute (Instanz-)Variablen dürfen bei der Deklaration nicht initialisiert werden Konstruktoren und Destrukturen Konstruktoren: Instanziierung von Objekten Destruktoren: Löschen instanziierter Objekte Deklaration von Methoden Klassendefinition wird mit Semikolon beendet! 17
18 Aufbau der Implementierungsdatei Einbinden der Header-Datei mit #include Durch den Klassennamen und den Bereichsoperator :: wird die Zugehörigkeit zur Klasse gekennzeichnet: #include keyctrl.h Keyboard_Controller::Keyboard_Controller () {... } Keyboard_Controller::~Keyboard_Controller () {} void Keyboard_Controller::reboot () {... } 18
19 Pointer (Zeiger) Jede Speicherstelle, die einem Objekt (einer Variablen) zugeordnet ist, hat eine eindeutige Adresse Bei der Betriebssystemprogrammierung kann dies auch die Speicherstelle sein, an der ein bestimmtes Gerät Speicher oder Kontrollregister einblendet z.b. der Bildschirmspeicher Ein Pointer ist eine Variable, deren Wert die Speicheradresse einer Variablen, einer Struktur oder eines Objekts ist Pointer sind typisiert, z.b. Typ Zeiger auf int Zeiger-Typen sind durch das Symbol * gekennzeichnet, z.b.: int a; // kein Pointer int *int_zeiger; // Zeiger auf Integer-Variable 19
20 Pointer (Zeiger) Der Inhalt eines Zeigers ist der Wert, der an einer referenzierten Speicherstelle gespeichert ist Die Größe des Inhalts (in Bytes) ist vom jeweiligen zugeordneten Datentyp abhängig z.b. 1 Byte für char, 2 Byte für short usw. Diese Größen sind in C/C++ architektur- und compilerabhängig, also nicht portabel!!! 20
21 Pointer (Zeiger) Es existieren zwei Operatoren zu Pointern: Adressoperator & Liefert die zu einer Variablen gehörende Speicheradresse int_zeiger = &a; Dereferenzierungsoperator * Gibt den Wert zurück, der an der Adresse gespeichert ist, auf die die Pointervariable zeigt (den Inhalt) *int_zeiger = 42; 21
22 Pointer (Zeiger): Beispiel Anlegen einer Zeigervariablen CGA_START (Zeiger auf char) Umwandlung einer konstanten Adresse in einen Zeiger char *CGA_START = (char *)0xb8000; char *pos; int x=20, y=20; pos = CGA_START + 2*(x + y*80); *pos = 'Q'; Dereferenzierung: Das Zeichen an Position (x, y) wird durch ein 'Q' überschrieben. Zeigerarithmetik: 'pos' zeigt nun auf die Speicherstelle, in der der Zeichencode des Zeichens an Position (x, y) abgelegt ist. 22
23 Referenzen als Parameter Neben den Zeigern gibt es in C++ auch Referenzen. Diese werden häufig für Funktionsparameter benutzt: int& max(int& a, int& b) { if (a>b) return a; else return b; } Dies entspricht einem call by reference, d.h. es wird eine Referenz auf die entsprechende Variable übergeben und auch zurückgegeben. Der Aufruf erfolgt dann so: int a=5, b=7; max(a,b)++; // erhöht b um 1! 23
24 Überladen von Operatoren Operatoren funktionieren abhängig vom Datentyp, auf dem sie operieren (in Java nicht realisiert) Beispiel: Operator + für int, float, double-variablen wird die jeweilige Additionsfunktion für den entsprechenden Zahlentyp aufgerufen für String-Objekte werden die beiden Operanden konkateniert In OOStuBS: Operator << für int-werte bewirkt der << -Operator, dass der in der Variablen enthaltene Zahlenwert um n Bits (2. Operand) nach links geschoben wird z.b. ist 2 << 3 == 16 für Ausgabestreams siehe Hello World : cout << "Hello" << endl; Operator >> entsprechend für Eingabe-Streams 24
25 Überladen von Operatoren Es können nur von der Sprache definierte Operatoren überladen, die Definition neuer Operatoren ist nicht möglich Unterstützt werden dabei unäre Operatoren: + - * & ~! > ->* binäre Operatoren: + - * / % ^ & << >> += -= *= /= %= ^= &= = <<= >>= < <= > >= ==!= &&, [] () new new[] delete delete[] 25
26 Überladen von Operatoren: Beispiel Addition von ganzen Zahlen zu einem Datum: class tdatum { public: //... tdatum operator+(int Tage); }; tdatum tdatum::operator+(int Tage) { // Berechnung des Datums return *this; } Die Addition liefert ein neues Datum zurück und als rechter Operand ist eine ganze Zahl zulässig. So kann das Datum durch einfache Addition um 14 Tage weitergeschoben werden: tdatum heute; heute = heute + 14; 26
27 Systemprogrammierung in C++ Keine Laufzeitumgebung vorhanden! Damit sind auch keine Objekte dynamisch instanziierbar! kein new und delete möglich......woher soll auch die passende Speicherverwaltung dazu kommen? Für Spezialisten... das geht auch nicht: man muss alles selber von Hand bauen... Exceptions, Assertions, runtime type information Ein falscher Pointer kann das Ende sein... der Rechner hängt und das war's keine segmentation violation, keine core dumps 27
28 Überblick Organisatorisches C++ Crashkurs (Teil 1) CGA-Programmierung und in einer Woche: C++ Crashkurs (Teil 2) Tastatur-Programmierung 28
29 Ausgabestream Stringbuffer: put(c), flush() Sinn der Pufferung? Sinnvolle Puffergröße? O_Stream: ähnlich C++-std::ostream Formatierung, Zahlendarstellung verwendet Stringbuffer::put(c) CGA_Stream: flush() 29
30 CGA_Screen (1) wird von CGA_Stream beim flush() verwendet show(x,y,c,attrib) Zeichen c mit Attribut attrib an Position x/y Code aus dem C++-Crashkurs: char *CGA_START = (char *)0xb8000; char *pos; int x = 20, y = 20; pos = CGA_START + 2*(x + y*80); *pos = 'Q'; Was fehlt hier? 30
31 CGA_Screen (2) 31
32 CGA_Screen (3) je zwei Bytes im Bildspeicher pro Bildposition! gerade Adressen: ASCII-Code ungerade Adressen: Attributbyte char *CGA_START = (char *)0xb8000; char *pos; int x = 20, y = 20; pos = CGA_START + 2*(x + y*80); *pos = 'Q'; *(pos + 1) = 0x0f; // weiss auf schwarz Was passiert ohne diese zusätzliche Zeile? 32
33 CGA_Screen (4) setpos/getpos ändern internen Zustand von CGA_Screen aktuelle Position wird in print() benötigt! positionieren den CGA-Cursor allgemein: Zugriff auf PC-Peripherie zwei Adressräume: Speicher-Adressraum, E/A-Adressraum Speicher: direkt über Pointer adressierbar (Graphikspeicher) E/A: über CPU-Befehle in/out (inb/inw/inl; outb/outw/outl) in OOStuBS gekapselt in der Klasse IO_Port manche Geräte verwenden sogar beides (z.b. eben CGA) Performance vs. einfachere Dekodierschaltung 33
34 CGA_Screen (5) speziell CGA: Speicher und E/A in Speicher-Adressraum eingeblendeter Graphikspeicher CGA-Register im E/A-Adressraum mehr Register als E/A-Adressen Multiplexing über Index-/Datenport 34
35 CGA_Screen (6) print(char *text, int length, unsigned char attrib) baut auf show() und setpos() auf unten angekommen? scrollen! 35
Betriebssystembau. 1. Übung. Olaf Spinczyk und Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund
Betriebssystembau 1. Übung Olaf Spinczyk und Michael Engel Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/
MehrBetriebssystembau (BSB)
Betriebssystembau (BSB) 1. Übung https://ess.cs.tu-dortmund.de/de/teaching/ws2017/bsb/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de https://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware Informatik
MehrSoftware ubiquitärer Systeme 1. Übung
Software ubiquitärer Systeme 1. Übung http://ess.cs.unidortmund.de/de/teaching/ss2013/sus/index.html Christoph Borchert http://ess.cs.tu-dortmund.de/~chb AG Eingebettete Systemsoftware Informatik 12, TU
MehrSoftware ubiquitärer Systeme 1. Übung
Software ubiquitärer Systeme 1. Übung http://ess.cs.uni-.de/de/teaching/ss2015/sus Horst Schirmeier http://ess.cs.tu-.de/~hsc AG Eingebettete System Informatik 12, TU Dortmund Überblick Organisatorisches
MehrBetriebssystembau. 1. Übung. Michael Engel Arbeitsgruppe Eingebettete Systemsoftware. Lehrstuhl für Informatik 12 TU Dortmund
Betriebssystembau 1. Übung Michael Engel Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund michael.engel@tu-dortmund.de http://ess.cs.uni-dortmund.de/~me/ 1 Betriebssystembau:
MehrBetriebssystembau: Übungen. Betriebssystembau: Übungen. Betriebssystembau: Einführung C++ Literatur
Betriebssystembau: Übungen 2 SWS Tafel übung (hier :-)) und 2 SWS Rechnerübung Die Tafelübung vermittelt Grundlagen der PC-Hardware-Architektur Grundwissen zur Bearbeitung der Rechnerübungen C++-Programmierkenntnisse
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
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)
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
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 2)
DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und
MehrZeiger, Arrays und Strings in C und C++
Zeiger, Arrays und Strings in C und C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für
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
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens mit C++ und Matlab SS2013 Inhalt Bis jetzt: Heute: Entwicklungsumgebung
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
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
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
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
MehrCrashkurs C++ - Teil 1
Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik
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
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
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
MehrZeiger in C und C++ Zeiger in Java und C/C++
1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
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
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.
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/
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
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
Mehr7. Übung Informatik II - Objektorientierte Programmierung
7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber
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
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
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
MehrVorlesungsprüfung Programmiersprache 1
Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,
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
MehrC++ vs. Java. Hello world! Java C++ class HelloWorld { static public void main(string args) { System.out.println("Hello World!
Hello world! Java class HelloWorld { static public void main(string args) { System.out.println("Hello World!"); } } C #include main() { printf("hello World!\n"); } C++ #include using
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
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
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 Inhalt Compiler/Editor Klassendeklaration
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
MehrZeiger: Der Adressoperator &
Zeiger: Der Adressoperator & Variablen werden im Computer im Speicher abgelegt. Nach der Deklaration int a,b,c; double x,y,z; Sieht die Speicherbelegung etwa wie folgt aus: a b c x y z Jede Variable hat
MehrPeter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden. ffl mitp
Peter Prinz Ulla Kirch-Prinz C+ + Lernen und professionell anwenden ffl mitp Inhaltsverzeichnis Einleitung 19 1 Grundlagen 21 Entwicklung und Eigenschaften von C + + 22 Objektorientierte Programmierung
MehrHydroinformatik I: Klassen
Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 27. November 2015 1/13 Prof.
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
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
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
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
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
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
MehrInformatik I (D-ITET)
Informatik I (D-ITET) Übungsstunde 2, 5.10.2009 ETH Zürich? Übungsgruppenwechsel? Abgabe der Übungen... Bis Mo, 24:00 Theorie: Programme: per mail oder auf Papier.cpp Datei per mail Bin euch noch Demos
MehrJAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)
JAVA BASICS 2. Primitive Datentypen 1. Warum Java? weit verbreitet einfach und (relativ) sicher keine Pointer (?) keine gotos kein Präprozessor keine globalen Variablen garbage collection objekt-orientiert
MehrZeiger in C und C++ Zeiger in Java und C/C++
1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für Referenztypen (Klassen und Arrays) verwendet,
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
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
MehrC++ - Objektorientierte Programmierung Polymorphie
C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrOrganisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download
Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches
MehrJava Referenzdatentypen genauer betrachtet
Informatik 1 für Nebenfachstudierende Grundmodul Java Referenzdatentypen genauer betrachtet Kai-Steffen Hielscher Folienversion: 23. Januar 2018 Informatik 7 Rechnernetze und Kommunikationssysteme Referenzdatentypen
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
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
MehrRepetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default
MehrHello World! Eine Einführung in das Programmieren Variablen
Hello World! Eine Einführung in das Programmieren Variablen Görschwin Fey Institute of Embedded Systems Hamburg University of Technology Slide 2 Wie werden Daten in Programmen gespeichert und manipuliert?
MehrUnterlagen. CPP-Uebungen-08/
Unterlagen http://projects.eml.org/bcb/people/ralph/ CPP-Uebungen-08/ http://www.katjawegner.de/lectures.html Kommentare in C++ #include /* Dies ist ein langer Kommentar, der über zwei Zeilen
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
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
MehrHydroinformatik I: Klassen
Hydroinformatik I: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 11. November 2016 1/20 Prof.
MehrObjektorientierte Programmierung
C++ Objektorientierte Programmierung Erweiterung von selbstdefinierten Datentypen (struct) zu Klasse. Eine Klasse besteht dann aus - Attributen (Untertypen wie struct) und zusätzlich - aus Methoden (Funktionen
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 2. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 2. Teil 18. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
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
Mehr2 Programmieren in Java I noch ohne Nachbearbeitung
1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe
MehrÜbung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil
MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches
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
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrGrundlagen der Informatik 11. Zeiger
11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große
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
MehrEinleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders
Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1
MehrEinführung in die Programmierung
Einführung in die Programmierung by André Karge Übung - Operatoren, Methoden, Primitives 25. Oktober 2018 Einführung in die Programmierung WS18/19 André Karge 1/29 Notizen Standard Linux Befehle: http://images.linoxide.com/linux-cheat-sheet.pdf
MehrEinleitung Grundlagen Erweiterte Grundlagen Zusammenfassung Literatur. C: Funktionen. Philip Gawehn
C: Funktionen Philip Gawehn Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Do., 22.05.2014 1 / 23 Gliederung
MehrAbend 4 Übung : Erweitern von Klassen durch Vererbung
Abend 4 Übung : Erweitern von Klassen durch Vererbung Ziel, Inhalt Wir erweitern die Klassen, die wir zum Zeichnen mit TsuZeichnen verwenden. Dabei wenden wir die Vererbung an um die Klassen zu spezialisieren
MehrProgrammieren I. Kapitel 12. Referenzen
Programmieren I Kapitel 12. Referenzen Kapitel 12: Referenzen Ziel: Die Wahrheit über Objekte Lebensdauer Speicherverwaltung Parameterübergabemechanismen in Methoden Gleichheiten, Kopien Arrays Speicherbereinigung
MehrProgrammieren in Java
Ein Projekt 2 Wiederholung: new-operator Werte nicht-primitiver Datentypen müssen mit new erzeugt werden Es gibt keine Möglichkeit primitive Daten mit new zu erzeugen Beispiele int[] myarray = new int[]
MehrDie Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein
Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache Dr. Beatrice Amrhein Überblick Speicherverwaltung: Stack und Heap Ein- und Ausgabe über die Console Variablen und Operatoren Parameter
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
MehrDie Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache. Dr. Beatrice Amrhein
Die Sprache C# Datentypen, Speicherverwaltung Grundelemente der Sprache Dr. Beatrice Amrhein Überblick Speicherverwaltung: Stack und Heap Ein- und Ausgabe über die Console Variablen und Operatoren Parameter
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)
MehrThema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:
MehrInformatik I (D-MAVT)
Informatik I (D-MAVT) Übungsstunde 9 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 7 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 9 Aufgabe 1:
MehrKlassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg
Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive
MehrHydroinformatik I - WiSe 2018/2019 V5: Klassen
Hydroinformatik I - WiSe 2018/2019 V5: Klassen Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden 3 Center for Advanced
MehrEinführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java
Ludwig-Maximilians-Universität München München, 20.11.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt
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
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
MehrGrundkurs C++ IDE Klassenhierarchien
Grundkurs C++ IDE Klassenhierarchien Martin Knopp 03.05.2017 Folie 1/34 GK C++: IDE, Klassenhierarchien Martin Knopp 03.05.2017 IDE Integrated Development Environment Wir empfehlen: Qt Creator (Bestandteil
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
Mehr