Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
15.02.2016
Размер:
4.77 Mб
Скачать

5. Трансляция и отладка программы.

Эти действия осуществляются в среде программирования QBASIC. Для входа в главное меню необходимо нажать клавишу ALT. Затем нажать подсвеченную букву пункта меню и выбрать нужный пункт под меню. Если пункт подменю оканчивается троеточием "…", что при выборе этого пункта возникнет диалоговое окно.

Главное меню включает пункты «ФАЙЛ, РЕДАКТИРОВАНИЕ, ПРОСМОТР, ПОИСК, ЗАПУСК, ОТЛАДКА, ПАРАМЕТРЫ, СПРАВКА». Рассмотрим содержание пунктов меню:

Среда программирования QBASIC представляет собой интеллектуальный редактор, осуществляющий синтаксический контроль вводимого текста. Если строка программы, набранная строчными буквами, написана правильно, то после перевода курсора на следующую строку все ключевые слова QBASIC будут написаны заглавными буквами, операторы отделены друг от друга. Это позволяет сразу понять, есть ли в строке ошибки.

При редактировании удаление текста слева от курсора производится клавишей Backspace (), а справа - клавишей Del. Чтобы копировать, вырезать, удалить текст, его предварительно необходимо выделить. Выделяется текст с помощью комбинации клавиши Shift + клавиши со стрелками или с нажатой левой клавишей мыши. Приемы ввода текста мало отличаются от работы в других редакторах. Наиболее применяемые команды меню дублируются комбинациями клавиш (см. таблицу 0.0.5).

Среда программирования QBASIC позволяет запустить программу на выполнение. Если появилось сообщение об ошибке, и она понятна, следует щелкнуть по кнопке OK, при необходимости уточнений выбрать Справку или обратиться к таблице 0.0.6.

Вот некоторые приемы, применяемые при отладке программ. Например, если программа по 2-й лабораторной работе дает неправильные значения, то это может быть по двум причинам: либо неправильно реализованы формулы, либо не реализовано ветвление и программа считает не по той формуле. Чтобы проверить второй вариант, нужно воспользоваться клавишей F8, высвечивающей траекторию движения по программе. При этом строки с оператором IF…THEN следует сделать многооператорными, поставив в конце пустой PRINT. Если какой-либо оператор мешает разобраться в причинах появления ошибки, то его можно вывести из рассмотрения, не стирая, поставив перед ним оператор REM. А чтобы вывести из рассмотрения большой фрагмент программы, следует использовать GOTO с указанием номера строки, куда следует перепрыгнуть. Чтобы разобраться с циклом, например, выяснить, правильно ли считается сумма, можно в него вставить оператор PRINT, поставив за ним SLEEP, организующий паузу до нажатия любой клавиши. Впрочем, с целью создания паузы можно применять и просто SLEEP. Проверить, работает ли цикл или иной фрагмент программы, можно, использовав PRINT "Я здесь".

Таблица 0.0.5.

Назначение функциональных клавиш в среде QBASIC

Клавиши

Назначение

F1

Справка по ключевому слову, функции или оператору, отмеченному курсором

Shift+F1

Вывод на дисплей оглавления справочной информации

F2

Вывод на экран списка имен всех задействованных в программе процедур и функций, а также самой программы

Sfift+F2

Вывод на экран следующей процедуры или функции

Ctrl+F2

Вывод на экран предыдущей процедуры или функции

F3

Повтор поиска по ключевому слову

F4

Переход к экрану вывода и обратно

F5

Продолжение работы по программе

Shift+F5

Запуск программы

F6

Переброс курсора из окна ввода программы в окно непосредственного счета и обратно

Shift+F6

Переброс курсора из одной створки окна редактирования в другую и обратно

F7

Выполнение программы до курсора

F8

Пошаговое выполнение программы с заходом в процедуры и функции

F9

Установка или снятие контрольной точки в программе

F10

Пошаговое выполнение программы без захода в процедуры и функции

Shift+ +клавиши со стрелками

Выделение фрагмента программы

Shift +Del

Вырезание фрагмента программы

Ctrl +Y

Вырезание строки программы

Shift +Ins

Вставка в программу ранее вырезанного фрагмента

Ctrl +Ins

Копирование выделенного фрагмента программы

Ctrl + Shift

Русский шрифт (правые), английский (левые)

Ctrl +Break

Приостановка выполнения программы

Примечание:

Комбинация клавиш, например, сначала нажать Ctrl, затем, не отпуская Ctrl, нажать Shift

Таблица 0.0.6.

Код

Сообщение об ошибке и возможная причина

1

NEXT без FOR (NEXT without FOR)

Для окончания цикла NEXT нет соответствующего заголовка FOR. Количество FOR и NEXT должны совпадать

2

Синтаксическая ошибка (Syntax error)

Оператор содержит грамматическую ошибку в написании ключевого слова или ошибку в пунктуации, либо есть непарные скобки или другие нарушения правил синтаксиса языка Бейсик

3

RETURN без GOSUB (RETURN without GOSUB)

Для оператора возврата из подпрограммы RETURN нет соответствующего обращения к подпрограмме GOSUB

4

Нет данных (Out of DATA)

В операторе DATA нет данных. Посчитайте количество данных в операторе DATA и количество считываний из него оператором READ. Посмотрите внимательно, не поставили ли вы при перечислении данных в каком-нибудь месте точку вместо запятой

5

Неверный вызов функции (Illegal function call)

