C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

Größe: px
Ab Seite anzeigen:

Download "C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek"

Transkript

1 C++ - Funktionen und mehr Kerstin Gößner und Ralf Wondratschek

2 Übersicht Deklaration, Definition und Initialisierung Variablen- und Konstantendeklaration Funktionsaufrufe und rückgabewerte Technische Grundlage eines Funktionsaufrufs Headerdateien Gültigkeitsbereiche (Scopes) Namensbereiche Using-Deklaration Main-Funktion C++ - Funktionen und mehr 2

3 Deklaration, Definition und Initialisierung C++ - Funktionen und mehr 3

4 Funktion Unter einer Funktion versteht man ein Unterprogramm, das eine bestimmte Aufgabe erfüllt. Eine Funktion ist eine Ansammlung von Anweisungen, der ein Name gegeben wird und die jederzeit im Programm über diesen Namen aufgerufen und ausgeführt werden kann. Eine Funktion ist praktisch ein Unterprogramm, das Daten verarbeitet und einen Wert zurückgibt. C++ - Funktionen und mehr 4

5 Prozedur Was ist mit Prozeduren? Sind vorhanden, jedoch keine strenge Unterscheidung zu einer Funktion. Es gibt keine explizite Trennung. C++ - Funktionen und mehr 5

