**1. Что такое структурное программирование?**
Подход, где алгоритм строится из трёх конструкций — последовательность, ветвление, цикл — и разбивается на небольшие функции с одной задачей каждая.
**2. Какие типы параметров можно передавать и зачем?**
- **По значению** — копия данных, оригинал не меняется.
- **`ref`** — ссылка на переменную, функция может её изменить.
- **`out`** — как `ref`, но не требует инициализации до вызова; используется для возврата нескольких значений.
- **Указатель (`int*`)** — прямой доступ по адресу в памяти (`unsafe`-код).
**3. Как вернуть результат из функции?**
Через `return значение;` (тип функции ≠ `void`), либо через `out`/`ref`-параметры, либо возвращая кортеж, массив, структуру или объект.
**4. Что такое «контрольная точка»?**
Место в алгоритме с проверкой условия (`if`, ветвление, условие цикла), где выполнение идёт по одному из путей. На схеме — ромб с «Да»/«Нет».
**5. Глобальные переменные — как и почему не рекомендуются?**
Объявляются вне функций (`static`-поле), доступны отовсюду. Не рекомендуются: усложняют отладку, нарушают инкапсуляцию, создают скрытые зависимости между функциями, в многопоточности — риск гонок данных. Лучше передавать данные через параметры.