Все используемые переменные должны быть предварительно описаны с помощью ключевого слова var (внутри блока begin/end или, что обычно хуже, в разделе описаний вначале программы).
Отсутствующая ;
begin var S: integer S := 1; // Компилятор здесь скажет: Ожидалась ; — имеется ввиду предыдущая строка! end.
begin var S := 1 S := S + 1 // Аналогично: проблема на предыдущей строке, а на текущей нет, потому что после неё идёт end.
end.
Очень частая ошибка у начинающих. Курсор, как правило, позиционируется в начале следующей строки.
Несовместимость типов при присваивании
begin var S: integer := 1.3; // Нельзя преобразовать тип real к integer end.
Безболезненно можно присваивать только данные одного типа. Если данные — разных типов, то в редких случаях можно преобразовать данные одного типа в данные другого. Например, целое можно преобразовать в вещественное, а символ — в строку. Обратные преобразования не допускаются.
Чтобы не ошибаться в подобных простых случаях в Паскале есть следующая краткая форма объявления и инициализации переменной:
Как исправить ошибку с условием в Pascal.
begin var S := 1.3; // Тип real будет выведен компилятором автоматически end.
Отсутствие закрывающего апострофа литеральной строки
begin var x := 2; // x получает тип integer var y := 3; // y получает тип integer writeln(‘Результат сложения равен =, x + y); // Не хватает закрывающего апострофа end.
Закрыть апостроф надо на той же строке, где расположен открывающий апостроф
Ошибки расстановки запятых и апострофов при выводе строк и выражений
begin var x := 2; // x получает тип integer var y := 3; // y получает тип integer writeln(x, ‘+,’ y, ‘=’, x+y); // Неверная расстановка запятых и апострофов end.
Слишком много запятых и апострофов рядом, потому начинающие часто путаются 🙂 Надо уяснить правила:
- запятые разделяют разные элементы вывода
- все, что находится в апострофах, будет выведено на экран без изменений
Ошибка ввода
begin var x: integer; read(x); // введите блаблабла и посмотрите, что получится end.
Это — ошибка во время выполнения. Программа пытается преобразовать введенную строку в число, не может это сделать и завершается с ошибкой.
Аналогичный фрагмент в более современном и предпочтительном синтаксисе:
begin var x := ReadInteger; end.
Ошибка неинициализированной переменной
begin var x: integer; // Забыли инициализировать или ввести x var r := x * x; // r получает тип integer writeln(‘Квадрат числа ‘, x, ‘ = ‘, r); end.
Перед использованием любую переменную надо ввести или присвоить ей начальное значение. Это действие называется инициализацией переменной.
Деление на 0
begin var x := 0; var c := 666 div x; // Здесь происходит деление на 0 end.
Если во время выполнения программа выполнит деление на 0, то она завершится с ошибкой.
Корень из отрицательного числа
begin writeln(sqrt(-1)); // Корень из отрицательного числа end.
В обычном Паскале возникает ошибка времени выполнения. В PascalABC.NET выводится NaN — Not a Number
Ч 3 While to pascal Как исправить ошибку бесконечное выполнение кода в PAScal
Ссылки
- Программы для начинающих
- Сайт PascalABC.NET: Программы и алгоритмы для начинающих
Источник: pascalabc.net
Исправление ошибок. — Pascal
товарищи мозги дайте пожалуста правельное решение по паскалю помогите исправеть ошибки напешите как надо пожалуста а не посвоему. ребят зарание вам БОЛЬШОЕ СПАСИБО надеюсь на вас мои дорогие друзь +7. Найти все различающиеся элементы целочисленной квадратной матрицы размерностью nxn. +9. Записать в текстовый файл N символов. Выполнить следующие операции с созданным файлом: — Выяснить, чего в нем больше: русских букв или цифр; — Выяснить, вхо¬дит ли данное слово в указанный текст, и если да, то сколько раз; — Составить в ал¬фавитном порядке список всех слов, встречающихся в этом тексте. +10. Составить программу, вычеркивающую любую букву из данного текста. у восьмой нет условия
Источник: studassistent.ru
Исправить ошибки в коде Pascal [закрыт]
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.
Сообщение содержит лишь текст задачи, в котором нет описания проблемы, либо вопрос чисто формален («как мне выполнить это задание»). Для повторного открытия вопроса, добавьте описание конкретной проблемы, поясните, что именно не получается, в чём вы видите проблему.
Закрыт 6 лет назад .
Даны два массива А(i) и B(i). Создать массив C(i), каждый элемент которого будет равен наименьшему каждой пары элементов из А и В (элементы массива А и В вводить с клавиатуры). Мой код:
program zadaca46; uses crt; const n=20; var a:array[1..n] of byte; b:array[1..n] of byte; c:array[1..n] of byte; i:integer; Begin begin writeln(‘vvedite elementi massiva A’); For i:=1 to n do Readln(A[i]:4); end; Begin Writeln(‘vvedite elementi massiva B’); For i:=1 to n do readln(B[i]:4); end; begin writeln(‘massiv C’); For i:=1 to n do Begin c[i]:=min(a[i],b[i]); write(c[i]:4); end; readkey; end; end.
Источник: ru.stackoverflow.com