- •Лабораторная работа №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.2. Определение места ошибки в программе
Получив от компилятора сообщение об ошибке, следует учитывать, что курсор в этот момент указывает на место, где прервалась компиляция, но не на позицию текста, где допущена ошибка. Объясняется это тем, что компилятор, находясь в некоторой позиции текста, пытается найти либо конкретный терминальный символ, например запятую, двоеточие и т.п., либо символ заданного класса, например цифру, букву и т.п. При этом он пропускает все незначащие символы типа пробела, табуляции, перехода на начало новой строки и т.п. Если требуемый символ пропущен, то компилятор в поисках его может уйти от первоначальной позиции довольно далеко. Наконец, найдя первый значащий символ, компилятор сравнивает его с искомым или анализирует, к тому ли классу он относится, и, лишь обнаружив несоответствие, выдает сообщение об ошибке, отмечая последнюю проанализированную позицию текста курсором.
Например, в следующем фрагменте программы, приведенном на рис. 2, пропущена точка с запятой после слова Real. Ошибка допущена в 15-й позиции 4-й строки. Однако после этого места первый значащий символ встречается только во второй позиции 12-й строки. Поэтому курсор будет указывать на первую букву слова Procedure.
Номер позиции
Номер 1 2 3 4 5
строки 12345678901234567890123456789012345678901234567890
1 Program Message_Test2;
2 Var
3 x0, y0, { Начальные координаты тела ---}
4 x, y : Real; { Текущие координаты тела ------}
5 {---------------------------------------------------------------------}
6 { }
7 { Процедура определения текущих координат }
8 { тела, брошенного под углом к горизонту }
9 { }
10 {---------------------------------------------------------------------}
11 Procedure Current_Body_Coord (x0, y0 : Real;
12 . . .
...
Рис. 2. Пример программы, содержащей синтаксическую ошибку
В такой ситуации, чтобы найти действительное место ошибки, необходимо проследить в обратном направлении от указанной позиции путь, проделанный компилятором. Т.е. ошибку следует искать непосредственно перед первым значащим символом, который предшествует позиции, указываемой курсором в окне Edit. Первоначально, пока не выработается достаточный навык такого отслеживания, желательно это делать не торопясь, тщательно анализируя каждый встречающийся символ.
Так, в рассматриваемом примере сначала анализируется 1-я позиция 12-й строки. Затем необходимо перейти в конец 11-й строки и, найдя здесь закрывающую скобку комментария и двигаясь к началу строки, найти парную ей открывающую скобку. Далее следует пропустить начальный пробел, перейти в конец 10-й строки и т. д. Пропустив так все строки с 11-й по 6-ю, необходимо затем пропустить пустую 5-ю строку и перейти в конец 4-й. Пропустив комментарий в этой строке и предшествующий ему пробел, можно, наконец, найти позицию с номером 16, после которой компилятор ожидал встретить точку с запятой.
Позиция, указываемая курсором, может оказаться и действительным местом ошибки, если в ней находится первый значащий символ текста программы либо ей предшествует значащий символ. Например, в ситуации, приведенной на рис. 1, перед курсором находится значащий символ (запятая), следовательно, пропущенное имя должно начинаться, действительно, с той позиции, на которую указывает курсор.