Перейти к содержанию

B.4 · Абстрактные типы данных (только для HL)

International Baccalaureate · IB Diploma · Computer Science · HL · Тема 8

8.1

Область применения и требования

Поддерживаемая фокусная точка HL. Первая оценка 2027 целевой показатель; официальный PDF возвращает 403; ранее приобретенный краткий план является финальной оценкой 2026. Оставшиеся руководство, оценка и практические требования сохраняют свои зарегистрированные удержания.

Предварительные требования: прочитайте указанные количества и единицы измерения, используйте арифметику и нижеприведённые условия модели. Каждый урок осваивает собственный метод перед независимым переносом.

Это оригинальные или явно вымышленные учебные примеры, а не фактические измерения или завершённые оценочные исследования учащихся.

8.2

Абстрактные типы данных: контракт операций

Что могло бы объяснить это наблюдение?

  • Симуляция очереди требует обработки самого старого ожидающего элемента первым. Стек выдает самый свежий элемент первым, поэтому контракт операции имеет значение.
  • Начните с гипотезы. Укажите величины или признаки, которые вы будете сравнивать, затем определите, какие доказательства могут различить два объяснения.

Постройте модель

  • Абстрактный тип данных задает значения и операции независимо от конкретной реализации. Стек работает по принципу LIFO (последним пришел — первым ушел); очередь работает по принципу FIFO (первым пришел — первым ушел). Интерфейс коллекции требует определенного поведения для пустых и недопустимых операций.
  • стек: Абстрактный тип данных «последним вошел — первым вышел»; очередь: Абстрактный тип данных «первым вошел — первым вышел».
Абстрактные типы данных: контракт на операцию: оригинальная диаграмма разобранного примера

Выберите доказательства для проверки гипотезы

  • Выберите структуру для требуемого паттерна доступа. Сложность зависит от реализации и предположений: удаление первого элемента из массива со сдвигом отличается от перемещения указателя головы в очереди.
  • Выполните трассировку последовательности операций вручную, затем сравните программу с ожидаемыми состояниями. Протестируйте пустые, одинарные и повторяющиеся операции. Опишите поведение переполнения при фиксированной ёмкости.

Работайте с известными величинами

  • Укажите известные значения и их единицы измерения. Выберите соотношение, предположения которого подходят к данному случаю, затем преобразуйте формулу перед подстановкой.
  • Известно: добавление A, B и C в очередь, затем два удаления. A и B покидают очередь; C остаётся. После добавления D остаётся два элемента: C и D. Те же самые вставки в стек привели бы к удалению C, а затем B.

Пример:

Очередь изначально пуста, получает 7 элементов и удаляет 4. Найдите количество оставшихся элементов. Используйте ту же последовательность: известные величины → модель → соотношение → подстановка → единица и интерпретация.


Проверьте вывод и его границы применимости

  • ADT не является конкретной схемой расположения памяти. Очередь не сортирует элементы по приоритету, если её контракт не определяет приоритетную очередь.
  • Вернитесь к первоначальному наблюдению. Объясните, что подтверждает результат, при каких условиях он верен и каким образом можно проверить конкурирующее объяснение.

Предупреждение:

Каждая очередь автоматически сортирует элементы по приоритету. Это утверждение неверно: ADT не является конкретной схемой расположения памяти. Очередь не сортирует элементы по приоритету, если её контракт не определяет приоритетную очередь.

Ключевые моменты:

Абстрактные типы данных: контракт операции. Выберите структуру для требуемого шаблона доступа. Сложность зависит от реализации и допущений: удаление первого элемента из массива со сдвигом отличается от перемещения указателя головы в очереди.

Работоспособная трассировка и границы

from collections import deque
queue = deque()
queue.extend(["A", "B"])
print(queue.popleft())
queue.append("C")
print(queue.popleft())
print(list(queue))
queue.clear()
print(queue.popleft() if queue else "EMPTY")

Ожидаемый вывод:

A
B
['C']
EMPTY

Удаление слева реализует FIFO. Явный пустой guard определяет граничный результат; вызов deque.popleft без него вызовет IndexError. Стек же удаляет элементы справа.

English Русский
stack/stæk/ стек
queue/kjuː/ очередь

Больше тем в International Baccalaureate · IB Diploma · Computer Science · HL

Войти или создать аккаунт

IGCSE, A-Level & AP