Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.

Slides:



Advertisements
Ähnliche Präsentationen
Programme in C++.
Advertisements

der Universität Oldenburg
Funktionen, Felder und Parameter-übergabe
Funktionen.
12. Iteration und Rekursion
der Universität Oldenburg
Java: Objektorientierte Programmierung
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Objektorientierung
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 5 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 3 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Imperative Programmierung
Einführung in die Programmierung mit Java
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Das erste Programm (Folie 16)
int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0);
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Klassen und Objekte
Grundkonzepte Java - Klassendefinition
Einführung in die Programmiersprache C 1
Repetitorium PG : Pointer FH-Darmstadt, FB Informatik.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmiersprache C 4
Prozeduren und Funktionen
Dynamische Datentypen
2.4 Rekursion Klassifikation und Beispiele
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Programmierung 1. Einführung Seite 1
Unterprogramme in JAVA
Prof. Dr.-Ing. Franz-Josef Behr
Parameterübergabemechanismen für den Methodenaufruf
early binding (frühe Bindung) late binding (späte Bindung)
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Einführung in die Programmierung mit Java
Unterprogramme / Methoden
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Pointer. Precompiled Header  Vorübersetzung eingebundener Dateien häufig genutzt, selten geändert  Projekttyp „Win32 Console Application“
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Programmieren in C Wie speichert C
Nksainf.ch/oinf.
Referenzen In c kennen wir gewöhnliche Variablen und Pointer.
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
Grundlagen der OO-Programmierung in C#
Statische und Nichtstatische Methoden Properties / Eigenschaften
 Präsentation transkript:

Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene Teilaufgaben Sie dienen einer besseren Strukturierung des Programms Sie fördern die Wiederverwertbarkeit von Code

Definition von Funktionen datentyp name([Parameterliste]) { [Lokale Deklarationen]... Anweisungen... }

Definition von Funktionen datentyp gibt den Ergebnistyp der Funktion an ( void bei keinem Ergebnis) name ist der Bezeichner der Funktion In der Parameterliste stehen die formalen Parameter (in ihnen werden Werte gespeichert, die der Funktion beim Aufruf übergeben werden). Sie müssen mit Typ Parametername deklariert werden Lokale Variablendeklarationen und Anweisungen bilden den Funktionsrumpf

Funktionen Beispiel 1 double hoch(double a, int b) /* a,b...formale Parameter*/ { int zaehler; double rueckgabe_wert = 1.0; if(a == 0.0 && b <= 0) return 0.0; if(b < 0) { a = 1.0/a; b = -b; } for(zaehler=1; zaehler<=b; zaehler++) rueckgabe_wert *= a; return rueckgabe_wert; }

Aufruf von Funktionen Die Funktion hoch kann von jeder anderen Funktion aus aufgerufen werden: ergebnis = hoch( 3.7, 4 ); double hoch(double a, int b ) {... return ergebnis_wert ; } Dabei werden die Werte der Argumente (hier 3.7 und 4) in die formalen Parameter a und b kopiert.

return - Anweisung Die return-Anweisung bewirkt die unmittelbare Beendigung der Funktion und die Rückkehr zum Aufrufer. Sie hat folgende Syntax: return ausdruck; return; /* bei Funktionen vom Typ void */

Prototypen Eine Funktion muss vor ihrem ersten Aufruf definiert werden oder es muss zumindest ihr Prototyp bekannt sein. Dieser lautet: datentyp name([Parameterliste]) ; Die Namen der formalen Parameter können dabei weggelassen werden: double hoch(double, int); double hoch(double a, int b);

Reihenfolge in einem C- Programm Üblicherweise lautet die Reihenfolge in einem C- Programm: 1.Preprozessoranweisungen 2.Funktionsprototypen 3.Definition von main 4.Definition der übrigen Funktionen

Übung 4_1 Schreiben Sie Funktionen zur Berechnung des größten Wertes von 2, 3 und 4 Integerwerten. Testen Sie die Funktionen mit Hilfe einer geeigneten Funktion main

Call by Value Beim Aufruf einer Funktion werden nur die Werte der aktuellen Parameter an die Funktion übergeben: void tausch(int x, int y) { int h; h = x; x = y; y = h; } int a= 10, b = 20; tausch(a,b); /* a=10, b=20 */ Vertauscht werden in obigen Beispiel zwar die Werte der formalen Parameter x und y, nicht aber jene der aktuellen Argumente a und b.

Pointer (Zeiger) Ein Pointer ist ein neuer Datentyp, in dem die Adresse einer anderen Variablen gespeichert werden kann. Bei der Deklaration eines Pointers muss auch der Typ jener Variablen angegeben werden, deren Adresse gespeichert werden soll. Deklaration eines Pointers: Typ *Bezeichner; int *pi; double *pd;

Dereferenzierung Nach der Deklaration eines Pointers kann die Adresse einer passenden Variablen in diesem Pointer gespeichert werden. Die Adresse eines Datenobjekts erhält man mit Hilfe des Adressoperators &: int x = 10, *pi; pi = &x; pi 10 x Referenziert der Pointer pi die Variable x, so kann der Wert von x auch mit Hilfe von *pi angesprochen werden. * heißt Dereferenzierungsoperator.

Pointerbeispiel #include int main() { int x = 10, *pi = NULL; /* Adresse 0 wird zugewiesen */ pi = &x; printf("x: %d, &x: %p\n", *pi, pi); *pi = 20; /* x = 20 */ printf("x: %d, &x: %p\n", x, &x); return 0; } Output: x: 10, &x: 0065FDF4 x: 20, &x: 0065FDF4

Adresse NULL und void-Pointer Aus Sicherheitsgründen sollte in einem Pointer nie eine ungültige Adresse gespeichert sein. Zu diesem Zweck gibt es die unmögliche Adresse NULL (Preprozessorkonstante), die zur Initialisierung von Pointern verwendet werden sollte. Es gibt den Pointertyp void, der mit allen anderen Typen verträglich ist. Ein void-Pointer kann nicht dereferenziert werden, da keine Längeninformation der refernzierten Daten mit abgespeichert ist. void *pv; int x = 10; pv = &x; /* korrekt */ *pv = 20; /* Compilerfehler */

Call by Reference Um den Inhalt einer Variablen des Aufrufers in einer Funktion verändern zu können, darf nicht der Wert dieser Variablen als aktuelles Argument an die Funktion geschickt werden, sonderen die Adresse dieser Variablen. Der zugehörige formale Parameter muss dann ein passender Pointer sein. void tausch(int *px, int *py) { int h; h = *px; *px = *py; *py = h; } int a= 10, b = 20; tausch(&a,&b); /* a=20, b=10 */

Übung 4_2 Schreiben Sie eine Funktion, die eine Uhrzeit im Format hh:mm:ss einliest und bei gültiger Eingabe den Wert 1, sonst den Wert 0 retourniert. Die Variablen, in denen Stunden, Minuten und Sekunden gespeichert werden sollen, sind der Funktion by Reference zu übergeben.

Rekursive Funktionen Eine Funktion kann sich rekursiv, d.h. sich selbst aufrufen. Es ist in jedem Fall zu gewährleisten, dass die Rekursion kontrolliert terminiert. Das folgende Beispiel zeigt die Rekursion am Beispiel der Berechnung von n Faktorielle: long fakultaet(int n) { if (n<0) return –1; /* Fehlercode */ if (n == 0 || n == 1) return 1; return n * fakultaet(n-1); }

Übung 4_3 Schreiben Sie eine rekursive Funktion zur Berechnung der Summe der ersten n natürlichen Zahlen.