Skip to content

Commit f4e5a41

Browse files
committed
translate /language/ and /resources/ to dutch
1 parent 13f766b commit f4e5a41

File tree

90 files changed

+3566
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+3566
-0
lines changed

frontend/i18n/nl/docusaurus-plugin-content-docs/current/scripting/language/ControlStructures.md

Lines changed: 454 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
---
2+
title: "Trefwoorden: Directives"
3+
sidebar_label: "Trefwoorden: Directives"
4+
---
5+
6+
Directives zijn instructies voor de compiler die bepalen hoe jouw broncode wordt geïnterpreteerd.
7+
8+
## `#assert`
9+
10+
Controleert of een constante expressie waar is en stopt anders de compilatie.
11+
12+
```c
13+
#define MOO 10
14+
#assert MOO > 5
15+
```
16+
17+
Dit compileert zonder problemen.
18+
19+
```c
20+
#define MOO 1
21+
#assert MOO > 5
22+
```
23+
24+
Dit compileert niet en geeft een fatale fout, vergelijkbaar met:
25+
26+
```c
27+
#define MOO 1
28+
#if MOO <= 5
29+
#error MOO-controle mislukt
30+
#endif
31+
```
32+
33+
`#assert` zal een fout in de trant van het volgende geven:
34+
35+
```
36+
Assertion failed: 1 > 5
37+
```
38+
39+
## `#define`
40+
41+
`#define` is een tekstvervangingsdirective: waar het eerste symbool van de define voorkomt, wordt de rest ingevoegd.
42+
43+
```c
44+
#define MOO 7
45+
printf("%d", MOO);
46+
```
47+
48+
Wordt:
49+
50+
```c
51+
printf("%d", 7);
52+
```
53+
54+
Defines verdwijnen bij decompilatie omdat ze vóór het compileren verwerkt zijn (preprocessing). Defines hoeven geen getallen te bevatten en kunnen multi-line zijn met een backslash-escape.
55+
56+
## `#else`
57+
58+
Zoals `else`, maar dan voor `#if` in plaats van `if`.
59+
60+
## `#elseif`
61+
62+
Zoals `else if`, maar dan voor `#if`.
63+
64+
```c
65+
#define MOO 10
66+
67+
#if MOO == 9
68+
printf("if");
69+
#elseif MOO == 8
70+
printf("else if");
71+
#else
72+
printf("else");
73+
#endif
74+
```
75+
76+
## `#emit`
77+
78+
Niet in de pawn-lang.pdf-tabel, maar bestaat wel. Hiermee kun je AMX-opcodes inline in je code plaatsen. Syntax: `#emit <opcode> <argument>`. `<argument>` kan een rationaal getal, integer of (lokaal/globaal) symbool zijn.
79+
80+
## `#endif`
81+
82+
Beëindigt een `#if`-blok (vergelijkbaar met een sluitende accolade).
83+
84+
## `#endinput`, `#endscript`
85+
86+
Stopt het inlezen van een enkel bestand.
87+
88+
## `#error`
89+
90+
Stopt de compiler direct met een eigen foutmelding. Zie ook `#assert`.
91+
92+
## `#if`
93+
94+
De preprocessor-tegenhanger van `if`. Hiermee kies je wat wel/niet meegecompileerd wordt. De expressie moet constant zijn.
95+
96+
```c
97+
#define LIMIT 10
98+
99+
#if LIMIT < 10
100+
#error Limiet te laag
101+
#endif
102+
```
103+
104+
## `#include`
105+
106+
Voegt de inhoud van een bestand in op de plek van de include. Er zijn relatieve includes met aanhalingstekens en systeem-includes met `< >` die zoeken in de include-map.
107+
108+
```c
109+
#include "me.pwn"
110+
#include <me>
111+
```
112+
113+
## `#pragma`
114+
115+
Een verzameling opties die het gedrag van je script/compilatie beïnvloeden. Voor SA:MP/open.mp relevante voorbeelden:
116+
117+
| Naam | Waarden | Omschrijving |
118+
| ---------- | ----------------------------- | ------------ |
119+
| codepage | naam/waarde | Stelt de Unicode-codepage in voor strings. |
120+
| compress | 1/0 | Niet ondersteund in SA:MP. |
121+
| deprecated | symbool | Waarschuwing bij gebruik van het symbool. |
122+
| dynamic | waarde (meestal 2^n) | Grootte van stack/heap in cellen. |
123+
| library | dll-naam | Geeft de bibliotheek met natives aan. |
124+
| pack | 1/0 | Verwisselt de betekenis van !"" en "" (packed strings). |
125+
| tabsize | waarde | Tabgrootte voor indentatie-waarschuwingen (SA:MP: 4). |
126+
| unused | symbool | Onderdrukt "symbol is never used" voor het symbool. |
127+
128+
### Deprecated-voorbeeld
129+
130+
```c
131+
new
132+
gOldVariable = 5;
133+
134+
#pragma deprecated gOldVariable
135+
136+
main() {printf("%d", gOldVariable);}
137+
```
138+
139+
## `#tryinclude`
140+
141+
Zoals `#include`, maar faalt niet als het bestand ontbreekt. Handig voor optionele plugins/includes.
142+
143+
## `#undef`
144+
145+
Verwijdert een eerder gedefinieerde macro of constant.
146+
147+
```c
148+
#define MOO 10
149+
printf("%d", MOO);
150+
#undef MOO
151+
printf("%d", MOO); // compileert niet meer
152+
```
153+
154+
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
---
2+
title: "Trefwoorden: Initialisers"
3+
sidebar_label: "Trefwoorden: Initialisers"
4+
---
5+
6+
## `const`
7+
8+
```c
9+
new const
10+
MY_CONSTANT[] = {1, 2, 3};
11+
```
12+
13+
`const` wordt niet wijdverbreid gebruikt, maar het declareert een variabele die niet door code gewijzigd kan worden. Handig als parameter voor functies (efficiëntere compilatie) of wanneer je iets wilt dat lijkt op een define maar dan als array. `const` is een modifier en moet samen met `new` of een andere declarator gebruikt worden. Als je een `const`-variabele probeert te wijzigen, zal de compiler klagen.
14+
15+
## `enum`
16+
17+
Enumeraties zijn erg nuttig om grote groepen data te representeren en constants snel aan te passen. Veelgebruikte toepassingen: grote sets defines vervangen, symbolische namen voor array-slots geven en nieuwe tags maken.
18+
19+
Meest gebruikelijk is als array-definitie:
20+
21+
```c
22+
enum E_MY_ARRAY
23+
{
24+
E_MY_ARRAY_MONEY,
25+
E_MY_ARRAY_GUN
26+
}
27+
28+
new
29+
gPlayerData[MAX_PLAYERS][E_MY_ARRAY];
30+
31+
public OnPlayerConnect(playerid)
32+
{
33+
gPlayerData[playerid][E_MY_ARRAY_MONEY] = 0;
34+
gPlayerData[playerid][E_MY_ARRAY_GUN] = 5;
35+
}
36+
```
37+
38+
Zonder enum zou je indexen als 0 en 1 gebruiken, wat minder leesbaar en minder flexibel is. Met een enum kun je eenvoudig nieuwe velden invoegen zonder overal handmatig indexen te wijzigen.
39+
40+
De volledige vorm van een enum is:
41+
42+
```c
43+
enum NAME (modifier)
44+
{
45+
NAME_ENTRY_1 = value,
46+
NAME_ENTRY_2 = value,
47+
...
48+
NAME_ENTRY_N = value
49+
}
50+
```
51+
52+
Als je geen modifier opgeeft, is de standaard `(+= 1)`. De eerste waarde is standaard 0, en elke volgende waarde is de vorige + 1. De naam van de enum zelf krijgt de waarde ná de laatste entry, dus is bruikbaar voor arraygroottes.
53+
54+
Je kunt de modifier veranderen, bijvoorbeeld `(*= 2)`. Let erop dat je dan vaak een startwaarde moet zetten om niet overal 0 te krijgen. Je kunt willekeurige waarden instellen en zoveel specifieke waarden geven als nodig.
55+
56+
Enums ondersteunen ook array-lengtes per entry en tags:
57+
58+
```c
59+
enum E_EXAMPLE
60+
{
61+
E_EXAMPLE_0[10],
62+
E_EXAMPLE_1,
63+
Float:E_EXAMPLE_2
64+
}
65+
```
66+
67+
Je kunt enums ook als tag zelf gebruiken:
68+
69+
```c
70+
enum E_MY_TAG (<<= 1)
71+
{
72+
E_MY_TAG_NONE,
73+
E_MY_TAG_VAL_1 = 1,
74+
E_MY_TAG_VAL_2,
75+
E_MY_TAG_VAL_3,
76+
E_MY_TAG_VAL_4
77+
}
78+
79+
new
80+
E_MY_TAG:gMyTagVar = E_MY_TAG_VAL_2 | E_MY_TAG_VAL_3;
81+
```
82+
83+
Handig voor vlag-data (bitmaskers) of gecombineerde data (bijv. met maskers zoals `E_MY_TAG_MASK = 0xFF`).
84+
85+
Enums kunnen ook sets van constants vervangen door de naam weg te laten:
86+
87+
```c
88+
enum
89+
{
90+
TEAM_NONE,
91+
TEAM_COP,
92+
TEAM_ROBBER,
93+
TEAM_CIV,
94+
TEAM_CLERK,
95+
TEAM_DRIVER
96+
}
97+
```
98+
99+
Je kunt ook bitflags maken met `(<<= 1)`, zodat teams combineerbaar zijn met `|`, verwijderbaar met `& ~` en controleerbaar met `&`.
100+
101+
## `forward`
102+
103+
`forward` vertelt de compiler dat een functie later komt. Vereist voor alle publieke functies, maar kan ook elders nuttig zijn.
104+
105+
```c
106+
forward MyPublicFunction(playerid, const string[]);
107+
108+
public MyPublicFunction(playerid, const string[])
109+
{
110+
}
111+
```
112+
113+
Ook handig om een zeldzame waarschuwing te voorkomen wanneer een functie met getagde return (bijv. `Float:`) vóór de definitie gebruikt wordt. Je kunt dit oplossen door de functie eerder te plaatsen of door een `forward` te declareren die ook de return-tag bevat.
114+
115+
## `native`
116+
117+
Een native is een functie die in de virtuele machine gedefinieerd is (SA:MP of een plugin), niet in het script. Je kunt ook pseudo-natives gebruiken om functies in PAWNO zichtbaar te maken. Daarnaast kun je met `native` functies hernoemen/overloaden:
118+
119+
```c
120+
native my_print(const string[]) = print;
121+
122+
print(const string[])
123+
{
124+
my_print("Someone called print()");
125+
my_print(string);
126+
}
127+
```
128+
129+
Hierdoor wordt bij het aanroepen van `print()` jouw implementatie uitgevoerd en kun je extra gedrag toevoegen.
130+
131+
## `new`
132+
133+
Declareert een nieuwe variabele:
134+
135+
```c
136+
new
137+
myVar = 5;
138+
```
139+
140+
Zonder initialisatie is de standaardwaarde 0. Scope wordt door accolades bepaald: variabelen gedeclareerd binnen een blok bestaan alleen binnen dat blok. Globale `new`-variabelen zijn beschikbaar na hun declaratie, ook in ingesloten bestanden (`#include`).
141+
142+
## `operator`
143+
144+
Hiermee kun je operators overloaden voor custom tags.
145+
146+
```c
147+
stock BigEndian:operator=(b)
148+
{
149+
return BigEndian:(((b >>> 24) & 0x000000FF) | ((b >>> 8) & 0x0000FF00) | ((b << 8) & 0x00FF0000) | ((b << 24) & 0xFF000000));
150+
}
151+
```
152+
153+
Je kunt veel operators overloaden (`+, -, *, /, %, ++, --, ==, !=, <, >, <=, >=, !, =`) en ze willekeurig gedrag geven (bijv. altijd 42 retourneren).
154+
155+
## `public`
156+
157+
Maakt een functie zichtbaar voor de Virtual Machine, zodat de SA:MP-server deze bij naam kan aanroepen. Alle SA:MP callbacks zijn public. Publics moeten worden voorafgegaan door een `forward` en kunnen ook intern normaal aangeroepen worden als gewone functies (sneller dan `CallLocalFunction`).
158+
159+
## `static`
160+
161+
Een globale `static`-variabele is vergelijkbaar met een globale `new`, maar beperkt tot het bestand/section waarin deze is gedeclareerd. Een lokale `static` behoudt z’n waarde tussen aanroepen, in tegenstelling tot een lokale `new`.
162+
163+
Je kunt ook `static` functies hebben die alleen binnen hetzelfde bestand aangeroepen kunnen worden (private-achtig).
164+
165+
## `stock`
166+
167+
Voor variabelen en functies die mogelijk niet gebruikt worden, zonder "unused"-waarschuwingen te genereren. Als iets niet gebruikt wordt, wordt het niet meegecompileerd (anders dan `#pragma unused`, dat alleen de waarschuwing onderdrukt).
168+
169+

0 commit comments

Comments
 (0)