Общие сведения о языке программирования


    Особенности языков программирования информационных систем:

  1. Наличие мощных команд обработки файлов.
  2. Развитые средства ведения диалога (меню, окна, "горячие" клавиши).
  3. Удобные средства ввода/проверки/редактирования данных.
  4. Возможность ускоренного доступа к данным (индексирование).
  5. Управление дизайном экрана и генерация выходных форм.
  6. Развитой аппарат обработки символьных данных.
 
    Программы в FoxPro 
    Способы представления данных 
                    переменные
                    массивы 
                    обмен между массивом и таблицей
    Операторы 
    Приоритет 
        Языки программирования 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 

57
NOT или !, 
AND,OR, ()
логический NOT .T. 
.F. OR (.T. AND .F.)
.F. 
.F. (скобки - оператор группировки)
<, >, <=, >=, 
#(не равно) 
или !=
все 23<54 .Т. (логическое значение проверки выражения)
$ символьный "m"$cName .Т., если буква m есть в строке, содержащейся в переменной  cName
= = символьный cTurn = = «Андрей»  Сравнение на полное тождество двух строк
 
     Помните, что с одним оператором необходимо использовать данные одного типа!
 
        Оператор «= =» отнюдь не то же самое, что оператор «=». Если последний можно идентифицировать словом «равно», то для первого больше подходит название «идентично». Например, если мы будем искать данные по условию cName = «ИВАН», то Visual FoxPro будет считать верным результат, если найдет значения «ИВАНОВ», «ИВАНЕНКО», так же как и указанное слово «ИВАН». Если же в выражении для поиска указать оператор «= =», то к верному результату приведет только найденное слово «ИВАН». Это различие очень удобно использовать для поиска данных по неполному соответствию, когда точно неизвестно искомое значение.

 Поля, переменные, константы, функции и операторы представляют собой элементы для составления выражений. При написании выражений необходимо учитывать приоритет выполнения операций:

  1. Возведение в степень
  2. Умножение и деление
  3. Сложение и вычитание
  4. Сложение символьных выражений
  5. Операции сравнения
  6. NOT
  7. AND
  8. OR
        При необходимости изменения порядка действий следует использовать скобки.