Особенности
языков программирования информационных систем:
-
Наличие мощных команд обработки файлов.
-
Развитые средства ведения диалога (меню, окна, "горячие"
клавиши).
-
Удобные средства ввода/проверки/редактирования данных.
-
Возможность ускоренного доступа к данным (индексирование).
-
Управление дизайном экрана и генерация выходных форм.
-
Развитой аппарат обработки символьных данных.
Языки
программирования Visual FoxPro и Visual Basic имеют достаточно много общих
черт, но одна из них - богатое историческое наследие - привела к тому,
что современные объектно-ориентированные свойства в них сосуществуют с
традиционными структурными составляющими. Причем число команд и функций,
составляющих структурную основу языка, перевалило далеко за тысячу. Чтобы
разобраться в этой лавине, начнем со структурной части рассматриваемых
языков, а далее изучим их объектно-ориентированные возможности. При этом
будут максимально выделяться общие черты рассматриваемых языков программирования
и игнорироваться какие-то, может быть, и достаточно важные особенности
каждого языка. Например, в наследство от Xbase в Visual FoxPro до сих пор
можно символьные значения указывать не только в кавычках, но и в квадратных
скобках. В Visual Basic так делать нельзя. Поэтому стоит придерживаться
общих возможностей и указывать символьные значения в кавычках, не упоминая
о квадратных скобках.
Язык
программирования представляет собой набор команд, которые последовательно
обрабатываются интерпретатором и преобразуются им в машинный код, в свою
очередь обрабатываемый микропроцессором. С помощью команд мы выполняем
какие-либо действия, аналогично выбору команды в меню.
Программы в FoxPro.
Программа в FoxPro — это
текстовый файл с расширением .PRG, содержащий набор команд, написанных
в соответствии с синтаксическими правилами языка. Программа может иметь
подпрограммы (процедуры), в которые помещаются часто повторяющиеся фрагменты
кода, размещаемые после основного текста программы или в отдельном файле.
Тексты программ, конструкции
меню, экранов, отчётов, изображения и пр. обычно оформляются как проекты
с использованием "Project manager" (файл с расширением .PGX). Откомпилированный
проект представляет собой "Приложение" (файл с расширением .APP) или автономный
EXE-файл. Выполнение .PRG и .APP - файлов осуществляется с помощью команды
DO < имя_файла > или командами системной оболочки:
Run/Application "open" (.APP, .PRG, .FXP)
Program/Do "список" (.APP, .PRG, .FXP, .SPR, .SPX, .MPR, .MPX, .QPR,
.QPX, .EXE)
Способы представления
данных.
Для обработки информации
мы можем использовать данные, хранящиеся в таблицах или в памяти компьютера.
В последнем случае для данных в памяти, которые называются переменными,
мы должны определить идентификатор, ссылаясь на который можно однозначно
установить, какие данные мы имеем в виду. Для хранения в памяти однородных
данных используются массивы.
Способ
представления |
Описание |
Константы |
Единичные элементы данных, записываемые в программном коде и неизменяемые
в процессе работы |
Переменные |
Единичные элементы данных, хранящиеся в оперативной памяти (ОЗУ) |
Массивы |
Множество элементов данных, хранящихся в ОЗУ |
Записи в таблицах |
Множество строк, содержащих заранее определенные поля, каждое с предопределенным
фрагментом данных, хранящихся в файле таблицы |
Обращение к константам, переменным
или массивам осуществляется с помощью имён. В FoxPro для имён действуют
те же правила что и в других языках программирования.
Константы часто используются
для включения в выражения каких-то предопределенных данных, которые не
изменяются во время работы программы. В качестве констант мы можем использовать
данные различных типов:
-
Символьные данные записываются в кавычках. Например, мы можем
запомнить слово имя, используя его указание в кавычках: «Имя».
-
Данные типа "дата" или "дата и время" в Visual
FoxPro записываются в фигурных скобках: {23/02/99}. В Visual Basic функции
этих двух типов данных выполняет один тип данных «дата и время». Данные
этого типа выделяются значками «решетка»: #23/02/99#.
-
Числовые данные используются без каких-либо разделителей.
-
Логические данные в качестве константы могут принимать одно
из двух значений. В Visual FoxPro при записи они ограничиваются точками:
«.Т.» соответствует истине (True), «.F.» — ложному значению
(False). В Visual Basic присваивание любого отличного от нуля значения
установит константу в значение True, и только 0 - в значение False.
Переменные
Имя переменной может содержать
не более 254 символов, используются любые буквы и цифры. Первый символ
- буква, отсутствуют пробелы.
Переменные могут быть глобальные
и локальные.
PUBLIC имя_переменной
Эта переменная доступна
из любой программы.
PRIVATE имя_переменной
Эта переменная доступна
в пределах программы, ее можно использовать в процедурах и функциях.
LOCAL имя_переменной
Эта переменная доступна
в пределах программы, но ее нельзя использовать в процедуре или функции.
Тип данных не объявляется
явно, а определяется присвоенным значением.
Чтобы не возникала путаница
с типами, принято соглашение по именованию переменных.
l |
локальная (LOCAL) |
b |
double |
p |
локальная (PRIVATE) |
f |
float |
g |
глобальная |
g |
general |
t |
параметр |
i |
integer |
|
|
l |
logical |
с |
char |
m |
memo |
y |
currency |
n |
numeric |
d |
date |
o |
object |
t |
date-time |
u |
unknown |
Первая буква в названии
переменной указывает глобальная или локальная переменная, а вторая указывает
на тип данных.
Массивы
Объявление массива:
DECLARE массив1 ( кол_во элементов1 [ , кол_во элементов2 ] )
[ , массив2 ( кол_во_элементов3 [ , кол_во_элементов4 ] ) ...]
Нумерация элементов массива
начинается с 1.
DIMENSION действует так же.
Другой способ объявить массив:
PUBLIC массив1 ( кол_во строк1 [ , кол_во_столбцов1] ) ,
[ массив2 ... ]
LOCAL [ARRAY] массив1 ( ... )
Для изменения размера массива
используются команды DIMENSION и DECLARE для существующего
массива.
Обмен между массивом и таблицей
APPEND
FROM ARRAY имя_массива [FOR условие]
К выбранной базе данных
добавляются записи из массива. Каждая строка массива - запись.
В случае одномерного массива:
1-й элемент - 1-е поле записи, 2-й элемент - второе поле, ... записи.
Если элементов больше полей - лишние элементы игнорируются. Если полей
больше, чем элементов, - лишние поля заполняются по умолчанию.
В случае двумерного массива:
1-й столбец массива - 1-е поле, 2-й столбец - 2-е поле, ...таблицы.
Перед добавлением проверяется
условие добавления, которое должно содержать имена полей таблицы.
Данный оператор игнорирует
memo-поля.
COPY
TO ARRAY имя_массива [FIELDS список] [Область_Определения]
[FOR условие1] [WHILE условие2]
Копируются данные
из записи таблицы в массив. Предварительно массив объявляется.
Операторы APPEND
FROM ARRAY и COPY TO ARRAY часто используется для создания временного
буфера данных, содержащего набор записей.
GATHER FROM array
| MEMVAR [FIELDS список_полей]
Копируются данные
из набора переменных или массива в текущую запись.
Если данные копируются
из массива - элементы, начиная с первого копируются в соответствующие
поля.
Если элементов массива
недостаточно, поля модифицируются, если есть лишние элементы, то они игнорируются.
Если указано ключевое
слово MEMVAR, то из списка пересылаются переменные с такими же именами,
что и поля. (Предварительно создается множество переменных командой SCATTER)
SCATTER [FIELDS список]
TO массив | MEMVAR | BLANK
Данные из текущей
записи перемещаются в массив.
Если число элементов больше
числа полей, остальные элементы не изменяются.
Если массив не существует,
или число элементов меньше числа полей, то автоматически создается массив
требуемого размера с тем же именем. Типы данных совпадают с типами полей
записи.
MEMVAR - создается
множество переменных;
BLANK - создается
множество пустых переменных.
Для работы с данными используются
операторы,
перечень которых приведен в таблице.
Оператор |
Допустимые
типы данных |
Пример |
Результат
действия
оператора
в примере |
= |
все |
n=7 |
Число 7 запоминается в переменной n |
+,- |
числовой
символьный
дата |
{10/10/95}+10
"Fox"+"Pro" |
{20/10/95}
"FoxPro" |
** или ^,*,/,
%(остаток
от деления), () |
числовой |
5 * 5
2-3
(4-3)+56 |
25
8
57 |
NOT или !,
AND,OR, () |
логический |
NOT .T.
.F. OR (.T. AND .F.) |
.F.
.F. (скобки - оператор группировки) |
<, >, <=, >=,
#(не равно)
или != |
все |
23<54 |
.Т. (логическое значение проверки выражения) |
$ |
символьный |
"m"$cName |
.Т., если буква m есть в строке, содержащейся в переменной cName |
= = |
символьный |
cTurn = = «Андрей» |
Сравнение на полное тождество двух строк |
Помните, что с одним оператором необходимо
использовать данные одного типа!
Оператор «= =» отнюдь не
то же самое, что оператор «=». Если последний можно идентифицировать словом
«равно», то для первого больше подходит название «идентично». Например,
если мы будем искать данные по условию cName = «ИВАН», то Visual FoxPro
будет считать верным результат, если найдет значения «ИВАНОВ», «ИВАНЕНКО»,
так же как и указанное слово «ИВАН». Если же в выражении для поиска указать
оператор «= =», то к верному результату приведет только найденное слово
«ИВАН». Это различие очень удобно использовать для поиска данных по неполному
соответствию, когда точно неизвестно искомое значение.
Поля, переменные, константы, функции и
операторы представляют собой элементы для составления выражений. При написании
выражений необходимо учитывать приоритет выполнения операций:
-
Возведение в степень
-
Умножение и деление
-
Сложение и вычитание
-
Сложение символьных выражений
-
Операции сравнения
-
NOT
-
AND
-
OR
При необходимости изменения
порядка действий следует использовать скобки.