Files
hello-algo/ru/chapters/chapter_16.md
2026-03-25 16:54:42 +08:00

442 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Приложение
![](ru/docs/assets/media/image1081.jpeg){width="4.072915573053368in" height="5.270833333333333in"}
###### Содержание главы
1. Установка программной среды
2. Совместная разработка
3. Глоссарий
#### Установка программной среды
1. **Установка IDE**
> Рекомендуется использовать открытую и быструю интегрированную среду разработки (IDE) VS Code. Откройте официальный сайт VS Code и выберите подходящую вашей операционной системе версию для загрузки и установки.
![](ru/docs/assets/media/image1083.jpeg)
> **Рис. 16.1.** Загрузка VS Code с официального сайта
>
> VS Code обладает мощной экосистемой расширений и поддерживает выпол- нение и отладку большинства языков программирования. Например, после установки расширения Python Extension Pack можно выполнять отладку кода на Python. Этапы установки показаны на рис. 16.2.
1. ![](ru/docs/assets/media/image1085.jpeg)Установка программной среды ❖ **485**
> **Рис. 16.2.** Установка расширений в VS Code
### Установка языковой среды
##### Среда Python
1. Загрузите и установите инструмент Miniconda3, требуется Python 3.10 или более поздняя версия.
2. В магазине расширений VS Code выполните поиск по слову python и уста- новите расширение Python Extension Pack.
3. (Не обязательно) Введите в командной строке pip install black для уста- новки инструмента форматирования кода.
##### Среда C/C++
1. В системе Windows необходимо установить набор инструментов MinGW (руководство по настройке). В MacOS имеется встроенный компилятор Clang, дополнительная установка не требуется.
2. В магазине расширений VS Code выполните поиск по слову c++ и устано- вите расширение C/C++ Extension Pack.
3. (Не обязательно) Откройте страницу настроек, найдите параметр фор- матирования кода Clang_format_fallback Style и установите его в значе- ние { BasedOnStyle: Microsoft, BreakBeforeBraces: Attach }.
##### Среда Java
1. Загрузите и установите OpenJDK (версия \> JDK 9).
2. В магазине расширений VS Code выполните поиск по слову java и уста- новите расширение Extension Pack for Java.
##### Среда C#
1. Загрузите и установите .Net 8.0.
2. В магазине расширений VS Code выполните поиск по фразе C# Dev Kit
> и установите расширение C# Dev Kit (руководство по настройке).
3. Также можно использовать интегрированную среду разработки Visual Studio (руководство по установке).
##### Среда Go
1. Загрузите и установите Go.
2. В магазине расширений VS Code выполните поиск по слову go и устано- вите Go.
3. Нажмите сочетание клавиш Ctrl + Shift + P, чтобы открыть командную строку. Введите команду go, выберите Go: Install/Update Tools, отметьте все и установите.
##### Среда Swift
1. Загрузите и установите Swift.
2. В магазине расширений VS Code выполните поиск по слову swift и уста- новите расширение Swift for Visual Studio Code.
##### Среда JavaScript
1. Загрузите и установите Node.js.
2. (Не обязательно) В магазине расширений VS Code выполните поиск по слову Prettier и установите инструмент форматирования кода.
##### Среда TypeScript
1. Выполните шаги установки для среды JavaScript.
2. Установите TypeScript Execute (tsx).
3. В магазине расширений VS Code выполните поиск по слову typescript
> и установите расширение Pretty TypeScript Errors.
##### Среда Dart
1. Загрузите и установите Dart.
2. В магазине расширений VS Code выполните поиск по слову dart и уста- новите расширение Dart.
##### Среда Rust
1. Загрузите и установите Rust.
2. В магазине расширений VS Code выполните поиск по слову rust и уста- новите расширение rust-analyzer.
#### Совместная разработка
> Ввиду ограниченных возможностей автора в книге неизбежно присутству- ют некоторые упущения и ошибки, просим отнестись к этому с пониманием. Если вы обнаружите опечатки, неработающие ссылки, неполное содержание,
2. Совместная разработка ❖ **487**
> двусмысленности в тексте, неясные объяснения или нерациональную структу- ру изложения, пожалуйста, помогите нам в исправлении, чтобы предоставить читателям более качественные учебные ресурсы.
>
> Все идентификаторы GitHub авторов будут представлены на странице ре- позитория книги, в веб-версии и PDF-версии в знак благодарности за их бес- корыстный вклад в сообщество с открытым исходным кодом.
##### Небольшая корректировка содержимого
> В правом верхнем углу каждой страницы есть значок редактирования, как по- казано на рис. 16.3. Следуйте следующим шагам для изменения текста или кода.
1. Нажмите на значок редактирования. Если появится сообщение «Необходи- мо создать ответвление этого репозитория», согласитесь на это действие.
2. Измените содержимое исходного файла Markdown, проверьте правиль- ность содержания и постарайтесь сохранить единый формат оформления.
3. В нижней части страницы заполните описание изменений, затем на- жмите кнопку **Propose file change** (предложить изменение файла). После перехода на следующую страницу нажмите кнопку **Create pull request** (Создать запрос на слияние), чтобы инициировать запрос на слияние.
![](ru/docs/assets/media/image1087.jpeg)
> **Рис. 16.3.** Кнопка редактирования страницы
>
> Изображения нельзя изменить напрямую, необходимо создать новую Issue (Задачу) или оставить комментарий для описания проблемы. Мы как можно быстрее изменим и обновим изображение.
##### Создание содержимого
> Если вы заинтересованы в участии в этом проекте с открытым исходным ко- дом, включая перевод кода на другие языки программирования, расширение содержания статей и т. д., необходимо выполнить следующий рабочий процесс Pull Request (Запрос на слияние).
1. Войдите в GitHub, создайте ответвление хранилища кода книги в свой личный аккаунт.
2. Перейдите на страницу ответвления и используйте команду git clone
> для клонирования хранилища на локальный компьютер.
3. На локальном компьютере создайте содержимое и проведите полное те- стирование, чтобы проверить правильность кода.
4. Зафиксируйте изменения, сделанные локально, затем отправьте их в удаленное хранилище.
5. Обновите страницу хранилища и нажмите кнопку **Create pull request**
> (Создать запрос на слияние), чтобы инициировать запрос на слияние.
##### Развертывание Docker
> В корневом каталоге hello-algo выполните следующий сценарий Docker, чтобы настроить доступ к проекту по адресу http://localhost:8000:
>
> docker-compose up -d
>
> Для удаления развертывания выполните следующую команду:
>
> docker-compose down
#### Глоссарий
> В табл. 16.1 приведен англо-русский словарь важных терминов, встречающих- ся в книге. Он поможет вам в чтении англоязычной литературы.
>
> **Таблица 16.1.** Англо-русский словарь терминов 1's complement обратный код
>
> 2's complement дополнительный код
>
> adjacency смежность
>
> adjacency list список смежности
>
> adjacency matrix матрица смежности
>
> algorithm алгоритм
>
> array массив
>
> asymptotic complexity analysis асимптотический анализ сложности
>
> asymptotic upper bound асимптотическая верхняя граница AVL tree АВЛ-дерево
>
> backtracking algorithm алгоритм обратного поиска
>
> balance factor фактор баланса
>
> balanced binary search tree сбалансированное двоичное дерево поиска balanced binary tree сбалансированное двоичное дерево
>
> big-O notation обозначение «О» большое
>
> binary search двоичный поиск
>
> binary search tree двоичное дерево поиска
>
> binary tree двоичное дерево
>
> bottom of the stack основание стека
>
> breadth-first search поиск в ширину
>
> breadth-first traversal обход в ширину
>
> bubble sort сортировка пузырьком
>
> bucket корзина
>
> bucket sort блочная сортировка
>
> cache hit rate коэффициент попадания в кеш
>
> cache memory кеш-память
>
> cache miss промах кеша
>
> code код
>
> complete binary tree совершенное двоичное дерево
>
> connected graph связный граф
>
> constraint ограничение
>
> counting sort сортировка подсчетом
>
> data structure структура данных
>
> degree степень
>
> depth глубина
>
> depth-first search поиск в глубину
>
> depth-first traversal обход в глубину
>
> directed graph ориентированный граф
>
> disconnected graph несвязный граф
>
> divide and conquer разделяй и властвуй
>
> double-ended queue двусторонняя очередь
>
> dynamic array динамический массив
>
> dynamic programming динамическое программирование
>
> edge ребро
>
> edit distance problem задача расстояния редактирования
>
> file файл
>
> front of the queue голова очереди
>
> full binary tree полное двоичное дерево
>
> function функция
>
> graph граф
>
> greedy algorithm жадный алгоритм
>
> hanota problem задача о Ханойских башнях
>
> hard disk жесткий диск
>
> hash collision хеш-коллизия
>
> hash function хеш-функция
>
> hash set хеш-набор
>
> hash table хеш-таблица
>
> head node головной узел
>
> heap куча
>
> heap sort пирамидальная сортировка
>
> heapify упорядочивание кучи
>
> height высота
>
> in-degree входящая степень
>
> index индекс
>
> initial state начальное состояние
>
> insertion sort сортировка вставкой
>
> iteration итерация
>
> knapsack problem задача о рюкзаке
>
> lazy deletion ленивое удаление
>
> leaf node листовой узел
>
> left subtree левое поддерево
>
> left-child node левый дочерний узел
>
> level уровень
>
> level-order traversal обход по уровням
>
> linear probing линейное зондирование
>
> linked list связный список
>
> linked list node, list node узел связного списка, узел списка list список
>
> load factor коэффициент заполнения
>
> loop цикл
>
> max heap максимальная куча
>
> merge sort сортировка слиянием
>
> method метод
>
> min heap минимальная куча
>
> n-queens problem задача об n ферзях
>
> open addressing открытая адресация
>
> out-degree исходящая степень
>
> parent node родительский узел
>
> path путь
>
> perfect binary tree идеальное двоичное дерево
>
> permutations problem задача о перестановках
>
> priority queue приоритетная очередь
>
> pruning обрезка
>
> queue очередь
>
> quick sort быстрая сортировка
>
> radix sort поразрядная сортировка
>
> random-access memory (RAM) оперативное запоминающее устройство (ОЗУ), опера-
>
> тивная память
>
> rear of the queue хвост очереди
>
> recursion рекурсия
>
> recursion tree дерево рекурсии
>
> red-black tree красно-черное дерево
>
> right subtree правое поддерево
>
> right-child node правый дочерний узел
>
> root node корневой узел
>
> searching algorithm алгоритм поиска
>
> selection sort сортировка выбором
>
> separate chaining цепная адресация
>
> sign-magnitude прямой код
>
> solution решение
>
> sorting algorithm алгоритм сортировки
>
> space complexity пространственная сложность
>
> stack куча
>
> state состояние
>
> state-transition equation уравнение перехода состояния subset-sum problem задача о сумме подмножеств
>
> tail node хвостовой узел
>
> tail recursion хвостовая рекурсия
>
> time complexity временная сложность
>
> top of the stack вершина стека
>
> top-k problem поиск k наибольших элементов
>
> tree node узел дерева
>
> undirected graph неориентированный граф
>
> variable переменная
>
> vertex вершина
>
> weighted graph взвешенный граф
>
> Книги издательства «ДМК Пресс» можно купить оптом и в розницу на складе издательства по адресу:
>
> Москва, ул. Электродная, д. 2, стр. 12, офис 7,
>
> тел. **+7 (499) 322--19--38**,
>
> а также заказать на сайте [**www.dmkpress.com**](http://www.dmkpress.com/)
>
> с доставкой в любой регион РФ.
##### Цзинь Юйдун (@krahets)
> **Алгоритмы и структуры данных с примерами на Python**
>
> Главный редактор *Мовчан Д. А.*
>
> Зам. главного редактора *Яценков В. С.*
>
> <editor@dmkpress.com>
>
> Перевод *Шевкун И. А.*
>
> Корректор *Абросимова Л. А.*
>
> Верстка *Луценко С. В.*
>
> Дизайн обложки *Трофимова С. В.*
>
> Формат 70×100 1/16.
>
> Гарнитура «PT Serif». Печать цифровая.
>
> Усл. печ. л. 40,14. Тираж 100 экз.
>
> Веб-сайт издательства: [www.dmkpress.com](http://www.dmkpress.com/)