Начало. Возможные ошибки: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) |
Mikst (обсуждение | вклад) |
||
Строка 42: | Строка 42: | ||
Слишком много запятых и апострофов рядом, потому начинающие часто путаются :) | Слишком много запятых и апострофов рядом, потому начинающие часто путаются :) | ||
Надо уяснить правила: | Надо уяснить правила: | ||
*запятые разделяют разные элементы вывода | |||
*все, что находится в апострофах, будет выведено на экран без изменений | |||
=== Ошибка ввода === | === Ошибка ввода === |
Версия от 20:54, 6 января 2010
Неописанная переменная
begin
S := 1; // Неизвестное имя S
end.
Все используемые переменные должны быть предварительно описаны в разделе описаний.
Отсутствующая ;
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.
Корень из отрицательного числа
begin
writeln(sqrt(-1)); // Корень из отрицательного числа
end.
В PascalABC.NET выводит NaN - Not a Number