Лекция 3. Функции в FoxPro
25 CEILING () - возвращает ближайшее большее целое. ? CEILING (6.8), CEILING (-8.4) && 7 и -8 FLOOR () - возвращает ближайшее меньшее целое. ? FLOOR (6.3), FLOOR (-8.4) && 6 и -9 INT () - целая часть. М AX (, [, ...]) - возвращает максимальное значение. MIN (, [, ...]) -возвращает минимальное значение. MOD (, ) - целочисленный остаток от деления на . ? MOD (3, 2), MOD (5/7) && 1 и 5 ROUND (, ) - округление до заданного количества знаков после запятой. RAND ([]) - возвращает псевдослучайное число в диапазоне 0 -1. позволяет определить начальное значение аргумента. По умолчанию исходное значение аргумента 100001. " width="640"
Арифметические функции.
ABS () ? ABS (-25) - 25
CEILING () - возвращает ближайшее большее целое.
? CEILING (6.8), CEILING (-8.4) && 7 и -8
FLOOR () - возвращает ближайшее меньшее целое.
? FLOOR (6.3), FLOOR (-8.4) && 6 и -9
INT () - целая часть.
М AX (, [, ...]) - возвращает максимальное значение.
MIN (, [, ...]) -возвращает минимальное значение.
MOD (, ) - целочисленный остаток от деления на .
? MOD (3, 2), MOD (5/7) && 1 и 5
ROUND (, ) - округление до заданного количества знаков после запятой.
RAND ([]) - возвращает псевдослучайное число в диапазоне 0 -1. позволяет определить начальное значение аргумента. По умолчанию исходное значение аргумента 100001.
в числовую форму. ?VAL('-16.576') && -16.580 " width="640"
Степенные функции.
ЕХР (х) – е х LOG (х) In x
LOG 10( x ) lg x SQRT (х) корень
Тригонометрические функции.
SIN (х) sin х COS (х) cos х
TAN (х) tg х ASIN (х) arcsin х
ATAN (х) arctg х PI () число =3,14
DTOR () - преобразует угол, заданный в градусах, в радианы.
RTOD () - возвращает угол в градусах.
Функции преобразования типов данных.
ASC () - выдает ASCII-код первого символа выражения С.
? ASC (' B ') && 66
CHR () - преобразует значение в символьное.
? CHR (66) && В
STR (, [], []) - преобразует числовое в символьную строку .
? STR (384.248,8,2) && 384.25
VAL () - преобразует число, представленное в символьной форме в числовую форму.
?VAL('-16.576') && -16.580
,за которые кредит должен быть погашен. Иными словами: = PAYMENT (, , ) Пример 7.8 . Пусть в банке взят на два года кредит в размере 100.000 рублей из расчета 10% годовых. Чтобы с учетом процентов погасить кредит, требуется два ежегодных взноса по 56.719 рублей: ? PAYMENT (100.000,.1,2) && 56719.05 FV (, , ) Эта функция определяет растущий вклад клиента на счету банка в зави-симости от выплачиваемого банком процента, размера периодического взноса и числа вкладов (число периодов). = FV (, , FV (100.000, .4/12, 12) && 1.446.376 ? 100.000 * ((1 + .4/12) ** 12 - 1) / (.4/12) Это при ежемесячных взносах на 100.000 рублей. " width="640"
Финансовые функции.
Все функции связаны с размером кредита / вклада, процентными
ставками и платежами / выплатами.
PAYMENT (, , )
Функция вычисляет размер периодических выплат за взятый кредит, на
который установлен определенный процент. Известно также
периодов,за которые кредит должен быть погашен. Иными словами:
= PAYMENT (, , )
Пример 7.8 . Пусть в банке взят на два года кредит в размере 100.000 рублей
из расчета 10% годовых. Чтобы с учетом процентов погасить кредит,
требуется два ежегодных взноса по 56.719 рублей:
? PAYMENT (100.000,.1,2) && 56719.05
FV (, , )
Эта функция определяет растущий вклад клиента на счету банка в зави-симости
от выплачиваемого банком процента, размера периодического взноса и числа
вкладов (число периодов).
= FV (, ,
FV (100.000, .4/12, 12) && 1.446.376
? 100.000 * ((1 + .4/12) ** 12 - 1) / (.4/12)
Это при ежемесячных взносах на 100.000 рублей.
Работа с несколькими БД, связывание БД
Используется принцип рабочих областей. В каждый момент времени пользователь работает в одной из 25 рабочих областей. В каждой рабочей области может быть открыт один файл БД, до 7 индексных файлов и один форматный файл. Максимальное число открытых файлов при этом не может превышать 15.
Для переключения рабочих областей в ходе работы используется команда: SELECT /
Алиасами рабочей области являются латинские буквы от А до J . Доступ к данным из других рабочих областей осуществляется по её алиасу.
Например, чтобы обратиться к некоторому полю файла из другой рабочей области необходимо использовать конструкцию:
Например :
SELECT A
USE STUD
SELECT В
USE ICZ
A FIOS
Для наглядности вместо номеров областей или букв можно использовать
имена БД, открытых в этих областях, или альтернативные имена этих баз.
Например :
SELECT В
USE SOTR ALIAS S2
В дальнейшем при необходимости сделать область 'В' текущей можно
написать:
SELECT S 2
Если альтернативное имя не назначено, то по умолчанию им становится
основное имя БД.
Например:
SELECT В
USE SOTR
Далее можно написать:
SELECT SOTR
В команде USE можно указывать и область, в которой открывается база:
USE KADRS IN A
Однако перехода в указанную область здесь не происходит. Для перехода
необходимо указывать SELECT .
Существуют две возможности связывания двух БД. Первый способ
обеспечивает объединение двух БД из разных рабочих областей в новом файле:
JOIN WITH ТО
FOR [ FIELDS ]
Если список полей отсутствует, берутся все поля из текущего
файла и все поля из алиасного.
Записи нового файла формируются по следующему правилу:
Для каждой записи текущего файла просматриваются все записи
алиасного файла с проверкой условия. Если условие выполняется,
то объединенная запись добавляется в новый файл.
При использовании этого способа необходимо знать о наличии
места на диске.
Например, слияние двух баз данных : “ SPISOKD ( Name , Cena ,
Kod )” (табл. 7.1) и “KOLDETAL (Kod, Kol, Data )” (табл. 7.2) в
один - “Справочник деталей” производится следующим образом:
Слияние баз
CLEAR
SET DEVICE TO SCREEN
SELECT В
USE KOLD
SELECT A
USE SPISOKD
INDEX ON KOD TO KODIND
JOIN WITH В TO OTCHET FOR Kod = В Kod
FIELDS Kod, Name, Cena, В Kolich, В Data
CLOSE ALL
USE OTCHET
Слияние баз :
SELECT B
USE KOLDETAL
SELECT A
USE SPISOKD
JOIN WITH В ТО ОТНЕТ FOR Kod = B Kod
FIELDS Kod, Name, Cena, В Kolich, В Data
Программа :
SET TALK OFF
INDEX ON NAME TO INDOTCH
@ 1,1 SAY ' Список деталей '
STORE 2 TO ST
STORE REPLICATE ('_', 20) TO CHERTA
1. 2,1 SAY CHERTA
DO WHILE .NOT. EOF()
? N, Name
SKIP N = N +1
ENDDO
CLOSE ALL
SET TALK ON
RETURN
Программа :
SET TALK OFF
INDEX ON NAME TO INDOTCH
@ 1,1 SAY ' Список деталей '
STORE 2 TO ST
STORE REPLICATE ('_', 20) TO CHERTA
Для работы этой команды необходимы следующие условия:
- открытый файл в текущей рабочей области;
- открытый файл в другой рабочей области;
- если используется опция , то главный файл должен быть ин-
дексирован по этому полю и оба файла должны иметь его в своей структуре;
RECNO ( ) функция, которая определяет номер текущего кортежа в активном
отношении.
Суть работы команды:
1) Если указана опция , то каждая запись активного файла
связывается с первой записью алиасного файла, имеющего такой же ключ.
2) Если указана опция RECNO ( ), то каждая запись активного файла связывается
с записью алиасного файла, имеющего тот же номер.
3) Если используется опция , то каждая запись активного файла
связывается с одной записью алиасного файла, номер которой равен значению
.
Связывание таблиц оператором LOCATE .
Пусть имеется 3 БД : STUDENT (NS, FIO, GRUPPA)
DISCIPL (ND, NAME_D, KAF)
YSPEV (NS, ND, ОС )
Пример 7.11. Поиск студентов, получивших 5 по всем предметам:
SELECT A
USE STUD
SELECT В
USE DISCIPL
SELECT С
USE YSPEV
LOCATE FOR ОС = 5
IF FAUND( )
ST=2
DO WHILE FOUND()
SELECT A
LOCATE FOR NS = C NS
IF FOUND ()
@ ST, 1 SAY FIO
@ ST.20 SAY GRUPPA
ENDIF
ST = ST + 1
CONTINUE
ENDDO
WITH "Нажмите ввод"
ELSE
@ 1,1 SAY "Отличников нет"
ENDIF
CLOSE ALL
Работа с окнами
Каждое окно - это, по существу, автономный экран системы. Одновременно
может быть доступно несколько окон, что позволяет создавать «многослойный»
пользовательский интерфейс. Окна можно открывать, закрывать, изменять
размеры. Различают три размера окна - нормальный, минимальный, и
максимальный. На экране может быть одновременно сразу несколько окон.
Переход между окнами может быть выполнен последовательно клавишами Ctrl
FlO или мышью. Каждое окно предварительно должно быть определено, а затем
при необходимости активировано. Основные команды:
DEFINE WINDOW - определяет окно и задает все его свойства.
ACTIVATE WINDOW - активирует окно .
HIDE WINDOW - делает скрытым активное окно, при этом выдачи все равно
идут в окно.
SHOW WINDOW -снова делает видимым скрытое окно..
MOVE WINDOW и ZOOM WINDOW - осуществляет перемещение окна по
экрану и изменяет его размер.
SAVE WINDOW - сохраняет описание окна в файле.
DEACTIVATE WINDOW - удаляет (деактивирует) временно ненужное окно с
экрана.
CLEAR / RELEASE WINDOW - удаляет ненужные окна.
Создание окна:
DEFINE WINDOW FROM , TO ,
[ TITLE ]
[ SYSTEM / DOUBLE / PANEL / NONE / ] - эти опции определяют форму границ окна.
Например :
DEFINE WINDOW STUD FROM 3,4 TO 15,50 TITLE " СТУДЕНТЫ "
USE STUD
Работа в окне STUD
ACTIVATE WINDOW STUD
Работа с экраном
DEACTIVATE WINDOW STUD
Работа с экраном
RELASE WINDOW STUD