Вычислительное мышление
| English | Русский |
|---|---|
| computational thinking/ˌkɒmpjuːˈteɪʃənl ˈθɪŋkɪŋ/ | вычислительное мышление |
| abstraction/əbˈstrækʃn/ | абстракцией |
| decomposition/ˌdiːkɒmpəˈzɪʃn/ | разложение |
| pattern recognition/ˈpætn ˌrekəɡˈnɪʃn/ | распознавание образов |
| algorithm/ˈælɡərɪθəm/ | алгоритм |
| function/ˈfʌŋkʃn/ | функцией |
| module/ˈmɒdjuːl/ | модуль |
| sub-problem/sʌb ˈprɒbləm/ | подзадача |
| procedure/prəˈsiːdʒə/ | процедура |
| structure chart/ˈstrʌktʃə tʃɑːt/ | структурная диаграмма |
Карта, которая намеренно неточна
- В 1931 году Гарри Бек, безработный чертёжник, перерисовал карту лондонского метрополитена.
- Он отказался от реальной географии: каждая линия стала прямой, а станции равномерно распределены.
- Карта была «неправильной», но её стало мгновенно проще использовать. Все метро-карты мира теперь копируют её.
- Бек сохранил только то, что нужно пассажиру: станции и способы их соединения. Это вычислительное мышление до появления компьютеров.
Что такое вычислительное мышление
- Совокупность ментальных инструментов для анализа проблемы и проектирования решения, которое может выполнить компьютер.
- Программа называет два из них: абстрагирование и декомпозиция.
- Два других поддерживают их: распознавание паттернов и проектирование алгоритмов.
Абстрагирование
- Абстрагирование означает сохранение существенных особенностей задачи и игнорирование нерелевантных деталей, создавая упрощённую модель.
- Карта метро сохраняет станции и линии, отсекая географию.
- Имя переменной скрывает адрес памяти; функция скрывает блок кода под именем; класс содержит только атрибуты, необходимые системе.

Абстрагирование сохраняет лишь существенные особенности задачи и отсекает нерелевантные детали
Абстрагирование означает:
Абстрагирование упрощает задачу до её сути. Разбиение на части — это декомпозиция.
Карта поездов, сохраняющая станции и линии, но опускающая реальную географию, является примером абстрагирования.
Она сохраняет то, что важно (станции, соединения), и отбрасывает остальное — именно так работает абстрагирование.
Цель и преимущества
- Цель: получить более простую модель задачи, содержащую только детали, необходимые для её решения.
- Преимущества: задачу легче понять и запрограммировать; программа меньше, быстрее пишется и тестируется; ту же модель можно переиспользовать для похожей задачи.
- Экзаменатор просит цель и преимущества отдельно. Выучите оба пункта.
Выберите все утверждения, описывающие преимущества абстрагирования.
Абстрагирование отбрасывает детали, поэтому сохранение всех деталей противоречит ему, а вопрос оборудования ни к чему. Три реальных преимущества — понимание, размер/скорость разработки и переиспользование.
Разбор примера: абстрактная модель
- Кофейня хранит для каждого клиента карты лояльности: ID, имя, домашний адрес, email, номер мобильного телефона, дату рождения, баллы и дату последнего визита.
- Новый модуль отправляет купон по электронной почте клиентам, которые не посещали кофейню 30 дней. Какие данные ему нужны?
- Нужны: ID (для поиска клиента), email (для отправки), имя (для персонализации сообщения), дата последнего визита (для выбора получателей).
- Не нужны: домашний адрес, номер мобильного телефона, дата рождения, баллы. Их исключение и есть абстрагирование.
Какие из перечисленных элементов нужны модулю email-ваучера в разобранном примере? Выберите все подходящие варианты.
Email для отправки, дата последнего визита для определения права на участие и ID для поиска клиента. Почтовый адрес и день рождения не участвуют в электронном ваучере, поэтому абстрактная модель этого модуля их исключает.
Декомпозиция
- Декомпозиция означает разделение большой задачи на меньшие подзадачи, каждую из которых легче решить.
- Найдите основные части → разделите каждую на подзадачи → прекратите, когда каждая станет достаточно маленькой для прямого программирования → решите их и объедините.
- Каждая подзадача становится программным модулем: процедурой или функцией.

