Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [ 30 ] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

4.3. "Горячая десятка"

Если вы следовали руководящим указаниям авторов, то вам не трудно написать простейшую программу. Если вы написали даже очень простую программу, то вы, несомненно, можете сказать, что являетесь программистом. Если вы являетесь программистом, то пришла пора заглянуть в красивую коробку, в которой, мы надеемся, вы принесли от продавца Access, Visual Basic или Visual FoxPro, и вместо Руководства пользователя вытащить оттуда Руководство программиста. Если после всего этого у вас упало настроение и стало рябить в глазах от длинных списков многочисленных объектов, команд и функций, не надо впадать в отчаяние.

В этом параграфе мы попробуем взять реванш у разработчиков Microsoft за их неуемную фантазию. Возьмем на вооружение успехи лингвистов в деле составления частотных словарей, вообразим себя обладателями опыта составителей музыкальных хит-парадов и составим "горячую десятку" - расскажем о тех командах и функциях, которые сразу продвинут вас в деле написания программ далеко вперед.

10. Пока мы учимся программировать, нам очень поможет самая простая команда вывода данных в Visual FoxPro ? ?? Expression

Мы даем здесь не полный ее синтаксис, так как эта команда вряд ли пригодится вам для чего-то более виртуозного, чем вывод нужного значения в процессе разработки и отладки прикладной программы. Ее очень удобно набирать в окне Command. Один знак вопроса всегда выводит значение выражения Expression с новой строки, два знака вопроса - на той же строке. В Visual Basic этой команде в наибольшей степени соответствует конструкция

чернорабочим, которые строят каркас здания, а отделкой лучше заниматься самостоятельно.

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

Вы можете создать какую-либо процедуру после открытия контейнера БД. Для создания программ в Access используется язык программирования Visual Basic, о котором мы уже говорили. Перейдите на страницу Модули контейнера базы данных и создайте новый модуль. Меню Access слегка видоизменится. Надо привыкнуть, что меню динамически меняется, то есть при смене объекта, с которым вы работаете, загружается новое меню.

Теперь можно набрать следующую строчку Sub Ясоздаюбазуданныхвручную()

Не забудьте, что каждая процедура должна заканчиваться командой End Sub, но набирать эту строчку не обязательно - после нажатия клавиши Enter она появится автоматически.

Ваша процедура должна выглядеть следующим образом:

Sub ЯсоздаюБазуДанныхВручную() Dim MyDb As DATABASE

Set MyDb = DBEngine.Workspaces(0).CreateDatabase("МояБазаДанных", dbLangCyrillic)

End Sub

Чтобы запустить эту процедуру на исполнение, выведите на экран окно отладки и наберите в нем название процедуры, возможно, у вас она будет называться по-другому. После этого можете смело нажимать клавишу ввода, уверяем, что база данных у вас появится.

Для того чтобы в программе можно было разобраться хотя бы на следующий день после написания, не ленитесь писать комментарий к выполняемым действиям. Для написания строк комментария в Visual FoxPro надо в начале строки поставить "звездочку" * [Comments]

Знак звездочки часто используется также для разделения отдельных смысловых фрагментов программы. Строки комментария нельзя вставлять внутрь команды, если, например, она написана на нескольких строчках с использованием символа переноса - точки с запятой.

При написании комментария на одной строке с командой текст команды и комментария разделяется двумя амперсендами: && [Comments]

Эти знаки можно опустить только после команд, начинающихся на END. В Visual Basic признаком комментария является знак апострофа: [Comments]

Он может применяться и в начале строки, и после команды на одной строке с ней. Признаком переноса командной строки в Visual Basic является знак подчеркивания, а в Visual FoxPro - точка с запятой.



Debug.Print Expression

которая выводит значение Expression в окно отладки Debug Window.

9. Для запуска программы или для передачи управления другой программе в Visual FoxPro дайте команду Do из меню Program и выберите файл с нужным именем, или в окне Command наберите команду

DO ProgramName1 ProcedureName [WITH ParameterList] [IN ProgramName2]

Если в ProgramName1 расширение не указывается, то Visual FoxPro будет пытаться запустить эту версию программы в следующей последовательности расширений для файла с одним и тем же именем:

• EXE - исполняемая версия.

• APP - прикладная программа.

• FXP - откомпилированная версия.

• PRG - программа.

Опция WITH используется для передачи параметров (заранее определенных данных) в программу (число параметров не должно превышать 27). По умолчанию параметры передаются по ссылке, для передачи по значению необходимо установить SET UDFPARMS TO VALUE. В ProgramName2 можно указать файл, в котором размещается вызываемая программа.

