Benutzer-Werkzeuge

Webseiten-Werkzeuge


Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
skript:funktionen [2015/08/18 20:16]
127.0.0.1 Externe Bearbeitung
skript:funktionen [2017/01/09 14:22] (aktuell)
milky-way [Parameter (Mehrzahl)]
Zeile 1: Zeile 1:
-=  Funktionen = +======  Funktionen =====
-:Funktionen im Skript werden dazu benutzt um Abläufe zu automatisieren und eure Geschichte im Spiel zu gestalten. +Funktionen im Skript werden dazu benutzt um Abläufe zu automatisieren und eure Geschichte im Spiel zu gestalten. 
-:Sie können //Parameter// und einen //Rückgabewert// haben. Einfache Funktionen lassen sich betrachten wie ein Todo-Zettel mit Aufgaben, die noch zu erledigen sind. +Sie können //Parameter// und einen //Rückgabewert// haben. Einfache Funktionen lassen sich betrachten wie ein Todo-Zettel mit Aufgaben, die noch zu erledigen sind. 
-:Wenn der Zettel einmal aufgeschrieben wurde, kann er immer wieder abgearbeitet werden, indem sein [[Skript:Bezeichner|Name]] aufgerufen wird.+Wenn der Zettel einmal aufgeschrieben wurde, kann er immer wieder abgearbeitet werden, indem sein [[Skript:Bezeichner|Name]] aufgerufen wird.
  