Декомпозиция программы на модули и подмодули
Декомпозиция означает:
Декомпозиция делит большую задачу на меньшие, решаемые отдельно подзадачи.
Каждая подзадача, полученная в результате декомпозиции, становится модулем программы: процедурой или ____.
Формулировка учебной программы точна: декомпозиция ведёт к понятию модуля программы — процедуры или функции.
Разбор примера: программа бронирования в кино
- Кинозал с несколькими экранами хочет получить программу, позволяющую клиентам бронировать места.
- ShowFilms() показывает фильмы, их экраны и время начала.
- ChooseSeats() отображает план посадочных мест, принимает выбор клиента и проверяет, свободны ли места.
- TakePayment() рассчитывает цену, обрабатывает оплату картой и печатает билет.
- Три модуля, каждый из которых достаточно мал для самостоятельного проектирования, программирования и тестирования.
Сопоставьте каждую часть дизайна бронирования кинозала с тем, чем она является.
Три модуля, каждый выполняет одну функцию, и структурная диаграмма, показывающая, как они связаны.
Зачем декомпозировать? Ответ на три балла
- Каждая подзадача достаточно мала, чтобы проектировать, писать код и тестировать её отдельно.
- Разные программисты могут работать над разными модулями одновременно.
- Уже существующий модуль или библиотечную процедуру можно переиспользовать, а ошибку найти проще, так как она находится внутри одного модуля.
- Схема декомпозиции называется структурной диаграммой (тема 12).
Четыре столпа
- Декомпозиция: разбейте проблему на части. Распознавание образов: найдите повторяющиеся элементы, чтобы одно решение подошло для нескольких частей.
- Абстрагирование: уберите детали, которые не имеют значения. Проектирование алгоритмов: напишите пошаговое решение.
- На практике вы применяете их примерно в таком порядке, но проходите этот цикл несколько раз.
Решение задачи вычислительным способом
Пройдите через четыре основы в том порядке, в каком их следует применять — разбейте задачу на части, найдите повторяющиеся элементы, отбросьте несущественное, затем запишите шаги.
Сопоставьте каждый элемент вычислительного мышления с его значением.
Четыре элемента — декомпозиция, обнаружение закономерностей, абстрагирование, затем проектирование алгоритма.
Расположите этапы вычислительного мышления в логическом порядке.
Разбейте на части, найдите повторяющееся, отбросьте лишнее, затем запишите шаги.
Не путайте их
- Абстрагирование убирает детали; декомпозиция разделяет проблему. «Разбиение на более мелкие части» — это не описание абстрагирования.
- Ответ с формулировкой «описать» требует объяснения как, а не одного слова: скажите, что именно разбивается, на что и чем становится каждая часть.
- Привяжите ответ к сценарию. Ответ о декомпозиции, который никогда не упоминает систему запасов, кинозал или магазин, теряет один балл.
В вопросе «описать декомпозицию» ответ, никогда не упоминающий сценарий (магазин, кинозал), всё равно может получить максимальный балл.
Ключи к оценкам ограничивают обобщенный ответ: в недавнем вопросе о контроле запасов было указано «максимум 2 балла, если не упомянут контроль запасов». Назовите модули и данные конкретного сценария.
Вы поняли
- абстрагирование = оставить главное, игнорировать нерелевантные детали → более простая модель
- декомпозиция = разбить большую проблему на подзадачи → каждая превращается в процедуру или функцию
- преимущества декомпозиции: отдельный дизайн/код/тест, распределение работы, переиспользование модулей, быстрое обнаружение ошибок
- всегда описывайте с использованием собственных модулей и данных из сценария