- •Лабораторная работа №1 ввод и редактирование программ в интегрированной среде free паскаля
- •1. Этапы разработки программ
- •2. Файл и связанные с ним понятия
- •3. Краткие сведения об интегрированной среде
- •4. Ввод и редактирование текста программы
- •4.1. Ис Free Паскаля и окна.
- •4.2. Работа с исходными файлами в окне редактирования
- •4.2.1. Возможные режимы редактирования
- •4.2.2. Приемы работы с клавиатурой
- •4.3. Работа с блоками
- •4.4. Поиск и замена фрагментов текста
- •5. Работа с файлами
- •5.1. Создание нового исходного файла
- •5.2. Загрузка существующего файла
- •5.3. Сохранение файла
- •5.4. Перезапись файла
- •6. Интерактивная помощь.
- •7. Выполнение работы
- •1.1. Команда Compile
- •1.2. Команда избирательной компиляции Make
- •1.3. Команда общей компиляции Build
- •1.4. Команда назначения первого файла Primary file
- •2.2. Определение места ошибки в программе
- •2.3. Определение причины ошибки
- •3. Порядок выполнения работы
- •4. Контрольные вопросы
- •Лабораторная работа №3 выполнение программ в среде free-паскаль
- •Структура простейших линейных программ
- •Экраны и окна, поддерживаемые ис
- •Режимы выполнения программ в ис и курсор выполнения
- •Команды ис для выполнения программ
- •Дополнительные возможности по прерыванию выполнения программы
- •Использование точек останова
- •Использование клавиш Ctrl-Break
- •Правила ввода исходных данных
- •Порядок выполнения работы
- •Исходный текст программы lab3.Pas
- •Контрольные вопросы.
- •Лабораторная работа № 4 линейные алгоритмы
- •Возведение в степень , соответственно На Паскале: exp(a*ln(X)). Лабораторная работа № 5 работа с двоичными масками
- •I. Требования к выполнению заданий
- •II. Варианты заданий
- •Лабораторная работа № 6 работа со строками
- •I. Требования к выполнению заданий
- •II. Варианты заданий
- •Лабораторная работа № 7 исследование особенностей операций ввода-вывода в паскале
- •7. И сследование различий в работе операторов Read и Readln
- •8. Вывод вещественных значений
- •10. Записать операторы ввода-вывода:
- •Лабораторная работа № 8 оператор выбора. Разветвляющиеся вычислительные процессы
- •1. Теоретический материал
- •If выражение then оператор;
- •2 Порядок выполнения лабораторной работы
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Лабораторная работа №10 последовательности
- •Лабораторная работа № 11 обобщенная формула
- •I. Требования к выполнению заданий
- •II. Варианты заданий
- •Лабораторная работа №13 работа с одномерным массивом
- •Лабораторная работа №14 работа с двухмерными массивами Задания по теме «Двумерные массивы»
- •Лабораторная работа № 15 изучение механизма передачи данных в процудуры
- •I. Требования к выполнения заданий
- •II. Варианты заданий
- •Лабораторная работа № 16 работа с множествами
- •Варианты заданий
- •Лабораторная работа № 17 работа с записями
- •Лабораторная работа №1 работа с файломи
- •Лабораторная работа № 2 указатели и динамические переменные
- •Лабораторная работа № 3 списки
2.3. Определение причины ошибки
После того как место ошибки найдено, необходимо определить причину возникновения этой ошибки. В простейшем случае объяснение причины дается в сообщении компилятора, т.е. действительно пропущены указанный символ или слово, как это было в рассмотренных примерах. Однако сообщение компилятора может не соответствовать истинной причине ошибки, что демонстрируется на рис. 3.
File Edit Search Run Compile
Error 36: BEGIN expected
Programm Message_Test3;
Begin
End.
Рис. 3. Пример неверного указания причины ошибки
В этом примере ошибка допущена в слове “Programm”, тогда как компилятор сообщает, что в отмеченной позиции ожидается слово "BEGIN". Такое расхождение объясняется наличием необязательных компонент в конструкциях языка Free Паскаль.
Действительно, компилятор начинает синтаксический анализ текста программы с правила, определяющего понятие <программа>. Из синтаксической диаграммы для этого понятия следует, что программа может начинаться со слова PROGRAM, причем размер букв роли не играет. Не найдя это слово, поскольку в рассматриваемом примере оно записано с двумя "m", компилятор обнаруживает, что PROGRAM может отсутствовать, и пропускает необязательный фрагмент правила. Далее таким же образом пропускается фрагмент правила, начинающийся со слова USES. Наконец, компилятор находит ссылку на диаграмму “блок”. Перейдя к правилу, определяющему понятие <блок>, компилятор последовательно пропускает его необязательные альтернативы, начинающиеся со слов LABLE, CONST, TYPE, VAR, PROCEDURE и FUNCTION. Далее он наталкивается на обязательное слово BEGIN и обращается к тексту программы. Не обнаружив, начиная с анализируемой позиции, слово BEGIN, компилятор и сообщает об этом.
Таким образом, получив от компилятора сообщение об ошибке и уточнив ее местонахождение, необходимо найти правило, описывающее конструкцию, в которой допущена ошибка, и выделить в нем фрагмент, относящийся к данной части текста программы. Так, в последнем примере на рис.3 будет выделен фрагмент правила, начинающийся со слова PROGRAM. Если компонента конструкции языка, описываемая данным фрагментом правила, является обязательной, как это было в примерах на рис. 2 и 3, то ее отсутствие и является причиной ошибки. Если же компонента необязательна, но на самом деле присутствует и компилятор указывает именно на нее, тогда как сообщение об ошибке отсылает к другому фрагменту правила, то следует еще раз проверить правильность записи этой компоненты конструкции, используя правила грамматики. Так, если в примере на рис.3 не обращать внимание на неправильное сообщение компилятора и сопоставить фрагмент правила грамматики, начинающийся со слова PROGRAM, с текстом программы, то можно сразу же обнаружить ошибку в слове “Programm”.
К рассматриваемой группе ошибок относятся также ошибки, вызывающие сообщение компилятора: “Unexpected end of file”, которое переводится как “(Обнаружен) неожиданный конец файла”. Такое сообщение можно получить, если, не завершив набор текста программы, как показано на рис. 4, подать одну из команд компиляции (из меню Compile или с помощью “горячих клавиш”).
File Edit Search Run Compile
Error 10: Unexpected end of file
Program Message_Test4;
Var
x : Real;
...
Рис. 4. Пример компиляции незавершенной программы
Обычно указанное сообщение появляется при компиляции программ, на первый взгляд, вполне завершенных (рис. 5).
File Edit Search Run Compile
Error 10: Unexpected end of file
Program Message_Test5;
Var
x : Real;
Begin
End
...
Рис. 5. Пример компиляции, на первый взгляд, завершенной программы
Однако в обоих случаях в конце текста программы пропущена обязательная компонента конструкции <блок>. Так, в программе на рис. 4 отсутствует последовательность “Begin End.”, возможно, с текстом между Begin и End, а в программе на рис. 5 пропущена точка после End программы. Компилятор, пытаясь найти ожидаемую компоненту, продвигается по программе и обнаруживает конец ее текста, о чем и сообщает в первой строке окна Edit.
Таким образом, при появлении сообщения о неожиданном обнаружении конца файла необходимо проверить наличие парных Begin и End программы, а также завершающей точки после последнего End.
Если же все эти компоненты присутствуют, как показано на рис. 6, а компилятор упорно выдает сообщение об ошибке 10, то следует проверить, не попадает ли какая-либо из обязательных компонент блока в комментарий.
File Edit Search Run Compile
Error 10: Unexpected end of file
Program Message_Test6;
Var
x : Real;
Begin
{ Ввод координаты }
Write (‘ x= ‘); Radln (x);
{ Проверка правильности ввода
Writeln (‘ x= ‘,x);
End.
-
Рис. 6. Пример компиляции программы с "незакрытым комментарием"
Так, на рис. 6 “не закрыт” комментарий в одной из строк, предшествующих End программы. Поэтому, End и следующая за ним точка попали в комментарий и были пропущены компилятором вместе со всем текстом этого комментария.