> 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)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://shpp.gitbook.io/zero/tutorials/functions/array-reversing.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
