Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Funktionen, Felder und Parameter-übergabe
Funktionen.
der Universität Oldenburg
SWITCH - Anweisung.
SWITCH - Anweisung.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
ARRAY oder FELD oder VEKTOR
Dynamischer Speicher. Ein Vergleich aus dem täglichen Leben...
Funktionen.
Dynamischer Speicher und Struktur
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
WHILE - Anweisung.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
FOR Anweisung.
Der Präprozessor. Bevor der Compiler das Programm in Maschinencode übersetzt (nur dieser kann von der CPU, dem Herz des Computers, bearbeitet werden)
DO...WHILE Anweisung.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
ARRAY oder FELD oder VEKTOR
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 Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
Einführung in die Programmierung mit Java
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Der C-Präprozessor EDV1 - 04Präprozessor.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Der C-Präprozessor 08-CPräprozessor.
Struktogramme IF-ELSE FOR – Schleife
Einführung in die Programmiersprache C 1
Java programmieren mit JavaKara
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.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Grundlagen der Informatik 4 Lehrstuhl für Betriebssysteme 1 Wie werden Funktionen realisiert? Beispiel: int maximum(int x, int y) { int j = x; if (y >
Einführung in die Programmiersprache C 4
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Programmierung 1. Einführung Seite 1
Unterprogramme in JAVA
Prof. Dr.-Ing. Franz-Josef Behr
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
Einführung in die Programmiersprache C 2
Unterprogramme / Methoden
Dynamisches Array als "verkettete Liste". Ein Vergleich.
Verzweigung oder bedingte Anweisung. Aufgabe: Ein Autofahrer tankt sein Auto voll und schreibt den Kilometerstand auf (drei- stelliger Tageszähler).Wenn.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Konstruktoren.
Programmieren in C Wie speichert C
Durchschnitt (verbal)
Nksainf.ch/oinf.
Einführung in die Programmierung
REKURSION + ITERATION.
 Präsentation transkript:

Funktionen

Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen

Schreibaufwendige Lösung:

int main(){ int min1, min2; int z1, z2, z3, z4; printf("4 Zahlen eingeben\n"); scanf("%d",&z1); scanf("%d",&z2); scanf("%d",&z3); scanf("%d",&z4); //...

... if (z1<z2) min1 = z1; else min1 = z2; if (z3<z4) min2 = z3; else min2 = z4; }

Die Nachteile sind: Schreibarbeit Unstrukturiertes Programm

Elegantere Lösung: Funktionen (Black Box)

Systemisch: Black-Box-Methode

InputOutput Black Box

Input - Schnittstellenkanal Output - Schnittstellenkanal Funktion: mini zahl1 zahl2 mini

WICHTIG: Die Schnittstellenkanäle bzw. Input und Output werden hier durch Variablen realisiert.

int main(){ int min1, min2; int z1, z2, z3, z4; printf("4 Zahlen eingeben\n"); scanf("%d",&z1); scanf("%d",&z2); scanf("%d",&z3); scanf("%d",&z4); printf("Min1=%d, Min2=%d", min1,min2); } min1 = mini(z1,z2); // Aufruf min2 = mini(z3,z4); // Aufruf Wie heisst der Aufruf der Funktion?

Der Funktionsaufruf: min1 mini(z1,z2); kann man sich als einen Kanal vorstellen, der den Output von rechts nach links transportiert.

Der Funktionsaufruf: min1 = mini(z1,z2); Zur besseren Vorstellung kann man sich diesen Funktionsaufruf auch wie folgt anschaulich vorstellen:

mini(z1,z2); min1 Ein Zapfhahn wird in den Aufruf angebracht. Die Anzahl der Tropfen (bzw. der Flüssigkeit), d.h. min(z1,z2) wird.... in einem Behälter (einer Variablen) mit dem Namen min1 aufgefangen (abgespeichert).

min1 = mini(4,mini(2,1)); Weitere Möglichkeit eines Funktionsaufrufs: min1 = mini(6,17); min2 = mini(z2,19); min1 = mini(13,z1); z1 = 4; z2 = 8;

Aber wie wird die Funktion definiert (programmiert) ?

int erg; if(zahl1 <= zahl2) erg = zahl1; else erg = zahl2; return(erg); } int mini(int zahl1, int zahl2){ lokale Variable Der sogenannte formale Parameter ist ein Input- Parameter, weil er einen reinen Input darstellt. Dies nennt man auch call by value return erzeugt output. Funktion wird dann sofort verlassen. D.h. es kann nur genau ein output realisiert werden Datentyp der Funktion

int erg; if(zahl1 <= zahl2) erg = zahl1; else erg = zahl2; return(erg); } int mini(int zahl1, int zahl2){ An den formalen Parameter wird beim Aufruf der Funktion ein tatsächlicher Übergabewert, der so genannte aktuelle Parameter übergeben. z.B. ersetzen beim vorigen Aufruf von mini(z2,19) die aktuellen Parameter z2 und 19 die formalen Parameter (Platzhalter) zahl1 und zahl2

Welche Variablen der Funktion mini sind vom Hauptprogramm aus sichtbar und umgekehrt ?

int mini(int zahl1, int zahl2) {

Was geschieht ganz genau beim Aufruf (vom Hauptprogramm aus) der Funktion min1 = mini(z1, z2); im Gegensatz zum formalen Parameter heißen diese Parameter lokale Variable

int erg; if(zahl1 <= zahl2) erg = zahl1; else erg = zahl2; return(erg); min1 = mini(z1, z2); zahl1=z1 (Kopie) zahl2=z2 (Kopie)

Beispiel:

int erg; if(zahl1 <= zahl2) erg = zahl1; else erg = zahl2; return(erg); z1 = 7; z2 = 3; min1 = mini(z1, z2);

#include "stdafx.h" #include int mini(int zahl1, int zahl2); // Deklaration int main(){ int min1, min2; int z1, z2, z3, z4; printf("1.Zahl eingeben\n"); scanf("%d",&z1); printf("2.Zahl eingeben\n"); scanf("%d",&z2); printf("3.Zahl eingeben\n"); scanf("%d",&z3); printf("4.Zahl eingeben\n"); scanf("%d",&z4); min1 = mini(z1,z2); min2 = mini(z3,z4); printf("1.Minimum=%d\n",min1); printf("2.Minimum=%d\n",min2); return 0; } int mini(int zahl1, int zahl2){ // Definition int erg; if(zahl1 <= zahl2) erg = zahl1; else erg = zahl2; return(erg); } Dies ist die Funktion mini Dies ist die Funktion main. Sie besitzt keine Parameter und wird im Gegensatz zu allen anderen Funktionen automatisch (ohne Zutun des Programmierers) beim Programmstart aufgerufen! D.h. die in ihr enthaltenen Anweisungen werden ausgeführt.

Bemerkung:

Funktion mini wird in der Funktion main (Hauptprogramm) benutzt, bevor sie erst später weiter unten definiert wurde. Deshalb muß sie dem Hauptprogramm bekannt gemacht werden, deshalb Deklaration der Funktion vor main:

#include "stdafx.h" #include int mini(int zahl1, int zahl2); int main(){... min1 = mini(z1,z2);...

Aufgaben Realisieren Sie die folgenden Funktionen und rufen diese in main je einmal auf: 1) Maximum zweier Zahlen 2) Mittelwert dreier Zahlen 3) Taschenrechner

