Что такое ошибка «Имя не объявлено» в КуМире?

Ошибка «Имя не объявлено» — это сообщение об ошибке компиляции (проверки) в учебной среде программирования «КуМир» (Комплект Учебных МИРов). Она возникает, когда программа пытается использовать идентификатор (имя переменной, функции или алгоритма), который не был предварительно объявлен с помощью соответствующей команды. По сути, это способ системы сказать: «Я не знаю, что означает это слово, ты мне о нём не рассказывал».

КуМир — это российская среда, предназначенная для начального обучения программированию, часто — для управления виртуальными или учебными роботами. Как и многие строгие языки (например, Паскаль, от которого унаследована идеология КуМира), он требует обязательного описания всех используемых объектов до начала работы с ними. Это приучает к дисциплине программирования и помогает избежать опечаток.

Ошибка «Имя не объявлено» означает, что Кумир не распознает данное имя и не может связать его с соответствующими действиями. В результате ваша программа может не работать корректно или вообще не запуститься.

Почему возникает эта ошибка?

Основная причина — нарушение порядка «сначала объяви, потом используй». Рассмотрим типичные ситуации:

1. Использование переменной без команды «алг» или «вещ», «цел», «лит», «сим»

Самая частая причина. Вы пишете в алгоритме: робот.вперед(шаги), но нигде ранее не указали, что такое шаги и какого типа эта переменная.

2. Опечатка в имени переменной

Вы объявили переменную как цел шаги_робота, а в коде используете шагиробота или шаги_робот. Для КуМира это три разных, необъявленных имени.

3. Попытка использовать несуществующий алгоритм (подпрограмму)

Вы вызвали команду обойти_препятствие(), но забыли описать сам алгоритм с таким заголовком выше по коду.

4. Использование переменной вне её области видимости

Если переменная объявлена внутри вспомогательного алгоритма, её нельзя использовать в основном или в другом алгоритме.

Как исправить ошибку «Имя не объявлено»?

Решение следует из причины. Вот пошаговый алгоритм:

  1. Найдите строку, на которую ругается КуМир. Среда обычно подсвечивает место ошибки.
  2. Определите, что за имя (идентификатор) вызвало проблему. Посмотрите на подчёркнутое слово.
  3. Проверьте, объявлено ли это имя ДО его использования.
    • Для переменной: перед основным кодом (обычно после алг) должна быть строка с её объявлением: вещ скорость, цел счетчик, лит имя_робота.
    • Для вспомогательного алгоритма (процедуры/функции): должен существовать его заголовок и тело, расположенные до или после основного алгоритма.
  4. Если имя не объявлено — объявите его. Добавьте соответствующую строку в начало алгоритма.
  5. Если имя объявлено, но ошибка осталась — проверьте орфографию. Имена в КуМире чувствительны к регистру и должны быть написаны одинаково везде.

Пример ошибки и исправления:

Код с ошибкой:
алг старт
нач
робот.вперед(расстояние) // ОШИБКА! Переменная 'расстояние' не объявлена.
кон

Исправленный код:
алг старт
дано | ничего
надо | робот проехал вперёд
цел расстояние // ОБЪЯВЛЕНИЕ переменной целого типа
нач
расстояние := 5
робот.вперед(расстояние) // Теперь ошибки нет
кон

Отличия от других ошибок в КуМире

Важно не путать «Имя не объявлено» с другими частыми ошибками:

  • «Неверный тип фактического параметра» — имя объявлено, но вы пытаетесь передать в команду значение неподходящего типа (например, текст вместо числа).
  • «Нельзя использовать служебное имя» — вы пытаетесь назвать переменную словом, которое является командой КуМира (например, алг, нач, цел).
  • Ошибки выполнения (например, «Робот врезался в стену») — это логические ошибки, а не синтаксические. Программа была проверена (скомпилирована) успешно, но упала во время работы.

Практическое значение и почему это важно

Изучение и понимание ошибки «Имя не объявлено» — это фундаментальный шаг в обучении программированию. Она учит:

  1. Дисциплине кода: необходимо продумывать структуру данных заранее.
  2. Внимательности к деталям: одна опечатка может сломать всю программу.
  3. Пониманию этапов работы программы: компиляция (проверка синтаксиса) идёт перед выполнением.
  4. Принципам строгой типизации: каждая переменная должна иметь известный тип.

Таким образом, эта ошибка — не враг, а помощник, который на раннем этапе указывает на неточность в логике или оформлении программы для робота. Умение быстро её находить и исправлять — ключевой навык начинающего программиста, работающего в среде КуМир.

Читайте также