Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
|
|
- Gerd Althaus
- vor 6 Jahren
- Abrufe
Transkript
1 Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder gebraucht werden. Eine Funktion hat einen Namen: Namens-Konvention wie bei Variablen. Eine Funktion kann Parameter (Argumente) und einen Rückgabe-Wert haben: Dienen der Übergabe von zu verarbeitenden Werten und zu liefernden Ergebnissen. Eine Funktion hat einen Typ: Legt Anzahl und Typen der Parameter sowie den Typ des Rückgabe-Werts fest. Eine Funktion hat einen Rumpf: Enthält Variablen-Definitionen und Anweisungen. Eine Funktion hat eine Adresse: Die Anfangsadresse ihres ausführbaren Codes im Hauptspeicher. Prof. Dr. H. Drachenfels Version Prof. Dr. H. Drachenfels Programmiertechnik 4-1
2 C++ Funktionen: Syntax (1) Funktions-Prototyp (Funktions-Deklaration): Erst nach ihrer Deklaration ist eine Funktion benutzbar. Typ Name ( Parameterliste ) ; Die Parameterliste besteht aus durch Komma getrennten Typnamen. Zusätzlich können (und sollten) Parameternamen angegeben werden. Funktionen ohne Rückgabe-Wert (Typ void): void Name ( Parameterliste ) ; Funktionen ohne Parameter: Beispiel: Rückgabe-Typ Typ Name ( ) ; int max ( int a, int b ) ; Funktions-Name Parameter-Namen (dürfen auch fehlen) Parameter-Typen Prof. Dr. H. Drachenfels Programmiertechnik 4-2 C++ Funktionen: Syntax (2) Funktions-Definition: Die Definition enthält die Anweisungen. Rückgabetyp Name ( Parameterliste ) Anweisungen Der Kopf muss genau dem Prototyp entsprechen. In der Parameterliste sind Parameternamen Pflicht. Funktionen mit Rückgabe-Wert: Der Rumpf enthält mindestens eine return-anweisung mit zum Rückgabe-Typ passenden Wert: return Rückgabewert ; Funktionen ohne Rückgabe-Wert (Typ void): Der Rumpf enthält keine return-anweisung oder nur return-anweisung(en) ohne Wert: return ; Beispiel: int max ( int a, int b ) if ( a > b ) return a ; return b ; Kopf Rumpf Funktion mit Wert b verlassen Funktion mit Wert a verlassen Prof. Dr. H. Drachenfels Programmiertechnik 4-3
3 C++ Funktionen: main Jedes Programm muss genau eine Funktion mit dem Namen main enthalten. Die Ausführung eines Programms beginnt in main. main ohne Parameter: int main ( ) Rumpf main mit Parametern: argv int main ( int argc, char * argv [ ] ) Rumpf Feld von String-Pointern (argument vector). argc + 1 Feldgröße (argument count). argv [ 0 ] argv [ 1 ] argv [ argc 1 ] argv [ argc ] Programm-Name (Kommando) erstes Kommandozeilen-Argument letztes Kommandozeilen-Argument 0 (Null-Pointer) Beispiel-Programm main Quellcode: #include <iostream> int main ( int argc, char *argv [ ] ) for ( int i = 0 ; i <= argc ; ++ i ) std::cout << i << ": " << argv [ i ] << std::endl ; return 0 ; Aufruf: main arg1 arg2 Ausgabe: 0: main 1: arg1 2: arg2 3: (null) Parameter Prof. Dr. H. Drachenfels Programmiertechnik 4-4 Prof. Dr. H. Drachenfels Programmiertechnik 4-5
4 C++ Funktionen: Adresse und Zeiger Die Addresse einer Funktion erhält man durch Angabe ihres Namens: Name Anfangsadresse im Code-Segment des Hauptspeichers, wo die Folge der Maschinen-Befehle liegt, die der Compiler aus dem Rumpf der Funktion erzeugt hat. Es gibt Variablen vom Typ Funktions-Zeiger, die als Wert die Adresse einer Funktion haben: Typ ( * Zeigername ) ( Parameterliste ) = Name ; Rückgabetyp und Parameterliste des Zeigertyps und der zugewiesenen Funktion müssen übereinstimmen. Beispiel: Zeigername int ( * amaxfunction ) ( int, int ) = max ; C++ Funktionen: Aufruf Aufruf-Operator ( ): veranlasst die Ausführung einer Funktion und liefert den Rückgabe-Wert. Name ( Argumentliste ) Zeigernname ( Argumentliste ) Die Argumentliste besteht aus durch Komma getrennten Ausdrücken. Die Parameter der Funktion werden mit den Werten der Argumentliste initialisiert. Beispiel: Aufruf über Funktions-Name int z = max ( 7, 8 ) ; // setzt z auf 8 oder über Funktions-Zeiger int z = amaxfunction ( 7, 8 ) ; // setzt z auf 8 Name der Funktion Prof. Dr. H. Drachenfels Programmiertechnik 4-6 Prof. Dr. H. Drachenfels Programmiertechnik 4-7
5 C++ Funktionen: Overloading (1) Überladen von Funktionen (Function Overloading): Mehrere Funktionen dürfen den selben Namen haben, solange sich ihre Parameterliste unterscheidet. Deklaration überladener Funktionen: int max ( int a, int b ) ; double max ( double a, double b ) ; int max ( int a, int b, int c ) ; double max (double a, double b, double c ) ; C++ Funktionen: Overloading (2) Überladen von Operatoren (Operator Overloading): Ein überladener Operator ist eine Funktion mit einem Namen der Art operator+, operator[ ],... (usw. für fast alle von C++ vorgegebenen Operatoren). Stelligkeit (= Anzahl der Parameter), Vorrang und Assoziativität der Operatoren können nicht geändert werden! Operatoren können nur für benutzerdefinierte Typen überladen werden (enum, struct, class), nicht für Grundtypen. Deklaration überladener Operatoren: Aufruf überladener Funktionen ostream & operator<< ( ostream & s, char c ) ; Der Compiler sucht die Funktion aus, die am besten zu den Argumenten passt: Binärer Operator, deshalb zwei Parameter Benutzerdefinierter Typ (class, kein Grundtyp) max ( 1, 2 ) ; max ( 1.1, 2 ) ; // ruft max(int, int) auf // ruft max(double, double) auf max ( 1, 2, 3 ) ; // ruft max(int, int, int) auf Passen mehrere Funktionen gleich gut, meldet der Compiler einen Fehler! Aufruf überladener Operatoren: Die Operator-Schreibweise cout << 'a' ; ist gleichbedeutend mit der Funktions-Schreibweise operator<< ( cout, 'a' ) ; Prof. Dr. H. Drachenfels Programmiertechnik 4-8 Prof. Dr. H. Drachenfels Programmiertechnik 4-9
6 C++ Funktionen: Parameter, lokale und globale Variablen Parameter sind spezielle lokale Variablen, die mit den Argumenten des Funktions-Aufrufs initialisiert werden. Lebensdauer: Speicher-Ort: Funktions-Aufruf Stack-Segment Lokale Variablen (automatische Variablen) werden innerhalb eines Funktions-Rumpfes definiert und sind nur innerhalb dieses Rumpfes benutzbar. Lebensdauer: Speicher-Ort: Globale Variablen Funktions-Aufruf Stack-Segment werden ausserhalb eines Funktions-Rumpfes definiert und sind dadurch in vielen Funktionen benutzbar. Lebensdauer: Speicher-Ort: Programm-Lauf Daten-Segment Beispiel-Programm Lokale und globale Variablen Quellcode: int afunction ( int param ) ; int global = 1 ; int main ( ) int local = 1 ; local = afunction ( local ) ; // local wird 2 global = afunction ( local ) ; // global wird 3 local = afunction ( global ) ; // local wird 4 global = afunction ( global ) ; // global wird 6 return 0 ; int afunction ( int param ) int local = param + 1 ; global = param + 2 ; return local ; Funktions-Prototyp Funktions-Definition Prof. Dr. H. Drachenfels Programmiertechnik 4-10 Prof. Dr. H. Drachenfels Programmiertechnik 4-11
7 C++ Funktionen: Hauptspeicher-Belegung I C++ Funktionen: Hauptspeicher-Belegung II PC SB main: afunction: Code-Segment PC PC main: afunction: Code-Segment & global: Daten-Segment & global: Daten-Segment SP FP & local: Stack-Segment SP FP SP FP & local: & param: & local: FP PC Stack-Segment Der Prozessor adressiert Code über den Program Counter PC globale Daten relativ zur Static Base SB lokale Daten relativ zum Frame Pointer FP Der Stack Pointer SP markiert das aktuelle Ende des Stack-Segments. Ein Funktions-Aufruf benutzt den Stack zum Speichern von Argumenten Speichern von altem PC und FP Reservieren von Platz für die lokalen Variablen Prof. Dr. H. Drachenfels Programmiertechnik 4-12 Prof. Dr. H. Drachenfels Programmiertechnik 4-13
8 C++ Funktionen: Parameter-Übergabe (1) Bei Parametern mit Wert-Übergabe arbeitet die Funktion mit einer Kopie des Werts, den der Aufrufer als Argument übergibt (Call-By-Value). Ist das Aufruf-Argument eine Variable, wird deren Wert von der Funktion nicht geändert. Ist das Aufruf-Argument die Adresse einer Variablen, kann die Funktion den Wert der Variablen ändern. Beispiel: void afunction ( int abyvalueint, int * abyvalueintptr ) abyvalueint = 1 ; * abyvalueintptr = 2 ; int main ( ) int anint = 3 ; int anotherint = 4 ; afunction ( anint, & anotherint ) ; std::cout << anint << std::endl ; // gibt 3 aus std::cout << anotherint << std::endl ; // gibt 2 aus C++ Funktionen: Parameter-Übergabe (2) Bei Parametern mit Referenz-Übergabe arbeitet die Funktion direkt mit der Variablen, die der Aufrufer als Argument übergibt (Call-By-Reference). Beispiel: void afunction ( int & abyreferenceint ) abyreferenceint = 1 ; int main ( ) int anint = 2 ; afunction ( anint ) ; std::cout << anint << std::endl ; // gibt 1 aus Die Referenz-Übergabe ist bei C++ in Wahrheit nur eine andere Schreibweise für die Wert-Übergabe der Adresse einer Variablen. Prof. Dr. H. Drachenfels Programmiertechnik 4-14 Prof. Dr. H. Drachenfels Programmiertechnik 4-15
9 C++ Funktionen: Parameter-Übergabe (3) Empfehlungen für Eingabe-Parameter, aus denen die Funktion nur Werte lesen soll: Bei Grundtyp-Parametern Wert-Übergabe verwenden void afunction ( int anint ) ; Bei Zeiger- und Feld-Parametern konstante Wert-Übergabe verwenden void afunction ( const int * anintptr ) ; void afunction ( int theintarraysize, const int anintarray [ ] ) ; Bei Strukturtyp-Parametern konstante Referenz-Übergabe verwenden struct MyStruct... ; void afunction (const MyStruct & amystruct ) ; Wert-Übergabe ist wegen des Kopier-Vorgangs bei grossen Strukturen ineffizient. C++ Funktionen: Parameter-Übergabe (4) Empfehlungen für Ausgabe-Parameter (Parameter, auf die die Funktion schreibend zugreift): Entweder Wert-Übergabe einer Adresse verwenden void afunction ( int * anintptr ) ; void afunction ( int theintarraysize, int anintarray [ ] ) ; Oder Referenz-Übergabe verwenden void afunction ( int & aint ) ; Nachteil der Referenz-Übergabe: Beim Aufruf gibt man Ausgabe-Argumente genau so wie Eingabe-Argumente an. Man kann dadurch leicht übersehen, dass die Funktion die übergebene Variable ändert. Funktionen mit Ausgabe-Parametern bezeichnet man auch als Funktionen mit Seiteneffekten. Nach der reinen Lehre sollten Funktionen als Ergebnis nur einen Rückgabe-Wert liefern (return-anweisung). Prof. Dr. H. Drachenfels Programmiertechnik 4-16 Prof. Dr. H. Drachenfels Programmiertechnik 4-17
10 C++ Funktionen: Default-Parameter Default-Parameter haben einen Standard-Wert: void afunction ( int anint, int anotherint = 0 ) ; Hinter dem ersten Default-Parameter können nur noch weitere Default-Parameter folgen! Funktionen mit Default-Parametern können mit einer variablen Anzahl von Argumenten aufgerufen werden: afunction ( 1, 2 ) ; afunction ( 1 ) ; // anotherint bekommt den Wert 0 Bei mehreren Default-Parametern können Argumente nur von hinten her weggelassen werden! C++ Funktionen: Standard-Bibliothek (1) Manipulation von C-Strings: #include <cstring> // alte Compiler: <string.h> char *strcpy ( char *s1, const char *s2 ) ; Kopiert den String s2 in den Speicherbereich s1. Liefert s1 als Rückgabewert. char *strcat ( char *s1, const char *s2 ) ; Hängt den String s2 an den String s1 an. Liefert s1 als Rückgabewert. int strcmp ( const char *s1, const char *s2 ) ; Vergleicht die Strings s1 und s2. Liefert 0, wenn die Strings gleich sind, liefert eine Zahl grösser 0 bei s1 > s2, liefert einer Zahl kleiner 0 bei s1 < s2. size_t strlen ( const char *s ) ;... Liefert die Länge des Strings s ohne '\0'. Prof. Dr. H. Drachenfels Programmiertechnik 4-18 Prof. Dr. H. Drachenfels Programmiertechnik 4-19
11 C++ Funktionen: Standard-Bibliothek (2) Manipulation von Speicherbereichen: #include <cstring> // alte Compiler: <string.h> void *memcpy ( void *p1, const void *p2, size_t n) ; Kopiert n Byte von p2 nach p1. Liefert p1 als Rückgabewert. int memcmp ( const void *p1, const void *p2, size_t n ) ; Vergleicht die ersten n Byte der Speicherbereiche p1 und p2. Liefert Rückgabewerte analog zu strcmp. int memset ( void *p, int c, size_t n) ; Setzt die ersten n Byte des Speicherbereichs p auf den Wert c. #include <cstdlib> // alte Compiler: <stdlib.h> void qsort ( void *p, size_t n, size_t size, int (* cmp )(const void *, const void *) ) ; Sortiert den Speicherbereich p mit n Elementen der Grösse size mit Hilfe der Vergleichsfunktion cmp in aufsteigender Reihenfolge. Prof. Dr. H. Drachenfels Programmiertechnik 4-20
Arrays (Felder/Vektoren)
Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
MehrProgrammiersprache 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,
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
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
MehrMethoden und Wrapperklassen
Methoden und Wrapperklassen CoMa-Übung IV TU Berlin 06.11.2012 CoMa-Übung IV (TU Berlin) Methoden und Wrapperklassen 06.11.2012 1 / 24 Themen der Übung 1 Methoden 2 Wrapper-Klassen CoMa-Übung IV (TU Berlin)
Mehr2. Unterprogramme und Methoden
2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf
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
MehrF Zeiger, Felder und Strukturen in C
F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts
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)
MehrBereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung
Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente
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
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
MehrThemen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen
Themen der Übung 1 Organisatorisches Methoden und Wrapperklassen 2 Methoden 3 Wrapper-Klassen CoMa-Übung IV TU Berlin 07.11.2012 Organisatorisches: Im Pool nur auf die Abgabeliste setzen, wenn ihr wirklich
MehrC++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22
C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven
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
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.
MehrBereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung
Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente
MehrMethoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
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
MehrU8 7. Übung U8 7. Übung
U8 7. Übung U8 7. Übung Dynamische Speicherverwaltung Generisches Sortieren Aufgabe 7 U8.1 U8-1 Dynamische Speicherverwaltung U8-1 Dynamische Speicherverwaltung Erzeugen von Feldern der Länge n: mittels:
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
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:
MehrPraxis der Programmierung
Zeichenketten (Strings), Ein- und Ausgabe Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Zeichenketten (Strings)
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
MehrModellierung und Programmierung
Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben
MehrProgrammierkurs C++ Datenstrukturen Seite 1
Programmierkurs C++ Datenstrukturen Seite 1 3 Datenstrukturen 3.1 Arrays Zur Wiederholung als Strukturelement der Programmierung gehört auf der Seite der Datenstrukturen die Liste. Eine Liste kann auf
MehrVorlesung Programmieren
Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von
MehrVariablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes
Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!
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
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
MehrZeichenketten (1) Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt
Zeichenketten (1) Literale Literale von Zeichenketten werden in doppelte Anführungszeichen gesetzt "Hallo Welt" Mehrere solcher Literale gelten als eine Zeichenkette, wenn sie nur durch Whitespaces (Leerzeichen,
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen 3.2 Auswahl an Stringfunktionen W. Tasin, M.Sc. Fakultät 04 tasin@hm.edu Allgemeines (1) Die ANSI-Norm definiert auch nützliche Funktionen zur ASCIIZ-Stringbearbeitung.
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,
MehrEinführung in C. EDV1-04C-Einführung 1
Einführung in C 1 Helmut Erlenkötter C Programmieren von Anfang an Rowohlt Taschenbuch Verlag ISBN 3-4993 499-60074-9 19,90 DM http://www.erlenkoetter.de Walter Herglotz Das Einsteigerseminar C++ bhv Verlags
MehrWiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung
Wiederholung Wozu? Schreiben Benutzen Rekursion?! Javakurs 2012, 3. Vorlesung maggyrz@freitagsrunde.org 5. März 2013 Wiederholung Wozu? Schreiben Benutzen Rekursion?! 1 Wiederholung 2 Wozu? 3 Schreiben
Mehr6. Funktionen, Parameterübergabe
6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen
Mehreinlesen n > 0? Ausgabe Negative Zahl
1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen
MehrGrundlagen der OO- Programmierung in C#
Grundlagen der OO- Programmierung in C# Technische Grundlagen 1 Dr. Beatrice Amrhein Überblick Visual Studio: Editor und Debugging Die Datentypen Methoden in C# Die Speicherverwaltung 2 Visual Studio 3
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 Programmierung zusammengesetzte Datentypen, dynamischer Speicher
Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Arvid Terzibaschian 1 Zusammengesetzte Datentypen 2 Wozu zusammengesetzte Datentypen? Anforderung: Sie sollen ein Kundenverzeichnis
Mehr1.4. Funktionen. Objektorientierte Programmierung mit C++
mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -
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
MehrBetriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)
Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/
MehrBetriebssysteme Teil 3: Laufzeitsystem für Programme
Betriebssysteme Teil 3: Laufzeitsystem für Programme 23.10.15 1 Literatur [3-1] Stack: http://fbim.fh-regensburg.de/~hab39652/pg1/skriptum/ ausdruecke/maschinenmodell.html [3-2] https://de.wikipedia.org/wiki/dynamischer_speicher
MehrZusammengehörige Daten struct. Strukturierte Datentypen und Funktionszeiger. Zugriff auf struct-elemente. Variablendeklarationen mit struct
Zusammengehörige Daten Anstatt logisch zusammengehörende Daten in mehreren unabhängigen Variablen zu speichern, kann man für sie einen eigenen Datentyp ( Verbund, Record ) definieren, der diesen Zusammenhang
MehrProgrammieren in C. Funktionen mit Zeigern und Adressen. Prof. Dr. Nikolaus Wulff
Programmieren in C Funktionen mit Zeigern und Adressen Prof. Dr. Nikolaus Wulff ByValue versus byreferenz C übergibt immer Kopien der Variablen an Funktionen. Es ist nur dann möglich die Werte von Variablen
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
Mehrfloat *point(float a, float b); // Funktionsdeklaration Zeiger als Funktionswert // point liefert als Wert die Adresse seines Ergebnisses
Zeiger auf Funktionen 1 Zeiger als Funktionswert... 1 2 "Zeiger als Funktionswert" versus "Zeiger auf eine Funktion"... 2 2.1 Das Beispiel zu Zeiger auf eine Funktion veranschaulicht den Sachverhalt...
MehrModul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf
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
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
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,
MehrKlassen als Datenstrukturen
Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung
MehrKlassenvariablen, Klassenmethoden
Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden
MehrGrundlagen der Programmierung in C++ Arrays und Strings, Teil 1
Grundlagen der Programmierung in C++ Arrays und Strings, Teil 1 Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Das C++ Typsystem simple structured integral enum
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
MehrKonstruktor/Destruktor
1/23 Konstruktor/Destruktor Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/23 Outline 1 2 3/23 Inhaltsverzeichnis 1 2
MehrBeuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1
Beuth Hochschule Parameter-Übergabe-Mechanismen WS17/18, S. 1 Parameter-Übergabe-Mechanismen in Java und in anderen Sprachen. 1. Methoden vereinbaren mit Parametern Wenn man (z.b. in Java) eine Methode
MehrProgrammiertechnik Klassenmethoden
Programmiertechnik Klassenmethoden Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Programm zur Berechung von public class Eval1 { public static void main(string[] args) { java.util.scanner
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Klassenmethoden Motivation Programm zur Berechnung von public class Eval1 { public static void main(string[] args) { java.util.scanner
MehrÜbungspaket 29 Dynamische Speicherverwaltung: malloc() und free()
Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten
MehrArrays,Strings&Pointer in C/C++
Arrays,Strings&Pointer in C/C++ Vortrag Mathias Reich Am 21.5.2002 Pointer Da zur Zeit der Compelierung des Programms nicht immer der Umfang der zu bearbeitenden Daten feststeht muss man sich - in manchen
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)
MehrVektoren 105. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier
Vektoren 105 direct-declarator simple-declarator ( simple-declarator ) function-declarator array-declarator array-declarator direct-declarator [ [ array-qualifier-list ] [ array-size-expression ] ] array-qualifier-list
MehrTeil 5: Zeiger, Felder, Zeichenketten Gliederung
Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik
MehrDie C++ Standard Template Library Andreas Obrist
Die C++ Standard Template Library 24. 06. 2004 Andreas Obrist Was dürft Ihr erwarten? 1. Teil Das Wichtigste in Kürze über die Standard Template Library 2. Teil Praktische Beispiele Was dürft Ihr nicht
MehrPraxisorientierte Einführung in C++ Lektion: "Das Schlüsselwort explicit"
Praxisorientierte Einführung in C++ Lektion: "Das Schlüsselwort explicit" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ April
MehrFelder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden
Felder (1) Felder (Arrays) speichern viele Datenelemente des gleichen Typs. Auf einzelne Elemente kann über einen Index zugegriffen werden Dim arrayname (dim1,dim2, ) As Typ Bei eindimensionalen Feldern
MehrInformatik II Übung 05. Benjamin Hepp 3 April 2017
Informatik II Übung 05 Benjamin Hepp benjamin.hepp@inf.ethz.ch 3 April 2017 Java package Hierarchie import.. nur noetig um Klassen aus anderen Packeten zu importieren Es kann auch immer der vollstaendige
MehrProzeduren und Funktionen
OSZ Handel I - Gymnasiale Oberstufe (Abt. V) In Anlehnung an: Duden Informatik (3.Auflage, Dudenverlag, 2001, S. 477). Prozeduren und Funktionen Fach: Informatik Parameter sind Platzhalter in einer Prozedur
MehrGrundlagen der Programmierung
Grundlagen der Programmierung Einführung in die strukturierte Programmierung Teil 5 Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile
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
MehrProgrammieren in C++ Überladen von Methoden und Operatoren
Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer
MehrStrukturierte Datentypen und Funktionszeiger
Zusammengehörige Daten Anstatt logisch zusammengehörende Daten in mehreren unabhängigen Variablen zu speichern, kann man für sie einen eigenen Datentyp ( Verbund, Record ) definieren, der diesen Zusammenhang
MehrGrundlagen der Informatik 2. Typen
Grundlagen der Informatik 2. Typen Speicher, Speicherbedarf Ein-/Ausgabe Grundlagen der Informatik (Alex Rempel) 1 Wiederholung // root calculation #include #include using namespace
MehrÜbersicht. Informatik 1 Teil 9: komplexe Datentypen (Strukturen, Enumerationen, Unions)
Übersicht 9.1 Strukturen (Verwendung) 9.2 Strukturen (Typdeklaration) 9.3 Strukturen (Variablendeklaration) 9.4 Felder aus Strukturen 9.5 Zugriff auf Strukturkomponenten 9.6 Zugriff auf Strukturkomponenten
MehrC-Kurs 2010 Pointer. 16. September v2.7.3
C-Kurs 2010 Pointer Sebastian@Pipping.org 16. September 2010 v2.7.3 This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License. C-Kurs Mi Konzepte, Syntax,... printf, scanf Next
MehrProgrammiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse
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,
MehrZeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.
Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
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
MehrFolien zur AG: Objektorientiertes Programmieren in C++ Einheit 5: Funktionen. Michael Hahsler, Gottfried Rudorfer und Werner J.
Folien zur AG: Objektorientiertes Programmieren in C++ Einheit 5: Funktionen Michael Hahsler, Gottfried Rudorfer und Werner J. Schönfeldinger 4. Dezember 2000 1 Aufbau dieser Einheit Aufbau von Funktionen
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
MehrInformatik 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
MehrProgrammierkurs C/C++
Blockkurs: "Einführung in C/C++" Programmierkurs C/C++ Donnerstag Sandro Andreotti andreott@inf.fu-berlin.de WS 2008/09 1 Structs Blockkurs: "Einführung in C/C++" 2 Structs sind Bündel von Variablen (unter
MehrEinstieg in die Informatik mit Java
1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von
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
MehrDAP2-Programmierpraktikum Einführung in C++ (Teil 2)
DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und
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
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
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
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
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
MehrLösungen Übung 5. Programmieren in C++ 1. Aufgabe. #include <iostream.h> #include <stdarg.h>
Lösungen Übung 5 1. Aufgabe #include int max(int anzarg, int a, int b,...) // Hilfsvariable für variable Parameter va_list argumente; va_start(argumente,b); // "b" letzter Parameter der Funktion,
Mehr