Skip to content

Commit

Permalink
Merge pull request sfaqer#5 from sfaqer/feature/queue
Browse files Browse the repository at this point in the history
Реализация очередей и мелкие изменения
  • Loading branch information
sfaqer authored Dec 17, 2024
2 parents 3e6d6af + a1d9495 commit e4ce58f
Show file tree
Hide file tree
Showing 62 changed files with 7,135 additions and 1,700 deletions.
1,033 changes: 120 additions & 913 deletions README.md

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions doc/Итераторы/Итератор.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## Итератор

### Наследует: [ЧитающийИтератор](ЧитающийИтератор.md)

### Удалить

```bsl
// Удаляет элемент на который указывает итератор
//
Процедура Удалить()
```
25 changes: 25 additions & 0 deletions doc/Итераторы/СписокИтератор.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
## СписокИтератор

### Наследует: [ЧитающийСписокИтератор](ЧитающийСписокИтератор.md), [Итератор](Итератор.md)

### Установить

```bsl
// Заменяет значение на которое указывает итератор
//
// Параметры:
// Элемент - Произвольный - Устанавливаемый элемент
//
Процедура Установить(Элемент)
```

### Вставить

```bsl
// Вставляет элемент по месту указания итератора
//
// Параметры:
// Элемент - Произвольный - вставляемый элемент
//
Процедура Вставить(Элемент)
```
41 changes: 41 additions & 0 deletions doc/Итераторы/ЧитающийИтератор.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
## ЧитающийИтератор

### ЕстьСледующий

```bsl
// Проверяет что есть следующий элемент коллекции
//
// Возвращаемое значение:
// Булево - Истина, если есть следующий элемент коллекции
//
Функция ЕстьСледующий()
```

### Следующий

```bsl
// Возвращает следующий элемент коллекции
//
// Возвращаемое значение:
// Произвольный - следующий элемент коллекции
//
Функция Следующий()
```

### ДляКаждогоОставшегося

