> For the complete documentation index, see [llms.txt](https://shpp.gitbook.io/zero/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shpp.gitbook.io/zero/tutorials/functions/array-reversing.md).

# Масив у зворотному порядку

У програмуванні є поняття "псевдокод". Це спосіб "схематично" записати код без коду (с) Ваш Кеп.

Структури псевдокоду повністю / майже повністю відповідають справжньому коду, подекуди майже його дублюють. Ну типу:

`цеІм'яФункції(цеПараметр)`

`абоТак(параметр1, параметр2)`

`цеЗмінна = цеФункціяРезультатЯкоїКладемоУЗмінну()`

І т.д.

Багато відповідей на програмістські питання, які ви можете нагуглити, будуть саме псевдокодом. Тому важливо розуміти його, вміти адаптувати під реальну програму.

**Ваше завдання**: реалізувати з псевдокоду функцію `main` і всі функції, що в ній викликані:

```javascript
це функція main() {
    р = спитатиЛюдинуПроРозмірМасиву()
    створити масив м
    спитатиЛюдинуПроВсіЕлементиМасиву(м, р)
    вивестиНаЕкранКрасивоМасив(м)
    реверснутиМасив(м)
    написати "ось реверснутий масив:"
    вивестиНаЕкранКрасивоМасив(м)
}
```

Також в кінці не забудьте викликати саму `main` в головному [скоупі](/zero/tutorials/nagadaiki-poyasnyaiki.md#skoup).

**Важливі нюанси цього завдання:**

1. **Змінні поза функціями заборонені.**
2. Кожна функція з псевдокоду має бути реалізована саме так, як вона описана. Якщо вказано, що там є параметр — він обов'язковий. Якщо він один — він має бути лише один. Параметр має бути саме тою сутністю, яку вказує псевдокод. І т.д.
3. Не кожен елемент псевдокоду — функція.
4. Виклик функції та її оголошення — це не одне й те саме.
5. Кожна функція, яка наочно показана в псевдокоді саме функцією, має бути самописною (тобто треба написати саме алгоритм, а не заюзати вбудовані функції самої JS).
6. "Вивести красиво" означає формат "у квадратних дужках через кому з пробілом", тобто:\
   `[q, w, e, r, t, y]`

Ось для зрозумілості приклад норм назв англійською елементів псевдокоду:

<table><thead><tr><th width="455.1527869055783"></th><th></th></tr></thead><tbody><tr><td>р</td><td>arrayLength</td></tr><tr><td>спитатиЛюдинуПроРозмірМасиву</td><td>getArrayLength</td></tr><tr><td>м</td><td>array</td></tr><tr><td>спитатиЛюдинуПроВсіЕлементиМасиву</td><td>fillArray</td></tr><tr><td>вивестиНаЕкранКрасивоМасив</td><td>printArray</td></tr><tr><td>реверснутиМасив</td><td>reverseArray</td></tr></tbody></table>

**І ще**: так, ми знаємо, що максимально не оптимізований алгоритм, і цю задачу можна вирішити взагалі в один рядок. Але це не буде вірним рішенням.

**Бо суть цього завдання — не в тому, щоб реверснути масив, як такий. Суть:**

* показати, що ви опанували функції та розумієте, як їх робити руками
* навчитись трошки декомпозувати програму
* навчитись працювати із псевдокодом
* навчитись уважно читати умову задачі :wink:

*Виникли питання або труднощі?* [*Зверніться за допомогою до Ш++.*](/zero/arrangements/support.md)
