
Організація циклів
Цикли бувають: - арифметичні (з параметром) - ітераційні (з умовою).
Мова FoxPro має досить потужні засоби організації циклів:
Команду циклу FOR…NEXT;
Команду циклу WHILE;
Команду сканування SCAN…ENDSCAN.
Арифметичний цикл
Арифметичний цикл повинен мати змінну, яка обмежує число циклів. Формат команди:
FOR <змінна> = <вирN1> TO <вирN2> [STEP <вирN3>]
[команди]
ENDFOR
змінна – управляючий параметр циклу (лічильник циклу);
вир N1 – початкове значення параметру циклу;
вир N2 – кінцеве значення параметру циклу;
вир N3 – крок. Якщо крок відсутній, то він дорівнює 1.
Допускається також замість ENDFOR використовувати NEXT (як у Бейсіку).
Крім того, можна включати команди EXIT і LOOP.
Цикл з умовою (ітераційний)
Цикл з відомою умовою закінчення має формат:
DO WHILE <умова>
[команди]
ENDDO
Поки умова істинна, то будуть виконуватись команди між DO WHILE і ENDDO. Якщо ж умова ложна, здійснюється перехід до команди, яка йде за ENDDO.
Цикл DO WHILE краще використовувати для файлу даних, проіндексованому по полю, що застосовується в умові.
Якщо умова циклу приймає тільки значення .Т., цикл DO WHILE стає нескінченим.
У мові FoxPro відсутнє поняття "мітка", тобто немає істотної можливості перейти в інше місце програми. Тому, якщо необхідно вийти за межі циклу, то слід використовувати команду:
EXIT
яка передає керування команді, що йде за ENDDO.
Якщо треба перейти на початок циклу тобто на саму команду циклу, то застосовують команду
LOOP
Такі переходи потрібні для того, щоб уникнути виконання деяких команд, які стоять до фрази END і зразу ж перейти до наступного циклу.
Команди EXIT і LOOP можна використовувати також і в інших командах організації циклів.
Приклад.
Накопичувати суму тільки додатних чисел Х у змінну S до тих пір поки сума не буде перевищувати 100, а якщо зустрінеться число Х=0, то необхідно зупинити накопичення.
CLEAR
S = 0
DO WHILE S < = 100
INPUT ' Введіть Х ' TO Х
IF Х < 0
LOOP && Якщо Х < 0 – перейти на початок циклу і
&& вводити нове число
ENDIF
IF Х = 0
EXIT && При Х = 0 вихід за межі циклу
ENDIF
ENDDO
Команди EXIT і LOOP мають смисл тільки в циклах. Але відсутність міток винуждає програміста звурнутись до цих команд, тому іноді треба використовувати команди циклів там, де такого циклу немає, використовуючи їх як операторні дужки. В якості умови ставиться будь-яка завжди істина умова, найчастіше, це просто логічна «істина» (. Т .)
DO WHILE . T . <команди> ENDDO
Функції субд
Використовуються для аналіза або перетворення данних. Синтаксична особливість – обов’язкова присутність дужок.
Функції поділяють на ряд груп:
- математичні функції;
- строкові функції;
- функції роботи з датами;
- функції перетворення типів даних;
- функції позиціювання курсора;
- функції роботи з "мишкою";
- клавішні функції;
- Технічні функції;
- функції часу;
- функції аналізу умов;
- функції аналізу типу і наявності даних;
- фінансові функції;
- функції підставлення.