Files

15 lines
1.9 KiB
HTML

<!doctype html><html lang="en"><meta charset="utf-8"><title>Build, break, and test a study planner</title><h1>Build, break, and test a study planner</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 useful test compares a result with a requirement. The planner must never report negative remaining work for its stated nonnegative input domain. Run the starter, then deliberately remove the protection for completed counts above total. At least one check should fail. Restore it. Add two named study tasks, a summary, and boundary cases. Save the source and evidence on Agila Forge. Explain every line, including anything suggested by AI.</p><p>Square brackets send a message to a receiver: <code>[plan completed]</code>. <code>@interface</code> declares methods and <code>@implementation</code> defines them. These GNUstep exercises use explicit memory management, not Apple ARC.</p><pre><code class="language-objectivec">#import &lt;Foundation/Foundation.h&gt;
#include &lt;stdio.h&gt;
#include &lt;assert.h&gt;
int remaining(int total, int done) { return done &gt;= total ? 0 : total - done; }
int main(void) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
assert(remaining(4,1)==3);
assert(remaining(4,4)==0);
assert(remaining(4,5)==0);
assert(remaining(0,0)==0);
puts(&quot;Passed&quot;);
[pool drain];
return 0;
}
</code></pre><p><strong>Expected result:</strong> <code>Passed</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://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html">Language reference</a></p></html>