|
Программирование >> Разработка пользовательского интерфейса
современным СУБД для персональных компьютеров, которые оснащены языковыми средствами, позволяющими достаточно легко написать простую программу. В этой главе мы попробуем дать основные сведения о языке программирования Visual FoxPro читателям, которые от работы с диалоговыми средствами хотят перейти к написанию пользовательской программы. Для тех, кто уже пишет такие программы, мы систематизировали справочный материал и дали несколько советов по наиболее эффективных приемам программирования в рассматриваемых средствах разработки. 4.1. Что такое язык программирования В предыдущей главе мы познакомились с основными действиями, которые можно выполнить с помощью диалоговых средств в визуальной среде разработки. Очевидно, что, работая с СУБД, некоторые действия приходится выполнять многократно. Например, открывать одни и те же таблицы. Многие функции работы пользовательского приложения невозможно реализовать, используя только визуальные средства. Решить эти проблемы можно с помощью языка программирования. В этом параграфе вы узнаете: Из чего состоит язык программирования. Где могут храниться нужные данные. С помощью каких средств можно выполнять какие-либо действия с данными. Как делятся в программе переменные и массивы по области действия. При попытке описания языков программирования в рассматриваемых средствах разработки авторы столкнулись с достаточно большими трудностями. Не сомневаясь в своих интеллектуальных способностях, вину за это они целиком и полностью возложили на сами языки, а пособниками признали тех, кто их придумал - разработчиков из Microsoft. Действительно, так как СУБД Access использует язык программирования Visual Basic, то остается рассказать о нем и языке программирования Visual FoxPro. Эти языки программирования имеют достаточно много общих черт, но одна из них - богатое историческое наследие - привела к тому, что современные объектно-ориентированные свойства в них сосуществуют с традиционными структурными составляющими. Причем число команд и функций, составляющих структурную основу языка, перевалило далеко за тысячу. Чтобы разобраться в этой лавине, начнем со структурной части рассматриваемых языков, а в следующей главе изучим их объектно-ориентированные возможности. При этом мы будем стараться максимально выделять общие черты рассматриваемых языков программирования и заранее приносим свои извинения опытным разработчикам за игнорирование каких-то, может быть, и достаточно важных особенностей каждого языка. Например, в наследство от Xbase в Visual FoxPro до сих пор можно символьные значения указывать не только в кавычках, но и в квадратных скобках. В Visual Basic так делать нельзя. Мы думаем, что стоит придерживаться общих возможностей и указывать символьные значения в кавычках, не упоминая о квадратных скобках. Язык программирования представляет собой набор команд, которые последовательно обрабатываются интерпретатором и преобразуются им в машинный код, в свою очередь обрабатываемый микропроцессором. С помощью команд мы выполняем какие-либо действия, аналогично выбору команды в меню. Типичная структура команды: COPY TO FileName [FIELDS FieldList] [Scope][FOR /Expression] Название команды является ключевым элементом для ее идентификации. В связи с тем, что разработчики языка старались дать названиям команд максимальную смысловую нагрузку для их более легкого запоминания, в ряде случаев команды получились достаточно громоздкими. Что ж, если вы не хотите долго стучать по клавиатуре, откроем маленький секрет. Например, в Visual FoxPro названия команд в большинстве случаев можно сокращать до четырех символов. Если в каком-то случае так делать нельзя из-за опасности потерять уникальность идентификации, об этом обязательно будет написано в справочном файле Visual FoxPro при описании данной команды. Опции служат для уточнения действия, выполняемого командой. В данном примере можно использовать опцию FIELDS для указания списка тех полей, которые будут копироваться в новый файл. Часть команды, обозначенная словом Scope, позволяет задать диапазон записей, на которые будет воздействовать команда. Если мы используем эту возможность, то в команде вместо слова Scope надо использовать один из перечисленных вариантов: ALL - все записи в таблице; NEXT nRecords - указанное число записей после текущей (включая текущую); RECORD nRecordNumber - запись с указанным номером; REST - записи от текущей до конца таблицы. Описание Таблица 4.1. Способы представления данных Способ представления Константы Единичные элементы данных, записываемые в программном коде и неизменяемые в процессе работы Переменные Единичные элементы данных, хранящиеся в оперативной памяти (ОЗУ) Массивы Множество элементов данных, хранящихся в ОЗУ Записи в Множество строк, содержащих заранее таблицах определенные поля, каждое с предопределенным фрагментом данных, хранящихся в файле таблицы Константы часто используются для включения в выражения каких-то предопределенных данных, которые не изменяются во время работы программы. В качестве констант мы можем использовать данные различных типов: Символьные данные записываются в кавычках. Например, мы можем запомнить слово имя, используя его указание в кавычках: Имя . Данные типа дата или дата и время в Visual FoxPro записываются в фигурных скобках: {10/10/95}. В Visual Basic функции этих двух типов данных выполняет один тип данных дата и время . Данные этого типа выделяются значками решетка : #10/10/95#. Числовые данные используются без каких-либо разделителей. Логические данные в качестве константы могут принимать одно из двух значений. В Visual FoxPro при записи они ограничиваются точками: .T. - соответствует истине (True), .F. - ложному значению (False). В Visual Basic присваивание любого отличного от нуля значения установит константу в значение True, и только 0 - в значение False. Для работы с данными используются операторы, перечень которых приведен в табл. 4.2. Для того чтобы вспомнить обозначение типа данных, вернитесь к табл. 3.2. Помните, что с одним оператором необходимо использовать данные одного типа! Многие из приведенных в табл. 4.2 операторов знакомы нашим читателям со школьной скамьи. Для некоторых же из этих операторов требуется более пространное пояснение. Оператор $ используется для поиска символа или набора символов в каком-либо символьном выражении или поле примечаний. Искомый символ указывается слева от этого оператора. Оператор == отнюдь не то же самое, что оператор = . Если последний можно идентифицировать словом равно , то для первого больше подходит название идентично . Например, если мы будем искать данные по условию cName = ИВАН , то Visual FoxPro будет считать верным результат, если найдет значения ИВАНОВ , ИВАНЕНКО , так же как и указанное слово ИВАН . Если же в выражении для поиска указать оператор == , то к верному результату приведет только найденное слово ИВАН . Это различие очень удобно использовать для поиска данных по неполному соответствию, когда точно неизвестно искомое значение. Поля, переменные, константы, функции и операторы представляют собой элементы для составления выражений. При написании выражений необходимо учитывать приоритет выполнения операций: 1. Возведение в степень Условие выполнения команды FOR позволяет предопределить выполнение команды в зависимости, например, от содержания данных в полях. Для обработки информации мы можем использовать данные, хранящиеся в таблицах или в памяти компьютера. В последнем случае для данных в памяти, которые называются переменными, мы должны определить идентификатор, ссылаясь на который можно однозначно установить, какие данные мы имеем в виду. Для хранения в памяти однородных данных используются массивы. или использовать присвоение 2. Умножение и деление 3. Сложение и вычитание 4. Сложение символьных выражений 5. Операции сравнения 6. NOT 7. AND 8. OR При необходимости изменения порядка действий следует использовать скобки. Переменные в программе имеют строго определенные области действия и по этому признаку делятся на три типа. Локальные переменные (private) существуют только во время работы процедуры или программного файла (модуля), в котором они были определены. По умолчанию всем переменным, определяемым в программе, присваивается статус локальных. Явно определить статус переменной в Visual FoxPro можно командой PRIVATE MemVarList PRIVATE ALL [LIKE Sceleton EXCEPT Sceleton] В Visual Basic для этого используется команда Dim VarName [([Subscripts])] [As [New] Type][, VarName [([Subscripts])] [As [New] Type]]... Static VarName [([Subscripts])] [As [New] Type][, VarName [([Subscripts])] [As [New] Type]]... В последнем варианте объявленные переменные сохранят свои значения до конца работы программы. Важная особенность локальных переменных заключается в том, что если они были определены с теми же именами, которые были объявлены ранее (в программе более высокого уровня), то после завершения работы программы старые значения будут восстановлены. Таким образом, локальные переменные, созданные в какой-либо процедуре, будут действовать и во всех вызываемых из нее процедурах и функциях, но перестанут быть доступными, как только мы возвратимся из создавшей их процедуры на более высокий уровень. Опции команды в Visual FoxPro позволяют не приводить полный список всех переменных, а использовать для их идентификации шаблон, который с помощью символов * и ? укажет распространение действия команды на переменные, имена которых соответствуют шаблону (LIKE), или на переменные, имена которых не соответствуют приведенному шаблону (EXCEPT). Напомним, что шаблон обычно включает общую часть имени и знаки замещения ? и * , первый замещает один алфавитно-цифровой символ, а второй - любое их число. Это позволяет знаком * задавать все имена, а несколькими знаками ? имена соответствующей длины. В Visual Basic мы должны перечислить все объявляемые переменные. При большом количестве однотипных переменных более эффективно использовать вместо них массивы, то есть одно- или двумерные таблицы переменных под общим именем. Обращение к элементам массива производится с помощью указания после имени массива в круглых или квадратных скобках нужных номеров строк и (или) столбцов. Перед использованием массивов в Visual FoxPro их надо объявить командой DIMENSION ArrayName1(nRows1 [, nColumnsl]) [, ArrayName2(nRows2 [, nColumnsI])] ... Каждый массив может содержать не более 65000 элементов, то есть предельная размерность двумерного массива может составить 254x255, 1000x65 и т. п. В последнем случае nRows1 =1000 и nColumns1=65, если значение nColumnsl не опpеделено, то массив одномеpный. После объявления массива по умолчанию всем его элементам присваивается логический тип данных со значением .F.. В Visual Basic задать массив можно в команде Dim, указав его размерность в параметре Subscripts. Для задания нужного типа данных, а это относится и к переменным, в Visual FoxPro необходимо использовать команду STORE Expression TO MemVarList ArrayList
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |