// 2025-2026 Богданович Давид Когут Прихожденко (кдб.дійсність.укр)
взяти визначення мавка/машина;
простір мавка {
дія знайти_задіяне(
М: *Машина,
задіяні: Задіяні,
позиція: п32,
назва: *ПредметТексту,
вихід_значення: *Значення
) -> логічне {
змінна розмір_позиційних = задіяні.розмір - (задіяні.кількість_імен * 2);
змінна знайдено = ні;
якщо розмір_позиційних > позиція {
вихід_значення::вміст = задіяні.дані[позиція];
знайдено = так;
}
якщо задіяні.кількість_імен > 0 {
змінна п: п32 = 0;
поки п < задіяні.кількість_імен {
змінна елемент = задіяні.дані[розмір_позиційних + задіяні.кількість_імен + п].дані як *Предмет як *ПредметТексту;
якщо перевірити_чи_предмети_тексту_рівні(М, елемент, назва) {
вихід_значення::вміст = задіяні.дані[розмір_позиційних + п];
вернути так;
}
п += 1;
}
}
вернути знайдено;
}
дія перебрати_позиційні_задіяні(
М: *Машина,
задіяні: Задіяні,
дія_перебору: ДіяПереборуПозиційнихЗадіяних,
аргумент: адреса
) {
змінна розмір_позиційних = задіяні.розмір - (задіяні.кількість_імен * 2);
змінна п: п32 = 0;
поки п < розмір_позиційних {
дія_перебору(
М,
задіяні,
розмір_позиційних,
п,
задіяні.дані[п],
аргумент
);
п += 1;
}
}
дія перебрати_іменовані_задіяні(
М: *Машина,
задіяні: Задіяні,
дія_перебору: ДіяПереборуІменованихЗадіяних,
аргумент: адреса
) {
змінна розмір_позиційних = задіяні.розмір - (задіяні.кількість_імен * 2);
змінна п: п32 = 0;
поки п < розмір_позиційних {
дія_перебору(
М,
задіяні,
розмір_позиційних + задіяні.кількість_імен + п,
задіяні.дані[розмір_позиційних + задіяні.кількість_імен + п].дані як *Предмет як *ПредметТексту,
задіяні.дані[розмір_позиційних + п],
аргумент
);
п += 1;
}
}
дія звільнити_задіяні(
М: *Машина,
задіяні: Задіяні
) {
якщо задіяні.вид == ВидЗадіяних1 {
вернути; // задіяні з накопичувача діяльності не можна звільняти
}
якщо задіяні.дані != пусто {
звільнити(М, задіяні.дані);
}
}
}