Файл: Синтаксические ошибки.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 26

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Виды ошибок

Ошибки в программах могут допускаться от самого начального этапа составления алгоритма решения задачи до окончательного оформления программы. Разновидностей ошибок достаточно много. Рассмотрим некоторые группы ошибок и соответствующие примеры:



Синтаксические ошибки

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

Отсутствие сообщений транслятора о наличии синтаксических ошибок является необходимым условием правильности программы, но не может свидетельствовать о том, что она даст правильный результат.

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

  • Отсутствие знака пунктуации;

  • Несоответствие количества открывающих и закрывающих скобок;

  • Неправильно сформированный оператор;

  • Неправильная запись имени переменной;

  • Ошибка в написании служебных слов;

  • Отсутствие условия окончания цикла;

  • Отсутствие описания массивов и т.п.

Ошибки, которые не обнаруживает транслятор

В случае правильного написания операторов в программе может присутствовать большое количество ошибок, которые транслятор не может обнаружить. Рассмотрим примеры таких ошибок:

Логические ошибки:

  • После проверки заданного условия неправильно указана ветвь алгоритма;

  • Неполный перечень возможных условий при решении задачи;

  • Один или более блоков алгоритма в программе пропущен.

Ошибки в циклах:

  • Неправильно указано начало цикла;

  • Неправильно указаны условия окончания цикла;

  • Неправильно указано количество повторений цикла;

  • Использование бесконечного цикла.

Ошибки ввода-вывода; Ошибки при работе с данными:

  • Неправильно задан тип данных;

  • Организовано считывание меньшего или большего объёма данных, чем нужно;

  • Неправильно отредактированы данные.


Ошибки в использовании переменных:

  • Используются переменных, для которых не указаны начальные значения;

  • Ошибочно указана одна переменная вместо другой.

Ошибки при работе с массивами:

  • Пропущено предварительное обнуление массивов;

  • Неправильное описание массивов;

  • Индексы массивов следуют в ошибочном порядке.

Ошибки в арифметических операциях:

  • Неправильное использование типа переменной (например, для сохранения результата деления используется целочисленная переменная);

  • Неправильно определён порядок действий;

  • Выполняется деление на нуль;

  • При расчёте выполняется попытка извлечения квадратного корня из отрицательного числа;

  • Не учитываются значащие разряды числа.

Классификация ошибок

Ошибку можно отнести к одному из ниже перечисленных классов:

  - системные ошибки;

-   ошибки в выборе алгоритма;

-   алгоритмические ошибки;

-   технологические ошибки;

-   программные ошибки.

Системные ошибки в большом (сложном) программном обес­печении определяются, прежде всего неполной информацией о реальных процессах, происходящих в источниках и потребителях информации.

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

Некачественное определение требований к программе при­водит к созданию программы, которая будет правильно решать неверно сформулированную задачу. В таких случаях, как правило, требуется полное перепрограммирование.

Признаком того, что создаваемая для заказчика программа может оказаться не соответствующей его истинным потреб­ностям, служит ощущение неясности задачи. Письменная ре­гистрация требований к программе заставляет заказчика соб­раться с мыслями и дать достаточно точное определение тре­бований. Всякие устные указания являются заведомо ненадеж­ными и часто приводят к взаимному недопониманию.

При автономной и в начале комплексной отладки ПО доля найденных системных ошибок в нем невелика (примерно 10%), но она существенно возрастает (до 35—40%) на завершающих этапах комплексной отладки. В процессе эксплуатации преоб­ладающими являются системные ошибки (примерно 80% всех ошибок). Следует отметить также большое количество команд и групп программ, которые корректируются при исправлении каждой системной ошибки.



Ошибки в выборе алгоритма. В настоящее время накоплен значительный фонд алгоритмов для решения типовых задач.

К сожалению, часто плохой выбор алгоритма становится очевидным лишь после его опробования. Поэтому все же следует уделять внимание и время выбору алгоритма, с тем, чтобы впоследствии не приходилось переделывать каждую программу.

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

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

