home *** CD-ROM | disk | FTP | other *** search
/ Action! Club Magazin 3B / Action_Club_Magazin_3_1987_Action_User_Group_Side_B.atr / proc.krs < prev    next >
Text File  |  2023-02-26  |  4KB  |  1 lines

  1. PROC.KRS¢*************************************¢*                                   *¢*         Der Action! Kurs          *¢*                                   *¢*             TEIL IV               *¢*                                   *¢* >>Prozeduren                      *¢*                                   *¢*              und                  *¢*                                   *¢*                   Funktionen<<    *¢*                                   *¢*                                   *¢*   (C)1987 by Action! User Group   *¢*             Lueneburg             *¢*                                   *¢*************************************¢¢¢¢¢¢Jeder wird wohl den Begriff "Unter-¢programm" schon mal gehoert haben.¢Das sind (sollen manchmal sein) in ¢der Regel universelle Programmteile,¢die von verschiedenen Stellen im ¢Programm aus angesprungen werden¢koennen.¢(z.B.: Ein Soundeffekt, der oft ver-¢wendet wird ,schreibt man lieber als¢Unterprogramm als jedesmal neu...   ¢spart ja schliesslich auch Speicher.¢¢Der PROC Befehl sollte aus den vor-¢angegangenen Kurs-teilen ja schon¢bekannt sein. Innerhalb eines ganzen¢Programmes kann man nun mehrere¢PROCs schreiben(Das Action! Programm¢besteht ja sowieso nur aus PROCs und¢FUNCs (Funktionen). Die PROCs koennen¢auch andere PROCs und FUNCs auf-¢rufen und diese wiederum wieder ¢welche...solange der Stack reicht.¢¢Aber was hat das nun mit Unterpro-¢grammen zu tun. Nun ja: Jede PROC¢oder FUNC ist als Unterprogramm an-¢zusehen, da jede PROC ja auch von¢jeder anderen PROC aus angesprungen¢werden kann.¢Da gibt es jedoch einen Haken: Man¢kann in Action! nicht eine PROC auf-¢rufen, die erst weiter unten im Pro-¢grammtext definiert wird. Also nicht:¢¢¢  PROC ZAPPER()¢¢   POWER()  ; Aufruf einer PROC¢            ; die aber erst spaeter¢            ; folgt.¢  RETURN¢¢  PROC POWER()¢¢  RETURN  ¢ ¢¢Wuerde man dieses Programm so ver-¢suchen zu compilieren, wuerde man¢ERROR-8 vom Compiler bekommen(Var-¢iable not declared).¢(Auch die Prozedurnamen werden als¢Variable angesehen(Sie enthalten¢die Speicherstelle, ab der die PROC¢steht).¢¢So darf man also nur Prozeduren auf-¢rufen, die vorher schon definiert¢wurden.¢¢>>>Wir erinnern uns: Die letzte PROC¢>>>wird nach dem Compilieren und dem¢>>>RUN Kommando als erstes aufgerufen.¢¢In einer PROC kann nun stehen, was¢gefaellt. Also Schleifen,Bedingungen,¢andere Prozeduraufruefe u.s.w...¢¢Nun gibt aber noch Parameter:¢Was ist den das??? Das sind Variablen¢oder konstante Werte ,die an PROcs¢uebergeben werden koennen. Dazu zu-¢naechst ein Beispiel:¢¢BYTE NUM,I¢¢ PROC PRINTNUMBER(BYTE PARAMETER)¢¢  PRINTBE(PARAMETER)¢¢ RETURN¢¢ PROC DEMO()¢¢  PRINTNUMBER(100) ; KONSTANTER PARA-¢                   ; METER¢¢  FOR I=1 TO 10    ; HIER WERDEN VAR-¢                   ; IABLE PARAMETER¢   DO              ; UEBERGEBEN¢    PRINTNUMBER(I)¢   OD¢¢ RETURN¢¢¢Nun wird endlich auch die Bedeutung  ¢der KLAMMERN hinter dem Prozedurnamen¢klar. Vorher wurde immer nur "()"¢geschrieben, um dem Compiler mitzu-¢teilen, dass keine Parameter ueber-¢geben werden.¢¢Der Aufruf der PROC PRINTNUMBER ist ¢dann ganz logisch. Aufpassen muss¢man nur, dass auch dieselben Var- ¢iablenTYPEN uebergeben werden, also¢nicht statt einer BYTE eine CARD¢Variable uebergeben. Das kommt zu¢schlechten Ergebnissen...........¢¢Man kann natuerlich auch mehrere ¢Parameter uebergeben. Die Parameter¢koennen auch von unterschiedlichen¢Typen sein. z.B.:¢¢ PROC PRINTNUMBERS(BYTE P1,CARD P2)¢¢ Aufgerufen wird dann entsprechend:¢¢ PRINTNUMBERS(100,2000)¢¢Oder eben auch Variablen (TYPEN¢nicht verwechseln.¢¢ ¢Wie die Parameter innerhalb der PROC¢benutzt werden koennen wurde ja¢schon im obigen Beispiel gezeigt:¢Die Parameter koennen wie ganz¢normale Variablen in der PROC be-¢nutzt werden. Aber auch nur innerhalb¢dieser PROC.¢¢Und damit sind wir gleich beim ¢naechsten Thema angelangt:¢¢ GLOBALE und LOKALE VAriablen¢¢bevor wir uns den FUNCtionen zu-¢wenden.¢¢Der Kurs geht weiter mit:¢¢           GLOBAL.KRS¢