Funzioni di libreria: operazioni su numeri interi e in virgola mobile |
Proteus è privo di operatori; si è deciso di utilizzare funzioni anche per effettuare operazioni di tipo numerico per ottenere una maggiore consistenza sintattica, dal momento che in questo caso sarebbero gli operatori a determinare l'interpretazione degli operandi e non viceversa!
Le funzioni di questa categoria sono suddivise in tre classi:
I nomi delle funzioni ricalcano i nomi delle rispettive funzioni 'C' ove possibile, oppure gli operatori Assembly. Gli operatori binari sui numeri iniziano sempre con la lettera N (es. NAND, NOR, ecc.), per distinguerli dalle controparti logiche; ad esempio:
- operatore logico: AND(1, 2) = 1 (entrambi diversi da 0)
- operatore binario: NAND(1, 2) = 0
Nel caso in cui un parametro sia prefissato dal carattere "@", la funzione memorizza nel parametro stesso il suo risultato al termine dell'elaborazione.
DIV([@]n1, [@]n2[, n3..])
divisione intera (n1 / n2)[/ n3..]
MOD([@]n1, [@]n2[, n3..])
modulo (resto della divisione intera di n1 per n2 [per n3..])
FACT([@]n)
ritorna il fattoriale di n
NAND([@]n1, [@]n2[, n3..])
corrisponde a '&' in 'C': AND binario dei numeri indicati; es. NAND(1, 3) = 1
NOR([@]n1, [@]n2[, n3..])
corrisponde a '|' in 'C': OR binario dei numeri indicati; es. NOR(1, 3) = 1
NXOR([@]n1, [@]n2[, n3..])
corrisponde a '^' in 'C': XOR binario dei numeri indicati; es. NXOR(1, 3) = 2
NNOT([@]n)
corrisponde a '~' in 'C': NOT binario (complemento) di n
SHIFTLT([@]n, nNumBits)
shifta a sinistra di nNumBits il numero intero n
SHIFTRT([@]n, nNumBits)
shifta a destra di nNumBits il numero intero n
BITGET([@]n, nOffset)
ritorna il bit nOffset del numero intero n; il valore ritornato è sempre 0 o 1; se nOffset non ha senso, ritorna 0
BITSET([@]n, nOffset, nBit)
ritorna n con il bit a nOffset impostato al valore di nBit (0 o 1)
RANDOM(nMax)
RANDOM(nMin, nMax)
ritorna un numero intero casuale nell'intervallo [0, nMax - 1] se viene specificato un solo parametro, oppure un valore intero nell'intervallo [nMin, nMax] se sono specificati due parametri. Per ottenere un numero casuale tra 0 ed il massimo intero positivo rappresentabile sulla macchina specificare un valore negativo (es. -1) come unico parametro; per ottenere un numero casuale positivo o negativo, in valore assoluto compreso tra 0 e la metà del massimo intero positivo rappresentabile, specificare il valore -1 sia per nMin che per nMax. L'intervallo, cioè |nMax - nMin|, deve comunque essere inferiore al massimo intero positivo rappresentabile per ottenere un valore coerente con gli estremi specificati.
RANDOMINIT(n)
re-inizializza il generatore di numeri casuali utilizzando il valore n specificato. Proteus, all'avvio dell'interprete, imposta automaticamente il generatore con informazioni temporali dell'ambiente d'esecuzione, pertanto non è necessario invocare esplicitamente questa funzione, a meno che non si voglia generare ripetutamente una medesima sequenza di numeri casuali. L'utilizzo della funzione STRRANDOM re-imposta implicitamente il generatore al valore passato come terzo parametro, come se si fosse invocata questa funzione.
BIN2S(n)
ritorna una stringa di '0' e '1' con la rappresentazione binaria di n
S2BIN(c)
ritorna il numero corrispondente alla rappresentazione binaria c (stringa di '0' e '1'); se c non è valida, ritorna 0
FDIV([@]f1, [@]f2[, f3..])
divisione in virgola mobile (f1 / f2)[/ f3..]
FMOD([@]f1, [@]f2[, f3..])
modulo in virgola mobile (resto della divisione n1 / n2 [/ n3..])
FRAC([@]f)
parte frazionaria di f
EXP([@]f)
ritorna la base e elevata alla potenza f
POW([@]f1, [@]f2[, f3..])
ritorna f1 elevato alla potenza f2 [elevato alla potenza f3..]
SQRT([@]f)
ritorna la radice quadrata di f
SIN([@]f)
ritorna il seno di f
COS([@]f)
ritorna il coseno di f
TAN([@]f)
ritorna la tangente di f
ASIN([@]f)
ritorna l'arcoseno di f
ACOS([@]f)
ritorna l'arcocoseno di f
ATAN([@]f)
ritorna l'arcotangente di f
LOG10([@]f)
ritorna il logaritmo in base 10 di f
LOG([@]f)
ritorna il logaritmo naturale di f
CEIL([@]f)
ritorna il sup di f (minimo intero maggiore o uguale a f)
FLOOR([@]f)
ritorna l'inf di f (massimo intero minore o uguale a f)
HYP([@]f1, [@]f2)
ipotenusa di f1 e f2 (cioé la radice quadrata della somma dei quadrati di f1 e f2)
MUL([@]nf1, [@]nf2[, nf3..])
restituisce il prodotto dei numeri
ADD([@]nf1, [@]nf2[, nf3..])
restituisce la somma dei numeri
SUB([@]nf1, [@]nf2[, nf3..])
restituisce nf1 - nf2 [- nf3..]
INC([@]nf)
restituisce nf + 1 (se nf è un identificatore, il suo valore è modificato solo se passato per riferimento)
DEC([@]nf)
restituisce nf - 1 (se nf è un identificatore, il suo valore è modificato solo se passato per riferimento)
INT([@]nf)
parte intera (intero, o virgola mobile se insufficiente)
ABS([@]nf)
restituisce il valore assoluto di nf
NEG([@]n)
restituisce -nf
MIN([@]nf1, [@]nf2[, nf3..])
restituisce il minore dei valori specificati
MAX([@]nf1, [@]nf2[, nf3..])
restituisce il maggiore dei valori specificati
EQ(nf1, nf2)
restituisce un valore diverso da 0 se e solo se nf1 == nf2
NEQ(nf1, nf2)
restituisce un valore diverso da 0 se e solo se nf1 != nf2
LT(nf1, nf2)
restituisce un valore diverso da 0 se e solo se nf1 < nf2
LE(nf1, nf2)
restituisce un valore diverso da 0 se e solo se nf1 <= nf2
GT(nf1, nf2)
restituisce un valore diverso da 0 se e solo se nf1 > nf2
GE(nf1, nf2)
restituisce un valore diverso da 0 se e solo se nf1 >= nf2
Da notare che Proteus promuove automaticamente un intero a numero in virgola mobile se il risultato di un'operazione esce dal range di valori ammessi (ad esempio, in seguito ad una moltiplicazione).
Inizio pagina | Prossimo argomento | Argomento precedente | Indice per argomenti | Indice analitico |