Начало. Возможные ошибки
Материал из Вики проекта PascalABC.NET
Неописанная переменная
begin S := 1; // Неизвестное имя S end.
Все используемые переменные должны быть предварительно описаны в разделе описаний. В PascalABC.NET допускаются также описания переменных внутри блока.
Отсутствующая ;
var S: integer // Ожидалась ; begin S := 1; end.
var S: integer; begin S := 1 // Ожидалась ; S := S + 1 end.
Очень частая ошибка у начинающих. Курсор, как правило, позиционируется в начале следующей строки
Несовместимость типов при присваивании
var S: integer; begin S := 1.3; // Нельзя преобразовать тип real к integer end.
Безболезненно можно присваивать только данные одного типа. Если данные - разных типов, то в редких случаях можно преобразовать данные одного типа в данные другого. Например, целое можно преобразовать в вещественное, а символ - в строку. Обратные преобразования не допускаются.
Отсутствие закрывающего апострофа литеральной строки
var x,y: integer; begin x := 2; y := 3; writeln('Результат сложения равен=,x+y); // Не хватает закрывающего апострофа end.
Закрыть апостроф надо на той же строке, где расположен открывающий апостроф
Ошибки расстановки запятых и апострофов при выводе строк и выражений
var x,y: integer; begin x := 2; y := 3; writeln(x,'+,'y,'=',x+y); // Неверная расстановка запятых и апострофов end.
Слишком много запятых и апострофов рядом, потому начинающие часто путаются :) Надо уяснить правила:
- запятые разделяют разные элементы вывода
- все, что находится в апострофах, будет выведено на экран без изменений
Ошибка ввода
var x: integer; begin read(x); // введите блаблабла и посмотрите, что получится end.
Это - ошибка во время выполнения. Программа пытается преобразовать введенную строку в число, не может это сделать и завершается с ошибкой
Ошибка неинициализированной переменной
var x,r: integer; begin // Забыли инициализировать или ввести x r := x*x; writeln('Квадрат числа ',x,' = ',r); end.
Перед использованием любую переменную надо ввести или присвоить ей начальное значение. Это действие называется инициализацией переменной.
Деление на 0
var x,c: integer; begin x := 0; c := 666 div x; // Здесь происходит деление на 0 end.
Если во время выполнения программа выполнит деление на 0, то она завершится с ошибкой.
Корень из отрицательного числа
begin writeln(sqrt(-1)); // Корень из отрицательного числа end.
В обычном Паскале возникает ошибка времени выполнения. В PascalABC.NET выводится NaN - Not a Number