Возникает чаще всего при попытке извлечения квадратного корня из отрицательного числа или появления отрицательного числа или 0 под знаком логарифма, а также применения графических операторов без включения графического режим SCREEN. Вообще же подобное сообщение возникает при попытке вызова функции с недопустимым параметром

6

Переполнение (Overflow)

Числовая переменная или строковая константа выходят за пределы допустимого диапазона (например, в знаменателе получается очень малая величина или при работе с возведением в степень). Проверьте и измените значение при необходимости

7

Не хватает памяти (Out of memory)

8

Метка не определена (Label not defined)

Для операторов GOTO или GOSUB задается переход на несуществующую метку

9

Индекс вне диапазона (Subscript out of range)

Сообщение возникает при работе с массивами, когда индекс какого- либо элемента массива превышает его объявленный в операторе DIM размер, а также в том случае, когда массив занимает в памяти объем более 64 Кбайт. Появляется также, если в формуле, оперирующей с элементами массива, они заменены другими переменными (x(i) заменен на просто x).

10

Повторяющееся определение (Duplicate definition)

Может возникнуть, если элемент массива, объявленного в операторе DIM, фигурирует далее (в формуле или выражении) в несвязанном или неправильно связанном виде

Продолжение таблицы 0.0.6.

11

Деление на ноль (Division of zero)

Выражение в знаменателе после подстановки значений переменных и вычислений, видимо, обращается в ноль

12

Ошибка в режиме управления

13

Ошибка ввода

14

В строке нет места (Out of string space)

16

Слишком сложная строковая формула

(String formula too complex)

17

Невозможно продолжить

18

Функция не определена (Function not defined)

Возможно, используемая функция не определена опера-тором DEF FN, или допущена ошибка при определении или вызове функции

19

Нет RESUME (No RESUME)

20

RESUME без ошибки (RESUME without error)

24

Устройство в тайм-ауте (Device timeout)

25

Ошибка устройства (Device fault)

26

FOR без NEXT (FOR without NEXT)

Для заголовка цикла FOR нет соответствующего окончания цикла NEXT. Количество FOR и NEXT должны совпадать

27

Нет бумаги (Out of paper)

29

WHILE без WEND (WHILE without WHILE)

Для ключевого слова WHILE нет соответствующего слова WEND

30

WEND без WHILE (WEND without WHILE)

Для ключевого слова WEND нет соответствующего слова WHILE

33

Повторяющаяся метка (Duplicate label)

При расстановке меток допущен повтор одной и той же метки в разных местах программы. Обычно возникает при редактировании текста программы копированием

35

Подпрограмма не определена

Сообщение возникает при попытке обращения к несуществующей подпрограмме

37

Ошибка счетчика аргументов

38

Массив не определен

Попытка работать с элементами массива, который не был объявлен оператором DIM

39

Требуется CASE ELSE (CASE ELSE expected)

40

Необходима переменная (Variable required)

Возникает при попытке записи иных элементов программы в том месте, где должна быть переменная (попытка заменить x русской буквой x)

Продолжение таблицы 0.0.6.

50

Переполнение FIELD (FIELD overflow)

51

Внутренняя ошибка (Internal error)

Чаще всего неверная работа компьютера, реже – смысловые ошибки программы, не сразу различимые на первый взгляд. Часто требуется ручная прокрутка программы

52

Плохое имя файла / плохой номер

(Bad file name or number)

Имя файла не соответствует требованиям DOS (например, не указан путь для файла не из текущего каталога)

53

Файл не найден (File not found)

При попытке обращения к файлу неправильно указано его имя или путь к нему

54

Плохой режим файла (Bad file mod)

Возникает, если файл создан в редакторе не совместном с редактором, используемым в настоящем случае

55

Файл уже открыт (File already open)

Попытка повторного открытия файла или удаления открытого файла

56

Оператор FIELD активен (FIELD statement activ)

57

Ошибка в/вв устройства (Device I/O error)

Ошибка устройства ввода/вывода, с которой не справляется DOS. Попробуйте посмотреть, все ли в порядке с аппаратной частью, т.е. внешними устройства компьютера

58

Файл уже существует (File already exists)

Попытка сохранить файл под именем уже существующего на диске файла

59

Неверная длина записи (Bad record length)

61

Диск заполнен (Disk full)

Диск, на который производится запись файла, не имеет достаточно места для этого. Надо освободить дисковое пространство, удалив что-нибудь менее важное

62

Ошибка: введен конец файла (Input past end of file)

Возникает, когда для чтения из файла организуется цикл, число шагов которого больше числа содержащихся в файле записей. Чтобы избежать появление ошибки, используйте функцию EOF для досрочного выхода из цикла.

63

Неверный номер записи (Bad record number)

64

Плохое имя файла (Bad file name)

Имя файла не соответствует требованиям DOS

67

Слишком много файлов (Too many files)

68

Устройство недоступно (Device unavailable)

В дисководе нет диска или он испорчен

Окончание таблицы 0.0.6.

69

Переполнение буфера коммуникации

(Communication-buffer overflow)

Попытка копирования в буфер слишком большого объема информации

70

Нет разрешения (Permission denied)

71

Ошибка формата диска (Disk not ready)

Открыта защелка дисковода, в дисководе нет диска или он испорчен.

72

Ошибка диска (Disk-media error)

В дисководе нет диска или он испорчен

73

Недоступная возможность (Advanced feature unavailable)

74

Переименование через диски (Rename across disks)

75

Ошибка доступа к пути / файлу (Path / File access error)

76

Путь не найден (Path not found)

При попытке обращения к файлу неправильно указано его имя или путь к нему