# Week 5

:::{topic} Learning goals
- use the `main` function
  - process arguments to `main`
  - return the right status code
  - design a command-line interface
- declare and define functions
- modularize a project using source and header files
  - explain the significance of `#pragma once`
- document function prototypes using structured comments
:::

:::{toctree}
:maxdepth: 1
week05/cryptography
week05/command-line-arguments
week05/modularization
week05/header-files-and-inline-documentation
week05/back-to-the-problem
:::
<!--
:::{activity} 
We will use {ref}`guided-reciprocal-peer-questioning` to improve your understanding about the previous class, homework and during your preparation.
:::
-->


<!--
Introduce functions more gracefully
passing arguments by value and reference
storage classes
scope
recursion vs iteration

I should introduce structured programming rules, e.g., Deitel s.214
note that break and continue do not follow structured programming principles but, they are still used, because they assist readability
Also note that break statements in C switch violate the rules, but are a necessity (compared to Pascal case statement)

-->