Grundlagen der Informatik 9. Funktionen II
|
|
- Alexander Hofer
- vor 6 Jahren
- Abrufe
Transkript
1 9. Funktionen II Wiederholung Parameterübergabe Funktionsparameter Statische Variablen Inline Funktionen Überladen von Funktionen Templates in Funktionen Rekursion in Funktionen Testen von Funktionen Grundlagen der Informatik (Alex Rempel) 1
2 Wiederholung Parameterübergabe Wertübergabe (by value) type funcname(type param); 'type param' ist eine neue Variable in der Funktion neuer Speicherplatz wird angelegt Wert des Aufrufparameters wird in neue Variable kopiert Referenzübergabe (by reference) type funcname(type& param); 'type& param' ist keine neue Variable in der Funktion kein neuer Speicherplatz wird angelegt 'param' ist ein neuer Name desselben Aufrufparameters Grundlagen der Informatik (Alex Rempel) 2
3 Wiederholung Parameterübergabe #include <string> // call by value, 'str' is new variable with value copy void writestringbyvalue(string str) { str = "Text from writestringbyvalue(string str)"; // call by reference, 'str' is just another name, no new variable void writestringbyreference(string& str) { str = "Text from writestringbyreference(string str)"; // main function string strmain1 = "Text from main()"; string strmain2 = "Text from main()"; cout << "...before function calls:" << endl << strmain1 << endl << strmain2 << endl; writestringbyvalue(strmain1);...before function calls: Text from main() Text from main()...after function calls: Text from main() Text from writestringbyreference(string& str) // value from strmain1 is copied writestringbyreference(strmain2); // strmain2 itself is taken to function cout << "...after function calls:" << endl << strmain1 << endl << strmain2 << endl; Grundlagen der Informatik (Alex Rempel) 3
4 Array als Parameter Funktionsparameter Array als Funktionsparameter immer Referenzübergabe Wegen C als Ursprung von C++ sind Arrays Sonderfälle Es wird kein & verwendet, sondern die Adresse des ersten Elements im Array wird implizit übergeben Funktion hat also nicht die lokale Kopie, sondern das Original Funktion kennt aber die Größe des Arrays nicht Array darf nicht als Rückgabewert angegeben werden Darf kein type[] sein Implizite Referenzübergabe type name(type param[]); Arraygröße unbekannt d.h. sizeof(param) funktioniert nicht Grundlagen der Informatik (Alex Rempel) 4
5 Funktionsparameter Beispiel: Vektor skalieren sizeof(svec) in der Funktion würde 4 Bytes ergeben (Größe der Adresse) #include <iomanip> void scalevector(short svec[], int ilen, short sscalar) { for (int i=0; i < ilen; ++i) svec[i] *= sscalar; short svector[] = {3,-2,34; int ilen = sizeof(svector)/sizeof(short); for (int i=0; i < ilen; ++i) cout << setw(5) << svector[i]; scalevector(svector, ilen, -2); cout << endl; for (int i=0; i < ilen; ++i) cout << setw(5) << svector[i]; cout << endl; Grundlagen der Informatik (Alex Rempel) 5
6 Funktionsparameter Mehrdimensionale Arrays als Parameter Bei mehrdimensionalen Arrays darf im formalen Parameter nur die Größe der ersten Dimension undefiniert bleiben, alle weiteren müssen fest vorgegeben werden #include <iomanip> void printmatrix(short smx[][3], int ilen) { for (int i=0; i < 3; ++i) { for (int j=0; j < ilen; ++j) cout << setw(2) << smx[j][i]; cout << endl; cout << endl; short smatrix[2][3] = {{1,2,3,{4,5,6; printmatrix(smatrix, 2); Dadurch wird die direkte Übergabe von mehrdimensionalen Arrays in Funktionen sehr unkomfortabel Grundlagen der Informatik (Alex Rempel) 6
7 Funktionsparameter Konstante Parameter type name(const type param); Referenzübergabe ist effizient: Speicher wird gespart (keine neue Variable) Performance wird gespart (nur eine Adresse wird kopiert) Wenn Referenzübergabe nur aus Effizienz benutzt wird, muss der Parameter vor Änderungen geschützt sein Dazu verwendet man den const Modifikator Compiler kontrolliert beim Übersetzen, dass der Parameter in der Funktion nicht verändert wird (read-only Parameter) Grundlagen der Informatik (Alex Rempel) 7
8 Funktionsparameter Beispiel: Summe im Array berechnen Werte aus dem Array müssen also nur gelesen werden #include <iomanip> z.b. wäre jetzt uiarr[0] = 3; verboten const kann auch bei Wertübergabe genutzt werden Sum = 93 unsigned long getsum(const unsigned int uiarr[], const int ilen) { unsigned long ulresult = 0; for (int i=0; i < ilen; ++i) ulresult += uiarr[i]; return ulresult; Für Länge des Arrays wurde keine Referenzübergabe genutzt, um auch einen Ausdruck übergeben zu können unsigned int uinumbers[] = {19,2,55,12,5; unsigned long ulsum = getsum( uinumbers, sizeof(uinumbers)/sizeof(unsigned int) ); for (int i=0; i < sizeof(uinumbers)/sizeof(unsigned int); ++i) cout << uinumbers[i] << " "; cout << endl << "Sum = " << ulsum << endl; Grundlagen der Informatik (Alex Rempel) 8
9 Funktionsparameter Variable Parameteranzahl durch Defaultwerte Formale Parameter der Funktion können mit Defaultwerten versehen werden Funktionen können dann mit weniger Parametern aufgerufen werden als sie haben Die fehlenden Parameter bekommen automatisch Defaultwerte Alte Funktionen können so erweitert werden, ohne dass alle alten Funktionsaufrufe geändert werden müssen Normaler Aufruf name(param); Alternativer Aufruf name(); type name(type param = value); Grundlagen der Informatik (Alex Rempel) 9
10 Funktionsparameter Beispiel: Kreisfläche mit variabler Pi Genauigkeit #include <iomanip> R=5 Area = 78.5 Area = double getcirculararea(const double dradius, const double dpi = 3.14) { return dpi*dradius*dradius; double dradius = 5.0; cout << "R=" << dradius << endl; cout << "Area = " << getcirculararea(dradius) << endl; cout << "Area = " << getcirculararea(dradius, ) << endl; Grundlagen der Informatik (Alex Rempel) 10
11 Statische Variablen static Variablen in Funktionen Statische Variablen innerhalb einer Funktion... Werden beim ersten Aufruf initialisiert Bleiben nach Funktionsaufruf erhalten Der Wert nach dem letzten Aufruf bleibt ebenfalls erhalten Dadurch erhält die Funktion "Gedächtnisvariablen" Statt globaler Variablen sollten statische verwendet werden Grundlagen der Informatik (Alex Rempel) 11
12 Funktionsparameter Beispiel: Tausch von Elementen im Array #include <iomanip> void swapelements(int iarr[], int ifirst, int isecond) { static int iswaps = 0; int itemp = iarr[ifirst]; iarr[ifirst] = iarr[isecond]; iarr[isecond] = itemp; ++iswaps; cout << "Swaps until now: " << iswaps << endl; Swaps until now: 1 Swaps until now: 2 Swaps until now: 3 Swaps until now: int inumbers[] = {8,9,4,2,3,6; int ilen = sizeof(inumbers)/sizeof(int); for (int i=0; i < ilen; ++i) cout << inumbers[i] << " "; cout << endl; for (int i=0; i < ilen-1; ++i) if (inumbers[i] > inumbers[i+1]) swapelements(inumbers, i, i+1); for (int i=0; i < ilen; ++i) cout << inumbers[i] << " "; cout << endl; Grundlagen der Informatik (Alex Rempel) 12
13 inline Funktionen Inline Funktionen Manche Funktionen sind so klein, dass der Aufwand beim Kopieren der Parameter größer ist als der Aufwand in der Funktion selbst Trotzdem ist es besser, den Code in Funktionen zu kapseln Bei einem inline Modifikator kopiert der Compiler beim Übersetzen den ganzen Funktionsblock an die Aufrufstelle inline double quad(double d) { return d*d; quad(3.14) = cout << "quad(3.14) = " << quad(3.14) << endl; Grundlagen der Informatik (Alex Rempel) 13
14 Überladen von Funktionen Überladen (engl. overloading) Funktionen können überladen werden, um mit dem gleichen Funktionsnamen gleichartige Operationen mit unterschiedlichen Datentypen durchzuführen Es werden eigentlich mehrere Funktionen erstellt, welche zwar den gleichen Funktionsnamen haben, aber unterschiedliche Parametertypen/Parameterreihenfolge Signatur in C++: Funktionsname, Parameterreihenfolge/-typen int getmax(int i1, int i2); float getmax(float f1, float f2); Signaturen getmax(int, int); getmax(float, float); Grundlagen der Informatik (Alex Rempel) 14
15 Überladen von Funktionen Beispiel: Maximum bestimmen Der Aufruf bleibt gleich, korrekte Funktion wird automatisch erkannt #include <string> int getmax(int a, int b) { return (a > b)? a : b; ; //long getmax(int a, int b) { return (a > b)? a : b; ; double getmax(double a, double b) { return (a > b)? a : b; ; string getmax(string a, string b) { return (a > b)? a : b; ; cout << "max(4,-5) = " << getmax(4,-5) << endl; cout << "max(0.4,0.8) = " << getmax(0.4,0.8) << endl; cout << "max(\"abc\",\"abd\") = " << getmax("abc","abd") << endl; max(4-5) = 4 max(0.4,0.8) = 0.8 max( abs, abd ) = abd Unterschiedlicher Rückgabewert reicht nicht aus Grundlagen der Informatik (Alex Rempel) 15
16 Überladen von Funktionen Beispiel: Maximum bestimmen Der Aufruf bleibt gleich, korrekte Funktion wird automatisch erkannt Wenn der Code in der Funktion gleich abläuft, kann explizite Typumwandlung genutzt werden, um Code zu sparen #include <string> double getmax(double a, double b) { return (a > b)? a : b; ; string getmax(string a, string b) { return (a > b)? a : b; ; int getmax(int a, int b) { return (int)getmax((double)a,(double)b); ; cout << "max(4,-5) = " << getmax(4,-5) << endl; cout << "max(0.4,0.8) = " << getmax(0.4,0.8) << endl; cout << "max(\"abc\",\"abd\") = " << getmax("abc","abd") << endl; max(4-5) = 4 max(0.4,0.8) = 0.8 max( abs, abd ) = abd Grundlagen der Informatik (Alex Rempel) 16
17 Templates in Funktionen Funktionen in C++ können auch typlose Parameter haben, wenn Templates verwendet werden (generisches Programmieren) So kann ein einzelner Funktionsblock für unterschiedliche Typen erstellt werden Compiler erstellt beim Übersetzen automatisch überladene Funktionen für jede Typvariation, die im Programm auf das Funktionstemplate aufgerufen wurde template <class T> T getsum(t param); template <class T> type getsum(t param); template <class T> T getsum(type param);... Grundlagen der Informatik (Alex Rempel) 17
18 Templates in Funktionen Beispiel: Summe aller Werte im Array berechnen template <class LOLCAT> LOLCAT getsum(lolcat arr[], int ilen) { LOLCAT sum = 0; for (int i=0; i < ilen; ++i) sum = sum + arr[i]; return sum; short sarray[] = {3, 6, 22, 2, 7, 9; int iarray[] = {45, 326, 7, 5; double darray[] = {0.45, 123.4, 0.0; sum(short) = 49 sum(int) = 383 sum(double) = Beim Übersetzen merkt der Compiler, dass die Funktion mit short, int und double aufgerufen wird und erstellt automatisch 3 Versionen der Funktion, jeweils mit dem Typ statt LOLCAT cout << "sum(short) = " << getsum(sarray,sizeof(sarray)/sizeof(short)) << endl << "sum(int) = " << getsum(iarray,sizeof(iarray)/sizeof(int)) << endl << "sum(double) = " << getsum(darray,sizeof(darray)/sizeof(double)) << endl; Grundlagen der Informatik (Alex Rempel) 18
19 Rekursion in Funktionen Rekursionen in C++ Direkte Rekursion Funktion A ruft selbst Funktion A nochmal auf Indirekte Rekursion Funktion A ruft Funktion B auf, welche Funktion A aufruft Rekursionen werden verwendet, wenn ein rekursiver Algorithmus (z.b. Fakultät) oder eine rekursive Datenstruktur realisiert werden sollen Grundlagen der Informatik (Alex Rempel) 19
20 Rekursion in Funktionen Beispiel: Bogen zeichnen Abbruchbedingung Rekursion void printbow(int isize, int iblanks = 0) { if (isize < 0) return; for (int i=0; i < iblanks; ++i) cout << " "; cout << isize << endl; printbow(isize-1,iblanks+1); // recursion for (int i=0; i < iblanks; ++i) cout << " "; cout << isize << endl; printbow(5); Grundlagen der Informatik (Alex Rempel) 20
21 Rekursion in Funktionen Beispiel: Bogen zeichnen printbow(5,0) printbow(4,1) printbow(3,2) printbow(2,3) printbow(1,4) printbow(0,5) printbow(-1,6) void printbow(int isize, int iblanks = 0) { if (isize < 0) return; for (int i=0; i < iblanks; ++i) cout << " "; cout << isize << endl; printbow(isize-1,iblanks+1); // recursion for (int i=0; i < iblanks; ++i) cout << " "; cout << isize << endl; printbow(5); Grundlagen der Informatik (Alex Rempel) 21
22 Rekursion in Funktionen Beispiel: Berechnung Fakultät Algorithmus: fac(0)=fac(1)=1, fac(n)=n*fac(n-1) factorial(5) = 120 factorial(13) = unsigned long factorial(unsigned int uinumber) { if (uinumber == 0 uinumber == 1) return 1; return uinumber * factorial(uinumber-1); cout << "factorial(5) = " << factorial(5) << endl; cout << "factorial(13) = " << factorial(13) << endl; Grundlagen der Informatik (Alex Rempel) 22
23 Top Down Grundlagen der Informatik Testen von Funktionen main() wird bereits programmiert und soll getestet werden, Funktionen stehen aber noch nicht zur Verfügung Lösung: "Stubs" erstellen, welche die Schnittstellen der Funktionen (Deklarationen) implementieren, aber das Verhalten nur simulieren Beispiel: "int factorial(short)" gibt erstmal immer 1 zurück Vorteil: Vorführung und Einbeziehung der Anwender sehr früh Nachteil: Funktionen sind noch nicht universell einsetzbar Grundlagen der Informatik (Alex Rempel) 23
24 Bottom Up Grundlagen der Informatik Testen von Funktionen Funktion wird bereits entwickelt, wird aber noch nirgendwo aufgerufen Lösung: "Treiber" erstellen, welche die Funktion testweise aufrufen Beispiel: "int factorial(short)" gibt es bereits Treiber wird realisiert, welcher die Funktion mit unterschiedlichen Zahlen aufruft und Ergebnisse zeigt Vorteil: universeller ausführlicher Funktionstest Nachteil: spätes Erkennen von Entwurfsfehlern Grundlagen der Informatik (Alex Rempel) 24
25 Testen von Funktionen Testplan für Funktion Eingabedaten sind immer Parametervariationen Vorteil: keine unzulässigen Eingaben wie char statt int Beispiel: "double calculatesquareroot(double d);" Fall Beschreibung d Ergebnis 1 Normalfall Sonderfall Sonderfall Fehlerfall (?) Grundlagen der Informatik (Alex Rempel) 25
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
MehrDeklarationen 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.
MehrProgrammieren in C++ Arrays, Strings und Zeigerarithmetik
Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik
MehrFunktionen 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
MehrObjektorientiertes 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
MehrEine 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.............................
MehrObjektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 10. Juli 2007 Fortgeschrittene Template-Techniken C++ bietet eine Vielfalt weiterer Techniken für Templates: Templates
MehrÜbersicht. C Funktionen. Funktion main. Funktionen. Funktionsdefinition und und Funktionsaufruf Deklaration von Funktionen
Übersicht Funktionsdefinition und und Funktionsaufruf Deklaration von Funktionen C Funktionen Gültigkeitsbereich und Speicherklasse Parameterübergabe Rückgabe des Funktionsresultats Mehr zu Funktionen
Mehr2. 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
MehrDie Programmiersprache C
Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:
MehrEinführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.
Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
MehrJava 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
MehrEinfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
MehrPIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik
MehrModul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
MehrEinführung in die Programmiersprache C
Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include
MehrEin erstes Java-Programm
Ein erstes Java-Programm public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = -1 + 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println
MehrFunktionen und Parameter
Funktionen in C++ Funktionen und Parameter Wie in Java: Parameter sind lokale Variablen Argumente werden bei Aufruf zugewiesen Extras: Zeiger-Parameter für alle Typen: als Rückgabewerte um große Kopien
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
MehrKlausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber
Klausur C++ #1 Jahr: 2001; Dozent: Dipl.Ing. Sorber 1) Welche Antworten zur Operatorüberladung sind richtig? (1) a) C++ - Operatoren können zusammen mit Objekten funktionieren b) C++ - Operatoren wird
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrEinführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian
Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,
MehrÜbung zur Vorlesung Programmieren in C
Übung zur Vorlesung Programmieren in C 6 Pointers Marvin Gülker Ruhruniversität Bochum Wintersemester 2015/2016 Marvin Gülker (Ruhruniversität Bochum) 6 Pointers Wintersemester 2015/2016 1 / 29 Gliederung
MehrC++-Zusammenfassung. H. Schaudt. August 18, 2005
C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:
MehrEinfü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
MehrProgrammieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Christian-Albrechts-Universität zu Kiel CAU 2-1 Datentypen und Formate Mit der Festlegung des Datentyps wird die Art bestimmt, mit der der Computer die Informationen
MehrUnterprogramme, Pointer und die Übergabe von Arrays
Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme Wie schon im Abschnitt über Funktionen erwähnt, versteht man unter einem Unterprogramm im engeren Sinn eine Prozedur, welche die Werte
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
MehrEinführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann
Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann
MehrC/C++ Programmierung
1 C/C++ Programmierung Verbunde, Reihungen, Zeiger Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Typen 6.2.5 Primitive
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.:
MehrProgrammiersprachen 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
MehrII. 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
MehrZusammenfassung des Handzettels für Programmieren in C
Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.
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)
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen
MehrMeeting C++ C++11 R-Value Referenzen
Meeting C++ Detlef Wilkening http://www.wilkening-online.de 09.11.2012 Inhalt Motivation L-Values und R-Values R-Value Referenzen Move Semantik std::move Funktionen mit R-Value-Referenz Parametern Fazit
MehrC allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.
C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von
MehrArrays und Methoden. Programmiervorkurs WS 2010 / 11
Arrays und Methoden Programmiervorkurs WS 2010 / 11 Einleitung Bisher sind einfach Programme möglich Nun wollen wir Organisation und Stil verbessern Gesamter Code sollte nicht an einer Stelle stehen Nicht
MehrTest zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003
Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 1)
DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume
MehrÜ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
MehrEinfü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).
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrLösungsvorschlag zur 9. Übung
Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 9. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche der folgenden Aussagen über
MehrModellierung 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; {
MehrC++ Kurs Teil 1. Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen
C++ Kurs Teil 1 "hello world" Vergleich von C++ und Java Architektur, Anwendungsspektrum, primitive Datentypen, Funktionsaufrufe, Referenzen, Klassen C++ Spezialitäten Schlüsselwort 'const', Copy Constructor,
MehrC++ - 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,
Mehr3 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
MehrProgrammieren - Vererbung & Polymorphie
Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.
MehrC++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek
C++ - Funktionen und mehr Kerstin Gößner und Ralf Wondratschek Übersicht Deklaration, Definition und Initialisierung Variablen- und Konstantendeklaration Funktionsaufrufe und rückgabewerte Technische Grundlage
MehrEinfü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
Mehr5. Unterprogrammtechnik/Module
5. Unterprogrammtechnik/Module Unterprogramm/Modul: separate Programmeinheit, mit Anweisungen, die eine bestimmte Aufgabe erfüllen bekommt i.a. Argumente (Werte, Informationen) vom aufrufenden Programm
MehrTechnische Infor matik 2 C/C++-Kurs. Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1
Technische Infor matik 2 C/C++-Kurs Datenabstraktion (Klassen) 2005 AG Rechner netze 4.1 Overloading Überladene Funktionen Auswahl einer Funktion anhand ihrer Signatur Signatur : Name + Parameter Rückgabe-Wer
MehrJava Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
MehrDr. Monika Meiler. Inhalt
Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6
MehrFortgeschrittene C++-Programmierung
Vorlesung: "Fortgeschrittene C++-Programmierung" 16.04.2009 Fortgeschrittene C++-Programmierung SS 2009 Teil 1 Sandro Andreotti - andreott@inf.fu-berlin.de 1 Vorlesung: "Fortgeschrittene C++-Programmierung"
MehrEinführung in C++ mit Microsoft VS
Einführung in C++ mit Microsoft VS Gliederung Allgemeines zu C++ und Unterschiede zu Java Header-Files Zeiger/Strukturen Namespaces Programmierstil Einführung in Microsoft VS Projekte und Solutions Debugger
MehrInhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler
Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale
MehrFunktionen in PHP 1/7
Funktionen in PHP 1/7 Vordefinierte Funktionen in PHP oder vom Entwickler geschriebene Funktionen bringen folgende Vorteile: gleiche Vorgänge müssen nur einmal beschrieben und können beliebig oft ausgeführt
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
MehrÜbersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:
Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung
MehrFelder, Rückblick Mehrdimensionale Felder. Programmieren in C
Übersicht Felder, Rückblick Mehrdimensionale Felder Rückblick Vereinbarung von Feldern: typ name [anzahl]; typ name = {e1, e2, e3,..., en} Die Adressierung von Feldelementen beginnt bei 0 Die korrekte
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die
MehrVererbung & 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
MehrPrimitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
Mehr1. Übung zu "Numerik partieller Differentialgleichungen"
1. Übung zu "Numerik partieller Differentialgleichungen" Simon Gawlok, Eva Treiber Engineering Mathematics and Computing Lab 22. Oktober 2014 1 / 15 1 Organisatorisches 2 3 4 2 / 15 Organisatorisches Ort:
MehrFakultä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 **
MehrProgrammieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff
Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind
MehrHochschule 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
MehrKarlsruher Institut für Technologie
Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt
MehrName: Klausur Programmierkonzepte SS 2011
Prof. Dr.-Ing. Hartmut Helmke Ostfalia Hochschule für angewandte Wissenschaften Fakultät für Informatik Matrikelnummer: Punktzahl: Ergebnis: Freiversuch F1 F2 F3 Klausur im SS 2011: Programmierkonzepte
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.
MehrGenerische Datenstrukturen
Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung
MehrEinfü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 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo
MehrHochschule 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
MehrDatenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein
Datenfelder (Arrays) Vektoren, Matrizen, Tabellen Dr. Beatrice Amrhein Überblick Eindimensionale Arrays o Deklaration, Initialisierung, Zugriff Mehrdimensionale Arrays o Deklaration, Initialisierung, Zugriff
MehrEinführung in die Programmierung
Name, Vorname Matrikelnummer Probeklausur zur Vorlesung Einführung in die Programmierung WS 2008/09 Dauer: 2 Stunden Hinweise: Schreiben Sie Ihren Namen und Ihre Matrikelnummer auf dieses Deckblatt und
MehrM. 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
MehrAlltagsnotizen 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,
MehrEinführung in die Programmierung Konstanten, dynamische Datenstrukturen. Arvid Terzibaschian
Einführung in die Programmierung Arvid Terzibaschian 1 Konstanten 2 Motivation Unveränderliche, wichtige Werte mathematische Konstanten z.b. PI String-Konstanten wie z.b. häufige statische Meldungen mögliche
MehrGliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik
Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.
MehrZusammengesetzte Datentypen -- Arrays und Strukturen
Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14
Mehr1 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
MehrObjektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen
MehrEinfü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 Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E
MehrKurzeinführung in C++
Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber
MehrProgrammierkurs 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
MehrProseminar C-Programmierung. Strukturen. Von Marcel Lebek
Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11
MehrKapitel 11: Wiederholung und Zusammenfassung
Wiederholung und Zusammenfassung 1: Begriff und Grundprobleme der Informatik Begriff Informatik Computer als universelle Rechenmaschine Grenzen der Berechenbarkeit Digitalisierung Problem der Komplexität
MehrNeue Features in C# 2.0
Neue Features in C# 2.0 (gekürzt) Generische Typen Iteratoren Vereinfachte Delegate-Erzeugung Anonyme Methoden Partielle Klassen Sonstiges University of Linz, Institute for System Software, 2004 published
MehrÜbung 9 - Lösungsvorschlag
Universität Innsbruck - Institut für Informatik Datenbanken und Informationssysteme Prof. Günther Specht, Eva Zangerle Besprechung: 15.12.2008 Einführung in die Informatik Übung 9 - Lösungsvorschlag Aufgabe
Mehr(allgemeine) OOP in C++ Klassen und header-files Konstruktorn / Destruktoren Speicherverwaltung C++ Standard Library / SLT
Architektur Übersicht (allgemeine) OOP in C++ Polymorphie Virtuelle Funktionen Kompilieren Linken dynamische/statische Bibliotheken Tutorial: vs2008+ogre+(campus modell) Architektur (allgemeine) OOP in
Mehr1. Grundlegende Konzepte in Java (6 Punkte)
1. Grundlegende Konzepte in Java (6 Punkte) a) Welches der folgenden Literale ist korrekt und wenn ja, von welchem Typ ist es? "true" nicht korrekt X korrekt vom Typ String 'true' X nicht korrekt korrekt
MehrSWE1 / Übung 2 (19.10.2011)
SWE1 / Übung 2 (19.1.211) Simulation von Algorithmen Testen, Testplan Beispiel arithmetische Ausdrücke Handsimulation von Algorithmen Man versteht einen Algorithmus (insbesonders einen "Fremden"), wenn
MehrInformationsverarbeitung im Bauwesen
1/23 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 6
MehrHochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller
Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller Datum, Zeit, 08:00 09:30 Uhr (90 min) Aufgabenblätter 14 Seiten (einschl. Deckblatt) erreichbare Punktzahl 54 zugelassene
MehrGrundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny
Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.
Mehr