Слово «алгоритм» звучит как пугающий технический термин из информатики, но на самом деле это просто рецепт — точный, упорядоченный набор шагов для решения задачи. Слово звучит пугающе; идея — нет. Любой, кто следовал рецепту, чтобы испечь торт, или объяснял кому-то пошаговый путь до дома, уже написал алгоритм. Сложная часть информатики обычно не в самом коде — а в том, чтобы научиться мыслить шагами, достаточно точными, чтобы нечто, лишённое всякого здравого смысла, могло следовать им в точности.
Базовый уровень GCSE
Почему «точность» — это вся суть игры
Скажите другу-человеку «проверь, чётное ли число», и он мгновенно поймёт, что вы имеете в виду. Скажите то же самое компьютеру, и ему нужен точный, однозначный тест — как правило, оставляет ли деление числа на 2 остаток 0? Рецепт для человека может сказать «готовьте до золотистого цвета» и положиться на суждение; алгоритм должен точно указать, что означает «золотистый», таким образом, который можно механически проверить, каждый раз, без места для интерпретации.
Алгоритм — это точный набор шагов: возьмите число, проверьте условие, а затем следуйте ровно по одному из двух путей в зависимости от ответа. Никаких догадок, никакого суждения.
Блок-схемы и псевдокод: планирование до написания кода
Прежде чем писать настоящий код, программисты часто сначала набрасывают алгоритм — либо в виде блок-схемы (блоки и стрелки, наглядно показывающие логику), либо в виде псевдокода (шаги на простом английском, записанные в структуре, похожей на код). Оба существуют по одной и той же причине: гораздо легче заметить логическую ошибку — пропущенный случай, шаг в неправильном порядке — в простой диаграмме или нескольких строках псевдокода, чем утонувшую в настоящем синтаксисе. Планирование алгоритма и написание кода — это действительно два разных навыка, и их смешение — распространённая причина, по которой ученикам поначалу трудно даётся программирование.
Вопрос в формате экзамена
Программист пишет алгоритм для нахождения наибольшего числа в списке, но он даёт сбой при передаче пустого списка. Объясните, почему это происходит, и опишите, как следует изменить алгоритм, чтобы обработать этот случай. [3 баллов]
Показать образец ответа и разбивку баллов
- Алгоритм, вероятно, изначально предполагает, что первый элемент списка является текущим наибольшим, а затем сравнивает остальные — но у пустого списка нет первого элемента, с которого можно было бы начать (1 балл)
- Компьютер следует своим инструкциям в точности так, как они написаны, и не может заметить эту проблему, если ему явно не было указано проверить её (1 балл)
- Алгоритм должен сначала проверить, пуст ли список, и обработать этот случай отдельно (например, вернув сообщение об ошибке), прежде чем пытаться выполнить какое-либо сравнение (1 балл)
На что обращает внимание экзаменатор: точно определите, почему случай пустого списка нарушает обычное предположение алгоритма — «нет первого элемента, с которого можно начать» — а не просто говорите «это не работает».
Частая ошибка: описывать исправление только как «добавить обработку ошибок», не указывая, какое условие нужно проверить и почему это важно именно для данного алгоритма.
Почему граничные случаи важнее типичного случая
Работающий алгоритм для типичного случая — это обычно лёгкая часть. Навык, который отличает надёжный алгоритм от хрупкого, — это размышление о том, что происходит на границах: пустой список, отрицательное число там, где ожидались только положительные, поиск чего-то, чего вообще не существует. Компьютер будет так же добросовестно следовать неверным инструкциям, как и верным — у него нет способа заметить, что что-то пошло не так, если только алгоритм не был написан для проверки этого. Если алгоритмы, блок-схемы или логика программирования требуют объяснения как способ мышления, а не синтаксис для заучивания, именно для этого существует наше репетиторство по информатике GCSE — смотрите полный путь обучения здесь.
Часто задаваемые вопросы
Является ли алгоритм тем же самым, что и код?
Нет — алгоритм — это план; код — это конкретный способ записать этот план на языке, который компьютер может выполнить. Один и тот же алгоритм (скажем, сортировка списка от меньшего к большему) можно записать на Python, Java или в виде псевдокода на простом английском, и под этим всё равно будет один и тот же алгоритм.
Почему алгоритмы должны обрабатывать граничные случаи, такие как пустой список?
Потому что компьютер будет следовать инструкциям точно так, как они написаны, без какого-либо здравого смысла, на который можно опереться, — если алгоритм предполагает, что элемент всегда будет хотя бы один, а вместо этого получает пустой список, он обычно аварийно завершится или поведёт себя неправильно, а не «поймёт», что что-то необычно, если только алгоритм явно не был написан для проверки этого случая.
В чём разница между блок-схемой и псевдокодом?
Это два разных способа описать один и тот же алгоритм перед написанием настоящего кода — блок-схема показывает логику наглядно с помощью блоков и стрелок, что легче охватить одним взглядом, тогда как псевдокод записывает её простыми, структурированными шагами, похожими на код, что ближе к тому, как на самом деле будет выглядеть итоговая программа.
Оценки и отзывы читателей
Оцените эту статью по нескольким критериям — ваше мнение помогает другим читателям и помогает нам становиться лучше.
Была ли эта статья полезной?
Расскажите, что вы думаете — исправление, вопрос, оставшийся без ответа, или тема, которую вы хотели бы увидеть далее.
Хотите обсудить голосом? Запишитесь на бесплатный видеозвонок в удобное время: 15 минут для короткого вопроса, 30 — для всего остального. Время показывается в вашем часовом поясе.

Об авторе
Sudershan Soni
Основатель и главный преподаватель в Mostak Services — репетитор по математике, естественным наукам, информатике и STEM со степенью магистра и более чем 20-летним профессиональным опытом, преподаёт ученикам от уровня 11+ и GCSE до A-Level и выше, онлайн по всему миру.
Читать полный профиль