Skip to content

Commit d6edb29

Browse files
authored
Update sterowanie.js
1 parent 051de7e commit d6edb29

1 file changed

Lines changed: 70 additions & 122 deletions

File tree

h-sharp/sections-js/sterowanie.js

Lines changed: 70 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,162 +1,110 @@
11
window.__HL_SECTIONS = window.__HL_SECTIONS || {};
22
window.__HL_SECTIONS['sterowanie'] = `
3-
<!-- ─ IF / ELSIF / ELSE ──────────────────────────────────────────────────── -->
43
<div class="section" id="if">
54
<div class="sec-header"><span class="sec-num">07</span><h2>If / Elsif / Else</h2></div>
6-
<p>Warunki w H# używają słów kluczowych <code>if</code>, <code>elsif</code>, <code>else</code> z ciałem <code>do...end</code> lub opcjonalnym <code>then do...end</code>. Warunek to dowolne wyrażenie bool.</p>
7-
<table class="ref-table">
8-
<tr><th>Składnia</th><th>Opis</th></tr>
9-
<tr><td><span class="td-syntax">if cond do...end</span></td><td class="td-desc">Podstawowy warunek</td></tr>
10-
<tr><td><span class="td-syntax">elsif cond do...end</span></td><td class="td-desc">Dodatkowa gałąź (analogicznie <code>elif</code> w Python)</td></tr>
11-
<tr><td><span class="td-syntax">else do...end</span></td><td class="td-desc">Gałąź domyślna</td></tr>
12-
<tr><td><span class="td-syntax">if cond then do...end</span></td><td class="td-desc">Wariant z opcjonalnym <code>then</code> przed <code>do</code></td></tr>
13-
</table>
5+
<p>Warunek zapisuje się jako <code>if warunek is...end</code>. Blok zaczyna się słowem <code>is</code>, a kończy <code>end</code>.</p>
146
<div class="code-block">
15-
<div class="code-header"><span class="code-filename">warunki.h#</span><button class="copy-btn">Copy</button></div>
16-
<div class="code-body"><div class="line-nums"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span><span>13</span><span>14</span><span>15</span><span>16</span><span>17</span><span>18</span><span>19</span><span>20</span><span>21</span><span>22</span><span>23</span><span>24</span><span>25</span><span>26</span><span>27</span><span>28</span><span>29</span></div>
17-
<div class="code-inner"><pre><span class="t-kw">let</span> cpu: int = <span class="t-num">75</span>
18-
<span class="t-kw">let</span> port: int = <span class="t-num">8080</span>
7+
<div class="code-header"><span class="code-filename">if.h#</span><button class="copy-btn">Copy</button></div>
8+
<div class="code-body"><div class="code-inner"><pre><span class="t-kw">fn</span> <span class="t-func">main</span>() <span class="t-kw">is</span>
9+
<span class="t-kw">let</span> port: int = <span class="t-num">443</span>
1910
20-
<span class="t-comment"># ── Podstawowy if ─────────────────────────────────</span>
21-
<span class="t-kw">if</span> cpu > <span class="t-num">90</span> <span class="t-kw">do</span>
22-
println(<span class="t-str">"KRYTYCZNE! CPU="</span> + to_string(cpu) + <span class="t-str">"%"</span>)
23-
<span class="t-kw">end</span>
24-
25-
<span class="t-comment"># ── Łańcuch if / elsif / else ─────────────────────</span>
26-
<span class="t-kw">if</span> cpu > <span class="t-num">90</span> <span class="t-kw">do</span>
27-
println(<span class="t-str">"KRYTYCZNY"</span>)
28-
<span class="t-kw">elsif</span> cpu > <span class="t-num">70</span> <span class="t-kw">do</span>
29-
println(<span class="t-str">"Wysoki CPU"</span>)
30-
<span class="t-kw">elsif</span> cpu > <span class="t-num">50</span> <span class="t-kw">do</span>
31-
println(<span class="t-str">"Umiarkowany"</span>)
32-
<span class="t-kw">else</span> <span class="t-kw">do</span>
33-
println(<span class="t-str">"CPU OK"</span>)
34-
<span class="t-kw">end</span>
35-
36-
<span class="t-comment"># ── Operatory logiczne ────────────────────────────</span>
37-
<span class="t-kw">if</span> port >= <span class="t-num">1</span> && port <= <span class="t-num">65535</span> <span class="t-kw">do</span>
38-
println(<span class="t-str">"Port prawidłowy: "</span> + to_string(port))
39-
<span class="t-kw">end</span>
11+
<span class="t-kw">if</span> port == <span class="t-num">443</span> <span class="t-kw">is</span>
12+
write(<span class="t-str">"HTTPS"</span>)
13+
<span class="t-kw">elsif</span> port == <span class="t-num">80</span> <span class="t-kw">is</span>
14+
write(<span class="t-str">"HTTP"</span>)
15+
<span class="t-kw">elsif</span> port == <span class="t-num">22</span> <span class="t-kw">is</span>
16+
write(<span class="t-str">"SSH"</span>)
17+
<span class="t-kw">else</span> <span class="t-kw">is</span>
18+
write(<span class="t-str">"Other: "</span> + to_string(port))
19+
<span class="t-kw">end</span>
4020
41-
<span class="t-comment"># ── Negacja ───────────────────────────────────────</span>
42-
<span class="t-kw">let</span> ssl: bool = <span class="t-kw">true</span>
43-
<span class="t-kw">if</span> !ssl <span class="t-kw">do</span>
44-
println(<span class="t-str">"Ostrzeżenie: brak SSL!"</span>)
21+
<span class="t-comment">;; Złożone warunki</span>
22+
<span class="t-kw">let</span> open: bool = <span class="t-kw">true</span>
23+
<span class="t-kw">if</span> open && port > <span class="t-num">0</span> <span class="t-kw">is</span>
24+
write(<span class="t-str">"port otwarty"</span>)
25+
<span class="t-kw">end</span>
4526
<span class="t-kw">end</span></pre></div></div>
4627
</div>
4728
</div>
4829
49-
<!-- ─ MATCH ──────────────────────────────────────────────────────────────── -->
5030
<div class="section" id="match">
5131
<div class="sec-header"><span class="sec-num">08</span><h2>Match — pattern matching</h2></div>
52-
<p>Pattern matching — elegancka alternatywa dla łańcuchów if/elsif. Obsługuje literały, zmienne, wildcard <code>_</code> i guardy <code>if</code>. Ciało: <code>match expr do ... end</code>. Ramiona: <code>wzorzec => expr</code>.</p>
32+
<p>Pełne pattern matching: literały, warianty enum, wildcard <code>_</code>, OR-pattern <code>a | b</code>. Blok: <code>match x is...end</code>.</p>
5333
<div class="code-block">
5434
<div class="code-header"><span class="code-filename">match.h#</span><button class="copy-btn">Copy</button></div>
55-
<div class="code-body"><div class="line-nums"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span><span>13</span><span>14</span><span>15</span><span>16</span><span>17</span><span>18</span><span>19</span><span>20</span><span>21</span><span>22</span><span>23</span><span>24</span><span>25</span><span>26</span><span>27</span><span>28</span><span>29</span><span>30</span><span>31</span><span>32</span><span>33</span><span>34</span><span>35</span></div>
56-
<div class="code-inner"><pre><span class="t-comment"># ── Match: kody HTTP ──────────────────────────────</span>
57-
<span class="t-kw">let</span> kod: int = <span class="t-num">404</span>
58-
<span class="t-kw">match</span> kod <span class="t-kw">do</span>
59-
<span class="t-num">200</span> => println(<span class="t-str">"OK"</span>)
60-
<span class="t-num">201</span> => println(<span class="t-str">"Created"</span>)
61-
<span class="t-num">400</span> => println(<span class="t-str">"Bad Request"</span>)
62-
<span class="t-num">401</span> => println(<span class="t-str">"Unauthorized"</span>)
63-
<span class="t-num">403</span> => println(<span class="t-str">"Forbidden"</span>)
64-
<span class="t-num">404</span> => println(<span class="t-str">"Not Found"</span>)
65-
<span class="t-num">500</span> => println(<span class="t-str">"Server Error"</span>)
66-
_ => println(<span class="t-str">"Nieznany kod: "</span> + to_string(kod))
35+
<div class="code-body"><div class="code-inner"><pre><span class="t-kw">fn</span> <span class="t-func">classify</span>(port: int) -> string <span class="t-kw">is</span>
36+
<span class="t-kw">match</span> port <span class="t-kw">is</span>
37+
<span class="t-num">22</span> => <span class="t-str">"SSH"</span>
38+
<span class="t-num">80</span> => <span class="t-str">"HTTP"</span>
39+
<span class="t-num">443</span> => <span class="t-str">"HTTPS"</span>
40+
<span class="t-num">3306</span> => <span class="t-str">"MySQL"</span>
41+
<span class="t-num">5432</span> => <span class="t-str">"PostgreSQL"</span>
42+
<span class="t-num">6379</span> => <span class="t-str">"Redis"</span>
43+
<span class="t-num">8080</span> => <span class="t-str">"HTTP-Alt"</span>
44+
_ => <span class="t-str">"Unknown"</span>
45+
<span class="t-kw">end</span>
6746
<span class="t-kw">end</span>
6847
69-
<span class="t-comment"># ── Match ze stringiem ─────────────────────────────</span>
70-
<span class="t-kw">let</span> env: string = <span class="t-str">"production"</span>
71-
<span class="t-kw">match</span> env <span class="t-kw">do</span>
72-
<span class="t-str">"production"</span> => println(<span class="t-str">"Środowisko: PROD"</span>)
73-
<span class="t-str">"staging"</span> => println(<span class="t-str">"Środowisko: STAGING"</span>)
74-
<span class="t-str">"development"</span> => println(<span class="t-str">"Środowisko: DEV"</span>)
75-
_ => println(<span class="t-str">"Nieznane środowisko"</span>)
48+
<span class="t-kw">enum</span> Status <span class="t-kw">is</span>
49+
Open
50+
Closed
51+
Filtered(string)
52+
Error(int, string)
7653
<span class="t-kw">end</span>
7754
78-
<span class="t-comment"># ── Match z blokiem wieloliniowym ─────────────────</span>
79-
<span class="t-kw">let</span> port: int = <span class="t-num">22</span>
80-
<span class="t-kw">fn</span> <span class="t-func">get_service</span>(port: int) -> string <span class="t-kw">do</span>
81-
<span class="t-kw">match</span> port <span class="t-kw">do</span>
82-
<span class="t-num">21</span> => <span class="t-str">"FTP"</span>
83-
<span class="t-num">22</span> => <span class="t-str">"SSH"</span>
84-
<span class="t-num">80</span> => <span class="t-str">"HTTP"</span>
85-
<span class="t-num">443</span> => <span class="t-str">"HTTPS"</span>
86-
<span class="t-num">3306</span> => <span class="t-str">"MySQL"</span>
87-
<span class="t-num">5432</span> => <span class="t-str">"PostgreSQL"</span>
88-
_ => <span class="t-str">"Unknown"</span>
55+
<span class="t-kw">fn</span> <span class="t-func">handle</span>(r: Status) <span class="t-kw">is</span>
56+
<span class="t-kw">match</span> r <span class="t-kw">is</span>
57+
Open => write(<span class="t-str">"otwarty"</span>)
58+
Closed => write(<span class="t-str">"zamknięty"</span>)
59+
Filtered(msg) => write(<span class="t-str">"filtr: "</span> + msg)
60+
Error(c, m) => write(<span class="t-str">"błąd "</span> + to_string(c) + <span class="t-str">": "</span> + m)
61+
<span class="t-kw">end</span>
8962
<span class="t-kw">end</span>
63+
64+
<span class="t-kw">fn</span> <span class="t-func">main</span>() <span class="t-kw">is</span>
65+
write(classify(<span class="t-num">443</span>))
66+
handle(Status::Open)
67+
handle(Status::Filtered(<span class="t-str">"firewall"</span>))
9068
<span class="t-kw">end</span></pre></div></div>
9169
</div>
9270
</div>
9371
94-
<!-- ─ WHILE ───────────────────────────────────────────────────────────────── -->
9572
<div class="section" id="while">
9673
<div class="sec-header"><span class="sec-num">09</span><h2>While</h2></div>
97-
<p>Pętla warunkowa. Składnia: <code>while warunek do...end</code>. Obsługuje <code>break</code> i <code>continue</code>.</p>
9874
<div class="code-block">
9975
<div class="code-header"><span class="code-filename">while.h#</span><button class="copy-btn">Copy</button></div>
100-
<div class="code-body"><div class="line-nums"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span><span>13</span><span>14</span><span>15</span><span>16</span><span>17</span><span>18</span><span>19</span><span>20</span></div>
101-
<div class="code-inner"><pre><span class="t-comment"># ── Klasyczna pętla licząca ───────────────────────</span>
102-
<span class="t-kw">let</span> <span class="t-kw">mut</span> i: int = <span class="t-num">0</span>
103-
<span class="t-kw">while</span> i < <span class="t-num">10</span> <span class="t-kw">do</span>
104-
println(to_string(i))
105-
i += <span class="t-num">1</span>
106-
<span class="t-kw">end</span>
107-
108-
<span class="t-comment"># ── Z break ───────────────────────────────────────</span>
109-
<span class="t-kw">let</span> <span class="t-kw">mut</span> running: bool = <span class="t-kw">true</span>
110-
<span class="t-kw">let</span> <span class="t-kw">mut</span> attempts: int = <span class="t-num">0</span>
111-
<span class="t-kw">while</span> running <span class="t-kw">do</span>
112-
attempts += <span class="t-num">1</span>
113-
<span class="t-kw">if</span> attempts >= <span class="t-num">5</span> <span class="t-kw">do</span>
114-
break
115-
<span class="t-kw">end</span>
116-
<span class="t-kw">end</span>
117-
118-
<span class="t-comment"># ── Nieskończona pętla monitoringu ────────────────</span>
119-
<span class="t-kw">let</span> <span class="t-kw">mut</span> alive: bool = <span class="t-kw">true</span>
120-
<span class="t-kw">while</span> alive <span class="t-kw">do</span>
121-
println(<span class="t-str">"monitoruję..."</span>)
76+
<div class="code-body"><div class="code-inner"><pre><span class="t-kw">fn</span> <span class="t-func">main</span>() <span class="t-kw">is</span>
77+
<span class="t-kw">let</span> <span class="t-kw2">mut</span> i: int = <span class="t-num">0</span>
78+
<span class="t-kw">while</span> i < <span class="t-num">10</span> <span class="t-kw">is</span>
79+
write(to_string(i))
80+
i += <span class="t-num">1</span>
81+
<span class="t-kw">end</span>
12282
<span class="t-kw">end</span></pre></div></div>
12383
</div>
12484
</div>
12585
126-
<!-- ─ FOR ────────────────────────────────────────────────────────────────── -->
12786
<div class="section" id="for">
128-
<div class="sec-header"><span class="sec-num">10</span><h2>For — pętle i zakresy</h2></div>
129-
<p>Iteracja po zakresach i tablicach. H# obsługuje <code>for var in start..end</code> (wyłączny), <code>start..=end</code> (włączny) oraz <code>for var in array</code>.</p>
87+
<div class="sec-header"><span class="sec-num">10</span><h2>For i zakresy</h2></div>
13088
<div class="code-block">
13189
<div class="code-header"><span class="code-filename">for.h#</span><button class="copy-btn">Copy</button></div>
132-
<div class="code-body"><div class="line-nums"><span>1</span><span>2</span><span>3</span><span>4</span><span>5</span><span>6</span><span>7</span><span>8</span><span>9</span><span>10</span><span>11</span><span>12</span><span>13</span><span>14</span><span>15</span><span>16</span><span>17</span><span>18</span><span>19</span><span>20</span><span>21</span><span>22</span><span>23</span><span>24</span></div>
133-
<div class="code-inner"><pre><span class="t-comment"># ── Zakres wyłączny 0..N ──────────────────────────</span>
134-
<span class="t-kw">for</span> i <span class="t-kw">in</span> <span class="t-num">0</span>..<span class="t-num">10</span> <span class="t-kw">do</span>
135-
println(to_string(i)) <span class="t-comment"># 0..9</span>
136-
<span class="t-kw">end</span>
137-
138-
<span class="t-comment"># ── Zakres włączny 1..=N ──────────────────────────</span>
139-
<span class="t-kw">let</span> <span class="t-kw">mut</span> suma: int = <span class="t-num">0</span>
140-
<span class="t-kw">for</span> i <span class="t-kw">in</span> <span class="t-num">1</span>..=<span class="t-num">5</span> <span class="t-kw">do</span>
141-
suma += i <span class="t-comment"># 1+2+3+4+5 = 15</span>
142-
<span class="t-kw">end</span>
143-
println(<span class="t-str">"Suma 1..5 = "</span> + to_string(suma))
144-
145-
<span class="t-comment"># ── Iteracja po tablicy ───────────────────────────</span>
146-
<span class="t-kw">let</span> porty: [int] = [<span class="t-num">22</span>, <span class="t-num">80</span>, <span class="t-num">443</span>, <span class="t-num">8080</span>]
147-
<span class="t-kw">for</span> port <span class="t-kw">in</span> porty <span class="t-kw">do</span>
148-
println(<span class="t-str">"Port: "</span> + to_string(port))
149-
<span class="t-kw">end</span>
90+
<div class="code-body"><div class="code-inner"><pre><span class="t-kw">fn</span> <span class="t-func">main</span>() <span class="t-kw">is</span>
91+
<span class="t-comment">;; Zakres wyłączny (1..10 = 1,2,..,9)</span>
92+
<span class="t-kw">for</span> i <span class="t-kw">in</span> <span class="t-num">1</span>..<span class="t-num">10</span> <span class="t-kw">is</span>
93+
write(to_string(i))
94+
<span class="t-kw">end</span>
15095
151-
<span class="t-comment"># ── Iteracja po stringu (znaki) ───────────────────</span>
152-
<span class="t-kw">let</span> s: string = <span class="t-str">"hello"</span>
153-
<span class="t-kw">for</span> ch <span class="t-kw">in</span> s <span class="t-kw">do</span>
154-
print(ch)
155-
<span class="t-kw">end</span>
96+
<span class="t-comment">;; Zakres włączny (1..=5 = 1,2,3,4,5)</span>
97+
<span class="t-kw">let</span> <span class="t-kw2">mut</span> sum: int = <span class="t-num">0</span>
98+
<span class="t-kw">for</span> i <span class="t-kw">in</span> <span class="t-num">1</span>..=<span class="t-num">100</span> <span class="t-kw">is</span>
99+
sum += i
100+
<span class="t-kw">end</span>
101+
write(<span class="t-str">"Sum: "</span> + to_string(sum))
156102
157-
<span class="t-comment"># ── Scan portów 1-1024 ────────────────────────────</span>
158-
<span class="t-kw">for</span> port <span class="t-kw">in</span> <span class="t-num">1</span>..=<span class="t-num">1024</span> <span class="t-kw">do</span>
159-
<span class="t-comment"># skanuj port...</span>
103+
<span class="t-comment">;; Iteracja po tablicy</span>
104+
<span class="t-kw">let</span> ports: [int] = [<span class="t-num">22</span>, <span class="t-num">80</span>, <span class="t-num">443</span>, <span class="t-num">8080</span>]
105+
<span class="t-kw">for</span> port <span class="t-kw">in</span> ports <span class="t-kw">is</span>
106+
write(<span class="t-str">"Port: "</span> + to_string(port))
107+
<span class="t-kw">end</span>
160108
<span class="t-kw">end</span></pre></div></div>
161109
</div>
162110
</div>

0 commit comments

Comments
 (0)