PART I
Warm-up
Reconnect with a useful idea before starting names, parameters, and return types. In one or two sentences, describe the input, output or host boundary from the previous exercise that this lesson builds on. If you are arriving directly, skim the worked example first; there is no locked prerequisite.
A rough note is enough. You can revise it after the example.
PART II
Instruction & guided example
Build a snack-shop calculator with a reviewable contract
A small project combines the calculation, clear names and honest evidence into one artifact. Keep the contract narrow: given a nonnegative item quantity, whole-cent unit price and whole-cent fixed fee within an ordinary safe numeric range, predict a total in cents. Charging, rounding and inventory are separate responsibilities.
The worked order is 4 snacks at 75 cents plus a 20-cent fee. subtotal = 4 * 75 = 300; total = 300 + 20 = 320. The helper returns that value. The companion cases (1,75,20) → 95 and (4,75,0) → 300 exercise quantity and fee independently. A zero-quantity order would return the fee under this formula; document whether the product should reject it later.
Do not make the project look complete by inventing Application payment methods or claiming a compiler pass. The public artifact is a .ws design draft with paper acceptance cases. A future supplied runtime can execute it, and a future product requirement can add validation; neither exists merely because you mark this practice complete.
Worked reasoning and supplied artifact
fnc snackTotal(quantity: i32, unitPrice: i32, fee: i32) -> i32 {
return quantity * unitPrice + fee;
}
fnc main() -> i32 {
return snackTotal(4, 75, 20);
}Illustrative example from the proposed WillowScript design. The language and WUIX/WMATH/WDB/WAUDIO/WTMP services are not implemented in the supplied source. This site has no interpreter, VM or native host and does not execute or certify the snippet.
Walk through the example, one line at a time
fnc snackTotal(quantity: i32, unitPrice: i32, fee: i32) -> i32 {Read the function name, its parameter names/types and the result type after ->. This is the contract the body must satisfy.
return quantity * unitPrice + fee;Evaluate the following expression using the current values, then send its result to the caller. Explain the value; do not confuse it with printed output.
}Close the nested block or value begun earlier. Match it to its opening boundary to keep the structure readable.
fnc main() -> i32 {Read the function name, its parameter names/types and the result type after ->. This is the contract the body must satisfy.
return snackTotal(4, 75, 20);Evaluate the following expression using the current values, then send its result to the caller. Explain the value; do not confuse it with printed output.
}Close the nested block or value begun earlier. Match it to its opening boundary to keep the structure readable.
Try the guided change
Reconstruct the three worked cases without copying their final values first. Check the unit of every intermediate result.
- Write the supplied inputs and initial state before following the example.
- Reconstruct each intermediate calculation or host decision, then compare with the worked artifact.
- Explain why the contrasting alternative fails before attempting the changed inputs in Part IV.
PART III
Take a breather
Step back after the guided example. Look away from the screen, stretch, or reread your prediction. This is an optional learning pause, not a timer or an assessment gate.
When you return, try to name the lesson’s key idea without copying its wording. If that feels difficult, return to Part II and trace one line rather than restarting the entire lesson.
PART IV
Independent practice
Project context: Snack-shop calculator. Build a small, understandable change around names, parameters, and return types.
Build your own calculator for 3 drinks at 110 cents and a 15-cent tray fee. Include a helper, one caller, three acceptance cards, a zero-quantity policy question and a short explanation of how changing only the price reaches the result through the call.
What to produce
A complete source draft, cases (3,110,15) → 345, (1,110,15) → 125 and (3,110,0) → 330, plus explicit assumptions and no execution claim.
- State the intended behavior in a sentence before editing.
- Use only source-backed syntax and the host services whose contract you have been given.
- Record a normal case and a boundary or unavailable-resource case.
- Label hand predictions separately from anything actually measured in a supplied toolchain.
Syntax colors are a reading aid, not a compiler. The line you are editing stays uncolored until you move to a different line; capitalization is never changed. Drafts stay on this browser and code is not executed.
Need a hint?
The worked order is 4 snacks at 75 cents plus a 20-cent fee. subtotal = 4 * 75 = 300; total = 300 + 20 = 320. The helper returns that value. The companion cases (1,75,20) → 95 and (4,75,0) → 300 exercise quantity and fee independently. A zero-quantity order would return the fee under this formula; document whether the product should reject it later.
Do not make the project look complete by inventing Application payment methods or claiming a compiler pass. The public artifact is a .ws design draft with paper acceptance cases. A future supplied runtime can execute it, and a future product requirement can add validation; neither exists merely because you mark this practice complete.
Original learning-path task and reference
Integrate every section in this module into Snack-shop calculator. Submit .ws source, a list of approved host APIs, eight acceptance cases, and a short explanation. Demonstrate Instructions and observable results; Values, expressions, and arithmetic; Reading a function from left to right; Names, parameters, and return types.
fnc add(a: i32, b: i32) -> i32 {
return a + b;
}
fnc main() -> i32 {
return add(2, 3);
}Where the original task needs a host API that is not supplied here, write the contract and predictions. Do not invent a runtime result.
PART V
Self-check
Use this check to notice what to revisit. It does not award a private course grade, block another page or claim to verify compiled code. Every answer has a learning explanation.
You may keep exploring even if you are unsure. Use the hint, compare the trace, and revise your explanation.
PART VI
Recap & small task
Bring the idea back to the mod feature you are building. A useful recap connects the mechanism to a decision you can make in your own code.
- Build a snack-shop calculator with a reviewable contract
- A small project combines the calculation, clear names and honest evidence into one artifact. Keep the contract narrow: given a nonnegative item quantity, whole-cent unit price and whole-cent fixed fee within an ordinary safe numeric range, predict a total in cents. Charging, rounding and inventory are separate responsibilities.
- Separate source-backed behavior, host requirements and untested predictions.
One small recap task
Choose one project case and explain it from caller input to returned cents in three sentences.
This marks your personal practice record only. It is not a certification or an official workspace assessment.