```bsl
// Выполняет переданный алгоритм для каждого элемента коллекции
// начиная с того на который указывает итератор
//
// Параметры:
// Действие - Действие - Делегат на процедуру с одним параметром
// которая принимает элемент коллекции
// - Строка - Лямбда выражение с одним параметром
// которая принимает элемент коллекции
//
// Пример:
// Итератор.ДляКаждогоОставшегося(Элемент -> Сообщить(Элемент));
//
Процедура ДляКаждогоОставшегося(Действие)
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
## ЧитающийСписокИтератор

### Наследует: [ЧитающийИтератор](ЧитающийИтератор.md)

### ЕстьПредыдущий

```bsl
// Проверяет что есть предыдущий элемент коллекции
//
// Возвращаемое значение:
// Булево - Истина, если есть предыдущий элемент коллекции
//
Функция ЕстьПредыдущий()
```

### Предыдущий

```bsl
// Возвращает предыдущий элемент коллекции
//
// Возвращаемое значение:
// Произвольный - предыдущий элемент коллекции
//
Функция Предыдущий()
```

### СледующийИндекс

```bsl
// Возвращает индекс на который указывает итератор
//
// Возвращаемое значение:
// Число - Индекс на который указывает итератор
//
Функция СледующийИндекс()
```

### ПредыдущийИндекс

```bsl
// Возвращает предыдущий индекс от того на который указывает итератор
//
// Возвращаемое значение:
// Число - Предыдущий индекс от того на который указывает итератор
//
Функция ПредыдущийИндекс()
```
221 changes: 221 additions & 0 deletions doc/Карты/Карта.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
## Карта

### Наследует: [ЧитаемаяКарта](ЧитаемаяКарта.md)

### Очистить

```bsl
// Удаляет все элементы карты
//
Процедура Очистить()
```

### Вставить

```bsl
// Вставляет в карту переданную пару ключ и значение
//
// Параметры:
// Ключ - Произвольный - Вставляемый ключ
// Значение - Произвольный - Вставляемое значение
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Значение, ранее было связанное с ключом
//
Функция Вставить(Ключ, Значение)
```

### ВставитьВсе

```bsl
// Вставляет все значения из переданной карты
//
// Параметры:
// Карта - Карта - Карта, значения из которой вставляются
//
Процедура ВставитьВсе(Карта)
```

### ВставитьЕслиОтсутствует

```bsl
// Вставляет в карту переданную пару ключ и значение, если карта не содержит переданного ключа
//
// Параметры:
// Ключ - Произвольный - Вставляемый ключ
// Значение - Произвольный - Вставляемое значение
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Значение, связанное с ключом, пустой если карта не содержала ключа
//
Функция ВставитьЕслиОтсутствует(Ключ, Значение)
```

### ВычислитьБезусловно

```bsl
// Вычисляет значение для переданного ключа через функцию переназначения, если функция вернёт значение
// то оно будет вставлено по указанному ключу, если функция вернёт Неопределено, то из карты будет удалён
// переданный ключ, если ранее карта его содержала
//
// Параметры:
// Ключ - Произвольный - Ключ, для которого вычисляется значение
// ФункцияПереназначения - Действие - Делегат на функцию с двумя параметрами, в которую передаются ключ
// и Опциональный от текущего значения ключа (пустой если ключа нет)
// - Строка - Лямбда выражение с двумя параметрами в которую будут переданы ключ
// и Опциональный от текущего значения ключа (пустой если ключа нет)
//
// Пример:
// Карта.ВычислитьБезусловно("Ключ", "(Ключ, Значение) -> ?(Значение.Пустой(), Истина, Ложь)")
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Новое значение ключа
//
Функция ВычислитьБезусловно(Ключ, ФункцияПереназначения)
```

### ВычислитьЕслиОтсутствует

```bsl
// Вычисляет значение для переданного ключа, если текущая карта не содержит переданного ключа,
// через функцию назначения, функция будет вызвана только если карта не содержит ключа,
// если функция вернёт значение, оно будет вставлено в карту по указанному ключу,
// если функция вернёт Неопределенно, то значение вставлено не будет
//
// Параметры:
// Ключ - Произвольный - Ключ, для которого вычисляется значение
// ФункцияНазначения - Действие - Делегат на функцию с одним параметром, в которую передаётся переданный ключ
// - Строка - Лямбда выражение с одним параметром в который будет передан переданный ключ
//
// Пример:
// Карта.ВычислитьЕслиОтсутствует("Ключ", "(Ключ) -> СтрДлина(Ключ)")
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Новое значение ключа если оно было вычислено, или текущее значение ключа
// если карта уже содержала переданный ключ
//
Функция ВычислитьЕслиОтсутствует(Ключ, ФункцияНазначения)
```

### ВычислитьЕслиПрисутствует

```bsl
// Вычисляет значение для переданного ключа, если текущая карта содержит переданный ключ,
// через функцию переназначения, функция будет вызвана только если карта содержит ключ,
// если функция вернёт значение, оно будет вставлено в карту по указанному ключу,
// если функция вернёт Неопределенно, то ключ будет удалён из карты
//
// Параметры:
// Ключ - Произвольный - Ключ, для которого вычисляется значение
// ФункцияПереназначения - Действие - Делегат на функцию с двумя параметрами, в которую передаются ключ
// и текущее значение ключа
// - Строка - Лямбда выражение с двумя параметрами, в которые передаются ключ и текущее
// значение ключа
//
// Пример:
// Карта.ВычислитьЕслиПрисутствует("Ключ", "(Ключ, Значение) -> {
// | Если Ключ = ""Ключ"" Тогда
// | Возврат СтрДлина(Значение.Получить());
// | Иначе
// | Возврат Неопределенно;
// | КонецЕсли;
// |}"
// );
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Новое значение ключа
//
Функция ВычислитьЕслиПрисутствует(Ключ, ФункцияПереназначения)
```

### Слить

```bsl
// Объединяет текущее и переданное значение по указанному ключу через функцию переназначения,
// функция будет вызвана только если существует текущее значение ключа, в ином случае будет вставлено значение
// если функция вернёт значение, оно будет вставлено в карту по указанному ключу,
// если функция вернёт Неопределенно, то ключ будет удалён из карты
//
// Параметры:
// Ключ - Произвольный - Ключ, значения для которого требуется объединить
// Значение - Произвольный - Новое значение ключа
// ФункцияПереназначения - Действие - Делегат на функцию с двумя параметрами в которые передаются
// существующее и новое значение ключа
// - Строка - Лямбда выражение с двумя параметрами в которые передаются
// существующее и новое значение ключа
//
// Пример:
// Карта.Слить("Ключ", 4, "(СуществующееЗначение, НовоеЗначение) ->
// | Возврат ?(НовоеЗначение > СуществующееЗначение,
// | НовоеЗначение,
// | СуществующееЗначение
// | );")
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Новое значение ключа
//
Функция Слить(Ключ, Значение, ФункцияПереназначения)
```

### Заменить

```bsl
// Заменяет значение по переданному ключу, если ключа в карте нет, то замена не происходит
//
// Параметры:
// Ключ - Произвольный - Ключ, значение которого требуется заменить
// Значение - Произвольный - Новое значение ключа
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Прошлое значение ключа, или пустой, если ключа не было
//
Функция Заменить(Ключ, Значение)
```

### ЗаменитьЕслиЗначение

```bsl
// Заменяет значение по переданному ключу с проверкой текущего значения,
// если ключа в карте нет, то замена не происходит
//
// Параметры:
// Ключ - Произвольный - Ключ, значение которого требуется заменить
// ПрошлоеЗначение - Произвольный - Значение, которое должно быть связано с ключом для замены
// Значение - Произвольный - Новое значение ключа
//
// Возвращаемое значение:
// Булево - Истина, если замена была произведена
//
Функция ЗаменитьЕслиЗначение(Ключ, ПрошлоеЗначение, Значение)
```

### ЗаменитьВсе

```bsl
// Заменяет значение для всех ключей карты, через функцию переназначения
//
// Параметры:
// ФункцияПереназначения - Действие - Делегат на функцию с двумя параметрами, в которую
// передаются ключ и значение ключа
// - Строка - Лямбда выражение с двумя параметрами, в которые передаются
// ключ и значение ключа
//
// Пример:
// Карта.ЗаменитьВсе("(Ключ, Значение) -> Значение + 1")
//
Процедура ЗаменитьВсе(ФункцияПереназначения)
```

### Удалить

```bsl
// Удаляет переданный ключ из карты
//
// Параметры:
// Ключ - Произвольный - Удаляемый ключ
//
// Возвращаемое значение:
// Опциональный<Произвольный> - Значение, ранее было связанное с ключом
//
Функция Удалить(Ключ)
```
Loading

0 comments on commit e4ce58f

Please sign in to comment.