В Visual Basic сходные задачи выполняет команда Call Name([ParameterList])

Как ее использовать покажем на примере вызова на выполнение подпрограммы:

Call PrintToDebugWindow("Печать в окне отладки") Sub PrintToDebugWindow(cString) Debug.Print AnyString

End Sub

8. Ранее мы научились определять в программе нужные нам переменные с требуемым типом данных. При обработке данных программисту в силу различных причин часто приходится преобразовывать данные из одного типа в другой.

В языке программирования Visual FoxPro для этого существует большое количество функций, из которых наиболее часто используемыми можно назвать следующие: STR(nExpression [, nLength [, nDecimalPlaces]])

Преобразует числовое выражение nExpression в строку символов. Необязательные параметры nLength и nDecimalPlaces позволяют задать длину и число десятичных разрядов соответственно. VAL(cExpression)

Преобразует в число строку символов, представляющую собой набор цифр.

В Visual Basic существуют аналогичные функции: Str(nExpression) Val(cExpression)

7. Трудно представить себе программу обработки данных, в которой программисту не пришлось бы с этими данными хоть что-то делать. С числами все просто. В этой области мы постоянно тренируем себя при посещении магазинов. Суммы растут, тренировки становятся все более напряженными. Сложнее с символьными данными. И здесь мы должны включить в почетную десятку хотя бы основные функции для работы со строками.

В Visual FoxPro по частоте употребления можно выделить следующие функции: SUBSTR(cExpression, nStartPosition [, nCharactersReturned])

Возвращает фрагмент строки символов из строкового выражения cExpression, начинающийся с позиции nStartPosition и длиной nCharactersReturned. LEFT(cExpression, nExpression)

Возвращает из строкового выражения cExpression фрагмент, включающий первые nExpression символов.

RIGHT(cExpression, nExpression)

Возвращает из строкового выражения cExpression фрагмент, включающий последние nExpression символов. ALLTRIM(cExpression)

Исключает все начальные и конечные пробелы из строкового выражения.

В Visual Basic существуют аналогичные функции:



Mid(cExpression, nStartPosition [, nCharactersReturned]) Left(cExpression, nExpression) Ri ght(cExpression, nExpression) Trim( cExpression)

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

В Visual FoxPro для этого можно использовать следующие функции: Для определения текущей даты

DATE()

Для определения текущего времени TIME([nExpression ])

Для определения текущей даты и времени в формате дата и время DATETIME()

Если в функции TIME() в качестве выражения задать любую числовую величину, значение текущего времени будет возвращено с сотыми долями секунд, хотя тогда лучше уж обратиться к функции SECONDS().

В Visual Basic существуют аналогичные функции:

Date

Time Now

5. В том случае, если необходимо многокpатно выполнять какой-либо блок команд, пока выполняется заданное условие, может быть использована команда, которая в Visual FoxPro выглядит вот так

DO WHILE lExpression Commands [LOOP] [EXIT]

ENDDO

Каждый раз, когда программа достигает строки с командой DO WHILE, она проверяет значение выражения lExpression, и если оно равно .T., то выполняются команды внутри структуры, если .F., то управление передается строке, следующей за ENDDO. Опция LOOP позволяет после ее указания вернуть управление к строке DO WHILE, а опция EXIT - прекратить выполнение цикла, невзирая на значение lExpression.

Наиболее часто в качестве условия используют выражения:

• DO WHILE .NOT. EOF() - до исчерпания записей в таблице;

• DO WHILEnMin<<10 .AND. nMax>>100 - пока переменная nMin меньше 10 и переменная nMax больше 100;

• DO WHILE .T. - бесконечно выполняемый цикл (выход только по EXIT).

Естественно, что в случае использования опций LOOP и (или) EXIT перед ними должны быть записаны свои условия их выполнения (чаще всего команда IF...ENDIF). Приведем простой пример организации цикла для реакции на действия пользователя.

DO WHILE .T. CLEAR

WAIT "Наберите цифру 1 или 2" TO cNumber DO CASE

CASE cNumber = "1"

? "Вы набрали цифру 1"

CASE cNumber = "2"

? "Вы набрали цифру 2" OTHERWISE

? "Ошибка: введенное значение не 1 или 2!"

ENDCASE

WAIT "Хотите попробовать еще раз (Y/N)" TO cYesNo IF UPPER(cYesNo) <<>> "Y"

EXIT ENDIF ENDDO



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [ 30 ] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146