К алгоритмическим ошибкам следует отнести также ошибки связей модулей и функциональных групп программ. Их можно квалифицировать как ошибки некорректной постановки задачи. Алгоритмические ошибки проявляются в неполном учете диапазонов изменения переменных, в неправильной оценке точности используемых и получаемых величин, в неправильном учете связи между различными переменными, в неадекватном представлении формализованных условий решения задачи в спе­цификациях или схемах, подлежащих программированию и т.д. Эти обстоятельства являются причиной того, что для исправ­ления каждой алгоритмической ошибки приходится изменять иногда целые ветви программного обеспечения, т.е. пока еще существенно больше операторов, чем при исправлении прог­раммных ошибок.

Алгоритмические ошибки значительно труднее поддаются обнаружению методами формализованного автоматического контроля. Вот почему необходимо тщательным образом проду­мывать алгоритм прежде, чем транслировать его в программу.

Некоторые программисты проверяют алгоритм следующим образом. Через несколько дней после составления алгоритма они повторно обращаются к описанию задачи и составляют алгоритм заново. Затем сличают оба варианта. Такой шаг на первый взгляд может показаться пустой тратой времени
, однако всякая ошибка на уровне алгоритма может в дальнейшем обернуться катаст­рофой и повлечь основательный пересмотр программы.

Технологические ошибки — это ошибки документации и фик­сирования программ в памяти ЭВМ. Они составляют 5—10 % от общего числа ошибок, обнаруживаемых при отладке. Боль­шинство технологических ошибок выявляются автоматически формализованными методами (например, транслятором).

Программные ошибки. Языки программирования - это ис­кусственные языки, созданные человеком для описания алго­ритмов. Все предложения таких языков строятся по строгим синтаксическим правилам, обеспечивающим однозначное их понимание, что позволяет поручать расшифровку алгоритма ЭВМ, построенного по правилам семантики.

Синтаксис - это набор правил построения из символов алфавита специальных конструкций, с помощью которых можно составлять различные алгоритмы (программы). Эти правила требуют их неукоснительного соблюдения. В противном случае будет нарушен основной принцип -  четкая и строгая одноз­начность в понимании алгоритма.

Семантика языка — это система правил истолкования пост­роений конструкций. Например, если фрагмент конструкции имеет вид А*(В + С), то правила семантики предписывают, что сначала выполняется сложение величин В и С, а затем результат умножается на величину А. Правила семантики (смысла) конст­рукций обычно вполне естественны и понятны, но в некоторых случаях их надо специально оговаривать, комментировать.

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

Итак, выделяют синтаксические и семантические ошибки.

Под синтаксическими ошибками понимается нарушение пра­вил записи программ на данном языке программирования. Они выявляются самой машиной, точнее транслятором, во время пе­ревода записи алгоритма на язык машины. Исправление их осу­ществляется просто — достаточно сравнить формат исправляемой конструкции с синтаксисом в справочнике и исправить его.

Семантические (смысловые) ошибки — это применение опе­раторов, которые не дают нужного эффекта (например, а—в вместо а+в), ошибка в структуре алгоритма, в логической взаи­мосвязи его частей, в применении алгоритма к тем данным, к которым он неприменим и т.д. Правила семантики не фор­мализуемы. Поэтому поиск и устранение семантической ошибки и составляет основу отладки.


Программные ошибки по количеству и типам в первую очередь определяются степенью автоматизации программиро­вания и глубиной формализованного контроля текстов программ.

Число программных ошибок зависит также от квалификации программистов, от общего объема комплекса программ, от глубины логического и информационного взаимодействия моду­лей и от ряда других факторов.

Каждая программная ошибка влечет за собой необходимость изменения команд существенно меньше, чем при алгоритми­ческих и системных ошибках. На этапах комплексной отладки ПО и эксплуатации удельный вес программных ошибок падает и составляет примерно 15 и 30 % соответственно от общего коли­чества ошибок, выявляемых в единицу времени.