#include "stdafx.h" #include double maximum(double zahl1, double zahl2); double taschenrechner(double z1, double z2, char modus); double mittelwert(double z1, double z2, double z3); int main(){ double max, durchschnitt, erg; max = maximum(5, 3.6); durchschnitt = mittelwert(2, 6, 4); erg = taschenrechner(7, 9, '+'); printf("Maximum=%f\n", max); printf("Mittelwert=%f\n", durchschnitt); printf("TR-Ergebnis=%f\n", erg); return 0; }

double maximum(double zahl1, double zahl2){ int erg; if(zahl1 < zahl2) erg = zahl2; else erg = zahl1; return erg; } double mittelwert(double z1, double z2, double z3){ return (z1+z2+z3)/3; }

double taschenrechner(double z1, double z2, char modus){ double erg; if(modus == '+'){ erg = z1+z2; } else if(modus == '-'){ erg = z1-z2; } else if(modus == '*'){ erg = z1*z2; } else{ erg = z1/z2; } return erg; }

Bemerkung: Soll eine Funktion über ihren Namen keinen Wert zurückgeben, dann hat sie den Datentyp void.

void nichts(int note){ if(note <= 4) printf("gut\n"); else printf("weniger gut\n"); //auch möglich: //return; }

Bemerkung: Hat eine Funktion keinen Parameter, so wird dies in der Parameterliste mit void dargestellt. (void kann auch weggelassen werden).

void ausgabe (void){ printf("Hallo MESK\n"); } // auch möglich: /* void ausgabe (){ printf("Hallo MESK\n"); } */

Wo macht eine Funktion Sinn, die keinen Parameter hat und auch nichts zurückgibt ? Am Anfang eines Programms sollte der Anwender sogenannte Programminfos auf den Bildschirm bekommen, die ihn darüber aufklären, wie (z.B. welche Tasten er wann drücken soll) er das Programm bedienen soll.

Struktogramm einer Funktion:

Hier kommt Funktionsaufruf rein. Geben Sie ein Beispiel dazu an!

erg = mini(3, 5)

Die Funktion selbst (der Funktionenkörper) wird wieder in ein Struktogramm gepackt, vor das der Name, der Parameter und die Beschreibung der Funktion geschrieben wird.

Beispiel: Darstellen der Funktion mini (siehe oben) durch ein Struktogramm

Name: mini Parameter: (i) double z1 : eine Zahl (i) double z2 : eine Zahl (o): das Minimum dieser 2 Zahlen Beschreibung: Berechnet von den 2 Zahlen z1 und z2 das Minimum. z1 < z2 W F erg = z2 erg = z1 return erg Wer will, kann statt return auch Rückgabe schreiben i bedeutet Input-Parameter o bedeutet Output-Parameter

TIPP:

Der besseren übersichtlicheren Darstellung wegen, kann man die Funktion (Funktionen) in eine Header-Datei schreiben und dann mit #include... wieder einfügen.

Welche Funktionen kennen Sie schon, bevor Sie diese Präsentation angeschaut haben?

main() scanf(...) printf(...)