-==  Definition == +=====  Definition ===== 
-<html> +<code>func typ Name ( 
-<head> +   //hier, zwei Parameter. Bei einer Parameteranzahl zwischen 0 und 8 gibt es keine Probleme 
-<title>Exported from Notepad++</title> +   var typ ParameterA, 
-<style type="text/css"> +   var KLASSEN_TYP ParameterB 
-span { +) { 
- font-family: 'Courier New'; +   //TODO Liste, der Aufgabenzettel für die Engine 
- font-size: 12pt; +   //Variablenzuweisung 
- color: #CCCCCC; +   Questvariable = Konstante; 
-+    
-.sc0 { +   //Eigenschaftenzuweisung 
-+   ParameterB.eigenschaft[ParameterA] = Andere_Konstante; 
-.sc2 { +    
- font-style: italic; +   //Der Rückgabewert 
- color: #999999; +   return Wert_Vom_Typ_typ; 
-+};</code>
-.sc4 { +
- color: #CC9900; +
-+
-.sc5 { +
- font-weight: bold; +
- color: #CC9900; +
-+
-.sc10 { +
- font-weight: bold; +
- color: #0099CC; +
-+
-.sc11 { +
-+
-.sc12 { +
- font-weight: bold; +
- color: #999999; +
-+
-.sc13 { +
- font-weight: bold; +
- color: #999999; +
-+
-</style> +
-</head> +
-<body> +
-<center><div style="text-align: left; white-space: pre; line-height: 1; background: #333333; border:medium solid black; margin-right: 8px; margin-left: 8px; padding: 3px; "><span class="sc4">0001</span><span class="sc0"> </span><span class="sc5">func</span><span class="sc0"> </span><span class="sc11">typ</span><span class="sc0"> </span><span class="sc11">Name</span><span class="sc0"> </span><span class="sc10">(</span><span class="sc0"> +
-</span><span class="sc4">0002</span><span class="sc0">    </span><span class="sc2">//hier, zwei Parameter. Bei einer Parameteranzahl zwischen 0 und 8 gibt es keine Probleme</span><span class="sc0"> +
-</span><span class="sc4">0003</span><span class="sc0">    </span><span class="sc5">var</span><span class="sc0"> </span><span class="sc11">typ</span><span class="sc0"> </span><span class="sc11">ParameterA</span><span class="sc10">,</span><span class="sc0"> +
-</span><span class="sc4">0004</span><span class="sc0">    </span><span class="sc5">var</span><span class="sc0"> </span><span class="sc11">KLASSEN_TYP</span><span class="sc0"> </span><span class="sc11">ParameterB</span><span class="sc0"> +
-</span><span class="sc4">0005</span><span class="sc0"> </span><span class="sc10">)</span><span class="sc0"> </span><span class="sc12">{</span><span class="sc0"> +
-</span><span class="sc4">0006</span><span class="sc0">    </span><span class="sc2">//TODO Liste, der Aufgabenzettel für die Engine</span><span class="sc0"> +
-</span><span class="sc4">0007</span><span class="sc0">    </span><span class="sc2">//Variablenzuweisung</span><span class="sc0"> +
-</span><span class="sc4">0008</span><span class="sc0">    </span><span class="sc11">Questvariable</span><span class="sc0"> </span><span class="sc10">=</span><span class="sc0"> </span><span class="sc11">Konstante</span><span class="sc10">;</span><span class="sc0"> +
-</span><span class="sc4">0009</span><span class="sc0">     +
-</span><span class="sc4">0010</span><span class="sc0">    </span><span class="sc2">//Eigenschaftenzuweisung</span><span class="sc0"> +
-</span><span class="sc4">0011</span><span class="sc0">    </span><span class="sc11">ParameterB</span><span class="sc10">.</span><span class="sc11">eigenschaft</span><span class="sc10">[</span><span class="sc11">ParameterA</span><span class="sc10">]</span><span class="sc0"> </span><span class="sc10">=</span><span class="sc0"> </span><span class="sc11">Andere_Konstante</span><span class="sc10">;</span><span class="sc0"> +
-</span><span class="sc4">0012</span><span class="sc0">     +
-</span><span class="sc4">0013</span><span class="sc0">    </span><span class="sc2">//Der Rückgabewert</span><span class="sc0"> +
-</span><span class="sc4">0014</span><span class="sc0">    </span><span class="sc5">return</span><span class="sc0"> </span><span class="sc11">Wert_Vom_Typ_typ</span><span class="sc10">;</span><span class="sc0"> +
-</span><span class="sc4">0015</span><span class="sc0"> </span><span class="sc13">}</span><span class="sc10">;</span></div></center></body> +
-</html> +
-==  Erklärung == +
-*hellgrau sind [[Skript:Bezeichner]]. +
-*gold und fett sind [[Skript:Daedalus|Schlüsselworte]] +
-*dunkelgrau und kursiv sind [[Skript:Daedalus|Kommentare]], die vom [[Skript:Parser]] ignoriert werden. +
-*alle übrigen sind [[Skript:Daedalus|Symbole]] bzw. [[Skript:Daedalus|Operatoren]]+
  
-||typ||Bezeichnet einen Werttyp.||int, float, string, void (kein Rückgabewert), C_NPC, C_ITEM|+^Code ^Beschreibung ^Möglicher Wert^ 
-||KLASSEN_TYP||Bezeichnet einen Werttyp, der eine [[Skript:Klassen|Klasse]] ist.||C_NPC, C_ITEM, C_INFO|+|typ|Bezeichnet einen Werttyp.|int, float, string, void (kein Rückgabewert), C_NPC, C_ITEM| 
-||Name||Bezeichnet die Funktion. Ihr Name muss neu sein.||FunktionA, ABC_Funktion, A_Funktion_001|+|KLASSEN_TYP|Bezeichnet einen Werttyp, der eine [[Skript:Klassen|Klasse]] ist.|C_NPC, C_ITEM, C_INFO| 
-||ParameterA, ParameterB||Bezeichnen die Parameter einer Funktion.||siehe oben|+|Name|Bezeichnet die Funktion. Ihr Name muss neu sein.|FunktionA, ABC_Funktion, A_Funktion_001| 
-||Questvariable||Bezeichnet eine globale Variable||siehe [[Skript:Variablen]]|+|ParameterA, ParameterB|Bezeichnen die Parameter einer Funktion.|siehe oben| 
-||||Konstante, Andere_Konstante||siehe [[Skript:Konstanten]]||+|Questvariable|Bezeichnet eine globale Variable|siehe [[Skript:Variablen]]| 
 +|Konstante, Andere_Konstante|Bezeichnet zwei globale Konstanten|siehe [[Skript:Konstanten]]|
  
-:Welche Bedeutung die Anweisungen **Variablen**- bzw. **Eigenschaftenzuweisung** und **return** haben steht im Abschnitt [[Skript:Operatoren]]+Welche Bedeutung die Anweisungen **Variablen**- bzw. **Eigenschaftenzuweisung** und **return** haben steht im Abschnitt [[Skript:Operatoren]].
-====  Parameter (Mehrzahl) ==== +
-:[[Skript:Funktionen|Zurück zum //Aufgabenzettel//]]. Es wurde gesagt, dass die Aufgabenzettel beliebig oft abgearbeitet werden können. Wenn allerdings sich das Abarbeiten nicht //irgendwie// verallgemeinern ließe, dann müssten wir sehr viele Zettel bzw. Funktionen schreiben. +
-:Jedoch, glücklicherweise lassen sie sich mittels Parameter verallgemeinern, d.h. ein Zettel kann für mehr als eine Situation [[Skript:Funktionen|aufgerufen]] werden.+
  
-:**Beispiel** +=====  Parameter (Mehrzahl) ===== 
-:Deine Mutter schreibt **einen** Zettel __func void Kind_Kauft_bei_Aldi(Kind,Produkt,Anzahl) {}; __ um jedes ihrer Kinder, mit dem Einkauf bei Aldi Süd eines beliebigen Produktes in beliebiger Anzahl zu beauftragen+[[Skript:Funktionen|Zurück zum Aufgabenzettel]]. Es wurde gesagtdass die Aufgabenzettel beliebig oft abgearbeitet werden können. Wenn allerdings sich das Abarbeiten nicht //irgendwie// verallgemeinern ließedann müssten wir sehr viele Zettel bzw. Funktionen schreiben
-:Noch allgemeiner formuliert lautete ihr Zettel __func void Kind_Kauft_bei(Kind,Produkt,Anzahl,Haendler) {}; __+Jedochglücklicherweise lassen sie sich mittels Parameter verallgemeinernd.h. ein Zettel kann für mehr als eine Situation [[Skript:Funktionen|aufgerufen]] werden.
  
-====  Funktionsaufruf ==== +**Beispiel** 
-:Jede Funktion kann aufgerufen werden. Das heißtdass die Aufgaben auf dem Zettel abgearbeitet werden. +Deine Mutter schreibt **einen** Zettel ''func void Kind_Kauft_bei_Aldi(Kind,Produkt,Anzahl) {};'' um jedes ihrer Kinder, mit dem Einkauf bei Aldi Süd eines beliebigen Produktes in beliebiger Anzahl zu beauftragen. 
-:Beim Aufruf schreibt man den Namen des Zettels bzw. der Funktion und in runden Klammern - mit oder ohne Leerzeichen - danach die zu //übergebenden// Parameter getrennt durch Kommata (Kommas)Der Zettel wird dann mit den übergebenen Parametern abgearbeitet.+Noch allgemeiner formuliert lautete ihr Zettel ''func void Kind_Kauft_bei(Kind,Produkt,Anzahl,Haendler) {};''
  
-:**Beispiel (fortgesetzt)** +=====  Funktionsaufruf ===== 
-:Deine Mutter schickt **dich** zum **Bioladen** um **zwölf** **Bioeier** zu kaufen. Dazu ruft sie //ihren// Zettel auf: __Kind_Kauft_Bei(Du,Bioeier,12,Bioladen);__ +Jede Funktion kann aufgerufen werden. Das heißt, dass die Aufgaben auf dem Zettel abgearbeitet werden. 
-:Dabei ist natürlich wichtig, dass die Parameter in der richtigen Reihenfolge übergeben, d.haufgeschrieben werden. Außerdem müssem und können nur dann Parameter übergeben, wenn die [[Skript:Funktionen|Funktionsdefinition]] sie auch enthält und zwar **genau** so viele die Funktionsdefinition enthält und vom gleichen [[Skript:Daedalus|Typ]]!+Beim Aufruf schreibt man den Namen des Zettels bzw. der Funktion und in runden Klammern - mit oder ohne Leerzeichen - danach die zu //übergebenden// Parameter getrennt durch Kommata (Kommas). Der Zettel wird dann mit den übergebenen Parametern abgearbeitet.
  
-====  Rückgabewert, englisch: return value ==== +**Beispiel (fortgesetzt)** 
-:Manchmal möchte man eine //Antwort// über das //Ergebnis// der Funktion erhalten. Dazu muss in der Funktionsdefinition der AntworttypErgebnistyp oder Rückgabetyp festgelegt werden. Zulässig sind alle [[Skript:Daedalus|Typen]] oder __void__, welches soviel bedeutet wiekein Rückgabewert.+Deine Mutter schickt **dich** zum **Bioladen** um **zwölf** **Bio-Eier** zu kaufen. Dazu ruft sie //ihren// Zettel auf: ''Kind_Kauft_Bei(Du,Bioeier,12,Bioladen);'' 
 +Dabei ist natürlich wichtig, dass die Parameter in der richtigen Reihenfolge übergebend.h. aufgeschrieben werden. Außerdem müssen und können nur dann Parameter übergeben, wenn die [[Skript:Funktionen|Funktionsdefinition]] sie auch enthält und zwar **genau** so viele die Funktionsdefinition enthält und vom gleichen [[Skript:Daedalus|Typ]]!
  
-:**Beispiel (fortgesetzt)** +=====  Rückgabewert, englischreturn value ===== 
-:Deine Mutter schreibt auf ihren Zettel, dass sie eine Zahl bzw. //int// als Antwort möchte. Die Zahl ist der Gesamteinkaufspreis in //Eurocent//. +Manchmal möchte man eine //Antwort// über das //Ergebnis// der Funktion erhaltenDazu muss in der Funktionsdefinition der AntworttypErgebnistyp oder Rückgabetyp festgelegt werdenZulässig sind alle [[Skript:Daedalus|Typen]] oder ''void''welches soviel bedeutet wiekein Rückgabewert.
-:__func int Kind_Kauft_Bei_Gesamtpreis(Kind,Produkt,Anzahl,Haendler) { return Gesamtpreis; };__ +
-:Es gehört zum guten Ton, dass die Mutter sich diese Antwort merkt. +
-:__var int ausgegeben;__ +
-:__ausgegeben = ausgegeben + Kind_Kauft_Bei_Gesamtpreis(Du,Bioeier,12,Bioladen);__ +
-:In diesem Beispiel merkt sich deine Mutter, wieviel ihre Kinder insgesamt bisher ausgegeben haben, in dem sie zu dem was bisher ausgegeben wurde das hinzuzählt was zuletzt ausgegeben wurde.+
  
-:Wenn die //Antwort// der Funktion mittels der Anweisung __return Wert_vom_Werttyp_typ;__ zurückgegeben wirddann wird sofort die weitere Abarbeitung des //Todo-Zettels// eingestelltbeendet.+**Beispiel (fortgesetzt)** 
 +Deine Mutter schreibt auf ihren Zettel, dass sie eine Zahl bzw. ''int'' als Antwort möchte. Die Zahl ist der Gesamteinkaufspreis in //Eurocent//
 +<code>func int Kind_Kauft_Bei_Gesamtpreis(Kind,Produkt,Anzahl,Haendler) { return Gesamtpreis};</code> 
 +Es gehört zum guten Tondass die Mutter sich diese Antwort merkt. 
 +<code>var int ausgegeben; 
 +ausgegeben = ausgegeben + Kind_Kauft_Bei_Gesamtpreis(Du,Bioeier,12,Bioladen);</code> 
 +In diesem Beispiel merkt sich deine Mutter, wieviel ihre Kinder insgesamt bisher ausgegeben habenin dem sie zu dem was bisher ausgegeben wurde das hinzuzählt was zuletzt ausgegeben wurde.
  
-=  Siehe auch = +Wenn die //Antwort// der Funktion mittels der Anweisung ''return Wert_vom_Werttyp_typ;'' zurückgegeben wird, dann wird sofort die weitere Abarbeitung des //Todo-Zettels// eingestellt, beendet. 
-:[[Skript:Daedalus]], [[Skript:Funktionstypen]]+ 
 +=====  Siehe auch ====
 +[[Skript:Daedalus]], [[Skript:Funktionstypen]]
skript/funktionen.1439928964.txt.gz · Zuletzt geändert: 2017/01/09 14:22 (Externe Bearbeitung)