Kwadraat

Introductie

Misschien weet je nog dat we gebruik maakten van de ingebouwde Square Root-functie SQR. Het is geweldig dat BASIC deze ingebouwde functies heeft zoals SQR, LEFT, MID, RIGHT, LEN, enz. Er zijn er nog veel meer, zoals COS, SIN, TAN, ATN, net als op een rekenmachine.

Maar soms merk je op dat een functie die je wilt gebruiken niet deel uitmaakt van de taal. Jammer! In dat geval kan je proberen om zelf die functie te maken. Het handige is dat dit je in de toekomst kan helpen en tijd besparen, omdat je de functies opnieuw kan gebruiken. Hergebruik betekent dat je functies maakt die in veel programma's kunnen worden toegepast. Daarmee kan je een snellere, betere programmeur worden!

Een functie wordt gemaakt op de volgende manier:

FUNCTION NAME(ARGUMENTS)
NAME = ...
END FUNCTION

'NAME' is de naam van de functie, en de argumenten zijn de variabelen die de functie gaat gebruiken, gescheiden door komma's.

Voorbeeld
FUNCTION TELOP(A, B)
TELOP = A + B
END FUNCTION
Dit is een nogal domme functie, omdat het zo eenvoudig is. Om 2 getallen op te tellen heb je in BASIC geen nieuwe functie nodig natuurlijk.

Om een functie toe te passen geef je de naam, en tussen haakjes de beginwaarden voor de functie. Je kan hierbij zowel variabelen als constanten gebruiken.
Voorbeeld
SUM = TELOP(10,20) ' becomes 30
TOTAL = TELOP(SUM, 10) ' becomes 40
ONE_MORE = TELOP(TOTAL, 1) ' becomes 41
Wanneer je een functie gebruikt oftewel aanroept, springt het programma onmiddellijk naar het begin van de functie. Op het einde zal het programma automatisch terugkomen waar het gebleven was. Vervolgens vervangt het de functie-aanroep met de werkelijke waarde die zojuist berekend is.

Omdat een functie zo werkt, kun je het als een 'zwarte doos' zien, waar je iets in plaatst, en er komt iets uit. Je kunt een functie gebruiken zonder zelfs te weten hoe het werkt, zolang je maar weet dat het werkt. Daarom is het altijd belangrijk om een goede naam voor je functie te kiezen.

Laten we een iets moeilijker functie nemen:
FUNCTION HELE_NAAM$(FIRST$, LAST$)
HELE_NAAM$ = LAST$ + ", " + FIRST$
END FUNCTION
Dit is niet alleen een praktische functie, het helpt je ​​code ook leesbaarder te maken::
PRINT HELE_NAAM$("Elliot", "Alderson")
> Alderson, Elliot

Opmerking: Geef je functie aan (declaratie)
In repl en sommige andere versies van BASIC moet je de functie aangeven of declareren voor gebruik. Net als bij de douane moet je voor de computer laten zien wat je precies meeneemt in je programma. Je hebt dit ook al gezien bij de array (met DIM). Dit betekent dat er een extra regel bovenin je programma moet staan met de naam van de functie, als volgt (voorbeeld):
DECLARE FUNCTION ADD(A, B)
Het is dezelfde code als de eerste regel van de functie, met het woord 'declare'.

In games

In games is de functie erg belangrijk omdat er vaak veel berekeningen zijn. Denk bijvoorbeeld aan de berekening van de afstand tussen jezelf en de vijand:
DECLARE FUNCTION Afstand(EX, EY, X, Y)
FUNCTION Afstand(EX, EY, X, Y)
DX = EX - X
DY = EY - Y
Afstand= SQR(DX^2 + DY^2)
END FUNCTION
Dat is een ingewikkelde formule, en je wilt het niet altijd opnieuw maken wanneer je het nodig hebt.

Veel functies samen heet ook wel bibliotheek (logisch, he?). In veel talen kan je een bibliotheek importeren met een commando en direct de functies daaruit gebruiken. Een bibliotheek die kan helpen bij het maken van spelletjes heet een game engine. Tegenwoordig worden de meeste professionele spellen gemaakt met behulp van engines. Game maker en Unity zijn voorbeelden van dergelijke software.

Gamemaker vs Unity

Opdracht

Laten we een korte functie maken om het kwadraat van een getal te berekenen:

  1. Declareer eerst de functie, die 1 argument heeft
  2. Nu komt de definitie (zorg ervoor dat deze met de declaratie overeenkomt)
  3. Bereken het kwadraat met de door jou gekozen methode (X*X of X^2)
  4. Beëindig de functie

Pas op met

  • het openen en sluiten van haakjes
  • hoofdletters en kleine letters

Verwacht resultaat

voorbeeld:
4
9
25
100

Veelgemaakte fouten

  • Verkeerde syntax (schrijfwijze) in de declaratie
  • De declaratie vergeten 
  • Niet voldoende testen

Extra uitdaging

Maak een functie genaamd "OPPERVLAKTE" die de OPPERVLAKTE van een rechthoek berekent

Bronnen


(Er zijn nog geen discussies in dit forum)