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 22:16]
127.0.0.1 Externe Bearbeitung
skript:funktionen [2017/01/09 15: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 15:22 (Externe Bearbeitung)