Ein paar Kleinigkeiten zum Einstieg
|
|
- Anke Brauer
- vor 5 Jahren
- Abrufe
Transkript
1 Ein paar Kleinigkeiten zum Einstieg Includes und Namensräume Ausgabe in in C++ Ausgabeformatierung mit mit Manipulatoren Eingabe in in C++ Defaultargumente in in C++ Überladene Funktionen Typisierte Konstanten Inlinefunktionen Referenzen 1
2 Defaultargumente Jede Funktion muss in in C++ vor vor ihrer Verwendung bekannt (definiert oder deklariert sein) Parametern können im im Funktionskopf Werte zugeordnet werden, sogenannte Defaultargumente. Dies muss aber unbedingt von rechts nach links geschehen. 2
3 Defaultargumente Beim Funktionsaufruf können nun Parameter von rechts beginnend weggelasssen werden. Es Es ergeben sich dadurch unterschiedliche Aufrufmöglichkeiten für für eine Funktion. Gibt es es zu zu einer Funktion eine Deklaration (Funktionsprototyp) und die die Funktionsdefinition, so so dürfen die die Defaultargumente nur nur im im Prototyp angegeben werden. 3
4 #include #include <iostream> using using namespace std; std; Defaultargumente Defaultargument void void myfunc(int i=5, i=5, double double d=1.234 d=1.234 ) { cout<< cout<< i<<'\n' i<<'\n' << << d << << '\n'; '\n'; } Defaultargument int int main() main() { myfunc(10,999.99); myfunc(10); myfunc(); return return 0; 0; } Parameter weggelassen - wird durch Defaultargument ersetzt! beide Parameter weggelassen - durch Defaultargumente ersetzt! 4
5 Defaultargumente und und sind sind Ergebnis des des ersten ersten Aufrufs mit mit 2 Parametern myfunc(10,999.99); und und sind sind Ergebnis des des zweiten Aufrufs mit mit 1 Parameter myfunc(10); 5 und und sind sind Ergebnis des des dritten dritten Aufrufs mit mit ohne ohne Parametern myfunc(10,999.99); Aber: Weglassen von von Aufrufparametern nur nur von von rechts nach links! 5
6 Funktionsüberladung Wichtiger Begriff merken: Überladene Funktionen oder Funktionsüberladung In In objektorientierten Sprachen, nicht nur nur in in c++ kann man mehrere Funktionen mit gleichem Namen aber verschiedenen Parameterlisten definieren, bzw. deklarieren. Man spricht von überladenen Funktionen 6
7 Funktionsüberladung In In c konnte in in einem Gültigkeitsbereich immer nur nur eine Funktion mit mit einem Funktionsnamen vereinbart werden. In In c++ gilt gilt das nicht mehr. Intern werden dem Funktionsnamen Kürzel für für die die einzelnen Parameter angefügt, so so dass sich wieder ein ein eindeutiger Name am am Ende ergibt. int int calc(int,int) könnte damit etwas vereinfacht unter unter dem Namen calc_ii geführt werden. 7
8 Funktionsüberladung Beispiel 1 #include #include <iostream> <iostream> #include #include <cstdlib> <cstdlib> #include #include <cmath> <cmath> using using namespace namespace std; std; int int myabs myabs (int (int z) z) {return {return abs(z);} abs(z);} long long myabs myabs (long (long z) z) {return {return labs(z);} labs(z);} double double myabs myabs (double (double z){return z){return fabs(z);} fabs(z);} int int main() main() { double double d= 123.5; d= 123.5; cout cout << << "Double:" "Double:" <<myabs(d)<<endl; <<myabs(d)<<endl; } Aufruf von myabs mit Parameter double 8
9 Funktionsüberladung Im Im Beispiel gibt es es drei Funktionen myabs mit mit je je einem Parameter unterschiedlichen Typs. Grundbedingung bei bei Funktionsüberladung ist, ist, dass die die Parameterlisten der der gleichnamigen Funktionen in in Typ und/oder Anzahl der der Parameter voneinander verschieden sind. Auf Grund der der Aufrufparameter findet der der Compiler die die richtige Funktion. 9
10 Funktionsüberladung Beispiel 2 #include #include <iostream> <iostream> #include #include <cstdlib> <cstdlib> #include #include <cmath> <cmath> using using namespace namespace std; std; Aufruf der Standardfunktion std::abs Kein rekursiver Aufruf!!! namespace namespace beck beck { int int abs abs (int (int z) z) {return {return abs(z);} abs(z);} long long abs abs (long (long z) z) {return {return labs(z);} labs(z);} double double abs abs (double (double z){return z){return fabs(z);} fabs(z);} } int int main() main() { double double d= 123.5; d= 123.5; using using namespace namespace beck; beck; cout cout << << "Double:" "Double:" <<beck::abs(d)<<endl; <<beck::abs(d)<<endl; } 10
11 Funktionsüberladung Da Da es es in in diesem Beispiel den Namensraum beck gibt, dürfen unsere Funktionen den Namen abs tragen, den sonst die die Standardfunktion hat. Die Standardfunktion abs können wir wir dennoch verwenden. Wir müssen nun nur nur den Namen abs unserer Funktionen voll qualifiziert verwenden beck::abs Nachfolgendes Beispiel dreht den Spieß um 11
12 Funktionsüberladung Beispiel 3 #include <iostream> #include <cstdlib> #include <cmath> namespace beck { int abs (int z) {return std::abs(z);} long abs (long z) {return std::labs(z);} double abs (double z){return std::fabs(z);} } using namespace beck; int main() { double d= 123.5; using namespace beck; std::cout << "Double:" <<abs(d)<<std::endl; } 12
13 Funktionsüberladung An An dem Beispiel hat hat sich in in puncto Überladung nichts geändert. Wir benutzen hier nicht using namespace std; statt dessen benutzen wir using namespace beck; In In der Folge müssen wir alle Elemente von std voll qualifiziert ansprechen, können aber unsere abs-funktionen ohne beck:: aufrufen. 13
14 Funktionsüberladung Bisher haben sich die Datentypen der Funktionen unterschieden um Funktionsüberladung zu zu realisieren. Im Im folgenden Beispiel unterscheiden sich die Funktionen durch die Anzahl der Parameter Wichtig: Bei der kombinierten Anwendung von Überladung und Defaultargumenten darf es es nicht zu zu Mehrdeutigen Situationen kommen, dies hätte Compilerfehler zur Folge. 14
15 Funktionsüberladung Beispiel 4 #include <iostream> using namespace std; int Max (int a, a, int b) b) { return (a>b?a:b); } int Max (int a, a, int b, b, int c) c) { return Max(Max(a,b),c); } int main() { cout << << Max(47,11) <<endl; cout << << Max(5, 9, 9, 2)<< endl; return 0; 0; }./a.out./a.out
16 Funktionsüberladung Die Funktion Max ermittelt aus zwei bzw. drei int-werten den jeweils größten. Auch hier wird aus der Parameterliste des Aufrufs die richtige Funktion ermittelt und aufgerufen. Eine Funktion int Max (int a, a, int b, b, int c=99) mit Defaultargument führt unweigerlich zum Compilerfehler! call call of of overloaded overloaded Max(int, Max(int, int) int) is is ambiguous ambiguous 16
17 Inlinefunktionen Eine Funktion kann in in c++ mit mit dem Arrtibut inline versehen werden. Das Attribut bewirkt, dass die Funktion nicht über den üblichen Funktionsaufrufmechnismus aufgerufen wird, sondern es es wir ihr ihr Code direkt in in die Aufrufstelle kopiert. Dies spart den Overhead, den sonst der Funktionsaufruf mit sich bringt. 17
18 Inlinefunktionen Inlinefunktionen sind mit expandierten Macros vergleichbar, nur dass hier eine vollständige Typprüfung der Parameter erfolgt. Inline sollte nur für für kleine Funktionen, die aus nur wenigen Anweisungen bestehen, verwendet werden. 18
19 Typisierte Konstanten C++ gestattet mit Hilfe des Attributes const, typisierte Konstanten zu zu zu zu definieren. Die Syntax entspricht der einer Variablendefinition mit Initialisierung. Typisierte Konstanten sind in in in in der Verwendung sicherer als als als als defines, wie wir wir sie sie sie sie von c her kennen. kennen weil Typprüfung möglich ist. Eine so so definierte Konstante darf überall, wo wo ein Eine konstanter so so definierte Wert Konstante erwartet darf wird, überall, stehen. wo wo ein konstanter Wert erwartet wird, stehen. 19
20 Typisierte Konstanten #include #include <iostream> using using namespace std; std;./a.out size of vc: 5 const const int int N=5; N=5; char char vc[n]; vc[n]; int int main() main() { cout cout << << "size "size of of vc: vc: " << << (sizeof (sizeof vc) vc) << << endl; endl; return return 0; 0; } Das geht in in c nicht 20
21 Typisierte Konstanten Besondere Bedeutung hat const in in c++ in in Verbindungmit Pointern. Ein Pointer kann selbst eine Konstante sein, dann kann dieser Pointer nicht geändert werden, der Wert, auf den der Pointer zeigt, ist ist aber veränderbar. Ein Pointer kann auf eine Konstante zeigen. Dann kann der Pointer modifiziert werden, der Wert, auf den der Pointer zeigt, jedoch nicht. 21
22 Typisierte Konstanten Schließlisch kann es es auch einen konstanten Pointer geben, der auf eine Konstante zeigt. Regel: const vor vor dem Typ eines Pointers definiert einen Pointer auf auf einen Wert, der der nicht überschrieben werden darf. const nach dem Typ eines Pointers definiert einen Pointer, der der nicht modifiziert werden kann 22
23 Typisierte Konstanten Die erste Variante kennen wir schon von c: c: int int strcmp(const char char *s1, *s1, const char char *s2); Hier zeigen die Pointer auf werte, die von der Funktion nicht verändert werden (können/dürfen) Die zweite Variante sieht etwa so so aus: 23
24 Typisierte Konstanten #include #include <iostream> <iostream> #include #include <iomanip> <iomanip> #include #include <cstring> <cstring> using using namespace namespace std; std; // // Das Das Urteil Urteil des des Herrschers: Herrschers: char char vbuf[]="haengen, vbuf[]="haengen, nicht nicht laufen laufen lassen"; lassen"; char char * const const pbuf=vbuf; pbuf=vbuf; // // Initialisierung Initialisierung ist ist zwingend zwingend int int main() main() { pbuf++; pbuf++; cout cout << << "size "size of of vbuf: vbuf: " << << setw(4)<<(sizeof setw(4)<<(sizeof vbuf) vbuf) << << " Text: Text: " << << vbuf vbuf << << endl; endl; cout cout << << "size "size of of pbuf: pbuf: " << << setw(4)<<(sizeof setw(4)<<(sizeof pbuf) pbuf) << << " Text: Text: " << << pbuf pbuf << << endl; endl; return return 0; 0; } 24
25 Typisierte Konstanten Hier habe wir ihn, den konstanten Pointer Er Er muss initialisert werden. Der Versuch ihn zu zu incrementieren wird mit mit einem Compilerfehler geahndet: error: increment of of read only variable pbuf Das Ändern der Daten aud die der Pointer zeigt, ist ist kein Problem, wie nachfolgendes Beispiel zeigt, dieser Umstand rettet Leben!! 25
26 Typisierte Konstanten Hier habe wir ihn, den konstanten Pointer Er Er muss initialisert werden. Der Versuch ihn zu zu incrementieren wird mit mit einem Compilerfehler geahndet: error: increment of of read only variable pbuf Das Ändern der Daten, auf die der Pointer zeigt, ist ist kein Problem, wie nachfolgendes Beispiel zeigt, dieser Umstand rettet Leben!! 26
27 Typisierte Konstanten... // // Das Das Urteil Urteil des des Herrschers Herrschers char char vbuf[]="haengen, vbuf[]="haengen, nicht nicht laufen laufen lassen"; lassen"; char char * const const pbuf=vbuf; pbuf=vbuf; int int main() main() { pbuf[ pbuf[ 7]=' 7]=' '; '; Pbuf[14]=','; Pbuf[14]=','; cout cout << << Die Die Message Message des des Boten: Boten: << << endl; endl; cout cout << << "size "size of of vbuf: vbuf: " << << setw(4)<<(sizeof setw(4)<<(sizeof vbuf) vbuf) << << " Text: Text: " << << vbuf vbuf << << endl; endl; cout cout << << "size "size of of pbuf: pbuf: " << << setw(4)<<(sizeof setw(4)<<(sizeof pbuf) pbuf) << << " Text: Text: " << << pbuf pbuf << << endl; endl; return return 0; 0; } 27
28 Typisierte Konstanten Das Urteil der der Herrschers: haengen, nicht laufen lassen Glücklicherweise können wir wir über unseren konstanten Pointer die die Daten ändern in in die die message des Boten:./a.out./a.out Die Die message message des des Boten: Boten: size size of of vbuf: vbuf: Text: Text: haengen haengen nicht, nicht, laufen laufen lassen lassen size size of of pbuf: pbuf: 8 Text: Text: haengen haengen nicht, nicht, laufen laufen lassen lassen 28
29 Typisierte Konstanten // // Das Das Utreil Utreil des des Herrschers: Herrschers: char char vbuf[]="haengen, vbuf[]="haengen, nicht nicht laufen laufen lassen"; lassen"; // // Konstanter Konstanter Pointer Pointer auf auf konstante konstante Daten Daten const const char char * const const pbuf=vbuf; pbuf=vbuf; int int main() main() { // // pbuf[ pbuf[ 7]=' 7]=' '; '; // // bringt bringt jetzt jetzt Compilerfehler Compilerfehler // // pbuf[14]=','; pbuf[14]=','; // // assignment assignment of of read only read only location location cout cout << << "Die "Die message message des des Boten:" Boten:" << << endl; endl; cout cout << << "size "size of of vbuf: vbuf: " << << setw(4)<<(sizeof setw(4)<<(sizeof vbuf) vbuf) << << " Text: Text: " << << vbuf vbuf << << endl; endl; cout cout << << "size "size of of pbuf: pbuf: " << << setw(4)<<(sizeof setw(4)<<(sizeof pbuf) pbuf) << << " Text: Text: " << << pbuf pbuf << << endl; endl; return return 0; 0; 29
30 Typisierte Konstanten In In diesem letzten Fall ist ist es es unmöglich, die die Daten zu zu maipulieren und auch der der Pointer kann nicht verändert werden. Besondere Bedeutung haben diese Konstrukte, wenn sie sie in in Parameterlisten von Funktionen auftauchen. Merke: const vor vor dem Typ: Die Daten sind konstant const nach dem Typ: Der Pointer ist ist konstant, Es Es ist ist eine Initialisierung des Pointers erforderlich 30
31 C-Code in Headerfiles Einbinden von C Code C Code in in Headerfiles müssen gesondert gekennzeichnet werden. extern "C" {... } Nur so so ist ist ein Linken der zugehörigen Objektdateien/Bibliotheken möglich 31
32 Der Scopeoperator :: Der scopeoperator beeinflusst die Regen der Gültigkeit von Bezeichnern. Angenommen es es gibt lokal und global jeweils einen Bezeichner mit dem selben Namen, z.b. amount. Verwendet man innerhalb der der Funktion (des Blocks), in in der der amount lokal definiert ist ist diesen Namen, so so ist ist natürlich dieser lokale Bezeichner gültig. Setzt man den Scopeoperator davor, so so werden die die normalen Gültigkeitsregeln aufgehoben und es es wird der der globale an an Stelle des lokalen Bezeichners gültig. 32 tig.
33 Der Scopeoperator :: #include #include <iostream> using using namespace std; std; int int amount=123; int int main() main() { int int amount=456; cout<< cout<< "extern "extern Amount: Amount: "<<::amount<<endl; cout<< cout<< "local "local Amount: Amount: "<< "<< amount<<endl; return return 0; 0; }./a.out./a.out extern extern Amount123 local local Amount456 33
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
MehrC++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16
C++ Teil 4 Sven Groß IGPM, RWTH Aachen 30. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 4 30. Apr 2015 1 / 16 Themen der letzten Vorlesung Funktionen: Definition und Aufruf Wert- und Referenzparameter,
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
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
MehrEinführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Gültigkeitsbereiche Inhalt Lokale und globale
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
MehrEinführung in die Programmierung Wintersemester 2008/09
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 : Funktionen Inhalt Funktionen - mit / ohne Parameter
MehrC++ - Einführung in die Programmiersprache Header-Dateien und Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Header-Dateien und Funktionen Leibniz Universität IT Services Anja Aue Modularisierung Logische Gliederung von Programmteilen mit Hilfe von Namensräumen. Aufteilung
Mehr2. Datentypen und Variablen I
2. Datentypen und Variablen I Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Elemente eines C++ Programmes!Präprozessor #include!main()-funktion!ein- und Ausgabe mit cin und cout-objekten!deklaration
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2010/11 Lokale und globale Variablen Namensräume Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund
MehrInformatik I (D-ITET)
//009 Informatik I (D-ITET) Übungsstunde 8, 6..009 simonmayer@student.ethz.ch ETH Zürich Besprechung/Vertiefung der Vorlesung [..009] ArrayStack Ausgezeichnet Einige haben s etwas kompliziert gemacht clear()
MehrC++ - Variablen: Gültigkeit - Sichtbarkeit
C++ - Variablen: Gültigkeit - Sichtbarkeit Reiner Nitsch 8417 r.nitsch@fbi.h-da.de Attribute von Variablen und Funktionen Attribute von Variablen sind Name (name), Typ (type), Wert (value) Attribute von
MehrKapitel 13. Definition von Klassen. OOP Thomas Klinker 1
Kapitel 13 Definition von Klassen OOP Thomas Klinker 1 OOP Thomas Klinker 2 Datenabstraktion Der Mensch abstrahiert, um komplexe Sachverhalte darzustellen. Dinge und Vorgänge werden auf das wesentliche
MehrEin kleiner Blick auf die generische Programmierung
TgZero Technik.Blosbasis.net June 3, 2013 1 Inhaltsverzeichnis 1 Vorwort 3 2 Ein kleines Beispiel 3 3 Templates 3 4 Verschiedene Datentypen 4 5 Variadic Templates 5 6 Unterschied zwischen den Programmiersprachen
MehrPass 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
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,
MehrCrashkurs C++ Wiederholung
Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i
MehrPraxisorientierte Einführung in C++ (Variadische Funktionen)
Praxisorientierte Einführung in C++ (Variadische Funktionen) Christoph Elbrechter, Florian Paul Schmidt Universität Bielefeld April 12, 2012 Christoph Elbrechter, Florian Paul Schmidt Praxisorientierte
MehrDie erste C++ Funktion
Die erste C++ Funktion Funktion zur Potenzberechnung // PRE: e >= 0 b!= 0.0 // POST: return value is b^e double pow (double b, int e) { double result = 1.0; if (e < 0) { // b^e = (1/b)^(-e) b = 1.0/b;
Mehr9. Funktionen Teil II
9. Funktionen Teil II Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Inline Funktionen!Referenz-Variablen!Pass by Reference!Funktionsüberladung!Templates Copyright: M. Gross, ETHZ, 2003 2 Inline
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
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
MehrEntwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben!
Projekt: Artikelverwaltung Seite 1 von 5 Entwickeln Sie ein C/C++-Programm für die Verwaltung einer Artikeldatei gemäß folgender Vorgaben! Legen Sie global einen benutzerdefinierten Datentyp artikel an:
MehrVerwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C
Übersicht Funktionen Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion Sinn von Funktionen Wiederverwendung häufig verwendeter nicht banaler Programmteile Wiederverwendung
MehrEinführung in die Programmierung mit C++
1 Seite 1 Einführung in die Programmierung mit C++ Teil III - Objektorientierte Programmierung 9. Klassen und Methoden Was sind Klassen? Seite 2 sprachliches Mittel von C++ um objektorientierte Programmierung
MehrProgrammierkurs C++ Kapitel 6 Module Seite 1
Programmierkurs C++ Kapitel 6 Module Seite 1 (Quell-)Module Unter einem Modul versteht man einen Teil des Programms, der eigenständig übersetzt werden kann. In der Syntax der Programmiersprachen werden
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
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:
MehrStrukturierte Programmierung und Funktionen
Strukturierte Programmierung und Funktionen Um ein Programm übersichtlicher zu gestalten, zerlegt man seine Funktionalität meist in mehrere (oder auch ganz viele) Teile. Dadurch lässt sich das Programm
Mehr1 pulsierender Speicher
1 pulsierender Speicher 1.1 Aufgabentyp Gegeben sei das folgende C-Programm: [...] (a) Geben Sie den Gültigkeitsbereich jedes Objektes des Programms an. (b) Stellen Sie die Rechnung des Programms für die
Mehr9. Vektoren. (auch Felder/array)
9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die
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
Mehr1 EINFÜHRUNG PROGRAMMAUFBAU IN C++
1 EINFÜHRUNG PROGRAMMAUFBAU IN C++ Leitidee: Genaueres Verständnis der C++-Syntax an Hand von Syntaxdiagrammen Lexikalische Struktur von C++ Vereinbarungen: Definition / Deklaration Beispiele für Variablen-
MehrAbschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do
Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do 1. (6 P) Schreiben Sie die folgenden mathematischen Ausdrücke als korrekte C++- Anweisungen (Variablendeklarationen,
MehrProf. W. Henrich Seite 1
Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse
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
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
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
MehrPraxisorientierte Einführung in C++ Lektion: "Namespaces"
Praxisorientierte Einführung in C++ Lektion: "Namespaces" Christof Elbrechter Neuroinformatics Group, CITEC May 28, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ May 28, 2014 1 / 15 Table
MehrUnterprogramme. 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
MehrKlausur Informatik WS 2012/13
Klausur Informatik WS 2012/13 Name Gruppe 1 Vorname Dauer 90 min Matrikelnummer Hilfsmittel keine Die Klausur ist mit 50 Punkten sicher bestanden. Hinweies: Voraussetzung für die Teilnahme ist das Bestehen
MehrFunktionales C++ zum Ersten
Funktionales C++ zum Ersten WiMa-Praktikum 1, Teil C++, Tag 1 Christoph Ott, Büro: Helmholtzstr.18, E22 Tel.: 50-23575, Mail: christoph.ott@uni-ulm.de Institut für Angewandte Informationsverarbeitung 26.08.08
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
MehrPraxis der Programmierung
Funktionen, Header-Dateien, Pointer Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn 1 Organisatorische Bemerkungen 2 Modul Programmierung Pflichtmodul für BSc INF
MehrPolymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
MehrAuswahlen (Selektionen)
1 Anhang 10.3 Ein/Ausgaben Eingabe mit Prompt (Beispiel) cout ; // Prompt ohne endl cin
MehrProgrammieren in C++ Templates
Programmieren in C++ Templates Inhalt Templates Funktions- und Klassen-Templates Spezialisierung von Templates Generische Klassen Einbinden von Templates Instantiierung (implizit und explizit) Templates
MehrPolymorphismus 44. Function.hpp. #include <string>
Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class
MehrEinfü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
MehrProf. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)
12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!
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
MehrWintersemester 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Ü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
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
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
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
MehrEs ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Zeigern, sowie Records und Funktionen Aufgabe 5: Diese Aufgabe basiert auf der Aufgabe 4. Es ist ein Programm zu erstellen, in welchem der Anwender aus einer Anzahl möglicher
MehrHochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 3. Aufgabenblatt Funktionen - Unterprogramme
Ziel ist die Aufteilung eines Programms in Funktionen und Dateien Aufgabe 3: Diese Aufgabe ist die Weiterentwicklung von Aufgabe 2. Es ist ein Programm zu erstellen, in welchem der Anwender aus einer Anzahl
MehrZiele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)
Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Aufgabe 3: Diese Aufgabe baut auf der 2. Aufgabe auf und erweitert diese. Die Funktionalität der 2. Aufgabe wird also
MehrVariablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung
Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung Einfache Variablen Typen int, long, short, unsigned bool char float,
MehrProgrammierkurs C++ Konstruktor, Statische Methoden Namespaces
Programmierkurs C++ Konstruktor, Statische Methoden Namespaces Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen
MehrC++ Klassen, Vererbung. Philipp Lucas. Sebastian Hack. Wintersemester 2008/09. saarland.
C++ Klassen, Vererbung Philipp Lucas phlucas@cs.uni-sb.de Sebastian Hack hack@cs.uni-sb.de Wintersemester 2008/09 saarland university computer science 1 Inhalt Klassen in C++ Sichtbarkeit Erzeugen von
MehrVorkurs Informatik: Erste Schritte der Programmierung mit C++
Vorkurs Informatik WS 14/15 Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Arne Nägel, Andreas Vogel, Gabriel Wittum Lehrstuhl Modellierung und Simulation Goethe-Center for Scientific Computing
MehrKonzepte der Programmiersprachen
Konzepte der Programmiersprachen Sommersemester 2010 4. Übungsblatt Besprechung am 9. Juli 2010 http://www.iste.uni-stuttgart.de/ps/lehre/ss2010/v_konzepte/ Aufgabe 4.1: Klassen in C ++ Das folgende C
MehrFunktionen. mehrfach benötigte Programmteile nur einmal zu schreiben und mehrfach aufzurufen
Funktionen Funktionen erlauben, dem Programmcode hierarchisch zu strukturieren ein Hauptprogramm steuert dabei die Abfolge von Schritten, die einzelnen Schritte können durch Funktionen realisiert werden
MehrInformatik 1 ( ) D-MAVT F2011. Klassen, Funktionen. Yves Brise Übungsstunde 9
Informatik 1 (251-0832-00) D-MAVT F2011 Klassen, Funktionen Nachbesprechung Blatt 7, Aufgabe 1 Wenn Funktion void als Rückgabetyp hat, dann ist return nicht notwendig. void swap3(int* a, int* b) { int
MehrDAP2 Praktikum Blatt 1
Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1
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)
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
MehrÜbungen zur Vorlesung EidP (WS 2015/16) Blatt 6
Andre Droschinsky Ingo Schulz Dortmund, den 0. Dezember 2015 Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Block rot Es können 4 + 1 Punkte erreicht werden. Abgabedatum: 10. Dezember 2015 2:59 Uhr Hinweise
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
MehrC++ - Funktionen und mehr -
C++ - Funktionen und mehr - Friedrich-Schiller-Universität Jena Kerstin Gößner und Ralf Wondratschek Prof. Dr. habil. Wolfram Amme Dipl.-Inf. Thomas Heinze Inhaltsverzeichnis 1 Einleitung 3 2 Deklaration,
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
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++
MehrGlobale Variablen Diverses. Globale Variablen. Globale Variablen
lokale Variablen Variablen bisher nur am Anfang von Funktionen auch erlaubt: am Anfang innerer Codeblöcke (innerhalb geschweifter Klammern) in C99 und als gcc-erweiterung: an beliebiger Stelle innerhalb
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)
MehrFunktionen: Rückgabewert
Funktionen: Rückgabewert Jede Funktion in C++ (außer Konstruktoren und Destruktoren siehe später) MUSS einen Rückgabewert-Typ vereinbaren. Gibt sie nichts zurück, muss der Rückgabetyp void sein. Jede return-anweisung
MehrGrundlagen der Informatik 4. Kontrollstrukturen I
4. Kontrollstrukturen I Anweisungen und Blöcke Grundlagen der Informatik (Alex Rempel) 1 Anweisungen und Blöcke Anweisungen ("statements") Immer mit Semikolon abzuschließen "Leere" Anweisung besteht aus
MehrStandardbibliotheken. Datentyp bool. Eingaben 2/2. Eingaben 1/2. In C gibt es keinen logischen Datentyp
Datentyp bool Standardbibliotheken Ein- und Ausgabe Vektoren Container In C gibt es keinen logischen Datentyp Abhilfe schafft Interpretation 0 == false 1 == true Das könnte so aussehen: #define false 0
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
MehrÜberladen von Operatoren
- Überladen des Indexoperators [] - Überladen des Ausgabeoperators > Programmieren in C++ Informatik FH Trier C++12-1 ähnlich dem Überladen von Funktionen Überladen
MehrInhalt. 4.9 Typen, Variable und Konstante
Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Pointern
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
MehrThemen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente
Themen Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Formatierte Eingabe mit cin Die Formatierung der Eingabe ist der Ausgabe sehr ähnlich: Die Flags werden
Mehr7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});
S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht
MehrMethoden. 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
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
MehrÜberladene Funktionen und Operatoren
12. Überladene Funktionsnamen und Operatoren 12-1 Objektorientierte Programmierung (Winter 2008/2009) Kapitel 12: Überladene Funktionen und Operatoren Überladene Funktionsnamen Zusammenspiel mit Überschreiben
MehrC++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Funktionen Leibniz Universität IT Services Anja Aue Subroutine (Unterprogramm) Lösung von Teilen einer Gesamtaufgabe. Kapselung von Anweisungen, die zu einer
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
Mehr4 5 void swap(int* px, int* py) { 6 int tmp = *px; 7 *px = *py; 8 *py = tmp; 9 }
Was ist eine Referenz? Referenzen Definition Unterschied zwischen Referenz und Pointer direktes Call by Reference Referenzen als Funktions-Output type& 5 int main() { 6 int var = 5; 7 int &ref = var; 8
MehrTyp : void* aktuelle Parameter Pointer von beliebigem Typ
2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben
MehrGrundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme
Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Teil 1: Wiederholung C Heutige Agenda Nutzereingaben verarbeiten Teil 2: Grundlagen in C++ Erstes
MehrKlausur 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.:
MehrKurze Einführung in die Programmiersprache C++ und in Root
Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung
MehrGrundlagen der Informatik 6. Arrays I
6. Arrays I Motivation Array (konstante Länge) Speicherbereich Eingabe von Arrays Grundlagen der Informatik (Alex Rempel) 1 Motivation Beispiel: Bildschirmpixel zeichnen Auflösung 800x600, d.h. insgesamt
Mehr