Funktionen.

Slides:



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

Aufgabe: Wie stellt man eine for-Schleife durch eine while-Schleife dar ?
Forschungszentrum caesar
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
Grenzen endlicher Automaten
Bounded Model Checking II
Einführung in die Programmierung Ausführbare Klassen
Verzweigung oder bedingte Anweisung Weiter mit PP.
3. Berechenbarkeit Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt,
Anhang F:Beispielklausur In diesem Kapitel wird ein Beispiel für eine Klausur vorgestellt. Dabei sind jeweils die Aufgaben und die Lösungen gegeben. Beachten.
Seminarthema 4 Von: Robert Schirmer Matnr.: Betreuer: Prof.Dr Eiermann.
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
SWITCH - Anweisung.
SWITCH - Anweisung.
IF-ELSE-IF-Ketten Weiter mit PP..
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
ARRAY oder FELD oder VEKTOR
Dynamischer Speicher. Ein Vergleich aus dem täglichen Leben...
Dynamischer Speicher und Struktur
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
WHILE - Anweisung.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
FOR Anweisung.
Felder sortieren. Aufgabe: Die Zahlen eines Feldes sollen der Größe (zuerst die kleinste Zahl) nach sortiert werden.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
DO...WHILE Anweisung.
ARRAY oder FELD oder VEKTOR
V10: Bewegen der Formen und Kollisionserkennung Steuerung der Spielsteine durch Tastenbefehle (Übersicht der Befehle unter der Hilfe)
= Zahl: 5 2. Zahl: 5 3. Zahl: 5 4. Zahl: 5 Prüfe auf: 1.Gleichheit aller Zahlen 2.Gleichheit mind. 2er Zahlen 3.Ungleichheit.
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 Kapitel 4 Claudio Moraga; Gisbert Dittrich FBI Unido
Symmetrischer Verstärker (CMOS OTA)
Nyquist-Kriterium Ausgewählte Themen des analogen Schaltungsentwurfs
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
Prof. Dr. Christian Scheideler TU München
Schneidwerkzeug Alex, Christina, Seckin, Tammy, Willi.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
Rekursive Funktionen (Fakultät)
Einführung in die Programmiersprache C 1
Planung Planung Planung Planung Prof. Dr. Bernd Schmidt Planung
Übungsaufgabe 1 (Teil A)
Einfache Syntax einer Matrix
Informatik Grundlagen, WS04, Seminar 11
Multiplikation großer Zahlen mit Standard-FFT
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Planung Prof. Dr. Bernd Schmidt Lehrstuhl für Operations Research und Systemtheorie, Universität Passau Planung.
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 >
Die Zählschleife int s = 0 for (int k=1; k
Einführung in die Programmiersprache C 4
Instrumentenpraktikum
Parallel Programming Parallel Matrix Multiplication
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Aus-drücke, arithmetische Operatoren.
Beispiel 8.12 (Selbststudium) Corporate Finance Grundkurs II.
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
Programmiervorkurs WS 2014/15 Methoden
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
Einführung in die Programmiersprache C 2

Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Verzweigung oder bedingte Anweisung. Aufgabe: Ein Autofahrer tankt sein Auto voll und schreibt den Kilometerstand auf (drei- stelliger Tageszähler).Wenn.
Programmieren in C Wie speichert C
Grundkurs Informatik mit Java
Schleifen mit der Turtle
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
 Präsentation transkript:

Funktionen

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

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; }

Unstrukturiertes Programm Die Nachteile sind: Schreibarbeit Unstrukturiertes Programm

Elegantere Lösung: Funktionen (Black Box)

Systemisch: Black-Box-Methode

Input Output Black Box

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

WICHTIG: Die Schnittstellenkanäle bzw 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); } Wie heisst der Aufruf der Funktion? min1 = mini(z1,z2); // Aufruf min2 = mini(z3,z4); // Aufruf

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

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

Aber wie wird die Funktion definiert (programmiert) ?

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

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

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

int mini(int zahl1, int zahl2) { int erg; if(zahl1 <= zahl2) erg = zahl1; else erg = zahl2; return(erg); }

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

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

Beispiel:

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

Dies ist die Funktion mini #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 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. Dies ist die Funktion mini

Bemerkung:

Deklaration der Funktion vor main: 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 <stdio #include "stdafx.h" #include <stdio.h> 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 <stdlib #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; }

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! Lehreraktivität: Lehrer stellt Strukogramm vor. Schüleraktivität: Abschreiben.

erg = mini(3, 5) Lehreraktivität: Lehrer stellt Strukogramm vor. Schüleraktivität: Abschreiben.

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 2 Zahlen das Minimum. i bedeutet Input-Parameter o bedeutet Output-Parameter Wer will, kann statt return auch Rückgabe schreiben z1 < z2 Lehreraktivität: Lehrer stellt Strukogramm vor. Schüleraktivität: Abschreiben. W F erg = z1 erg = z2 return erg

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(...)