С помощью редактора TurboPascal можно выполнить пошаговое выполнение программы, выявив, где именно находится ошибка. Данное действие называется «трассировкой программы». Трассировка имеет два режима: с заходом в процедуры и функции, т.е. будет осуществляться пошаговое выполнение подпрограмм; без захода – выполнение только основной программы (процедуры и функции выполняются автоматически).
При возникновении ошибок в синтаксисе программы, компилятор выдаст сообщение об этой ошибке и установит текстовый курсор в то место, где эта ошибка находится. Такая ошибка называется ошибкой компиляции. Существует так же вероятность того, что возникнет ошибка во время выполнения программы (например, при определенных условиях может возникнуть операция деления на ноль, либо попытка чтения несуществующего файла). При возникновении «ошибки во время выполнения» выполнения программы прекращается.
При разработке принципа работы программы было принято решение об обеспечении ее функционирования на основе хранения данных в типизированном файле и обращения программы к данному файлу в процессе исполнения основных процедур.
Вводимые данные записываются в типизированный файл (Jeffries.txt) в виде переменных с объявленным типом.
При работе с типизированным файлом использовались процедуры:
- Assign - связывает файловую переменную с внешним файлом;
- Rewrite - создает и открывает файл для записи;
- Reset - открывает созданный файл на чтение;
- Close - закрывает файл.
После обнаружения или создания нового файла, он будет открыт программой для использования. Данные, записываемые в файл, автоматически сохраняются, и не требует подтверждения сохранения перед выходом из программы. Закрытие файла произойдет в момент завершения работы с программой.
Алфавит языка Turbo Pascal включает буквы, цифры, шестнадцатеричные цифры, специальные символы, пробелы и зарезервированные слова.
Буквы - это буквы латинского алфавита от а до z и от А до Z, а также знак подчеркивания «_». В языке нет различия между заглавными и строчными буквами алфавита, если только они не входят в символьные и строковые выражения.
Цифры - арабские цифры от 0 до 9.
Каждая шестнадцатеричная цифра имеет значение от 0 до 15. Первые 10 значений обозначаются арабскими цифрами 0... 9, остальные шесть - латинскими буквами а ... f или А... F.
Специальные символы Turbo Pascal - это символы:
+ - * / = , ' . : ; < > [ ] ( ) { } " @ $ #
К специальным символам относятся также следующие пары символов:
< > , < = , > = , : = , ( * , * ) , ( . , . ) , / / .
В программе эти пары символов нельзя разделять пробелами, если они используются как знаки операций отношения или ограничители комментария.
Зарезервированные слова не могут использоваться в качестве идентификаторов, но имеют вполне определенный смысл и определенное назначение. Их нельзя изменять: любая неточность в написании таких слов является серьезной ошибкой. Язык TurboPascal состоит приблизительно из 80 зарезервированных слов и специальных символов.
2.3 Таблица идентификаторов
В программе используются переменные, описанные в таблице 2.
Таблица 2 – Список переменных
Имя переменной | Тип переменной | Комментарий |
sp | String | Специализация |
no | String | Номер |
i | Integer | Счетчик |
x | Integer | Количество точек |
komanda | Integer | Буферная переменная |
z | array[1..20] of Sprav | Массив |
g | File of Text | Типизированный файл |
vremya | String | Время работы |
formsob | String | Форма собственности |
gd, gm | Integer | Определяет графический драйвер |
xx | Integer | Координаты по Х |
yy | Integer | Координаты по У |
rr | Integer | Цвет пикселя |
2.4 Используемые модули. Модуль Crt. Модуль Graph
Модуль - это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части.
Наличие модулей в Turbo Pascal позволяет программировать и отлаживать программу по частям, создавать библиотеки подпрограмм и данных, воспользоваться возможностями стандартных модулей, практически неограниченно увеличивать кодовую (содержащую коды команд) часть программы.
Модуль содержит описания типов данных, переменных и других объектов, а также подпрограммы, которые используются в различных программах. Подпрограмму имеет смысл включать в состав модуля в том случае, когда она реализует действие, которое приходится выполнять достаточно часто. Подпрограммы, входящие в модуль, можно написать, отладить и откомпилировать один раз, а использовать многократно.
Модуль Crt. Модуль Crt содержит процедуры и функции, обеспечивающие управление текстовым режимом работы экрана.
В отличие от стандартного ввода (или вывода), когда он осуществляется через операционную систему, подпрограммы модуля Crt работают с BIOS, и даже непосредственно с видеопамятью, вследствие чего значительно повышается скорость вывода информации на дисплей. Имеет смысл всегда подключать модуль Crt, даже если его процедуры и функции не используются в программе.
При подключении модуля Crt перед выполнением основного блока программы происходит переназначение стандартных файлов Input и Output. Системные стандартные файлы Input и Output связываются с фиктивным устройством Crt.
Для вывода текста используются процедуры Write и Writeln, которые выводят информацию, начиная с той позиции экрана, в которой находится курсор.
При работе с экраном через модуль Crt весь экран разбивается на отдельные строки, а каждая строка на отдельные позиции, в каждую из которых можно поместить один символ (в том числе и пробел). Для каждого символа можно создать цвет фона (задний план) и цвет символа (передний план).
Для указания выводимого символа, а также его атрибутов в видеопамять помещаются два байта. Первый байт содержит выводимый символ, второй – информацию о цвете.
Модуль Graph. Библиотека содержащая процедуры и функции для поддержки графического режима называется модулем Graph. Этот модуль позволяет создавать различные графические изображения и выводить на экран надписи стандартными или созданными программистом шрифтами.
Запуск и завершение работы в графической системе осуществляется следующим образом:
1) Подключить модуль Graph (библиотеку графических процедур): uses Graph;
2) Установить графический режим:
- описать переменные, которые определяют графический драйвер и монитор: var gd, gm: integer;
- задать команду ПК для самовыбора значений переменных: gd := Detect (detect - драйвер сам определяет лучший режим);
- инициализировать графический режим InitGraph(gd, gm, ’указывается путь к драйверу’). С этого момента все графические средства доступны пользователю.
3) Завершить работу в графической системе CloseGraph.
2.5 Записи. Объявление записи
Запись – это структура данных, состоящая из фиксированного числа компонентов, называемых полями записи. В отличие от массива, компоненты (поля) записи могут быть различного типа. Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются.
Структура объявления типа записи такова:
type Sprav = record
n,a,s,v,f,t:string;
end;
Где:
Sprav- имя записи;
Record - тип запись, служит для построения базы данных. После этой команды идет описание компонентов (полей) записи.
Таблица 3 - Поля записи Sprav
Имя поля | Тип поля | Комментарий |
n | String | Название торговой точки |
a | String | Адрес торговой точки |
s | String | Специализация |
v | String | Время работы |
f | String | Форма собственности |
t | String | Телефон торговой точки |
2.6 Массивы
Массивом называется однородная фиксированная по размеру совокупность однотипных элементов любой структуры, упорядоченных по номерам и имеющих единое имя. При описании массива следует записать его имя, диапазон, и его тип (пример: z:array [1..100] of Sprav). Чтобы обратиться к любому элементу массива, нужно указать имя массива (идентификатор) и порядковый номер необходимого элемента.
Массив может участвовать только в операциях отношения «равно», «не равно» и в операторе присваивания. Массивы, участвующие в этих действиях, должны быть идентичны по структуре, т. е. иметь одинаковые типы индексов и одинаковые типы компонентов.
Двумерным называется массив, элемент которого зависит от его местоположения в строке и в столбце. В общем виде элемент матрицы обозначается как Z(I, J), где Z - имя массива, I - индекс (номер) строки, J - индекс (номер) столбца.
2.7 Разработка процедур
Процедурой в Турбо Паскале называется особым образом оформленный фрагмент программы, имеющий собственное имя. Упоминание этого имени в тексте программы приводит к активизации процедуры и называется ее вызовом. Сразу после активизации процедуры начинают выполняться входящие в нее операторы, после выполнения последнего из них управление возвращается обратно в основную программу и выполняются операторы, стоящие непосредственно за оператором вызова процедуры. Тело процедуры, так же как и программы в свою очередь может содержать описания процедур и функций, таким образом, процедуры и функции могут быть вложены друг в друга. Довольно часто уже на этапе разработки алгоритма программы можно обнаружить, что некоторые одинаковые или очень похожие действия в программе должны, выполнятся несколько раз. Избежать дублирования инструкции можно, если повторяющиеся инструкции оформить как процедуры, а в программу поместить инструкцию вызова процедуры.