aboutsummaryrefslogtreecommitdiff
path: root/doc/docs/pt-br
diff options
context:
space:
mode:
Diffstat (limited to 'doc/docs/pt-br')
-rw-r--r--doc/docs/pt-br/doc/control-flow/conditionals.md58
-rw-r--r--doc/docs/pt-br/doc/control-flow/goto.md106
2 files changed, 164 insertions, 0 deletions
diff --git a/doc/docs/pt-br/doc/control-flow/conditionals.md b/doc/docs/pt-br/doc/control-flow/conditionals.md
index bc12d4e..ce32d89 100644
--- a/doc/docs/pt-br/doc/control-flow/conditionals.md
+++ b/doc/docs/pt-br/doc/control-flow/conditionals.md
@@ -143,3 +143,61 @@ if a in list
143``` 143```
144 144
145</YueDisplay> 145</YueDisplay>
146
147O operador `in` também pode ser usado com tabelas e suporta a variante `not in` para negação:
148
149```yuescript
150has = "foo" in {"bar", "foo"}
151
152if a in {1, 2, 3}
153 print "a está na tabela"
154
155not_exist = item not in list
156
157check = -> value not in table
158```
159
160<YueDisplay>
161
162```yue
163has = "foo" in {"bar", "foo"}
164
165if a in {1, 2, 3}
166 print "a está na tabela"
167
168not_exist = item not in list
169
170check = -> value not in table
171```
172
173</YueDisplay>
174
175Uma lista ou tabela de único elemento verifica igualdade com esse elemento:
176
177```yuescript
178-- [1,] verifica se valor == 1
179c = a in [1,]
180
181-- {1} também verifica se valor == 1
182c = a in {1}
183
184-- Sem vírgula, [1] é acesso por índice (tb[1])
185with tb
186 c = a in [1]
187```
188
189<YueDisplay>
190
191```yue
192-- [1,] verifica se valor == 1
193c = a in [1,]
194
195-- {1} também verifica se valor == 1
196c = a in {1}
197
198-- Sem vírgula, [1] é acesso por índice (tb[1])
199with tb
200 c = a in [1]
201```
202
203</YueDisplay>
diff --git a/doc/docs/pt-br/doc/control-flow/goto.md b/doc/docs/pt-br/doc/control-flow/goto.md
new file mode 100644
index 0000000..f4c85f4
--- /dev/null
+++ b/doc/docs/pt-br/doc/control-flow/goto.md
@@ -0,0 +1,106 @@
1# Goto
2
3YueScript suporta a instrução goto e a sintaxe de rótulos para controlar o fluxo do programa, seguindo as mesmas regras da instrução goto do Lua. **Nota:** A instrução goto requer Lua 5.2 ou superior. Ao compilar para Lua 5.1, o uso da sintaxe goto resultará em um erro de compilação.
4
5Um rótulo é definido usando dois pontos duplos:
6
7```yuescript
8::inicio::
9::fim::
10::meu_rotulo::
11```
12
13<YueDisplay>
14
15```yue
16::inicio::
17::fim::
18::meu_rotulo::
19```
20
21</YueDisplay>
22
23A instrução goto salta para um rótulo especificado:
24
25```yuescript
26a = 0
27::inicio::
28a += 1
29goto fim if a == 5
30goto inicio
31::fim::
32print "a agora é 5"
33```
34
35<YueDisplay>
36
37```yue
38a = 0
39::inicio::
40a += 1
41goto fim if a == 5
42goto inicio
43::fim::
44print "a agora é 5"
45```
46
47</YueDisplay>
48
49A instrução goto é útil para sair de laços profundamente aninhados:
50
51```yuescript
52for z = 1, 10
53 for y = 1, 10 do for x = 1, 10
54 if x^2 + y^2 == z^2
55 print 'triplo pitagórico encontrado:', x, y, z
56 goto ok
57::ok::
58```
59
60<YueDisplay>
61
62```yue
63for z = 1, 10
64 for y = 1, 10 do for x = 1, 10
65 if x^2 + y^2 == z^2
66 print 'triplo pitagórico encontrado:', x, y, z
67 goto ok
68::ok::
69```
70
71</YueDisplay>
72
73Você também pode usar rótulos para pular para um nível específico de laço:
74
75```yuescript
76for z = 1, 10
77 for y = 1, 10
78 for x = 1, 10
79 if x^2 + y^2 == z^2
80 print 'triplo pitagórico encontrado:', x, y, z
81 print 'tentando próximo z...'
82 goto zcontinue
83 ::zcontinue::
84```
85
86<YueDisplay>
87
88```yue
89for z = 1, 10
90 for y = 1, 10
91 for x = 1, 10
92 if x^2 + y^2 == z^2
93 print 'triplo pitagórico encontrado:', x, y, z
94 print 'tentando próximo z...'
95 goto zcontinue
96 ::zcontinue::
97```
98
99</YueDisplay>
100
101## Notas
102
103- Rótulos devem ser únicos dentro de seu escopo
104- goto pode pular para rótulos nos mesmos níveis de escopo ou externos
105- goto não pode pular para escopos internos (como dentro de blocos ou laços)
106- Use goto com moderação, pois pode tornar o código mais difícil de ler e manter