Scilab - Funktionen

Scilab
Funktionen
J. Koch, 28. Oktober 2015
Scilab Funktionen
J. Koch, 28. Oktober 2015
1 / 15
Gliederung
1. Funktionen
Scilab Funktionen
J. Koch, 28. Oktober 2015
2 / 15
Gliederung
1. Funktionen
Funktionsdeklaration
Beispiele
Kontrollstrukturen
Ein- und Ausgabeargumente
Scilab Funktionen
J. Koch, 28. Oktober 2015
3 / 15
Lernziele
I
Sie kennen den Unterschied zwischen einem Skript und einer
Funktion
I
Sie wissen wie Funktionen mit einer beliebigen Anzahl Ein- und
Ausgabeargumente deklariert werden
I
Sie wissen wie Ein- und Ausgabeargumente bei einer Funktion
übergeben werden
I
Sie können Funktionen ausführen und testen
I
Sie kennen die relationalen und logischen Operatoren
I
Sie kennen die if- -Bedingung
I
Sie kennen die case-Fallunterscheidung
I
Sie kennen die while- und for-Schleife
I
Sie wissen wie man globale Variablen verwendet
Scilab Funktionen
J. Koch, 28. Oktober 2015
4 / 15
Lernziele
I
Sie kennen den Unterschied zwischen einem Skript und einer
Funktion
I
Sie wissen wie Funktionen mit einer beliebigen Anzahl Ein- und
Ausgabeargumente deklariert werden
I
Sie wissen wie Ein- und Ausgabeargumente bei einer Funktion
übergeben werden
I
Sie können Funktionen ausführen und testen
I
Sie kennen die relationalen und logischen Operatoren
I
Sie kennen die if- -Bedingung
I
Sie kennen die case-Fallunterscheidung
I
Sie kennen die while- und for-Schleife
I
Sie wissen wie man globale Variablen verwendet
Scilab Funktionen
J. Koch, 28. Oktober 2015
4 / 15
Lernziele
I
Sie kennen den Unterschied zwischen einem Skript und einer
Funktion
I
Sie wissen wie Funktionen mit einer beliebigen Anzahl Ein- und
Ausgabeargumente deklariert werden
I
Sie wissen wie Ein- und Ausgabeargumente bei einer Funktion
übergeben werden
I
Sie können Funktionen ausführen und testen
I
Sie kennen die relationalen und logischen Operatoren
I
Sie kennen die if- -Bedingung
I
Sie kennen die case-Fallunterscheidung
I
Sie kennen die while- und for-Schleife
I
Sie wissen wie man globale Variablen verwendet
Scilab Funktionen
J. Koch, 28. Oktober 2015
4 / 15
Lernziele
I
Sie kennen den Unterschied zwischen einem Skript und einer
Funktion
I
Sie wissen wie Funktionen mit einer beliebigen Anzahl Ein- und
Ausgabeargumente deklariert werden
I
Sie wissen wie Ein- und Ausgabeargumente bei einer Funktion
übergeben werden
I
Sie können Funktionen ausführen und testen
I
Sie kennen die relationalen und logischen Operatoren
I
Sie kennen die if- -Bedingung
I
Sie kennen die case-Fallunterscheidung
I
Sie kennen die while- und for-Schleife
I
Sie wissen wie man globale Variablen verwendet
Scilab Funktionen
J. Koch, 28. Oktober 2015
4 / 15
Lernziele
I
Sie kennen den Unterschied zwischen einem Skript und einer
Funktion
I
Sie wissen wie Funktionen mit einer beliebigen Anzahl Ein- und
Ausgabeargumente deklariert werden
I
Sie wissen wie Ein- und Ausgabeargumente bei einer Funktion
übergeben werden
I
Sie können Funktionen ausführen und testen
I
Sie kennen die relationalen und logischen Operatoren
I
Sie kennen die if- -Bedingung
I
Sie kennen die case-Fallunterscheidung
I
Sie kennen die while- und for-Schleife
I
Sie wissen wie man globale Variablen verwendet
Scilab Funktionen
J. Koch, 28. Oktober 2015
4 / 15
Lernziele
I
Sie kennen den Unterschied zwischen einem Skript und einer
Funktion
I
Sie wissen wie Funktionen mit einer beliebigen Anzahl Ein- und
Ausgabeargumente deklariert werden
I
Sie wissen wie Ein- und Ausgabeargumente bei einer Funktion
übergeben werden
I
Sie können Funktionen ausführen und testen
I
Sie kennen die relationalen und logischen Operatoren
I
Sie kennen die if- -Bedingung
I
Sie kennen die case-Fallunterscheidung
I
Sie kennen die while- und for-Schleife
I
Sie wissen wie man globale Variablen verwendet
Scilab Funktionen
J. Koch, 28. Oktober 2015
4 / 15
Lernziele
I
Sie kennen den Unterschied zwischen einem Skript und einer
Funktion
I
Sie wissen wie Funktionen mit einer beliebigen Anzahl Ein- und
Ausgabeargumente deklariert werden
I
Sie wissen wie Ein- und Ausgabeargumente bei einer Funktion
übergeben werden
I
Sie können Funktionen ausführen und testen
I
Sie kennen die relationalen und logischen Operatoren
I
Sie kennen die if- -Bedingung
I
Sie kennen die case-Fallunterscheidung
I
Sie kennen die while- und for-Schleife
I
Sie wissen wie man globale Variablen verwendet
Scilab Funktionen
J. Koch, 28. Oktober 2015
4 / 15
Lernziele
I
Sie kennen den Unterschied zwischen einem Skript und einer
Funktion
I
Sie wissen wie Funktionen mit einer beliebigen Anzahl Ein- und
Ausgabeargumente deklariert werden
I
Sie wissen wie Ein- und Ausgabeargumente bei einer Funktion
übergeben werden
I
Sie können Funktionen ausführen und testen
I
Sie kennen die relationalen und logischen Operatoren
I
Sie kennen die if- -Bedingung
I
Sie kennen die case-Fallunterscheidung
I
Sie kennen die while- und for-Schleife
I
Sie wissen wie man globale Variablen verwendet
Scilab Funktionen
J. Koch, 28. Oktober 2015
4 / 15
Lernziele
I
Sie kennen den Unterschied zwischen einem Skript und einer
Funktion
I
Sie wissen wie Funktionen mit einer beliebigen Anzahl Ein- und
Ausgabeargumente deklariert werden
I
Sie wissen wie Ein- und Ausgabeargumente bei einer Funktion
übergeben werden
I
Sie können Funktionen ausführen und testen
I
Sie kennen die relationalen und logischen Operatoren
I
Sie kennen die if- -Bedingung
I
Sie kennen die case-Fallunterscheidung
I
Sie kennen die while- und for-Schleife
I
Sie wissen wie man globale Variablen verwendet
Scilab Funktionen
J. Koch, 28. Oktober 2015
4 / 15
Funktionsdeklaration
I
I
I
I
I
I
I
Textdatei mit Endung .sci
Funktionsdeklaration
f u n c t i o n [ o1 , o2 , . . . ] = f u nc t io n _n a me ( i 1 , i 2 , . . . )
...
endfunction
Funktion mit Name function_name in Datei function_name.sci
Beliebige Anzahl Eingabeargumente (i1,i2,...) in runden
Klammern
Beliebige Anzahl Ausgabeargumente [o1,o2,...] in eckigen
Klammern
Jedem Ausgabeargument o1,o2,... muss in der Funktion ein Wert
zugewiesen werden
Funktionsaufruf kann an jeder Stelle beendet werden
return
Scilab Funktionen
J. Koch, 28. Oktober 2015
5 / 15
Funktionsdeklaration
I
I
I
I
I
I
I
Textdatei mit Endung .sci
Funktionsdeklaration
f u n c t i o n [ o1 , o2 , . . . ] = f u nc t io n _n a me ( i 1 , i 2 , . . . )
...
endfunction
Funktion mit Name function_name in Datei function_name.sci
Beliebige Anzahl Eingabeargumente (i1,i2,...) in runden
Klammern
Beliebige Anzahl Ausgabeargumente [o1,o2,...] in eckigen
Klammern
Jedem Ausgabeargument o1,o2,... muss in der Funktion ein Wert
zugewiesen werden
Funktionsaufruf kann an jeder Stelle beendet werden
return
Scilab Funktionen
J. Koch, 28. Oktober 2015
5 / 15
Funktionsdeklaration
I
I
I
I
I
I
I
Textdatei mit Endung .sci
Funktionsdeklaration
f u n c t i o n [ o1 , o2 , . . . ] = f u nc t io n _n a me ( i 1 , i 2 , . . . )
...
endfunction
Funktion mit Name function_name in Datei function_name.sci
Beliebige Anzahl Eingabeargumente (i1,i2,...) in runden
Klammern
Beliebige Anzahl Ausgabeargumente [o1,o2,...] in eckigen
Klammern
Jedem Ausgabeargument o1,o2,... muss in der Funktion ein Wert
zugewiesen werden
Funktionsaufruf kann an jeder Stelle beendet werden
return
Scilab Funktionen
J. Koch, 28. Oktober 2015
5 / 15
Funktionsdeklaration
I
I
I
I
I
I
I
Textdatei mit Endung .sci
Funktionsdeklaration
f u n c t i o n [ o1 , o2 , . . . ] = f u nc t io n _n a me ( i 1 , i 2 , . . . )
...
endfunction
Funktion mit Name function_name in Datei function_name.sci
Beliebige Anzahl Eingabeargumente (i1,i2,...) in runden
Klammern
Beliebige Anzahl Ausgabeargumente [o1,o2,...] in eckigen
Klammern
Jedem Ausgabeargument o1,o2,... muss in der Funktion ein Wert
zugewiesen werden
Funktionsaufruf kann an jeder Stelle beendet werden
return
Scilab Funktionen
J. Koch, 28. Oktober 2015
5 / 15
Funktionsdeklaration
I
I
I
I
I
I
I
Textdatei mit Endung .sci
Funktionsdeklaration
f u n c t i o n [ o1 , o2 , . . . ] = f u nc t io n _n a me ( i 1 , i 2 , . . . )
...
endfunction
Funktion mit Name function_name in Datei function_name.sci
Beliebige Anzahl Eingabeargumente (i1,i2,...) in runden
Klammern
Beliebige Anzahl Ausgabeargumente [o1,o2,...] in eckigen
Klammern
Jedem Ausgabeargument o1,o2,... muss in der Funktion ein Wert
zugewiesen werden
Funktionsaufruf kann an jeder Stelle beendet werden
return
Scilab Funktionen
J. Koch, 28. Oktober 2015
5 / 15
Funktionsdeklaration
I
I
I
I
I
I
I
Textdatei mit Endung .sci
Funktionsdeklaration
f u n c t i o n [ o1 , o2 , . . . ] = f u nc t io n _n a me ( i 1 , i 2 , . . . )
...
endfunction
Funktion mit Name function_name in Datei function_name.sci
Beliebige Anzahl Eingabeargumente (i1,i2,...) in runden
Klammern
Beliebige Anzahl Ausgabeargumente [o1,o2,...] in eckigen
Klammern
Jedem Ausgabeargument o1,o2,... muss in der Funktion ein Wert
zugewiesen werden
Funktionsaufruf kann an jeder Stelle beendet werden
return
Scilab Funktionen
J. Koch, 28. Oktober 2015
5 / 15
Funktionsdeklaration
I
I
I
I
I
I
I
Textdatei mit Endung .sci
Funktionsdeklaration
f u n c t i o n [ o1 , o2 , . . . ] = f u nc t io n _n a me ( i 1 , i 2 , . . . )
...
endfunction
Funktion mit Name function_name in Datei function_name.sci
Beliebige Anzahl Eingabeargumente (i1,i2,...) in runden
Klammern
Beliebige Anzahl Ausgabeargumente [o1,o2,...] in eckigen
Klammern
Jedem Ausgabeargument o1,o2,... muss in der Funktion ein Wert
zugewiesen werden
Funktionsaufruf kann an jeder Stelle beendet werden
return
Scilab Funktionen
J. Koch, 28. Oktober 2015
5 / 15
Ausgleichsgerade berechnen
f u n c t i o n [m, b ] = g e r a d e ( x , y )
//
// i n p u t :
// x . . . x v a l u e s
// y . . . y v a l u e s
//
// o u t p u t :
// m . . . s l o p e
// b . . . i n t e r c e p t
I
Funktionsname gerade
I
Dateiname gerade.sci
I
Funktion einbinden
−−> e x e c g e r a d e . s c i ;
I
Funktion aufrufen
−−> u = [ 1 ; 2 ; 3 ] ;
−−> v = [ 1 ; 4 ; 9 ] ;
−−> [ c , d ] = g e r a d e ( u , v )
I
Lokale Variablen erhalten Werte a = X\ y ;
aus Workspace
b = a (1);
u −→ x, v −→ y
m = a (2);
Workspace Variablen erhalten
endfunction
Werte der lokalen Variablen
c ←− m, d ←− b
scilab/gerade.sci
I
X = [ x .^0 x ] ;
Scilab Funktionen
J. Koch, 28. Oktober 2015
6 / 15
Ausgleichsgerade berechnen
f u n c t i o n [m, b ] = g e r a d e ( x , y )
//
// i n p u t :
// x . . . x v a l u e s
// y . . . y v a l u e s
//
// o u t p u t :
// m . . . s l o p e
// b . . . i n t e r c e p t
I
Funktionsname gerade
I
Dateiname gerade.sci
I
Funktion einbinden
−−> e x e c g e r a d e . s c i ;
I
Funktion aufrufen
−−> u = [ 1 ; 2 ; 3 ] ;
−−> v = [ 1 ; 4 ; 9 ] ;
−−> [ c , d ] = g e r a d e ( u , v )
I
Lokale Variablen erhalten Werte a = X\ y ;
aus Workspace
b = a (1);
u −→ x, v −→ y
m = a (2);
Workspace Variablen erhalten
endfunction
Werte der lokalen Variablen
c ←− m, d ←− b
scilab/gerade.sci
I
X = [ x .^0 x ] ;
Scilab Funktionen
J. Koch, 28. Oktober 2015
6 / 15
Ausgleichsgerade berechnen
f u n c t i o n [m, b ] = g e r a d e ( x , y )
//
// i n p u t :
// x . . . x v a l u e s
// y . . . y v a l u e s
//
// o u t p u t :
// m . . . s l o p e
// b . . . i n t e r c e p t
I
Funktionsname gerade
I
Dateiname gerade.sci
I
Funktion einbinden
−−> e x e c g e r a d e . s c i ;
I
Funktion aufrufen
−−> u = [ 1 ; 2 ; 3 ] ;
−−> v = [ 1 ; 4 ; 9 ] ;
−−> [ c , d ] = g e r a d e ( u , v )
I
Lokale Variablen erhalten Werte a = X\ y ;
aus Workspace
b = a (1);
u −→ x, v −→ y
m = a (2);
Workspace Variablen erhalten
endfunction
Werte der lokalen Variablen
c ←− m, d ←− b
scilab/gerade.sci
I
X = [ x .^0 x ] ;
Scilab Funktionen
J. Koch, 28. Oktober 2015
6 / 15
Ausgleichsgerade berechnen
f u n c t i o n [m, b ] = g e r a d e ( x , y )
//
// i n p u t :
// x . . . x v a l u e s
// y . . . y v a l u e s
//
// o u t p u t :
// m . . . s l o p e
// b . . . i n t e r c e p t
I
Funktionsname gerade
I
Dateiname gerade.sci
I
Funktion einbinden
−−> e x e c g e r a d e . s c i ;
I
Funktion aufrufen
−−> u = [ 1 ; 2 ; 3 ] ;
−−> v = [ 1 ; 4 ; 9 ] ;
−−> [ c , d ] = g e r a d e ( u , v )
I
Lokale Variablen erhalten Werte a = X\ y ;
aus Workspace
b = a (1);
u −→ x, v −→ y
m = a (2);
Workspace Variablen erhalten
endfunction
Werte der lokalen Variablen
c ←− m, d ←− b
scilab/gerade.sci
I
X = [ x .^0 x ] ;
Scilab Funktionen
J. Koch, 28. Oktober 2015
6 / 15
Ausgleichsgerade berechnen
f u n c t i o n [m, b ] = g e r a d e ( x , y )
//
// i n p u t :
// x . . . x v a l u e s
// y . . . y v a l u e s
//
// o u t p u t :
// m . . . s l o p e
// b . . . i n t e r c e p t
I
Funktionsname gerade
I
Dateiname gerade.sci
I
Funktion einbinden
−−> e x e c g e r a d e . s c i ;
I
Funktion aufrufen
−−> u = [ 1 ; 2 ; 3 ] ;
−−> v = [ 1 ; 4 ; 9 ] ;
−−> [ c , d ] = g e r a d e ( u , v )
I
Lokale Variablen erhalten Werte a = X\ y ;
aus Workspace
b = a (1);
u −→ x, v −→ y
m = a (2);
Workspace Variablen erhalten
endfunction
Werte der lokalen Variablen
c ←− m, d ←− b
scilab/gerade.sci
I
X = [ x .^0 x ] ;
Scilab Funktionen
J. Koch, 28. Oktober 2015
6 / 15
Ausgleichsgerade berechnen
f u n c t i o n [m, b ] = g e r a d e ( x , y )
//
// i n p u t :
// x . . . x v a l u e s
// y . . . y v a l u e s
//
// o u t p u t :
// m . . . s l o p e
// b . . . i n t e r c e p t
I
Funktionsname gerade
I
Dateiname gerade.sci
I
Funktion einbinden
−−> e x e c g e r a d e . s c i ;
I
Funktion aufrufen
−−> u = [ 1 ; 2 ; 3 ] ;
−−> v = [ 1 ; 4 ; 9 ] ;
−−> [ c , d ] = g e r a d e ( u , v )
I
Lokale Variablen erhalten Werte a = X\ y ;
aus Workspace
b = a (1);
u −→ x, v −→ y
m = a (2);
Workspace Variablen erhalten
endfunction
Werte der lokalen Variablen
c ←− m, d ←− b
scilab/gerade.sci
I
X = [ x .^0 x ] ;
Scilab Funktionen
J. Koch, 28. Oktober 2015
6 / 15
Ausgleichsgerade zeichnen
I
Funktionsname zeichne
I
Dateiname zeichne.sci
I
Funktion einbinden
−−> e x e c z e i c h n e . s c i ;
I
Funktion aufrufen
−−> z e i c h n e ( u , v , c , d )
function
//
// i n p u t :
// x . . .
// y . . .
// m . . .
// b . . .
z e i c h n e ( x , y ,m, b )
x values
y values
slope
intercept
clf ;
plot (x , y , ’∗r ’ );
xx = [ min ( x ) −1 ,max ( x ) + 1 ] ;
yy = m∗ xx + b ;
p l o t ( xx , yy , ’−b ’ ) ;
endfunction
scilab/zeichne.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
7 / 15
Ausgleichsgerade zeichnen
I
Funktionsname zeichne
I
Dateiname zeichne.sci
I
Funktion einbinden
−−> e x e c z e i c h n e . s c i ;
I
Funktion aufrufen
−−> z e i c h n e ( u , v , c , d )
function
//
// i n p u t :
// x . . .
// y . . .
// m . . .
// b . . .
z e i c h n e ( x , y ,m, b )
x values
y values
slope
intercept
clf ;
plot (x , y , ’∗r ’ );
xx = [ min ( x ) −1 ,max ( x ) + 1 ] ;
yy = m∗ xx + b ;
p l o t ( xx , yy , ’−b ’ ) ;
endfunction
scilab/zeichne.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
7 / 15
Ausgleichsgerade zeichnen
I
Funktionsname zeichne
I
Dateiname zeichne.sci
I
Funktion einbinden
−−> e x e c z e i c h n e . s c i ;
I
Funktion aufrufen
−−> z e i c h n e ( u , v , c , d )
function
//
// i n p u t :
// x . . .
// y . . .
// m . . .
// b . . .
z e i c h n e ( x , y ,m, b )
x values
y values
slope
intercept
clf ;
plot (x , y , ’∗r ’ );
xx = [ min ( x ) −1 ,max ( x ) + 1 ] ;
yy = m∗ xx + b ;
p l o t ( xx , yy , ’−b ’ ) ;
endfunction
scilab/zeichne.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
7 / 15
Ausgleichsgerade zeichnen
I
Funktionsname zeichne
I
Dateiname zeichne.sci
I
Funktion einbinden
−−> e x e c z e i c h n e . s c i ;
I
Funktion aufrufen
−−> z e i c h n e ( u , v , c , d )
function
//
// i n p u t :
// x . . .
// y . . .
// m . . .
// b . . .
z e i c h n e ( x , y ,m, b )
x values
y values
slope
intercept
clf ;
plot (x , y , ’∗r ’ );
xx = [ min ( x ) −1 ,max ( x ) + 1 ] ;
yy = m∗ xx + b ;
p l o t ( xx , yy , ’−b ’ ) ;
endfunction
scilab/zeichne.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
7 / 15
Relationale und logische Operatoren
I
Relationale Operatoren
==, ~=, <, >, <=, >=
I
Beispiele
−−> x = 1 ;
−−> x > 0
ans =
T
−−> x = [ 4 7 −1 1 ] ;
−−> x > 0
ans =
T T F T
−−> a b s ( x ) ~= 1
ans =
T T F F
I
Logische Operatoren
&, | , ~ ,
mtlb_any , m t l b _ a l l
I
Beispiele
−−> x < 0 | x > 3
ans =
T T T F
−−> m t l b _ a l l ( x > 0 )
ans =
F
I
Suchen
−−> f i n d ( x > 0 )
ans =
1.
2.
4.
Scilab Funktionen
J. Koch, 28. Oktober 2015
8 / 15
Relationale und logische Operatoren
I
Relationale Operatoren
==, ~=, <, >, <=, >=
I
Beispiele
−−> x = 1 ;
−−> x > 0
ans =
T
−−> x = [ 4 7 −1 1 ] ;
−−> x > 0
ans =
T T F T
−−> a b s ( x ) ~= 1
ans =
T T F F
I
Logische Operatoren
&, | , ~ ,
mtlb_any , m t l b _ a l l
I
Beispiele
−−> x < 0 | x > 3
ans =
T T T F
−−> m t l b _ a l l ( x > 0 )
ans =
F
I
Suchen
−−> f i n d ( x > 0 )
ans =
1.
2.
4.
Scilab Funktionen
J. Koch, 28. Oktober 2015
8 / 15
Relationale und logische Operatoren
I
Relationale Operatoren
==, ~=, <, >, <=, >=
I
Beispiele
−−> x = 1 ;
−−> x > 0
ans =
T
−−> x = [ 4 7 −1 1 ] ;
−−> x > 0
ans =
T T F T
−−> a b s ( x ) ~= 1
ans =
T T F F
I
Logische Operatoren
&, | , ~ ,
mtlb_any , m t l b _ a l l
I
Beispiele
−−> x < 0 | x > 3
ans =
T T T F
−−> m t l b _ a l l ( x > 0 )
ans =
F
I
Suchen
−−> f i n d ( x > 0 )
ans =
1.
2.
4.
Scilab Funktionen
J. Koch, 28. Oktober 2015
8 / 15
Relationale und logische Operatoren
I
Relationale Operatoren
==, ~=, <, >, <=, >=
I
Beispiele
−−> x = 1 ;
−−> x > 0
ans =
T
−−> x = [ 4 7 −1 1 ] ;
−−> x > 0
ans =
T T F T
−−> a b s ( x ) ~= 1
ans =
T T F F
I
Logische Operatoren
&, | , ~ ,
mtlb_any , m t l b _ a l l
I
Beispiele
−−> x < 0 | x > 3
ans =
T T T F
−−> m t l b _ a l l ( x > 0 )
ans =
F
I
Suchen
−−> f i n d ( x > 0 )
ans =
1.
2.
4.
Scilab Funktionen
J. Koch, 28. Oktober 2015
8 / 15
Relationale und logische Operatoren
I
Relationale Operatoren
==, ~=, <, >, <=, >=
I
Beispiele
−−> x = 1 ;
−−> x > 0
ans =
T
−−> x = [ 4 7 −1 1 ] ;
−−> x > 0
ans =
T T F T
−−> a b s ( x ) ~= 1
ans =
T T F F
I
Logische Operatoren
&, | , ~ ,
mtlb_any , m t l b _ a l l
I
Beispiele
−−> x < 0 | x > 3
ans =
T T T F
−−> m t l b _ a l l ( x > 0 )
ans =
F
I
Suchen
−−> f i n d ( x > 0 )
ans =
1.
2.
4.
Scilab Funktionen
J. Koch, 28. Oktober 2015
8 / 15
If-Bedingung
I
if-Bedingung
i f e x p r e s s i o n then
statements
e l s e i f e x p r e s s i o n then
statements
else
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort
then weglassen
function m = fakultaet1 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
if n < 0
e r r o r ( ’ no n a t u r a l number ! ’ ) ;
e l s e i f n == 0
m = 1;
else
m = n∗ f a k u l t a e t 1 ( n −1);
end
I
Der elseif- und else-Zweig
ist optional
endfunction
scilab/fakultaet1.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
9 / 15
If-Bedingung
I
if-Bedingung
i f e x p r e s s i o n then
statements
e l s e i f e x p r e s s i o n then
statements
else
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort
then weglassen
function m = fakultaet1 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
if n < 0
e r r o r ( ’ no n a t u r a l number ! ’ ) ;
e l s e i f n == 0
m = 1;
else
m = n∗ f a k u l t a e t 1 ( n −1);
end
I
Der elseif- und else-Zweig
ist optional
endfunction
scilab/fakultaet1.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
9 / 15
If-Bedingung
I
if-Bedingung
i f e x p r e s s i o n then
statements
e l s e i f e x p r e s s i o n then
statements
else
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort
then weglassen
function m = fakultaet1 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
if n < 0
e r r o r ( ’ no n a t u r a l number ! ’ ) ;
e l s e i f n == 0
m = 1;
else
m = n∗ f a k u l t a e t 1 ( n −1);
end
I
Der elseif- und else-Zweig
ist optional
endfunction
scilab/fakultaet1.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
9 / 15
Case-Fallunterscheidung
I
select-Bedingung
select expression
case e x p r e s s i o n then
statements
case e x p r e s s i o n then
statements
...
else
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort
then weglassen
function m = fakultaet2 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
select n
case 0
m = 1;
case 1
m = 1;
else
m = n∗ f a k u l t a e t 2 ( n −1);
end
endfunction
scilab/fakultaet2.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
10 / 15
Case-Fallunterscheidung
I
select-Bedingung
select expression
case e x p r e s s i o n then
statements
case e x p r e s s i o n then
statements
...
else
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort
then weglassen
function m = fakultaet2 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
select n
case 0
m = 1;
case 1
m = 1;
else
m = n∗ f a k u l t a e t 2 ( n −1);
end
endfunction
scilab/fakultaet2.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
10 / 15
While-Schleife
I
while-Schleife
w h i l e e x p r e s s i o n do
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort do
weglassen
I
continue überspringt die
restlichen Anweisungen in der
Schleife und beginnt den
nächsten Schleifendurchlauf
I
break beendet den
Schleifendurchlauf
function m = fakultaet3 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
m = 1;
while n > 0
m = n∗m;
n = n −1;
end
endfunction
scilab/fakultaet3.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
11 / 15
While-Schleife
I
while-Schleife
w h i l e e x p r e s s i o n do
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort do
weglassen
I
continue überspringt die
restlichen Anweisungen in der
Schleife und beginnt den
nächsten Schleifendurchlauf
I
break beendet den
Schleifendurchlauf
function m = fakultaet3 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
m = 1;
while n > 0
m = n∗m;
n = n −1;
end
endfunction
scilab/fakultaet3.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
11 / 15
While-Schleife
I
while-Schleife
w h i l e e x p r e s s i o n do
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort do
weglassen
I
continue überspringt die
restlichen Anweisungen in der
Schleife und beginnt den
nächsten Schleifendurchlauf
I
break beendet den
Schleifendurchlauf
function m = fakultaet3 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
m = 1;
while n > 0
m = n∗m;
n = n −1;
end
endfunction
scilab/fakultaet3.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
11 / 15
While-Schleife
I
while-Schleife
w h i l e e x p r e s s i o n do
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort do
weglassen
I
continue überspringt die
restlichen Anweisungen in der
Schleife und beginnt den
nächsten Schleifendurchlauf
I
break beendet den
Schleifendurchlauf
function m = fakultaet3 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
m = 1;
while n > 0
m = n∗m;
n = n −1;
end
endfunction
scilab/fakultaet3.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
11 / 15
For-Schleife
I
for-Schleife
f o r i n d e x = v a l u e s do
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort do
weglassen
function m = fakultaet4 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
m = 1;
I
continue überspringt die
restlichen Anweisungen in der
Schleife und beginnt den
nächsten Schleifendurchlauf
f o r k = n : −1:2
m = k ∗m;
end
I
break beendet den
Schleifendurchlauf
endfunction
scilab/fakultaet4.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
12 / 15
For-Schleife
I
for-Schleife
f o r i n d e x = v a l u e s do
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort do
weglassen
function m = fakultaet4 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
m = 1;
I
continue überspringt die
restlichen Anweisungen in der
Schleife und beginnt den
nächsten Schleifendurchlauf
f o r k = n : −1:2
m = k ∗m;
end
I
break beendet den
Schleifendurchlauf
endfunction
scilab/fakultaet4.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
12 / 15
For-Schleife
I
for-Schleife
f o r i n d e x = v a l u e s do
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort do
weglassen
function m = fakultaet4 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
m = 1;
I
continue überspringt die
restlichen Anweisungen in der
Schleife und beginnt den
nächsten Schleifendurchlauf
f o r k = n : −1:2
m = k ∗m;
end
I
break beendet den
Schleifendurchlauf
endfunction
scilab/fakultaet4.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
12 / 15
For-Schleife
I
for-Schleife
f o r i n d e x = v a l u e s do
statements
end
I
Wenn die statements in einer
neuen Zeile beginnen, dann
kann man das Schlüsselwort do
weglassen
function m = fakultaet4 (n)
//
// i n p u t :
// n . . . n a t u r a l number
//
// o u t p u t :
// m . . . n !
m = 1;
I
continue überspringt die
restlichen Anweisungen in der
Schleife und beginnt den
nächsten Schleifendurchlauf
f o r k = n : −1:2
m = k ∗m;
end
I
break beendet den
Schleifendurchlauf
endfunction
scilab/fakultaet4.sci
Scilab Funktionen
J. Koch, 28. Oktober 2015
12 / 15
Ein- und Ausgabeargumente
I
Dimension prüfen
i f any ( s i z e ( x)~= s i z e ( y ) )
error ( ’ . . . ’ );
end
I
Dimension anpassen
x = x (:);
y = y (:);
I
Anzahl Eingabeargumente
argn (2)
I
Anzahl Ausgabeargumente
argn (1)
Scilab Funktionen
J. Koch, 28. Oktober 2015
13 / 15
Ein- und Ausgabeargumente
I
Dimension prüfen
i f any ( s i z e ( x)~= s i z e ( y ) )
error ( ’ . . . ’ );
end
I
Dimension anpassen
x = x (:);
y = y (:);
I
Anzahl Eingabeargumente
argn (2)
I
Anzahl Ausgabeargumente
argn (1)
Scilab Funktionen
J. Koch, 28. Oktober 2015
13 / 15
Ein- und Ausgabeargumente
I
Dimension prüfen
i f any ( s i z e ( x)~= s i z e ( y ) )
error ( ’ . . . ’ );
end
I
Dimension anpassen
x = x (:);
y = y (:);
I
Anzahl Eingabeargumente
argn (2)
I
Anzahl Ausgabeargumente
argn (1)
Scilab Funktionen
J. Koch, 28. Oktober 2015
13 / 15
Ein- und Ausgabeargumente
I
Dimension prüfen
i f any ( s i z e ( x)~= s i z e ( y ) )
error ( ’ . . . ’ );
end
I
Dimension anpassen
x = x (:);
y = y (:);
I
Anzahl Eingabeargumente
argn (2)
I
Anzahl Ausgabeargumente
argn (1)
Scilab Funktionen
J. Koch, 28. Oktober 2015
13 / 15
Kontrollfragen
1. Erklären Sie den Unterschied
zwischen einem Skript und
einer Funktion.
2. Erklären Sie den Unterschied
zwischen Variablen im
Workspace, lokalen Variablen
einer Funktion und globalen
Variablen.
3. Wozu benötigt man den
exec-Befehl?
4. Geben Sie einen Befehl an, mit
dem man überprüft, ob sich
die entsprechenden Elemente
zweier Matrizen um höchstens
1 unterscheiden.
5. Schreiben Sie eine Funktion,
die eine Ausgleichsparabel
y = a x2 + b x + c
durch die Punkte mit den
Koordinaten x und y
berechnet.
6. Schreiben Sie eine Funktion,
die die Punkte mit den
Koordinaten x und y und die
Ausgleichsparabel
y = a x2 + b x + c
grafisch darstellt.
Scilab Funktionen
J. Koch, 28. Oktober 2015
14 / 15
Kontrollfragen
7. Die Formel zur Berechnung der
Füllmenge eines bis zur Höhe h
gefüllten liegenden Tanks in
Form eines Kreiszylinders mit
Radius r und Länge L lautet
Quelle: Wikipedia
!
√
2
r
−
h
2rh
−
h
V = r 2 L arccos
− (r − h)
.
r
r2
Schreiben Sie eine Funktion
f u n c t i o n V = volumen ( r , L , h )
die das Volumen in Abhängigkeit der Eingabewerte r , L und h
berechnet. Testen Sie die Funktion für verschiedene Werte von r , L
und h.
Scilab Funktionen
J. Koch, 28. Oktober 2015
15 / 15