6 Problem?! void a() { //... b(); //... void b() { //... c(); //... void c() { //... a(); //... void b() { //... c(); //... void c() { //... a(); //... void a() { //... b(); //... void c() { //... a(); //... void a() { //... b(); //... void b() { //... c(); //... C++ - Funktionen und mehr 6

7 Deklaration Eine Deklaration ist eine Anweisung, die einem Namen einen Gültigkeitsbereich einführt und einen Typ für das benannte Element und optional einen Initialisierer angibt. Variablen: <extern> [Typ][Name]<Initialisierer> ; Funktionen: [Rückgabetyp][Name] ( <Liste formaler Argumente>); C++ - Funktionen und mehr 7

8 Deklaration - Beispiele Variablen: int i; static int j = 0; extern double k; Funktionen: double foo(); double foo(double a, double b); double foo(const int& a); C++ - Funktionen und mehr 8

9 Deklaration - Fortsetzung Leicht erklärt: Eine Deklaration gibt dem Compiler an, dass es etwas gibt! In Headerdateien zu finden Schnittstellen, die an anderer Stelle definiert sind Fehlerhaftes Beispiel: int main() { cout << fib(number) << endl; C++ - Funktionen und mehr 9

10 Definition Eine Definition ist eine Deklaration, die das Element vollständig spezifiziert. Sie gibt an, worauf sich ein Name konkret bezieht. Für Definitionen wird Speicher reserviert. Keine doppelten Definitionen, mehrfache konsistente Deklarationen sind dagegen möglich. Variablen: [Typ][Name]<Initialisierer> ; Funktionen: [Rückgabetyp][Name] ( <Liste formaler Argumente>) { <Anweisungen> C++ - Funktionen und mehr 10

11 Initialisierung Eine Initialisierung ist implizit eine Definition. Durch eine Initialisierung wird eine Variable mit einem bestimmten Wert vorbelegt. Beispiel: int i = 5; Vorsicht: extern int i = 5; Dabei handelt es sich um eine Initialisierung, dennoch muss i an anderer Stelle definiert werden, da hier i keinen Speicher zugewiesen bekommt. C++ - Funktionen und mehr 11

12 Gegenüberstellung - Beispiele Deklaration: Definition: Initialisierung: extern int i; int i; int i = 5; void foo(); void foo(){ C++ - Funktionen und mehr 12

13 Variablen- und Konstantendeklaration C++ - Funktionen und mehr 13

14 Konstantendeklaration Erweitert normale Variablendeklaration mit dem Schlüsselwort const. const [Typ][Name]<Initialisierer> ; Beispiel: const int i = 5; C++ - Funktionen und mehr 14

15 Spätes Initialisieren Möglichst vermeiden, doch manchmal unumgänglich. Warnung vor Spaghetti-Code! bool isrunning = true; //... int value; if (isrunning) { value = 9; else { value = 7; C++ - Funktionen und mehr 15

16 Standardinitialisierung Standardkonstruktor bei String, Vector Beispiel: == string s = ""; string s; Vorsicht bei eingebauten Typen, z.b. int und double: Global automatisch mit 0 initialisiert Lokal und als Klassenmember jedoch nicht C++ - Funktionen und mehr 16

17 Funktionsaufrufe und -rückgabewerte C++ - Funktionen und mehr 17

18 Funktionsaufrufe und -rückgabewerte Deklaration: [Rückgabetyp][Name] ( <Liste formaler Argumente> ); Definition: [Rückgabetyp][Name] ( <Liste formaler Argumente> ) { <Anweisungen> C++ - Funktionen und mehr 18

19 Rückgabewerte Wenn eine Funktion mit einem Rückgabewert deklariert wurde, braucht der Funktionrumpf stets eine return Anweisung. Die Rückgabe muss dem Rückgabetyp entsprechen. Vorsicht bei Verschachtelungen, Rückgabe nicht vergessen! Kein Rückgabetyp mit Schlüsselwort void. C++ - Funktionen und mehr 19

20 Rückgabewerte - Beispiele void checkrunning(bool isrunning){ if (isrunning) { return; else { std::cout << "is not running" << std::endl; int getrandomnumber() { return 4; C++ - Funktionen und mehr 20

21 Ausdrucksstarke Namen selbstkommentierend Konventionen einhalten A foo(double a) { //... return k; Circle getcircle (double radius) { //... return circle; C++ - Funktionen und mehr 21

22 C++ - Funktionen und mehr 22

23 Liste formaler Argumente auch als Parameter bezeichnet Unterschiede bei Deklaration möglich: int fibonacci(int number); int fibonacci(int); Für Compiler kein Unterschied C++ - Funktionen und mehr 23

24 Parameter weglassen? int find1 (string text, int value, int hint) { int position = 0; //... return position; int find2 (string text, int value, int) { int position = 0; //... return position; find1(" ", 9, 5); // Aufruf korrekt find2(" ", 9, 5); // Aufruf nicht korrekt C++ - Funktionen und mehr 24

25 Überladen von Funktionen int find (string text, int value) { int position = 0; //... return position; int find (string text, int value, int hint) { int position = 0; //... return position; find(" ", 9); // Aufruf obere Funktion find(" ", 9, 5); // Aufruf untere Funktion Zuordnung der Funktion anhand deren Signatur. Signatur besteht aus dem Namen und den Parametern, jedoch nicht dem Rückgabetyp! C++ - Funktionen und mehr 25

26 C++ - Funktionen und mehr 26

27 C++ - Funktionen und mehr 27

28 Pass-by-value Kopie der Variable wird übergeben Parameter entsprechen lokalen Variablen Einfach und effizient für kleine Werte int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); C++ - Funktionen und mehr 28

29 Pass-by-reference Übergibt Referenz statt Kopie des Objekts Wird signalisiert durch kaufmännisches Und (&) Ändern von Objekten erlaubt Sinnvoll zum Beispiel bei Initialisierungsmethoden, zum Sortieren etc. Aliase möglich int i = 5; int& k = i; i++; k++; std::cout << i << " == " << k << std::endl; //7 == 7 C++ - Funktionen und mehr 29

30 Pass-by-const-reference Übergibt Referenz des Objektes, jedoch wird das Objekt nie verändert Sinnvoll zum Beispiel zum Ausgeben eines Vektors void makebinary(const int value, string& result) { if (value == 1) { result.insert(0, "1"); else { if (value % 2 == 1) { result.insert(0, "1"); else { result.insert(0, "0"); makebinary(value / 2, result); C++ - Funktionen und mehr 30

31 Was verwenden? 1.) Pass-by-value bei nur sehr kleinen Objekten verwenden. 2.) Stets pass-by-const-reference für große Objekte, die nicht verändert werden müssen, verwenden 3.) Lieber Ergebnisse zurückgeben statt Referenzobjekte zu verändern. 4.) Pass-by-reference nur im Notfall verwenden. C++ - Funktionen und mehr 31

32 Argumentüberprüfung und -umwandlung Übergeben eines Arguments bedeutet implizit Initialisieren der Parameter mit den übergebenen Argumenten. Typumwandlungen sind möglich, aber mit Vorsicht zu genießen! bool ispositive (const int value) { return value >= 0; int main() { cout << ispositive(-0.9) << endl; //1 C++ - Funktionen und mehr 32

33 Technische Grundlage eines Funktionsaufrufs C++ - Funktionen und mehr 33

34 Implementierung von Funktionsaufrufen Bei einem Funktionsaufruf wird eine Datenstruktur eingerichtet. Function activation record beinhaltet: Parameter / lokale Variablen Implementierungsdetails - Kosten für Aktivierung nicht von Größe abhängig. - Datensätze voneinander unabhängig (sonst Probleme bei Rekursion) - Stack wächst und schrumpft nach dem LIFO Prinzip Beispiel Auruf von: fib(3); C++ - Funktionen und mehr 34

35 Implementierung von Funktionsaufrufen value := 3 Implementierungsdetails int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); C++ - Funktionen und mehr 35

36 Implementierung von Funktionsaufrufen value := 3 Implementierungsdetails value := 2 Implementierungsdetails int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); C++ - Funktionen und mehr 36

37 Implementierung von Funktionsaufrufen value := 3 Implementierungsdetails value := 2 Implementierungsdetails value := 1 int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); Implementierungsdetails C++ - Funktionen und mehr 37

38 Implementierung von Funktionsaufrufen value := 3 Implementierungsdetails value := 2 Implementierungsdetails int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); C++ - Funktionen und mehr 38

39 Implementierung von Funktionsaufrufen value := 3 Implementierungsdetails value := 2 Implementierungsdetails value := 0 int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); Implementierungsdetails C++ - Funktionen und mehr 39

40 Implementierung von Funktionsaufrufen value := 3 Implementierungsdetails value := 2 Implementierungsdetails int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); C++ - Funktionen und mehr 40

41 Implementierung von Funktionsaufrufen value := 3 Implementierungsdetails int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); C++ - Funktionen und mehr 41

42 Implementierung von Funktionsaufrufen value := 3 Implementierungsdetails value := 1 Implementierungsdetails int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); C++ - Funktionen und mehr 42

43 Implementierung von Funktionsaufrufen value := 3 Implementierungsdetails int fib(int value) { if (value == 0) { return 0; else if (value == 1) { return 1; else { return fib(value - 1) + fib(value - 2); C++ - Funktionen und mehr 43

44 Headerdateien C++ - Funktionen und mehr 44

45 Headerdateien Wichtiges Mittel zur Verwaltung von Deklarationen und Definitionen Benutzung von fremden Implementierungen wie sqrt() oder cout möglich Arbeitsersparnis Übernehmen von bereits implementierten Elementen C++ - Funktionen und mehr 45

46 Was genau ist ein Header? Ein Header ist eine Datei mit einer Zusammenfassung vieler Deklarationen. Endung: [filename].h Zugehörige Definitionen befinden sich in anderen Dateien mit.cpp Endung. Einfügen von Headerdateien in den Quelltext mit Hilfe von #include Beispiel: #include <stdlib.h> C++ - Funktionen und mehr 46

47 #include Eine #include [filename.h] Anweisung entspricht dem Kopieren von Textzeilen aus der Datei filename.h. Bearbeitung von #include Zeilen vor allen anderen Schritten ist Zwang sog. Präprozessor-Direktive Einfügen von #include in Dateien mit Definitionen und Dateien mit Verwendung der Deklarationen. C++ - Funktionen und mehr 47

48 #include - Beispiel std_lib_facilities.h enthält Deklarationen von Elementen der Standardbibliothek (cout, vector, sqrt(), ) #include "std_lib_facilities.h"; using namespace std; int main() { double a = sqrt(4); cout << a; //Ausabe: 2 using namespace std; int main() { double a = sqrt(4); cout << a; //error C3861: "sqrt": Bezeichner wurde nicht gefunden //error C2065: 'cout': nichtdeklarierter Bezeichner C++ - Funktionen und mehr 48

49 Gültigkeitsbereiche (Scopes) C++ - Funktionen und mehr 49

50 Gültigkeitsbereiche (scopes) Scope = bestimmter Abschnitt in Programmcode Wurden Namen im Scope deklariert, sind diese bis Ende des Scopes gültig ( in scope ). Namen aus einem Gültigkeitsbereich sind auch in seinen eingeschlossenen Scopes sichtbar. Globaler Gültigkeitsbereich steht über allen anderen C++ - Funktionen und mehr 50

51 Gültigkeitsbereiche - Beispiel #include <iostream> using namespace std; void g() { int x = 4; int y = x * x; cout << y << " "; void h() { int y = 0; cout << y << " "; //g(): y ist nur in g() gültig (genauso für h()) int main() { g(); h(); //Ausgabe: 16 0 C++ - Funktionen und mehr 51

52 Arten von Scopes 1. Globaler Gültigkeitsbereich liegt außerhalb jedes anderen Scopes 2. Namensbereich 3. Klassenbereich 4. Lokaler Gültigkeitsbereich 5. Anweisungsbereich C++ - Funktionen und mehr 52

53 Namensbereich explizit benannter Scope liegt innerhalb des globalen Scopes oder anderem Namensbereich namespace Namespace1 { namespace Namespace2 { void f() { cout << "Hallo!"; void main() { f(); // error C3861: "f": Bezeichner wurde nicht gefunden. C++ - Funktionen und mehr 53

54 Namensbereich Richtiger Aufruf eines im Namensbereich definierten Elementes namespace Namespace1 { namespace Namespace2 { void f() { cout << "Hallo!"; void main() { Namespace1::Namespace2::f(); //Ausgabe: Hallo! C++ - Funktionen und mehr 54

55 Klassenbereich Gültigkeit nur innerhalb einer Klasse class MyClass1 { public: void f() { cout << "Hallo!"; ; class MyClass2 { public: void f() { cout << "Hallo!"; ; //beide Methosen können den gleichen Namen haben, da //sie in unterschiedlichen Klassen definiert sind C++ - Funktionen und mehr 55

56 Lokaler Gültigkeitsbereich Gültig in Bereich zwischen {-Klammern eines Blocks oder einer Funktion void main() { bool a = true; if (a) { int x = 4; cout << x; else { int x = 5; cout << x; x = x + 1; cout << x; // error C2065: 'x': nichtdeklarierter Bezeichner C++ - Funktionen und mehr 56

57 Lokaler Gültigkeitsbereich Beheben des Problems void main() { int x; bool a = true; if (a) { x = 4; cout << x << '\t ; else { x = 5; cout << x << '\t ; x = x+1; cout << x << '\t ; //Ausgabe: 4 5 C++ - Funktionen und mehr 57

58 Anweisungsbereich Deklaration im Kopf der for-schleife Gültig nur innerhalb der for-schleife for (int i = 1; i < 10; i++) { cout << "i: " << i << " \t"; i = 4; // error C2065: 'i': nichtdeklarierter Bezeichner C++ - Funktionen und mehr 58

59 Aufgabe von Scopes Namen lokal halten, damit Kollisionen vermieden werden. void f() { int x = 4; cout << x << "\t"; void g() { int x = 4; ++x; cout << x << "\t"; f(); //lokale Deklaration //Ausgabe: int x = 4; void f() { cout << x << "\t"; void g() { ++x; cout << x << "\t"; f(); //globale Deklaration //Ausgabe: Problem bei globaler Deklaration: x wird verändert schwierig zu warten schnell unvorhergesehene Ergebnisse C++ - Funktionen und mehr 59

60 Regeln Namen so lokal wie möglich halten! Keine Kollision mit gleichnamigen Elementen anderer Programmierer Je länger der Gültigkeitsbereich, desto aussagekräftiger der Name! Beispiel: i nicht als globalen Namen verwenden (Bedeutung unklar), allerdings als Zählvariable für Schleifen ist i sinnvoll. So wenig globale Variablen wie möglich benutzen Programme werden deutlich übersichtlicher Achtung! Namen von Blöcken / Anweisungen können Gültigkeit verlieren ( go out of scope ) C++ - Funktionen und mehr 60

61 Verschachtelung C++ -Konstrukte, die Scopes definieren, sind selbst in Scopes eingeschlossen 1. Funktionen innerhalb von Klassen (Memberfunktionen) 2. Klassen in Klassen (Memberklassen, eingebettete Klassen ) 3. Klassen innerhalb von Funktionen (lokale Klasse) 4. Funktionen innerhalb von Funktionen (lokale Funktionen, eingebettete Funktionen ) 5. Blöcke innerhalb von Funktionen oder anderen Blöcken (verschachtelte Blöcke) nicht zu vermeiden C++ - Funktionen und mehr 61

62 Memberfunktionen häufigster Fall class myclass{ public: void f() { //do something void g() { //do something else ; //beide Funktionen in Klasse //definiert class myclass{ public: void f(); void g() { //do something else ; void myclass::f() { //do something //eine Funktion in Klasse //definiert, eine in Klasse //deklariert und außerhalb //definiert C++ - Funktionen und mehr 62

63 Memberklassen nur für Implementierung komplizierter Klassen hilfreich class MyClass { class MyMemberClass { class AnotherMemberClass { //... //... //... C++ - Funktionen und mehr 63

64 Lokale Klasse Vermeiden! Unübersichtlich, Funktionen werden zu lang void f() { //... class MyClass { //... ; //... class MyClass2 { //... ; //... C++ - Funktionen und mehr 64

65 Eingebettete Funktionen nicht erlaubt in C++, Zurückweisung durch Compiler void f() { //... void g() { //... //... // error C2601: 'g': Lokale Funktionsdefinitionen sind // unzulässig C++ - Funktionen und mehr 65

66 Namensbereiche C++ - Funktionen und mehr 66

67 Namensbereiche C++ bietet ein Sprachelement zur Definition von Scopes an: namespace Eine namespace ist eine Gruppierung von Deklarationen. Zusammenfassen von Klassen, Funktionen, Daten und Typen zu einem benannten Teil eines Programms C++ - Funktionen und mehr 67

68 Namensbereiche - Beispiel namespace Grapics { struct Color {/*...*/; struct Shape {/*..*/; struct Line:Shape {/*...*/; struct Funtion:Shape {/*...*/; struct Text:Shape {/*...*/; //... int gui_mai() {/*...*/; //die Elemente sind alle im Namensbereich Graphics definiert C++ - Funktionen und mehr 68

69 Namensbereiche Problem: Verwendung von globalen Namensbereich Kollision bei Gleichbenennung zweier Klassen Verwendung von namespace (Bibliothek) keine Kollision bei gleichen Namen in unterschiedlichen Bibliotheken Vollqualifizierter Name: [name_of_namespace]::[name_of_member] C++ - Funktionen und mehr 69

70 Beispiel von Seite 54//55 namespace Namespace1 { namespace Namespace2 { void f() { cout << "Hallo!"; void main() { f(); // error C3861: "f": // Bezeichner wurde nicht // gefunden. namespace Namespace1 { namespace Namespace2 { void f() { cout << "Hallo!"; void main() { Namespace1::Namespace2::f(); //Ausgabe: Hallo! C++ - Funktionen und mehr 70

71 Using-Deklaration C++ - Funktionen und mehr 71

72 Using-Deklaration Schreiben von vollqualifizierten Namen dauert bei häufiger Verwendung lange. Festlegung: using [name_of_namespace]::[name_of_member] bedeutet immer name_of_member Beispiel: std::string name; using std::string; //string bedeutet nun immer std::string string name2; C++ - Funktionen und mehr 72

73 Using-Direktive using-deklaration nicht ausreichend bei vielen Elementen im namespace Verwendung von using-direktive Deklaration aus namespace wird immer benutzt, wenn keine Deklaration im aktuellen Scope existiert Befehl: using namespace [name_of_namespace]; Beispiel: using namespace std; C++ - Funktionen und mehr 73

74 Using-Direktive Verwendung möglichst nur bei Namensbereichen wie std (weitverbreitet) sonst Gefahr von Unübersichtlichkeit Using-Deklaration übersichtlicher, da expliziter Schlechte Angewohnheit: using-direktive in Headerdatei (kein Umgehen möglich) Empfehlung: using namespace std; in std_lib_facilities platzieren (Schreibarbeit) C++ - Funktionen und mehr 74

75 Main-Funktion C++ - Funktionen und mehr 75

76 Main-Funktion Main = normale Funktion mit dem Privileg, dass sie als Erstes ausgeführt wird Parameterüber- und Rückgabe möglich Aufruf von main ist gleichzusetzen mit Start von Programm Funktionsparameter müssen von außen übergeben werden Programmstart in Shell: hinter dem Programmnamen angegebene Parameter werden als Funktionsparameter übernommen Programmstart von grafischer Oberfläche: mit der Wahl von verschiedenen Einstellungen können Funktionsparameter erzeugt werden C++ - Funktionen und mehr 76

77 Parameter der Main-Funktion Unterschiedliche Anzahl von zu übergebenden Parametern an die Main-Funktion ist möglich Funktionskopf: void main(int argc, char **argv) argc Integer, Anzahl der übergebenen Parameter 1. Parameter ist Programmname selbst, auch wenn sonst keine weiteren Parameter existieren argc >= 1 argv Zeiger auf einen char-zeiger char **argv gleichbedeutend mit char *argv[] (Zeiger auf ein Feld von char- Zeigern ist gleichbedeutend einem Zeiger auf ein Element) C++ - Funktionen und mehr 77

78 Rückgabewerte der Main-Funktion Main ist auch in der Lage, Parameter zurück zu geben int main(int argc, char **argv) Normalerweise ist Rückgabewert unwichtig, Ausnahme: Benutzen einer Batch-Datei Batch-Datei = Textdatei, in der hintereinander alle Befehle stehen, die abgearbeitet werden sollen In Batch-Datei kann auf Rückgabe des Programms reagiert werden Rückgabe von 0: erfolgreiches Beenden Rückgabe von Wert!= 0: Fehler, Abbruch der Batch-Datei in den meisten Fällen Mit return muss der Wert zurückgegeben werden C++ - Funktionen und mehr 78

79 Quellen Einführung in die Programmierung mit C++ - Bjarne Stroustrup C++ Programmierung André Willms Internetquellen (Zuletzt geprüft am Uhr): Programmierung/_Weitere_Grundelemente/_Prozeduren_und_Funktionen C++ - Funktionen und mehr 79

C++ - Funktionen und mehr -

C++ - 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,

Mehr

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Vorkurs C++ Programmierung

Vorkurs 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:

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Einführung in die Programmierung (EPR)

Einführung in die Programmierung (EPR) Goethe-Center for Scientific Computing (G-CSC) Goethe-Universität Frankfurt am Main Einführung in die Programmierung (EPR) (Übung, Wintersemester 2014/2015) Dr. S. Reiter, M. Rupp, Dr. A. Vogel, Dr. K.

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren 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

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Objektbasierte Entwicklung

Objektbasierte Entwicklung Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

Mehr

Propädeutikum. Dipl.-Inf. Frank Güttler

Propädeutikum. Dipl.-Inf. Frank Güttler Propädeutikum 2015 Vorbereitungskurs Informatikstudium Erfolgreich Studieren Programmieren (C-Kurs) guettler@informatik.uni-leipzig.de Universität Leipzig Institut für Informatik Technische Informatik

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

Mehr

Objektorientierte Programmierung mit C++ Vector und List

Objektorientierte Programmierung mit C++ Vector und List Vector und List Ziel, Inhalt Wir lernen die Klassen vector und list aus der Standard-C++ Library kennen und anwenden. In einer Übung wenden wir diese Klassen an um einen Medienshop (CD s und Bücher) zu

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2014, 16. Juli 2014 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 1 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich kurze Stunden mit Stoffueberblick -> mehr Zeit fuer Fragen This semester s menu... Imperative Programmierung

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Grundlagen der Informatik - 6. Praktikum

Grundlagen der Informatik - 6. Praktikum Grundlagen der Informatik - 6. Praktikum In diesem Praktikum soll es neben der Anwendung von Funktionsdefinitionen auch um einfache Prinzipien der verteilten Quelltext-Strukturierung gehen. Diese spielt

Mehr

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9

Übung 9. Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Informatik I 2 Übung 9 Quellcode Strukturieren Rekursive Datenstrukturen Uebung 9 Quellcode Strukturieren Wenn alle Funktionen in einer Datei zusammengefasst sind wird es schnell unübersichtlich Mehrere

Mehr

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen

Mehr

Programmentwicklung mit C++ (unter Unix/Linux)

Programmentwicklung mit C++ (unter Unix/Linux) Programmentwicklung mit C++ (unter Unix/Linux) Erste Schritte Der gcc - Compiler & Linker Organisation des Source-Codes & Libraries Automatische Programmgenerierung: Make Birgit Möller & Denis Williams

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Alltagsnotizen eines Softwareentwicklers

Alltagsnotizen eines Softwareentwicklers Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Winter 2009/2010, 18. Februar 2010 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name:

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu)

Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) HMExcel Automatisierung ( Fernsteuerung ) von Excel unter Microsoft Windows Tilman Küpper (tilman.kuepper@hm.edu) Inhalt 1. Einleitung...1 2. Beispiele...2 2.1. Daten in ein Tabellenblatt schreiben...2

Mehr

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express

Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Howto Installation und Inbetriebnahme von Microsoft Visual C++ 2010 Express Peter Bitterlich Markus Langer 12. Oktober 2012 Zusammenfassung Dieses Dokument erklärt Schritt für Schritt die Installation

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ 1 Seite 1 Einführung in die Programmierung mit C++ Teil IV - Weiterführende Themen 14. Modularisierung und Automatisierung Was heißt Modularisierung? Seite 2 bisher Programm komplett in einer Datei längere

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Inhalt. meliarts. 1. Allgemeine Informationen... 2 2. Administration... 2 2.1 Aufruf... 2 2.2 Das Kontextmenü... 3 3. E-Mail Vorlagen...

Inhalt. meliarts. 1. Allgemeine Informationen... 2 2. Administration... 2 2.1 Aufruf... 2 2.2 Das Kontextmenü... 3 3. E-Mail Vorlagen... Inhalt 1. Allgemeine Informationen... 2 2. Administration... 2 2.1 Aufruf... 2 2.2 Das Kontextmenü... 3 3. E-Mail Vorlagen... 4 Seite 1 von 7 meliarts 1. Allgemeine Informationen meliarts ist eine Implementierung

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Programmieren Tutorium

Programmieren Tutorium Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich 13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,

Mehr

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen

Prozeß P1 Prozeß P2. Zur Synchronisation stehen den beiden Prozessen binäre Semaphore und die beiden Funktionen Seite 8 A UFGABE 11 INTERP ROZEßKOMMUNIKATION Das folgende Petrinetz zeigt zwei verkoppelte Prozesse P1 und P2. Die Transitionen a und b beschreiben Aktionen von P1, die Transitionen c und d Aktionen von

Mehr

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions try-catch Schlüsselworte try-catch e Schlüsselwort Schlüsselwort selbst erstellte ermöglichen die Behandlung von Fehlern, die zur Laufzeit entstehen. try-catch in C: Fehler führt immer zum Abbruch des

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter Aufgabe 3: Konto Um Geldbeträge korrekt zu verwalten, sind zwecks Vermeidung von Rundungsfehlern entweder alle Beträge in Cents umzuwandeln und

Mehr

Native Zeichenketten (C-Strings)

Native Zeichenketten (C-Strings) Native Zeichenketten (C-Strings)... sind in C/C++ char-arrays. D.h. die Deklaration char msg[80]; kann Zeichenketten bis zur Länge 79 enthalten. (Direkte Zuweisungen wie msg="hallo!" sind jedoch nicht

Mehr

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 12. Nov 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 12. Nov 2014 1 / 16 Themen der letzten Vorlesung Eingabestrom, Verhalten von cin Namensräume Live Programming

Mehr

Projektverwaltung Problem Lösung: Modulare Programmierung

Projektverwaltung Problem Lösung: Modulare Programmierung Projektverwaltung Problem Der Sourcecode ür ein Programm wird immer länger und unübersichtlicher Eine Funktion, die in einem alten Projekt verwendet wurde, soll auch in einem neuen Projekt verwendet werden

Mehr

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr