Отсутствие сообщений машины о синтаксических ошибках является необходимым, но не достаточным условием, чтобы считать программу правильной.
Является ли отсутствие синтаксических ошибок свидетельством правильности программы
Характерные ошибки программирования
Ошибки могут быть допущены на всех этапах решения задачи — от ее постановки до оформления. Разновидности ошибок и соответствующие примеры приведены в таблице:
Вид ошибки | Пример |
Неправильная постановка задачи | Правильное решение неверно сформулированной задачи |
Неверный алгоритм | Выбор алгоритма, приводящего к неточному или эффективному решению задачи |
Ошибка анализа | Неполный учет ситуаций, которые могут возникнуть; логические ошибки |
Семантические ошибки | Непонимание порядка выполнения оператора |
Синтаксические ошибки | Нарушение правил, определяемых языком программирования |
Ошибки при выполнении операций | Слишком большое число, деление на ноль, извлечение квадратного корня из отрицательного числа и т. п. |
Ошибки в данных | Неудачное определение возможного диапазона изменения данных |
Опечатки | Перепутаны близкие по написанию символы, например, цифра 1 и буквы I, l |
Ошибки ввода-вывода | Неверное считывание входных данных, неверное задание форматов данных |
Обычно синтаксические ошибки выявляются на этапе трансляции. Многие же другие ошибки транслятору выявить невозможно, так как транслятору неизвестны замыслы программиста.
Примеры синтаксических ошибок:
- пропуск знака пунктуации;
- несогласованность скобок;
- неправильное формирование оператора;
- неверное образование имен переменных;
- неверное написание служебных слов;
- отсутствие условий окончания цикла;
- отсутствие описания массива и т.п.
Существует множество ошибок, которые транслятор выявить не в состоянии, если используемые в программе операторы сформированы верно. Приведем примеры таких ошибок.
Логические ошибки:
- неверное указание ветви алгоритма после проверки некоторого условия;
- неполный учет возможных условий;
- пропуск в программе одного или более блоков алгоритма.
Ошибки в циклах:
- неправильное указание начала цикла;
- неправильное указание условий окончания цикла;
- неправильное указание числа повторений цикла;
- бесконечный цикл.
Ошибки ввода-вывода; ошибки при работе с данными:
- неправильное задание тип данных;
- организация считывания меньшего или большего объёма даных, чем требуется;
- неправильное редактирование данных.
Ошибки в использовании переменных:
- использование переменных без указания их начальных значений;
- ошибочное указание одной переменной вместо другой.
Ошибки при работе с массивами:
- массивы предварительно не обнулены;
- массивы неправильно описаны;
- индексы следуют в неправильном порядке.
Ошибки в арифметических операциях:
- неверное указание типа переменной (например, целочисленного вместо вещественного);
- неверное определение порядка действий;
- деление на нуль;
- извлечение квадратного корня из отрицательного числа;
- потеря значащих разрядов числа.
Все эти ошибки обнаруживаются с помощью тестирования.