- •5 Работа в системе visual foxpro
- •5.1 Базовые концепции Visual FoxPro
- •5.1.1 Общая характеристика субд
- •5.1.2 Элементы проекта
- •5.1.3 ИнтерфейсVisualFoxProи создание проекта
- •5.1.4 Принципы создания проекта и его основных компонентов
- •5.1.5 Создание базы данных, таблиц и индексов
- •5.1.5.1 Создание базы данных
- •5.1.5.2 Создание таблиц
- •5.1.5.3 Типы данных вVisualFoxPro
- •5.1.5.4Создание индексов вVisualFoxPro
- •5.1.6 Организация межтабличных связей
- •5.1.7 Обеспечение целостности данных
- •5.2 Извлечение и представление информации средствами интерфейсаVisualFoxPro
- •5.2.1 Средства формирования запросов
- •5.2.2 Организация многотабличных запросов и вычисляемого поля
- •5.2.3 Представление результатов запросов
- •Основы программирования вVisualFoxPro
- •5.3.1 Общие положения и соглашения о синтаксисе команд
- •5.3.2 Разновидности, объявление, инициализация и отображение переменных и массивов
- •5.3.3 Взаимодействие программ вVisualFoxPro
- •5.3.4 Команды структурного программирования
- •5.3.5 Команды обработки особых ситуаций
- •5.3.6 Команды установки программной среды
- •5.3.7 Некоторые важные функции языкаVisualFoxPro
- •5.3.8 Визуальное объектно-ориентированное программирование в Visual FoxPro
- •5.3.8.1 Базовые понятия
- •5.3.8.2 Создание объектов на основе базовых классов и задание свойств объектов
- •5.3.8.3 Определение событий и методов для объектов класса
- •5.3.8.4 Вложенность объектов
- •5.3.9 Команды для работы с меню
- •5.3.10 Пример совместного использование программных файлов, формы и меню
5.3.4 Команды структурного программирования
Команды структурного программирования обеспечивают следующее:
организация цикла по условию (рис. 5.29);
организация цикла по счетчику (рис. 5.30);
организация цикла по числу записей в таблице (рис. 5.31);
проверка условий (рис. 5.32). Проверка условий реализуется командами двух типов и специальной функцией IIF(), выполняемой значительно быстрее, чем эквивалентные ей команды IF…ENDIF.
DO WHILE <expL>
<statements>
[LOOP]
[EXIT]
ENDDO
Здесь <expL> – логическое выражение; пока оно остается истинным, выполняются команды <statements>. LOOP – ключевое слово; ставится в любом месте внутри цикла; возвращает управление к началу цикла. EXIT – то же, но служит для выхода из цикла к первому оператору, стоящему после слова ENDDO.
Рис. 5.29 Команда организация цикла по условию
FOR <memvar>=<expN1> TO <expN2> [STEP <expN3>]
<statements>
[EXIT]
[LOOP]
ENDFOR | NEXT
Переменная памяти <memvar> является счетчиком, определяющим число выполнений цикла. При этом expN1 – начальное, expN2 – конечное значение счетчика, а expN3 – шаг изменения счетчика по достижении конца цикла (по умолчанию равен 1). Если значение счетчика превысит expN2, то управление передается на следующий за циклом оператор.
Значения expN1, expN2, expN3 считываются только первоначально, поэтому их значения могут быть изменены внутри цикла без изменения количества итераций. Если же изменить значение счетчика <memvar> внутри цикла, то это изменит количество итераций цикла.
Рис. 5.30 Команда организация цикла по счетчику
SCAN [NOOPTIMIZE] [<scope>] [FOR <expL1>] [WHILE <expL2>]
[<statements>]
[LOOP]
[EXIT]
ENDSCAN
Данная команда просматривает базу данных и выполняет группу операторов для каждой записи, если выполняются заданные условия. По умолчанию диапазоном <scope> являются все записи базы данных. Операторы <statements> выполняются для тех записей внутри диапазона, для которых выражение <expL1> истинно. Просмотр базы данных в цикле идет пока <expL2> остается истинным. Прочие опции используются, как описано выше. Команда автоматически передвигает указатель записей на следующую запись.
Рис. 5.31 Команда организация цикла по числу записей в таблице
DO CASE
CASE <expL1>
<statements1>
CASE <expL2>
<statements2>
…
CASE <expLN>
<statementsN>
[OTHERWISE
<statementsN+1>]
ENDCASE
Команда выполняет один блок операторов из набора в зависимости от логического условия (или не выполняет ни одного блока операторов). Будут выполнены команды <statements> только после первого CASE с истинным логическим условием. Все возможные последующие истинные CASE игнорируются, а управление передается к первому оператору, стоящему после ENDCASE. Если же ни одно из условий не оказалось истинным, то выполняются операторы, стоящие после ключевого слова OTHERWISE, а если оно не указано, то сразу же управление переходит к оператору, стоящему после ENDCASE.
Следующая команда выполняет команды в зависимости от условия:
IF <expL>
<statements1>
[ELSE
<statements2>]
ENDIF
Здесь <expL> – логическое условие, при истинности которого выполняется первая группа операторов, а при ложности – вторая группа, если она имеется после слова ELSE.
Функция IIF() возвращает одно из двух выражений в зависимости от значения логического выражения. Ее синтаксис:
IIF (<expL>,<expr1>,<expr2>)
Если логическое выражение <expL> истинно, то возвращается первое выражение <expr1>, а если <expL> ложно, то второе (<expr2>).
Рис. 5.32 Команды и функция проверки условий