funktionen
DESCRIPTION
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); - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/1.jpg)
Funktionen
![Page 2: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/2.jpg)
Aufgabe:
Eingabe zweier Zahlen---> Minimum bestimmen
Dann nochmalsEingabe zweier Zahlen
---> Minimum bestimmen
![Page 3: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/3.jpg)
SchreibaufwendigeLösung:
![Page 4: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/4.jpg)
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); //...
![Page 5: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/5.jpg)
... if (z1<z2) min1 = z1; else min1 = z2;
if (z3<z4) min2 = z3; else min2 = z4;
}
![Page 6: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/6.jpg)
Die Nachteile sind:
Schreibarbeit
Unstrukturiertes Programm
![Page 7: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/7.jpg)
ElegantereLösung:
Funktionen(Black Box)
![Page 8: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/8.jpg)
Systemisch:Black-Box-Methode
![Page 9: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/9.jpg)
Input Output
Black
Box
![Page 10: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/10.jpg)
Input - Schnittstellenkanal
Output - Schnittstellenkanal
Funktion:
mini
zahl1
zahl2
mini
![Page 11: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/11.jpg)
WICHTIG:Die Schnittstellenkanäle bzw. Input und Output
werden hier durch Variablen realisiert.
![Page 12: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/12.jpg)
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?
![Page 13: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/13.jpg)
Der Funktionsaufruf:min1 mini(z1,z2);
kann man sich als einen Kanal vorstellen, der den Output von rechts nach links transportiert.
![Page 14: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/14.jpg)
Der Funktionsaufruf:min1 = mini(z1,z2);
Zur besseren Vorstellung kann man sich diesen Funktionsaufruf auch wie folgt anschaulich vorstellen:
![Page 15: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/15.jpg)
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).
![Page 16: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/16.jpg)
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;6841
![Page 17: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/17.jpg)
Aber wie wird die Funktion definiert (programmiert) ?
![Page 18: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/18.jpg)
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
![Page 19: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/19.jpg)
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
![Page 20: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/20.jpg)
Welche Variablen der Funktion mini sind vom
Hauptprogramm aus sichtbar und umgekehrt ?
![Page 21: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/21.jpg)
int erg;int erg; if(if(zahl1 <=<= zahl2)) erg =erg = zahl1;; else else erg =erg = zahl2;; return(erg);return(erg);}
int mini(int zahl1, int zahl2) {
![Page 22: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/22.jpg)
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
![Page 23: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/23.jpg)
int erg;if(zahl1 <= zahl2) erg = zahl1;else erg = zahl2;return(erg);
min1 = mini(z1 , z2);zahl1=z1(Kopie)
zahl2=z2(Kopie)
![Page 24: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/24.jpg)
Beispiel:
![Page 25: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/25.jpg)
int erg;
if(zahl1 <= zahl2)
erg = zahl1;
else
erg = zahl2;
return(erg);
z1 = 7; z2 = 3;min1 = mini(z1 , z2);
7 33
7 3
33
7
3
![Page 26: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/26.jpg)
#include "stdafx.h"#include <stdio.h>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.
![Page 27: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/27.jpg)
Bemerkung:
![Page 28: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/28.jpg)
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:
![Page 29: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/29.jpg)
#include "stdafx.h"#include <stdio.h>
int mini(int zahl1, int zahl2);
int main(){ ... min1 = mini(z1,z2); ...
![Page 30: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/30.jpg)
AufgabenRealisieren Sie die folgenden Funktionen und rufen diese in main je einmal auf:1) Maximum zweier Zahlen2) Mittelwert dreier Zahlen 3) Taschenrechner
![Page 31: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/31.jpg)
#include "stdafx.h"#include <stdlib.h>
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;}
![Page 32: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/32.jpg)
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;}
![Page 33: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/33.jpg)
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;}
![Page 34: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/34.jpg)
Bemerkung:Soll eine Funktion über ihren Namen keinen Wert zurückgeben, dann hat sie den Datentyp void.
![Page 35: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/35.jpg)
void nichts(int note){ if(note <= 4) printf("gut\n"); else printf("weniger gut\n"); //auch möglich: //return;}
![Page 36: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/36.jpg)
Bemerkung:Hat eine Funktion keinen Parameter, so wird dies in der Parameterliste mit void dargestellt.(void kann auch weggelassen werden).
![Page 37: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/37.jpg)
void ausgabe (void){ printf("Hallo MESK\n"); }
// auch möglich:/*void ausgabe (){ printf("Hallo MESK\n"); }*/
![Page 38: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/38.jpg)
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.
![Page 39: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/39.jpg)
Struktogramm einer Funktion:
![Page 40: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/40.jpg)
Hier kommt Funktionsaufruf rein.Geben Sie ein Beispiel dazu an!
![Page 41: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/41.jpg)
erg = mini(3, 5)
![Page 42: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/42.jpg)
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.
![Page 43: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/43.jpg)
Beispiel:Darstellen der Funktion mini (siehe oben) durch ein Struktogramm
![Page 44: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/44.jpg)
Name: miniParameter: (i) double z1 : eine Zahl (i) double z2 : eine Zahl (o): das Minimum dieser 2 ZahlenBeschreibung: Berechnet von den 2 Zahlen z1 und z2 das Minimum.
z1 < z2W F
erg = z2erg = z1
return erg
Wer will, kann statt return auch Rückgabe schreiben
i bedeutet Input-Parameter o bedeutet Output-Parameter
![Page 45: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/45.jpg)
TIPP:
![Page 46: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/46.jpg)
Der besseren übersichtlicheren Darstellung wegen, kann man die Funktion (Funktionen) in eine Header-Datei schreiben und dann mit #include ...wieder einfügen.
![Page 47: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/47.jpg)
Welche Funktionen kennen Sie schon, bevor Sie diese Präsentation angeschaut haben?
![Page 48: Funktionen](https://reader031.vdokument.com/reader031/viewer/2022011718/56814b2e550346895db83897/html5/thumbnails/48.jpg)
main()scanf(...)printf(...)