Файл: ИТУП_Светлов_Светлова.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.12.2019

Просмотров: 4045

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

121 

5. 

Операторы

 

и

 

наиболее

 

употребительные

 

функции

используемые

 

в

 

формулах

 

расчёта

 

значений

 

столбцов

определяемых

 

пользователем

 

Операторы

 

+

*

/

— 

арифметические

 

операторы

сложение

вычита

-

ние

умножение

деление

возведение

 

в

 

степень

— 

целочисленное

 

деление

 (

остаток

 

отбрасывается

). 

MOD 

— 

остаток

 

от

 

деления

Например

значение

 

выраже

-

ния

 

8 MOD 3

 

равно

 2. 

— 

конкатенация

  (

объединение

двух

 

текстовых

 

строк

=

<>

<

>

>=

<=

 — 

операторы

 

сравнения

  (

результат

 

имеет

 

значения

 

«

истина

» 

или

 «

ложь

»)

1

AND

OR

NOT 

— 

логические

 

операции

 "

и

", "

или

", "

не

". 

Математические

 

функции

 

sqr

(

x

), 

log

(

x

), 

exp

(

x

 

— 

x

, ln(

x

), 

e

x

sin

(

x

), 

cos

(

x

), 

tan

(

x

), 

atn

 (

x

) — sin(

x

), cos(

x

), tg(

x

), arctg(

x

). 

abs

(

x

) — 

|

x

|. 

fix

(

x

) — 

округление

 

отбрасыванием

 

дробной

 

части

sgn

(

x

) — 

1, 

если

 

> 0; 0, 

если

 

= 0; –1, 

если

 

< 0. 

rnd

() — 

равномерно

 

распределённая

 

случайная

 

величина

 

в

 

интервале

 [0; 1). 

Значение

 

обновляется

 

при

 

ка

-

ждом

 

пересчёте

 

модели

 

проекта

Логические

 

функции

 

isnumeric

(

x

) — 

«

истина

», 

если

 

аргумент

 

числовой

иначе

 «

ложь

». 

isdate

(

x

) — 

«

истина

», 

если

 

аргумент

 — 

дата

иначе

 «

ложь

»

2

isnull

(

x

) — 

«

истина

», 

если

 

аргументу

 

не

 

присвоено

 

никакое

 

значение

иначе

 «

ложь

». 

iif

(

x,y,z

) — 

y

если

 

x

 

имеет

 

значение

  «

истина

»; 

в

 

противном

 

случае

 — 

z

choose

(

i,x

1

,x

2

) — 

возвращает

 

значение

 

x

i

                                           

1

 

Эти

 

операторы

 

могут

 

использоваться

 

для

 

сравнения

 

не

 

только

 

чисел

 

и

 

дат

но

 

и

 

текстовых

 

строк

 (

в

 

лексикографическом

 

порядке

). 

Регистр

 

символов

 

учитывается

2

 

В

 

справочной

 

системе

 

программы

 Microsoft Project 

эта

 

функция

 

отнесена

 

к

 

числу

 

функций

 

даты

 

и

 

времени


background image

122 

switch

(

c

1

,x

1

,c

2

,x

2

) — 

аргументы

 

c

i

 

содержат

 

логические

 

условия

x

i

 — 

некоторые

 

значения

Результат

 — 

первое

 

слева

 

значение

 

x

i

для

 

которого

 

соответствующее

 

c

i

 

принимает

 

значение

 «

истина

». 

Функции

 

даты

 

и

 

времени

 

К

 

календарным

 

значениям

 

можно

 

прибавлять

 

и

 

вычитать

 

вещественные

 

числа

трактуемые

 

в

 

этом

 

случае

 

как

 

число

 

дней

 (

возможно

дробное

согласно

 

астрономическому

 

времени

В

 

столбцах

 

для

 

представления

 

календарных

 

значений

 

могут

 

отображать

-

ся

 

только

 

даты

 

в

 

интервале

 

с

 1 

января

 1984 

г

по

 31 

декабря

 2049 

г

.  

now

() — 

текущие

 

дата

 

и

 

время

 

по

 

системным

 

часам

 

ком

-

пьютера

  (

обновляются

 

при

 

каждом

 

пересчёте

 

модели

 

проекта

). 

date

() — 

текущая

 

дата

 

по

 

системным

 

часам

 

компьютера

cdate

(

x

) — 

преобразование

 

текстового

 

значения

 

к

 

типу

  «

да

-

та

». 

dateserial

(

y,mn,d

), 

timeserial

(

h,m,s

) — 

формирование

 

календарного

 

значе

-

ния

 

из

 

номеров

 

года

 

y

месяца

 

mn

 

и

 

числа

 

d

но

-

меров

 

часа

 

h

минуты

 

m

 

и

 

секунды

 

s

Например

чтобы

 

сформировать

 

календарное

 

значение

со

-

ответствующее

 

моменту

 

h

 

часов

 15 

минут

 

30 

секунд

 17 

июня

 

y

-

го

 

г

., 

можно

 

записать

 

dateserial(y,6,17)

 

+

 

timeserial(h,15,30).

 

dateadd

(

u,n,d

) — 

дата

отстоящая

 

от

 

даты

 

d

 (

возможно

 

её

 

задание

 

в

 

форме

 

текста

на

 

n

 

периодов

специфицирован

-

ных

 

аргументом

 

u

Последняя

 

может

 

принимать

 

одно

 

из

 

следующих

 

значений

"h"

"d"

"m"

"y"

что

 

означает

 

соответственно

 

часы

дни

ме

-

сяцы

 

и

 

годы

Время

 

астрономическое

Например

результат

 

вычисления

 

функции

 

dateadd("m",1,"23.05.2006")

  — 23 

ию

-

ня

 2006 

г

datediff

(

u,d

1

,d

2

) — 

число

 

полных

 

и

 

неполных

 

периодов

 

заданной

 

продолжительности

 

между

 

двумя

 

указанными

 

датами

 

d

1

 

и

 

d

2

  (

возможно

 

их

 

задание

 

в

 

форме

 

текста

 

по

 

образцу

 

"23.05.2006 23:59"

). 

Пе

-

риод

 

задаётся

 

аргументом

 

u

который

 

может

 

принимать

 

значения

 

"h"

"d"

"w"

"m"

  (

часы


background image

123 

дни

недели

месяцы

). 

Если

 

d

1

 > 

d

2

результат

 

от

-

рицательный

datepart

(

u,d,f

) — 

в

 

зависимости

 

от

 

значения

 

аргумента

 

u

 

выдаёт

"h"

 — 

час

"d"

 — 

календарное

 

число

"m"

 — 

номер

 

месяца

"w"

 — 

номер

 

дня

 

недели

"y"

 — 

номер

 

дня

 

в

 

году

соответствующие

 

дате

 

d

 (

дата

 

может

 

задаваться

 

как

 

календарным

 

значением

так

 

и

 

текстом

 

по

 

образцу

 

"23.05.2006 

23:59"

). 

Аргумент

 

f

 

используется

 

только

 

при

 

u

 = 

"w"

если

 

он

 

равен

 0, 

первым

 

днём

 

недели

 

считается

 

понедельник

если

 1 — 

воскресенье

В

 

других

 

случаях

 

он

 

игнорируется

 

и

 

может

 

быть

 

опущен

З а м е ч а н и е

.  

Результат

 

вычислений

 

функций

 

datediff

 

и

 

date-

part

 

является

 

числом

а

 

не

 

календарным

 

значением

 (

датой

). 

Попытка

 

ото

-

бражения

 

числового

 

значения

 

в

 

календарных

 

столбцах

определяемых

 

пользователем

вызовет

 

сообщение

 

об

 

ошибке

year

(

d

) — 

номер

 

года

соответствующий

 

дате

 

d

.

 

month

(

d

) — 

равносильно

 

datepart

(

"m",d

). 

weekday

(

d,f

) — 

равносильно

 

datepart

(

"w",d,f

).

 

day

(

d

) — 

равносильно

 

datepart

(

"d",d

). 

hour

(

d

) — 

равносильно

 

datepart

(

"h",d

). 

minute

(

d

) — 

минута

соответствующая

 

дате

 

d

  (

например

для

 

даты

 

"17.06.2006 9:15"

 

результат

 

равен

 

15

).

 

projdateadd

(

d,n,c

) — 

дата

отстоящая

 

от

 

даты

 

d

 

на

 

период

 

рабочего

 

времени

 

n

 

согласно

 

календарю

 

c

Дата

 

задаётся

 

календарным

 

или

 

текстовым

 

(

например

"17.06.2006 9:15"

значением

Кален

-

дарь

 — 

именем

Период

 

может

 

задаваться

 

чис

-

лом

 (

обозначающим

 

число

 

минут

или

 

текстовой

 

строкой

 

со

 

спецификацией

 

периода

например

"3m"

 —  3 

минуты

"4h"

 —  4 

часа

"5d"

 — 

рабочих

 

дней

"6w"

 —  6 

рабочих

 

недель

"7mon"

 — 

рабочих

 

месяцев

"8ed"

 — 

8 24-

часовых

 

периодов

 

рабочего

 

времени

"9ew"

 — 9 168-

часовых

 

периодов

 

рабочего

 

вре

-

мени

"10emon"

 — 10 720-

часовых

 

периодов

 

рабочего

 

времени

Продолжительность

 

рабочего

 


background image

124 

дня

рабочей

 

недели

 

и

 

рабочего

 

месяца

 

устанав

-

ливается

 

параметрами

 

текущего

 

проекта

  (

Tools

 

 

Options…

 

 

Calendar

). 

Если

 

агрумент

 

c

 

опущен

используются

 

календари

назначенные

 

текущей

 

строке

 

таблицы

 

работ

 

или

 

ресурсов

а

 

при

 

отсутствии

 

таковых

 — 

календарь

 

проекта

projdatesub

(

d,n,c

) — 

функция

 

аналогична

 

projdateadd

но

 

вычисляется

 

дата

предшествующая

 

d

 

на

 

период

 

n

projdurvalue

(

n

) — 

вычисляет

 

продолжительность

 

периода

 

n

задан

-

ного

 

так

 

же

как

 

в

 

функции

 

projdateadd

, — 

в

 

минутах

projdatediff

(

d

1

,d

2

,c

) — 

количество

 

минут

 

рабочего

 

времени

 

между

 

дата

-

ми

 

d

1

 

и

 

d

2

 

согласно

 

календарю

 

c

Если

 

аргумент

 

c

 

опущен

используются

 

календари

назначенные

 

текущей

 

строке

 

таблицы

 

работ

 

или

 

ресурсов

а

 

при

 

отсутствии

 

таковых

 — 

календарь

 

проекта

projdurconv

(

n,f

) — 

вычисляет

 

продолжительность

 

периода

 

n

задан

-

ного

 

так

 

же

как

 

в

 

функции

 

projdateadd

в

 

еди

-

ницы

заданные

 

флагом

 

f

Флаг

 

должен

 

содер

-

жать

 

целое

 

значение

Нечётные

 

значения

 

от

 3 

до

 

11 

обозначают

 

единицы

 

рабочего

 

времени

 — 

минуты

часы

дни

недели

месяцы

Чётные

 

от

 

до

 12 — 

соответствующие

 

единицы

 

астроно

-

мического

 

времени

Текстовые

 

функции

 

format

(

x,f

) — 

отображение

 

числа

 

или

 

даты

 

x

 

по

 

формату

 

f

Например

 

функция

 

format(cdate("15.1.04 10:30"), "hh 

ч

. mm 

мин

. d mmmm yyyy 

г

.") 

выдаст

 

текст

 

"10 

ч

. 30 

мин

. 15 

января

 

2006 

г

."

 

функция

 

format(cdate("5.1.06 10:30"), "dd mmm yy

г

в

 hh:mm")

 

выдаст

 

текст

 

"05 

янв

 04

г

в

 10:30"

 

функция

 

format(3.14159, "#.###") 

выдаст

 

текст

 

"3.142"

 

функция

 

format(0.14159, "#.###") 

выдаст

 

текст

 

".142"

 

функция

 

format(3.14, "000.000") 

выдаст

 

текст

 

"003.140"

instr

(

n,b,s,c

) — 

номер

 

символа

начиная

 

с

 

которого

 

в

 

строке

 

b

 

со

-

держится

 

строка

 

s

или

 0. 

Аргумент

 

c

 

определяет

 

правила

 

сравнения

с

 

учётом

 

регистра

 (

0

или

 

без

 

учёта

 (4). 


background image

125 

len

(

s

) — 

число

 

символов

 

в

 

строке

 

s

lcase

(

s

), 

ucase

(

s

), — 

перевод

 

текста

 

s

 

в

 

строчной

 

и

 

заглавный

 

регистры

 

соответственно

ltrim

(

s

), 

rtrim

(

s

) — 

возвращают

 

исходный

 

текст

  (

s

), 

удалив

 

соответ

-

ственно

 

начальные

 

или

 

конечные

 

пробелы

 (

если

 

имелись

). 

space

(

n

) — 

возвращает

 

строку

состоящую

 

из

 

n

 

пробелов

mid

(

s,i,l

) — 

возвращает

 

подстроку

 

строки

 

s

начинающуюся

 

с

 

i

-

го

 

символа

 

и

 

имеющую

 

длину

 

l

 (

если

 

аргумент

 

l

 

опущен

 — 

до

 

конца

 

строки

).