КОМАНДА [интервал] While [условие-1] For [условие-2],
[Next n — следующие п записей; где интервал = Rest — оставшиеся до конца файла записи; [аи — все записи.
Здесь: выполнение Команды прекращается, если нарушается <условие-1>;
Команда распространяется при этом только на записи, удовлетворяющие <условию-2>.
Разработка приложений в среде FoxPro состоит в создании совокупности взаимосвязанных файлов БД, форматных, индексных, командных, образующих в итоге среду пользователя, АБД, оператора подготовки данных. В Приложении 2 приведен краткий обзор основных команд.
Пример программы
Приведем текст простой диалоговой программы, содержащий наиболее характерные особенности ЯП FoxPro (операторы вводавывода на экран и управления программой).
Возможный диалог с такой программой может выглядеть следующим образом (рис. 3.1):
Привет! Как Вас зовут?
Гаврик
Доброе утро, Гаврик! Как настроение?
Плохое
У меня тоже плохое, Гаврик!
Рис. 3.1. Иллюстрации к простой диалоговой программе:
а — начало внешнего цикла; б — начало внутреннего цикла; в — окончание внутреннего цикла и выход во внешний
Рассмотрим текст такой программы:
* Простая диалоговая программа
set echo off
set talk off
on escape quit &&условие выхода из программы
clear
do while .t. && внешний цикл
name= [ ] && инициализация переменной (в)
@ 1,10 say [Привет! Как Вас зовут?]
@ 3, 10 get name
read (a)
if name =[ ] &&требование ввода непустой строки loop
endif
if substr(name,l,l)=[*] &&выход из программы exit
endif
do while .t. && внутренний цикл
nastr=[ ] && инициализация переменной
@ 5,10 say [Доброе утро, ]+rtrim(name)+
[! Как настроение?] @ 7,10 get nastr
read (б)
if substr(nastr,l,l)=[ ]
loop endif if substr(nastr,l,l)=[*] &&условие выхода из внутр.
&&цикла exit endif @ 9,10 say [У меня тоже ] +rtrim (nastr) +
[, ]+rtrim(name) + [ ! ] enddo enddo * Конец программы
В начале программы находятся команды из множества set, настраивающие режим работы интерпретатора или компилятора на обработку исходного текста в определенном режиме. В данном случае речь идет о запрещении дублирования вводимых команд на экране. На экране отображается только та информация, которая находится в операторах say, get.
on escape — задание действий при нажатии клавиши (в данном случае — прекращение работы программы).
Инициализация переменных name, nastr одновременно задает их тип как строковый и определяет длину.
Программа состоит из двух вложенных циклов do ... enddo, в заголовке которых стоит условие бесконечного повторения (.t.), поэтому должен быть предусмотрен принудительный выход из каждого цикла. Этот выход происходит при условии ввода в строке name или nastr символа «*» (звездочка). С помощью оператора exit осуществляется выход во внешний цикл из внутреннего и из внешнего циклов на окончание работы.
При попытке ввести пустую строку в ответ на запрос программа возвращается в заголовок соответственно внутреннего или внешнего цикла и повторяет запрос на ввод строки (оператор возврата в начало цикла loop). Управление условными переходами осуществляется оператором if ... endif.
Операторы say и get осуществляют вывод на экран строки текста и открытие окна для ввода в соответствующих позициях экрана (строка и столбец). Для ограничения строки (литерала) в программе может использоваться как двойная кавычка ("), так и квадратные скобки ([]).
Команда read останавливает программу для ожидания ввода данных в окно на экране и нажатия подтверждения . Команда clear осуществляет очистку экрана монитора.
Конкатенация (сцепление) строк осуществляется оператором «+», а функция rtrim () используется для подавления «хвостовых» пробелов во введенной строке с целью повышения удобочитаемости текста. Функция substr, обычная и для других ЯП, позволяет выделить из строки-операнда подстроку-результат (с указанием длины подстроки и смещения от начала исходной строки).
Из текста программы следует также, что допустимы два типа комментариев — полная строка (начинается с символа *) и частичная строка (начинается с &&).
Достарыңызбен бөлісу: |