Add multilingual language and systems learning tracks

This commit is contained in:
Admin committed 2026-11-01 15:46:21 +08:00
1 parent 07338189fc
commit d8d1c40118
844 files changed
+6061

No files matched your search

@@ -0,0 +1,9 @@
# Object Pascal & Objective-Pascal — first steps
[Agila University track](https://edu.agilaos.com/track.php?track=10&lang=en)
About 15 minutes per lesson. Predict, run, change, explain, then complete the check in University.
- [Lesson 1: Your first explainable program](lesson-1/lesson.html)
- [Lesson 2: Values and decisions](lesson-2/lesson.html)
- [Lesson 3: Functions and a clear policy](lesson-3/lesson.html)
@@ -0,0 +1,8 @@
<!doctype html><html lang="en"><meta charset="utf-8"><title>Your first explainable program</title><h1>Your first explainable program</h1><p>15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.</p><p>A program is a set of instructions. Read the example from its entry point to the output statement. Text in quotes is data; the output operation is an instruction. Predict the printed line before running. Change only the message, run again, then remove one required punctuation mark and read the first error. Restore the working source.</p><p>Object Pascal classes and Objective-Pascal are distinct. First learn <code>class</code>, construction, and <code>Free</code> using the Linux lab. Objective-Pascal adds Objective-C interoperability through mode switches; this lab does not provide that Apple runtime.</p><pre><code class="language-objectpascal">program AgilaStudy;
{$mode objfpc}{$H+}{$assertions on}
begin
writeln(&#x27;Ready&#x27;);
end.
</code></pre><p><strong>Expected result:</strong> <code>Ready</code></p><h3>Practice and evidence</h3><p>Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.</p><p><a href="https://docs.freepascal.org/daily/doc/ref/refse74.html">Language reference</a></p></html>
@@ -0,0 +1,7 @@
program AgilaStudy;
{$mode objfpc}{$H+}{$assertions on}
begin
writeln('Ready');
end.
@@ -0,0 +1,9 @@
<!doctype html><html lang="en"><meta charset="utf-8"><title>Values and decisions</title><h1>Values and decisions</h1><p>15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.</p><p>A decision chooses which statements run. The policy here is “ready at 80 or higher.” Trace 85, 79, 80, and 81 before running each case. The comparison includes 80. A program that prints the right answer for 85 may still be wrong at the boundary. Add a separate check rejecting scores below 0 or above 100; rejection and needing practice mean different things.</p><p>Object Pascal classes and Objective-Pascal are distinct. First learn <code>class</code>, construction, and <code>Free</code> using the Linux lab. Objective-Pascal adds Objective-C interoperability through mode switches; this lab does not provide that Apple runtime.</p><pre><code class="language-objectpascal">program AgilaStudy;
{$mode objfpc}{$H+}{$assertions on}
var Score: Integer;
begin
Score := 85;
if Score &gt;= 80 then writeln(&#x27;Ready&#x27;) else writeln(&#x27;Practice&#x27;);
end.
</code></pre><p><strong>Expected result:</strong> <code>Ready</code></p><h3>Practice and evidence</h3><p>Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.</p><p><a href="https://docs.freepascal.org/daily/doc/ref/refse74.html">Language reference</a></p></html>
@@ -0,0 +1,8 @@
program AgilaStudy;
{$mode objfpc}{$H+}{$assertions on}
var Score: Integer;
begin
Score := 85;
if Score >= 80 then writeln('Ready') else writeln('Practice');
end.
@@ -0,0 +1,11 @@
<!doctype html><html lang="en"><meta charset="utf-8"><title>Functions and a clear policy</title><h1>Functions and a clear policy</h1><p>15-minute session: read for 3 minutes, trace for 3, experiment for 7, and complete the check for 2. Spend longer whenever you need.</p><p>A function or subroutine names a reusable calculation. Our policy accepts nonnegative total and completed counts and returns zero when completed reaches or exceeds total. Otherwise it returns their difference. Trace (4,1), (4,4), (4,5), and (0,0). Keep printing separate from calculation. Write down why negative inputs are outside this exercise’s domain, then design an explicit rejection policy before accepting external input.</p><p>Object Pascal classes and Objective-Pascal are distinct. First learn <code>class</code>, construction, and <code>Free</code> using the Linux lab. Objective-Pascal adds Objective-C interoperability through mode switches; this lab does not provide that Apple runtime.</p><pre><code class="language-objectpascal">program AgilaStudy;
{$mode objfpc}{$H+}{$assertions on}
function Remaining(Total, Done: Integer): Integer;
begin
if Done &gt;= Total then Result := 0 else Result := Total - Done;
end;
begin
writeln(Remaining(4, 1));
end.
</code></pre><p><strong>Expected result:</strong> <code>3</code></p><h3>Practice and evidence</h3><p>Keep three notes: your prediction, the actual result, and why they match or differ. The completion check grades understanding; the practice task builds skill.</p><p><a href="https://docs.freepascal.org/daily/doc/ref/refse74.html">Language reference</a></p></html>
@@ -0,0 +1,10 @@
program AgilaStudy;
{$mode objfpc}{$H+}{$assertions on}
function Remaining(Total, Done: Integer): Integer;
begin
if Done >= Total then Result := 0 else Result := Total - Done;
end;
begin
writeln(Remaining(4, 1));
end.