Strukturierte Programmierung und Funktionen
|
|
- Hinrich Dieter
- vor 5 Jahren
- Abrufe
Transkript
1 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 übersichtlicher darstellen und manchmal lassen sich die Einzelteile auch in anderen Programmen sinnvoll einsetzen(wiederverwertbarer Code). C besitzt für diese Aufteilung nur die Funktion, während objektorientierte Sprachen auch Objekte (Klassen) dafür einsetzen können. Wichtig: C (und C++)-Programme bestehen aus einer oder mehrerer Funktionen. Es muss mindestens die main()-funktion vorhanden sein. Mit dieser startet und endet das Programm im Normalfall. Der Programm-Code kann auch auf mehrere Quellcodedateien aufgeteilt werden, die aber vollständig sein sollten (d.h. jede sollte sich auch alleine ohne die übrigen übersetzen lassen). Eine Funktion wird nur ausgeführt, wenn sie im Programmcode aufgerufen wird (die einzige Ausnahme ist die main()-funktion, die automatisch beim Programmstart vom Betriebssystem aufgerufen wird). Ist der Code einer Funktion abgearbeitet, springt die Programmausführung zurück zum Aufrufer und setzt dort fort. double quadrat(double x) return x*x; // die Funktion wird definiert // hier wird das Ergebnis der Funktion festgelegt... quadrat; // kein Aufruf der Funktion: Klammern fehlen quadrat(1.0); // Aufruf der Funktion: Ergebnis nicht verwendet double u = quadrat(4.0); // 1 Aufruf der Funktion quadrat() double v = quadrat(u) + quadrat(3.0) // 2 Aufrufe der Funktion Funktionsargumente und Rückgabewert Viele Funktionen brauchen Eingabewerte vom Aufrufer, aus denen sie das Resultat berechnen. Es gibt daher einen Übergabe-Mechanismus, der es dem Aufrufer erlaubt, beliebig viele Daten an die Funktion zu übergeben (= Funktionsargumente) und der es der Funktion gestattet, das Ergebnis (es ist nur 1 Wert gestattet!) an den Aufrufer zurückzugeben (= Funktions-Rückgabewert). Sowohl die Funktion als auch der/die Aufrufer definieren die Funktionsargumente. Die Funktion definiert dabei die sog. formalen Funktionsargumente (oben: double x), die innerhalb der Funktion wie lokale Objekte benützt werden dürfen, und den Rückgabewert-Typ (oben double). Der Aufrufer spezifiziert im Aufruf die aktuellen Funktionsargumente (oben bei den 3 Aufrufen: 4.0, u, 3.0). C und C++ sind stark typisierte Sprachen, d.h. der Compiler überwacht
2 genauestens, ob die Anzahl der formalen Argumente mit der Anzahl der aktuellen Argumente übereinstimmt (oben: jedes Mal genau 1 Argument) und ob die Typen der formalen Argumente mit den Typen der aktuellen Argumente übereinstimmen oder zumindest kompatibel sind (oben: alle sind double).... int i = quadrat(1) + quadrat('a'); Bei diesem Aufruf sieht man mehrere Typ-Ungleichheiten: der erste Aufruf übergibt den int 1, der 2. den char 'a' als aktuelles Argument (statt double), der Compiler wandelt beide Argumente stillschweigend in double um, d.h. er führt aus: int i = quadrat(1.0) + quadrat(97.); // 'a' ist 97 Die rechte Seite ist vom Typ double (,da das der Rückgabewert-Typ der Funktionsaufrufe und der Addition ist). Dieser Wert wird sodann in einen int konvertiert und die Variable i damit initialisiert. Syntax der Funktionsdefinition Ergebnistyp Funktionsname(formales Argument 1, f. Argument 2,...) Anweisung 1; // Anweisungen enden mit Strichpunkt Anweisung 2;... // kein Strichpunkt! Jedes formale Funktionsargument besteht aus einer Typangabe und einem Namen (und in C++ optional einem Defaultwert). Die Funktionsdefinition bestimmt sowohl die Signatur der Funktion (Ergebnistyp, Name, formale Argumenttypen, Zusätze wie noexcept, constexpr etc.) als auch deren Code. Die Namen der Argumente gehören nicht zur Signatur (nur deren Typ). Beispiel: constexpr int summe(int a, int b) noexcept return a+b; Ergebnistyp: int
3 Name der Funktion: summe 1. Argument: int a, kein Defaultwert 2. Argument: int b, kein Defaultwert Zusätze: constexpr (Funktionsergebnis darf u.u. schon vom Compiler berechnet werden) noexcept (Funktion erzeugt keine Exceptions = Laufzeitfehler) Signatur: constexpr int summe(int, int) noexcept Der Compiler prüft beim Aufruf von Funktionen (d.h. der Name der Funktion gefolgt vom Aufruf-Operator () steht irgendwo im Programm), ob die richtige Anzahl von aktuellen Argumenten und die richtigen Typen vorhanden sind: summe(1) // Fehler: nur 1 aktuelles Argument vorhanden summe(1, 2) // korrekt: das Ergebnis ist 3 (1+2) // der Compiler wird statt des Funktionsaufrufs // dessen Ergebnis 3 verwenden (constexpr) summe(1.5, 2.1) // C/C++: korrekt: Wert ist 3 (1+2), Java: Fehler! summe("1", 2) // Fehler oder Warnung: das 1. Argument ist ein String // das Ergebnis ist nicht vorhersagbar!! Man sieht hier, dass C (und C++, Java) beim Programmaufruf automatisch einige Typumwandlungen vornehmen können, wenn solche definiert sind (z.b. double -> int in C/C++ aber nicht in Java). Es wird immer das aktuelle Argument beim Aufruf in den Typ des formalen Arguments der Funktions-Definition gewandelt. Manchmal gibt es trotzdem eine Compilerwarnung dafür. Falls es keine (gute) Typumwandlung gibt (wie hier Zeichenkette -> int beim letzten Beispiel) erfolgt eine Fehlermeldung oder auch nur eine Warnung. Die formalen Argumente der Funktionsdefinition (hier a,b) stehen innerhalb der Funktion wie lokale Variable zur Verfügung. Ihre Anfangswerte erhalten sie vom Aufrufer der Funktion (entweder als Kopie oder als Referenz etc.!). Der Rückgabetyp auto ist seit C++14 für Funktionen erlaubt. C++ bestimmt in diesem Fall den Ergebnistyp aus der (den) return-anweisung(en). constexpr auto summe(int a, int b) noexcept return a+b;
4 Syntax des Funktionsaufrufs Funktionsname(aktuelles Argument 1, aktuelles Argument 2,...) Insbesondere müssen die Klammern geschrieben werden, auch wenn keine Argumente vorhanden sind! sin(x) sin() sin // Aufruf der Funktion sin mit dem aktuellen Argument x // Aufruf der Funktion sin ohne Argument: Fehler // KEIN Aufruf der Funktion, sondern das Funktionsobjekt Verwendung von void C/C++/Java verfügen nicht, wie etwa Pascal, über sogenannte Routinen oder Prozeduren (Unterprogramme ohne Ergebnis) sondern nur über Funktionen, die immer ein Ergebnis und deshalb einen Rückgabetyp haben müssen! Aus Kompatibilitätsgründen wäre früher ein fehlender Rückgabetyp als int interpretiert worden, moderne C++-Versionen gestatten solche Konstruktionen nicht mehr. Um nichts zurückzugeben, existiert seit einiger Zeit der Datentyp void. Ein expliziter Rückgabetyp void besagt, dass die Funktion kein Ergebnis besitzt. In diesem Fall darf sie im (in den ) return-statements auch keinen Rückgabewert spezifizieren. Hat die Funktion auch keine Aufruf-Parameter, so sollte man in C (nicht nötig in C++ oder Java, aber erlaubt) auch hier explizit void in die Klammern schreiben, weil aus Kompatibilitätsgründen eine leere Liste für C nicht bedeutet, dass keine Argumente erlaubt sind. Für C++ und Java gilt: Hat die Funktion in der Definition keine Argumente, darf sie auch nur so aufgerufen werden. void f() // diese Funktion darf in C mit Argumenten aufgerufen // werden, hat kein Resultat // darf in C++ und Java nicht mit Argumenten aufgerufen werden void f(void) // die Funktion darf KEINE Aufrufargumente haben, hat kein Resultat Die return-anweisung
5 Mit der return-anweisung wird eine Funktion beendet. Folgt dem Schlüsselwort return ein Ausdruck, legt dieser den Rückgabewert fest. Nur auf diese Art können Rückgabewerte für Funktionen vereinbart werden. Eine Funktion kann mehrere return-statements haben (die aber dann meistens in if-blöcken stehen). Die erste ausgeführte return- Anweisung beendet die Funktion (und vereinbart, wenn vorhanden, das Ergebnis). Falls nötig, wird auch eine automatische Typkonvertierung des Ausdrucks in den Rückgabewert- Typ der Funktion gemacht. Auch mit der schließenden geschwungenen Klammer endet die Funktion, es wird hier KEIN Rückgabewert vereinbart. Alle return-anweisungen in einer Funktion sollten natürlich konsistent sein, d.h. alle sollten alle einen Rückgabewert vereinbaren oder keinen. Ist der Ergebnistyp nicht void, sollte zudem als letzte Anweisung vor der schließenden Klammer eine return-anweisung mit einem passenden Rückgabewert sein (verpflichtend in Java!). Das ist sogar erforderlich, wenn die Programmlogik es unmöglich macht, an diese Stelle zu gelangen! Die Funktionsdeklaration Durch eine Funktionsdeklaration wird nur die Signatur der Funktion bekannt gemacht, nicht aber ihr Code. Sie endet mit einem Strichpunkt ohne die Klammern. Man darf/sollte die Namen der Argumente weglassen, da der Compiler diese immer ignoriert. Ergebnistyp Funktionsname(Argument1, Argument 2,...); // Strichpunkt!! constexpr int summe(int, int) noexcept; // so ist es richtig constexpr int summe(int, int = 1) noexcept; // mit einem Defaultwert constexpr int summe(int = 5, int = 1) noexcept; // mit zwei Defaultwerten constexpr int summe(int a, int b) noexcept; // geht auch, gefällt mir aber nicht so gut void f(); // gut in C++, weniger gut in C s.o. Funktionsdeklarationen benötigt man oft, wenn das Programm aus mehreren Quellcode- Dateien bestehen soll (d.h. bei größeren Programmen). Wann immer ein Aufruf einer Funktion erfolgt, es muss vorher diese Funktion entweder definiert (also ihr ganzer Code wird programmiert) oder deklariert werden. Eine Funktion darf in einem Programm nur einmal (eigentlich muss sie genau einmal) definiert werden, kann aber beliebig oft konsistent deklariert werden. Sehr oft erfolgen diese Deklarationen in Headerdateien, die dann per #include eingefügt werden. Dies gilt insbesondere auch für die Bibliotheksfunktionen von C/C++:
6 std::cin ist deklariert in iostream (auch std::cout, << usw.) sin() ist deklariert in cmath (auch exp(),log() usw.) exit(), EXIT_SUCCESS ist deklariert in cstdlib Die main-funktion Die main()-funktion in C/C++ hat immer den Rückgabetyp int. Der Rückgabewert ist für das Betriebssystem ein Fehlercode, der aussagt, ob das Programm erfolgreich ohne Fehler ablaufen konnte oder ob es zu einem Fehler kam. Der Wert 0 steht für Erfolg und jeder andere Wert als Anzeichen für einen Fehler. Lesbarer wird das Programm aber durch die Verwendung der Makros EXIT_SUCCESS (ist logischerweise 0) und EXIT_FAILURE (ist 1) aus cstdlib Die main()-funktion in C/C++ hat entweder kein Argument oder aber meist genau 2 oder 3. Wir werden vorderhand nur die Version ohne Argument verwenden, somit lautet die Definition bis auf Weiteres: int main() // in C: int main(void)... return EXIT_SUCCESS; Jede Rückkehr aus der main()-funktion beendet das Programm. Überladen von Funktionen In C++ (aber nicht in C!) ist es erlaubt, denselben Funktionsnamen im gleichen Scope für verschiedene Funktionen zu verwenden. Diese müssen sich dann in der Argumentliste unterscheiden (entweder haben sie eine andere Anzahl von Argumenten oder wenigstens ein Argument hat einen unterschiedlichen Typ). Ein unterschiedlicher Rückgabetyp reicht nicht aus, natürlich auch nicht ein anderer Name eines formalen Arguments: Erlaubt sind z.b. folgenden Paare von Funktionen: void read(int& a) void read(double& x) // jeweils 1 Argument, aber unterschiedlicher Typ int f(int a) int f(int a, int b)
7 // 1 Argument vs. 2 Argumente int f(int a) int f(int& a) // jeweils 1 Argument, aber unterschiedlicher Typ!! Falsch: int f(int a) double f(int b) // jeweils 1 Argument mit gleichem Typ!! // Rückgabetyp und Name des Arguments werden NICHT verglichen Überladene Funktionen werden als absolut eigenständige Objekte behandelt, d.h. sie müssen keineswegs eine ähnliche Aufgabe haben (obwohl das meist der Fall ist). Beim Aufruf von überladenen Funktionen muss es für den Compiler eindeutig sein, welche der überladenen Funktionen aufgerufen werden soll, sonst ist es ein Fehler! 1) int f(int a, double b)... 2) int f(double a, int b)... 3) int f(double a, double b)... f(1, 1.0) f(1.0, 1) f(1.0, 2.0) f(1, 2) // Aufruf von 1), da exakte Übereinstimmung // Aufruf von 2), da exakte Übereinstimmung // Aufruf von 3), da exakte Übereinstimmung // Fehler: keine exakte Übereinstimmung, alle Varianten gleichwertig Findet der Compiler keine exakt passende Funktion mit diesem Namen, untersucht er auch alle Funktionen mit dem gleichen Namen, die er mit einer (oder mehrerer) erlaubten Typumwandlung(en) aufrufen kann. Gibt es hier mehr als eine Möglichkeit, ist das ein Fehler! Es ist dabei egal, wie viele Typumwandlungen für den Aufruf nötig wären: f(1, 2): könnte 1) aufrufen und 2 in 2.0 umwandeln könnte 2) aufrufen und 1 in 1.0 umwandeln könnte 3) aufrufen und 1 in 1.0 und 2 in 2.0 umwandeln Das Überladen von Funktionen in der Standardbibliothek C++ macht von diesen Möglichkeiten auch in den Standardbibliotheken (z.b. <cmath>) regen Gebrauch, während C hier passen muss: Alle Funktionen der Mathematikbibliothek werden in C++ für die Typen float, double und long double extra implementiert: float x;
8 sin(x); double a; std::abs(a); // -> float sin(float) // -> double abs(double) Aber Achtung: Auch in <cstdlib> ist eine abs()-funktionen definiert, nämlich: long abs(long). Diese Funktion sollte man nicht aufrufen, wenn das Argument ein Gleitkommatyp ist. Daher IMMER #include <cmath> verwenden, wenn man die abs() Funktion für Gleitkommazahlen (float, double) braucht. C muss für die unterschiedlichen Varianten unterschiedliche Namen definieren: int abs(int); long labs(long); double fabs(double);
Funktionen: 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
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition
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
MehrHSR Rapperswil 2001 Markus Rigling. Programmieren: Exceptions Auflage
HSR Rapperswil 2001 Markus Rigling Programmieren: Exceptions 1 1. Auflage Inhaltsverzeichnis: 1. Was sind Exceptions?... 3 2. Struktur des Exception Handling... 3 3. Try-Block... 4 4. Exception Handler
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
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 / 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
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
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
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 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
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
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
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
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)
MehrJava Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017
Informatik 1 für Nebenfachstudierende Grundmodul Java Methoden Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel 3 - Java
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,
MehrSystemnahe Programmierung in C (SPiC)
Systemnahe Programmierung in C (SPiC) 9 Funktionen Jürgen Kleinöder, Daniel Lohmann, Volkmar Sieh Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg
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 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
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
MehrGrundlagen der Objektorientierten Programmierung - Methoden -
Methoden In ihrem formalen Aufbau entsprechen Java-Methoden den Funktionen in C und C++. Eine Methode dient dazu, eine häufig benötigte Folge von Anweisungen unter einem Namen zusammenzufassen und zum
MehrBedingte Anweisungen
Bedingte Anweisungen Bedingte Anweisungen werden nicht immer ausgeführt, sondern nur, wenn eine Bedingung erfüllt (wahr) ist. C/C++/Java bieten hier 2 Konstruktionen an: if-anweisung sowie switch-case
MehrC++ 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
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
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,
MehrProzeduren vs. Funktionen
Prozeduren vs. Funktionen Mit der Formalisierung wird auch der Unterschied zwischen Prozeduren und Funktionen noch einmal klar. Der Aufruf beider Varianten bewirkt zunächst das Gleiche: die Eingabevariablen
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
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
MehrÜbung zur Vorlesung EidP (WS 2018/19) Blatt 4
Lutz Oettershagen Jurij Kuzmic Dortmund, den 8. November 2018 Übung zur Vorlesung EidP (WS 2018/19) Blatt 4 Block gelb Es können 4 Punkte erreicht werden. Abgabedatum: 15. November 2018, 2:59 Uhr Hinweise
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)
MehrCS1005 Objektorientierte Programmierung
CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Funktionen / statische Methoden - Definition - Verwendung - Ausführung Seite 1 Th Letschert Funktionen: Definition und Verwendung
MehrVorkurs C++ Programmierung
Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)
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
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
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
MehrTeil II. Literatur zur C-Programmierung:
Teil II 2Kurzeinführung in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: A Software Engineering Approach. Springer 1991 Kernighan, Ritchie. The C Programming Language.
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
MehrEin paar Kleinigkeiten zum Einstieg
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
MehrTag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)
Tag 5 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Methoden Deklaration
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrC# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services
C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften
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
MehrGrundelemente objektorientierter Sprachen (1)
Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte
MehrJava Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.
Java Übung Übung 2 Universität Duisburg-Essen Kommedia, Übung EinPro SS06, 19. April 2006 (UniDUE) 19. April 2006 1 / 13 Java Programme Java Programme bestehen aus (meist mehreren) Klassen. In den Klassen
MehrProjekt 3 Variablen und Operatoren
Projekt 3 Variablen und Operatoren Praktisch jedes Programm verarbeitet Daten. Um mit Daten programmieren zu können, muss es Möglichkeiten geben, die Daten in einem Programm zu verwalten und zu manipulieren.
MehrEinstieg in die Informatik mit Java
1 / 17 Einstieg in die Informatik mit Java Methoden und Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld
Mehr3.2 Datentypen und Methoden
Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte
MehrÜBUNGS-BLOCK 7 LÖSUNGEN
ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i
Mehr7. Übung Informatik II - Objektorientierte Programmierung
7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber
MehrFunktionen in JavaScript
Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben
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,
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;
MehrEinführung in die Programmierung WS 2009/10. Übungsblatt 5: Typen, Variablen und einfache Methoden in Java
Ludwig-Maximilians-Universität München München, 20.11.2009 Institut für Informatik Prof. Dr. Christian Böhm Annahita Oswald, Bianca Wackersreuther Einführung in die Programmierung WS 2009/10 Übungsblatt
Mehr(Ausnahmebehandlung)
16. Exceptions (Ausnahmebehandlung) 16-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 16: Exceptions (Ausnahmebehandlung) Motivation Throw und Catch 16. Exceptions (Ausnahmebehandlung) 16-2
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
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
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
MehrGrundlagen der Programmierung in C Funktionen
Der erste Mechanismus für Code-Reuse! Grundlagen der Programmierung in C Funktionen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Ältester Mechanismus für Code-Reuse:
MehrOperatoren in C/C++ und Java:
Operatoren in C/C++ und Java: C/C++/Java hat eine riesige Anzahl von Operatoren (im Vergleich zu anderen Programmiersprachen). Außer den üblichen arithmetischen Operatoren +, -, *, / (und % für Ganzzahlen)
MehrPräzedenz von Operatoren
Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
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
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).
MehrFunktionen in JavaScript
Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrObjektorientierte Programmierung
Stefan Brass: OOP (Java), 15. Überladene Methoden 1/22 Objektorientierte Programmierung Kapitel 15: Überladene Methoden Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/
MehrJavaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden
Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter
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
MehrGrundelemente objektorientierter Sprachen (1)
Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte
MehrOCP Java SE 8. Lambda
OCP Java SE 8 Lambda Lambda-Ausdruck sieht ähnlich wie eine Deklaration einer Methode ohne Name und Ergebnistyp aus (a, b) -> b.compareto(a) Lambda Vor Java 8 Ausführbarer Programmcode ( Verhalten ) nur
MehrGrundelemente objektorientierter Sprachen (1)
Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte
MehrEinführung in die Programmierung für NF. Übung
Einführung in die Programmierung für NF Übung 03 06.11.2013 Inhalt Methoden in Java Gültigkeitsbereiche EBNF Einführung in die Programmierung für NF Übung 03 2 Methoden in Java In Methoden werden Ausdrücke
MehrOCP Java SE 8. Lambda
OCP Java SE 8 Lambda Lambda-Ausdruck sieht ähnlich wie eine Deklaration einer Methode ohne Name und Ergebnistyp aus (a, b) -> b.compareto(a) Lambda Vor Java 8 Ausführbarer Programmcode ( Verhalten ) nur
Mehr5.3 Auswertung von Ausdrücken
5.3 Auswertung von Ausdrücken Funktionen in Java bekommen Parameter/Argumente als Input, und liefern als Output den Wert eines vorbestimmten Typs. Zum Beispiel könnte man eine Funktion i n t min ( i n
MehrKontrollstrukturen (1)
Kontrollstrukturen (1) Selektionen, if ermöglicht das alternative Ausführen von Programteilen in Abhängigkeit einer Bedingung if (Bedingung) Block 1 else Block 2 Ist die Bedingung wahr, also ungleich 0,
MehrUnterprogramme. AnPr. Wiederholungen im Code werden vermieden. Programme werden leichter lesbar. Die Entwicklung und der Test werden vereinfacht.
Name Klasse Datum 1 Allgemeines Programme werden üblicherweise nicht als ein einziger, fortlaufender Programmcode verfasst, sondern mit geeigneten Mitteln unterteilt und somit strukturiert. Die Methodik
Mehr2 FUNKTIONSZEIGER UND BEHÄLTER
FUNKTIONSZEIGER UND BEHÄLTER Leitideen: Die Vereinbarung von Funktionen und Funktionszeigern soll ihrem Aufruf ähneln und systematisch lesbar sein ( von innen nach außen ). Dem Konzept der Funktionszeiger
MehrSimpleStat mit Methoden
SimpleStat mit Methoden Als Ausgangspunkt nehmen wir folgende Definition (Version 1) von SimpleStat: double sum2; -Quadrate Dieser Objekttyp verfügt über keine Methoden und alle Datenattribute sind public.
MehrMethoden (fortgeschritten) in C# - 1
Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich
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
MehrC-Pointer (Zeiger, Adressen) vs. C++ Referenzen
C-Pointer (Zeiger, Adressen) vs. C++ Referenzen Der Pointer (C/C++): In C/C++ ist der Pointer ein eigener Datentyp, der auf Variablen/Objekte zeigen kann. Indem man den Pointer dereferenziert, gewinnt
MehrProgramm-Ablauf. int main() // Beispiel- Struktur eines Programmes. prepare_everything(); read_input(); calculate_result(); write_output();
Programm-Ablauf Alle betrachteten Programmiersprachen C, C++, Java führen Anweisungen (diese enden mit einem Strichpunkt!) in der Reihenfolge aus, in der diese im Quellcode stehen. Dieser normale Ablauf
MehrProgrammierung in C: Vermischtes (Teil 1)
Programmierung in C: Vermischtes (Teil 1) Gültigkeitsbereiche für Variablen C-Präprozessor (#define EPS 0.00001) Inkremtieren und Dekrementieren ( jahr++; restzeit--;) Speicherklassen (static) Typecasts
MehrFelder, Zeiger und Adreßrechnung
Felder, Zeiger und Adreßrechnung Felder bestehen aus Variablen eines einzigen Datentyps. Bisher kennen wir eindimensionale Felder. In C sind Felder mit beliebigen Dimensionen möglich. Unsere räumliche
Mehr10.4 Konstante Objekte
10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären
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. (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun. Letzte Änderung: :40. Methoden 1/44
Methoden (Softwareentwicklung II (IB)) Prof. Dr. Oliver Braun Letzte Änderung: 02.03.2018 12:40 Methoden 1/44 Was Sie bereits wissen müssen: Siehe Softwareentwicklung I (IB) Methoden 2/44 Überladen Methoden
MehrPraktische Informatik 1
Praktische Informatik 1 Imperative Programmierung und Objektorientierung Karsten Hölscher und Jan Peleska Wintersemester 2011/2012 Session 2 Programmierung Begriffe C/C++ Compiler: übersetzt Quellcode
MehrSpeicherklassen (1) Lokale Variablen
Speicherklassen (1) Lokale Variablen Lokale Variablen beschränken sich auf die Funktionen, in denen sie definiert werden Sind in der Funktion gekapselt können also nur in der Funktion verändert werden
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
MehrKapitel 10 Delegationsvariablen
Kapitel 10 Delegationsvariablen Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Agenda Wie werden
MehrSoftwareentwicklung II (IB) Methoden. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München
Softwareentwicklung II (IB) Methoden Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 05.04.2018 17:44 Inhaltsverzeichnis Was Sie bereits wissen müssen: Siehe Softwareentwicklung
MehrSystemprogrammierung
IEinführung I in die Programmiersprache C Literatur zur C-Programmierung: Darnell, Margolis. C: Software Engineering pproach. Springer 1991 Kernighan, Ritchie. The C Programming Language. Prentice-Hall
MehrTest-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO
Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO Dipl.-Ing. Klaus Knopper 21.12.2006 Hinweis: Bitte schreiben Sie auf das Deckblatt und auf jede Seite Ihren Namen und Ihre Matrikelnummer,
MehrSchleifen in C/C++/Java
Schleifen in C/C++/Java Alle 3 Sprachen stellen mindestens die folgenden 3 Schleifenkonstruktionen zur Verfügung. In C gibt es auch keine weiteren, C++, Java und C# haben noch weitere nützliche Varianten.
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
Mehr