of {$slidecount} ½ {$title}, {$author}

INP (08)

Prof. Dr.-Ing. S. Gössner

FH Dortmund - University of Applied Sciences

Inhalt

Prozedurale Programmierung

Die Zerlegung eines Programms in kleine, logische zusammengehörende Blöcke wird prozedurale Programmierung genannt. Eine prozedurale Programmiersprache besitzt im Rahmen ihres Sprachumfangs die Möglichkeit zur Definition sogenannter Prozeduren.

Im Sinne dieser Definition ist Javascript eine prozedurale Programmiersprache.

Function

Javascript unterstützt mittels des reservierten Worts function das Konzept der prozeduralen Programmierung.

Eine Funktion

Funktionsdefinition

Syntax

function Name(arg1, arg2, ..., argN) {
   Anweisungen;
   return wert;
}

Beispiele zur Funktionsdefinition

function Square(x) {
   return x*x;
}

function InputNumber(prompt) {
   var num;
   while (isNaN(num = parseFloat(window.prompt(prompt, ""))))
      window.alert("input valid number please!");
   return num;

var f1 = function(x) { return 2*x*x*x - 3*x*x + 4*x - 5; },
    f2 = function(x) { return 2*x*x - 3*x + 4; };

var Pkt = {
   x: 10,
   y: 12,
   len: function() { return Math.sqrt(Pkt.x*Pkt.x + Pkt.y*Pkt.y); }
};

Funktionsaufruf

Syntax

Name(expr1, expr2, ..., exprN)

Beispiele zum Funktionsaufruf

function f(a,b) { return a * b; }

f(1+2, 9%5);            // 12
f(Math.sqrt(36), 6-9);  // -18
f(42);                  // NaN
typeof f(1,2);          // "number"


function f(a,b,c) { alert(""+a+b+c); }

f(1,2,3);         // "123"
f(1,2);           // "12undefined"
f(1,,3);          // syntax error
typeof f(1,2,3);  // undefined

Funktionen und lokale Variablen

Beispiel

var x=42, y=12, gruss="Hallo", a="a";
function Test(a, b) {
   var y=24, gruss="Helau";
   alert([x,y,a,b,gruss]);
}
Test("b","c");           // 42,24,b,c,Helau

Wertübergabe

Was passiert mit dem Wert einer Variablen, die als Argument an eine Funktion übergeben und innerhalb der Funktion verändert wird?

Beispiel

var n = 42,
    w = true,
    s = "Hallo",
    arr = [1,2,3],
    pnt = {x:25, y:12};

function f(a,b,c,d,e) {
   a = 43;
   b = false;
   c = "Helau";
   d[0] = -1;
   d.push(4);
   e.x = 24;
   e.z = 0;
}

f(n,w,s,arr,pnt);

alert(n);                         // 42
alert(w);                         // true
alert(s);                         // "Hallo"
alert(d);                         // -1,2,3,4
alert(pnt.x+","+pnt.y+","+pnt.z); // 24,12,0

Funktionen als Objekte

Beispiele

var f1 = function(x) { return 2*x*x*x - 3*x*x + 4*x - 5; },
    f2 = function(x) { return 2*x*x - 3*x + 4; };

function Calculate(x, f) { return f(x); }

Calculate(2, f1);  // 7
Calculate(2, f2);  // 6

var arr = [7,4,5,12,3];
arr.sort(function(a,b){ return a-b; });  // numerisch aufsteigend

Rekursive Funktionen

Funktionen, die sich selbst aufrufen, heissen rekursive Funktionen. Die Rekursion ist häufig eine Alterbative zur Iteration (Bearbeitung mittrls Schleife). Die Rekursion muss eine Abbruchbedingung enthalten, um eine unendliche Rekursion zu vermeiden.

Beispiel

function Faculty(n) {
   if (n > 1)
      return n*Faculty(n-1); 
   else
      return 1;
}

function Fibonacci(n) {
   if (n > 1)
      return Fibonacci(n-2) + Fibonacci(n-1);
   else
     return 1;
}

for (var i=1; i<6; i++)
   document.write(Faculty(i) + ", ");    // 1, 2, 6, 24, 120,

for (var i=0; i<5; i++)
   document.write(Fibonacci(i) + ", ");  // 1, 1, 2, 3, 5,