IngleseFranceseSpagnolo

Ad


Favicon di OnWorks

bc - Online nel cloud

Esegui bc nel provider di hosting gratuito OnWorks su Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

Questo è il comando bc che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici postazioni di lavoro online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS

PROGRAMMA:

NOME


bc - Un linguaggio arbitrario per calcolatrice di precisione

SINTASSI


bc [ -hlwsqv ] [opzioni lunghe] [ filetto ... ]

DESCRIZIONE


bc è un linguaggio che supporta numeri di precisione arbitraria con esecuzione interattiva di
dichiarazioni. Ci sono alcune somiglianze nella sintassi con il linguaggio di programmazione C. UN
la libreria matematica standard è disponibile tramite l'opzione della riga di comando. Se richiesto, la biblioteca matematica
è definito prima di elaborare qualsiasi file. bc inizia elaborando il codice da tutti i file
elencati nella riga di comando nell'ordine indicato. Dopo che tutti i file sono stati elaborati, bc
legge dallo standard input. Tutto il codice viene eseguito mentre viene letto. (Se un file contiene a
comando per arrestare il processore, bc non leggerà mai dallo standard input.)

Questa versione di bc contiene diverse estensioni oltre al tradizionale bc implementazioni e
il progetto di norma POSIX. Le opzioni della riga di comando possono causare la stampa di queste estensioni a
avviso o di essere respinto. Questo documento descrive la lingua accettata da questo
processore. Le estensioni saranno identificate come tali.

VERSIONI
-h, --aiuto
Stampa l'utilizzo ed esci.

-i, --interattivo
Forza la modalità interattiva.

-l, --mathlib
Definire la libreria matematica standard.

-w, --avverti
Dare avvisi per le estensioni a POSIX bc.

-s, --standard
Elabora esattamente il POSIX bc Lingua.

-q, --silenzioso
Non stampare il normale benvenuto di GNU bc.

-v, --versione
Stampa il numero di versione e il copyright ed esci.

NUMERI
L'elemento più basilare in bc è il numero. I numeri sono numeri di precisione arbitraria.
Questa precisione è sia nella parte intera che nella parte frazionaria. Tutti i numeri sono
rappresentato internamente in decimale e tutti i calcoli vengono eseguiti in decimale. (Questa versione
tronca i risultati delle operazioni di divisione e moltiplicazione.) Ci sono due attributi di
numeri, la lunghezza e la scala. La lunghezza è il numero totale di decimali significativi
cifre in un numero e la scala è il numero totale di cifre decimali dopo la virgola
punto. Per esempio:
.000001 ha una lunghezza di 6 e una scala di 6.
1935.000 ha una lunghezza di 7 e una scala di 3.

VARIABILI
I numeri sono memorizzati in due tipi di variabili, variabili semplici e array. Entrambi semplici
vengono denominate le variabili e le variabili di matrice. I nomi iniziano con una lettera seguita da qualsiasi numero
di lettere, cifre e trattini bassi. Tutte le lettere devono essere minuscole. (Completo alfanumerico
i nomi sono un'estensione. In POSIX bc tutti i nomi sono una singola lettera minuscola.) Il tipo
of variabile è chiaro dal contesto perché tutti i nomi delle variabili dell'array saranno seguiti da
parentesi ([]).

Ci sono quattro variabili speciali, scala, ibase, obeso, ed ultimo. scala definisce come alcuni
le operazioni utilizzano cifre dopo la virgola. Il valore predefinito di scala è 0. ibase
ed capo definire la base di conversione per i numeri di input e output. L'impostazione predefinita per entrambi
input e output sono in base 10. ultimo (un'estensione) è una variabile che ha il valore di
ultimo numero stampato. Se del caso, questi saranno discussi in maggior dettaglio. Tutto di
a queste variabili possono essere assegnati dei valori e possono essere utilizzate nelle espressioni.

COMMENTI
Commenti in bc inizia con i personaggi /* e finisci con i personaggi */. I commenti possono
iniziare ovunque e apparire come un singolo spazio nell'input. (Questo fa sì che i commenti a
delimitare altri elementi di input. Ad esempio, un commento non può essere trovato nel mezzo di a
nome della variabile.) I commenti includono eventuali nuove righe (fine riga) tra l'inizio e la fine
del commento.

Per supportare l'uso di script per bc, è stata aggiunta una riga di commento come
estensione. Un commento di una riga inizia da a # carattere e continua fino alla fine successiva di
la linea. Il carattere di fine riga non fa parte del commento e viene elaborato normalmente.

ESPRESSIONI
I numeri sono manipolati da espressioni e dichiarazioni. Dal momento che la lingua era
progettati per essere interattivi, le istruzioni e le espressioni vengono eseguite il prima possibile.
Non esiste un programma "principale". Invece, il codice viene eseguito non appena viene rilevato. (Funzioni,
discussi in dettaglio più avanti, sono definiti quando incontrati.)

Una semplice espressione è solo una costante. bc converte le costanti in decimali interni
numeri utilizzando la base di input corrente, specificata dalla variabile ibase. (C'è un
eccezione nelle funzioni.) I valori legali di ibase sono da 2 a 16. Assegnazione di un valore
al di fuori di questo intervallo a ibase risulterà in un valore di 2 o 16. I numeri inseriti possono contenere
i caratteri 0–9 e A–F. (Nota: devono essere maiuscole. Le lettere minuscole sono variabili
nomi.) I numeri a una cifra hanno sempre il valore della cifra indipendentemente dal valore
of ibase. (cioè A = 10.) Per i numeri a più cifre, bc cambia tutte le cifre di input maggiori o
uguale a ibase al valore di ibase-1. Questo rende il numero FFF sii sempre il 3 . più grande
numero di cifre della base di ingresso.

Le espressioni complete sono simili a molte altre lingue di alto livello. Visto che ce n'è solo uno
tipo di numero, non ci sono regole per mescolare i tipi. Invece, ci sono regole sul
scala delle espressioni. Ogni espressione ha una scala. Questo è derivato dalla scala di
numeri originali, l'operazione eseguita e in molti casi il valore della variabile
scala. Valori legali della variabile scala sono 0 al numero massimo rappresentabile da un C
numero intero.

Nelle seguenti descrizioni delle espressioni legali, "expr" si riferisce a un'espressione completa
e "var" si riferisce a una variabile semplice o di matrice. Una variabile semplice è solo a
Nome
e una variabile array è specificata come
Nome[espr]
Se non espressamente indicato, la scala del risultato è la scala massima del
espressioni coinvolte.

- expr Il risultato è la negazione dell'espressione.

++ var La variabile viene incrementata di uno e il nuovo valore è il risultato di
espressione.

-- var La variabile viene decrementata di uno e il nuovo valore è il risultato di
espressione.

era ++
Il risultato dell'espressione è il valore della variabile e quindi la variabile è
incrementato di uno.

var -- Il risultato dell'espressione è il valore della variabile e quindi la variabile è
decrementato di uno.

espr + espr
Il risultato dell'espressione è la somma delle due espressioni.

espr - espr
Il risultato dell'espressione è la differenza delle due espressioni.

espr * espr
Il risultato dell'espressione è il prodotto delle due espressioni.

espr / espr
Il risultato dell'espressione è il quoziente delle due espressioni. La scala di
il risultato è il valore della variabile scala.

espr % espr
Il risultato dell'espressione è il "resto" e si calcola come segue
modo. Per calcolare a%b, prima si calcola a/b in scala cifre. Questo risultato viene utilizzato
calcolare a-(a/b)*b alla scala del massimo di scala+scala(b) e scala(a).
If scala è impostato su zero ed entrambe le espressioni sono numeri interi questa espressione è la
funzione di resto intero.

espr ^ espr
Il risultato dell'espressione è il valore del primo elevato al secondo. Il
la seconda espressione deve essere un numero intero. (Se la seconda espressione non è un numero intero,
viene generato un avviso e l'espressione viene troncata per ottenere un valore intero.)
La scala del risultato è scala se l'esponente è negativo. Se l'esponente è
positivo la scala del risultato è il minimo della scala del primo
espressione moltiplicato per il valore dell'esponente e il massimo di scala e la scala
della prima espressione. (es. scala(a^b) = min(scala(a)*b, max( scala,
scale(a))).) Va notato che expr^0 restituirà sempre il valore di 1.

(espr.)
Ciò altera la precedenza standard per forzare la valutazione dell'espressione.

var = espr
Alla variabile viene assegnato il valore dell'espressione.

varia = espr
Questo è equivalente a "var = var expr" con l'eccezione che la parte "var"
viene valutato una sola volta. Questo può fare la differenza se "var" è un array.

Le espressioni relazionali sono un tipo speciale di espressione che restituisce sempre 0 o 1, 0
se la relazione è falsa e 1 se la relazione è vera. Questi possono apparire in qualsiasi legale
espressione. (POSIX bc richiede che le espressioni relazionali vengano utilizzate solo in if, while,
e per le affermazioni e che in esse può essere eseguito un solo test relazionale.) Il relazionale
gli operatori sono

espr1 < espr2
Il risultato è 1 se espr1 è strettamente minore di espr2.

espr1 <= espr2
Il risultato è 1 se espr1 è minore o uguale a espr2.

espr1 > espr2
Il risultato è 1 se espr1 è strettamente maggiore di espr2.

espr1 >= espr2
Il risultato è 1 se espr1 è maggiore o uguale a espr2.

espr1 == espr2
Il risultato è 1 se espr1 è uguale a espr2.

espr1 != espr2
Il risultato è 1 se espr1 non è uguale a espr2.

Anche le operazioni booleane sono legali. (POSIX bc NON ha operazioni booleane). Il
risultato di tutte le operazioni booleane sono 0 e 1 (per falso e vero) come in relazionale
espressioni. Gli operatori booleani sono:

!expr Il risultato è 1 se expr è 0.

espr && espr
Il risultato è 1 se entrambe le espressioni sono diverse da zero.

espr || espr
Il risultato è 1 se una delle due espressioni è diversa da zero.

La precedenza dell'espressione è la seguente: (dal più basso al più alto)
|| operatore, associativo sinistro
Operatore &&, associativo sinistro
! operatore, non associativo
Operatori relazionali, associativo di sinistra
Operatore di assegnazione, associativo destro
Operatori + e -, associativo sinistro
Operatori *, / e %, associativo sinistro
Operatore ^, associativo destro
unario - operatore, non associativo
++ e -- operatori, non associativi

Questa precedenza è stata scelta in modo che sia conforme a POSIX bc i programmi verranno eseguiti correttamente. Questo
farà sì che l'uso degli operatori relazionali e logici abbia un comportamento insolito
quando usato con espressioni di assegnazione. Considera l'espressione:
a = 3 < 5

La maggior parte dei programmatori C supporrebbe che questo assegnerebbe il risultato di "3 < 5" (il valore 1) a
la variabile "a". Cosa fa questo in bc è assegnare il valore 3 alla variabile "a" e poi
confrontare da 3 a 5. È meglio usare le parentesi quando si utilizzano operatori relazionali e logici
con gli operatori di assegnazione.

Ci sono alcune altre espressioni speciali fornite in bc. Questi hanno a che fare con
funzioni definite dall'utente e funzioni standard. Tutti appaiono come "Nome(parametri)".
Vedere la sezione sulle funzioni per le funzioni definite dall'utente. Le funzioni standard sono:

lunghezza (espressione)
Il valore della funzione lunghezza è il numero di cifre significative nel
espressione.

leggere ( )
La funzione di lettura (un'estensione) leggerà un numero dallo standard input,
indipendentemente da dove si svolge la funzione. Attenzione, questo può causare problemi con il
miscelazione di dati e programma nello standard input. Il miglior uso per questa funzione
si trova in un programma scritto in precedenza che richiede l'input dell'utente, ma non lo consente mai
codice programma da inserire dall'utente. Il valore della funzione di lettura è il
numero letto dallo standard input utilizzando il valore corrente della variabile ibase
per la base di conversione.

scala (espressione)
Il valore della funzione di scala è il numero di cifre dopo la virgola in
l'espressione.

sqrt (espressione)
Il valore della funzione sqrt è la radice quadrata dell'espressione. Se la
espressione è negativa, viene generato un errore di runtime.

DICHIARAZIONI
Le istruzioni (come nella maggior parte dei linguaggi algebrici) forniscono la sequenza dell'espressione
valutazione. In bc le istruzioni vengono eseguite "il prima possibile". L'esecuzione avviene quando
una nuova riga in incontrato e c'è una o più istruzioni complete. A causa di ciò
esecuzione immediata, le nuove righe sono molto importanti in bc. Infatti, sia un punto e virgola che a
newline sono usati come separatori di istruzione. Una nuova riga posizionata in modo errato causerà a
Errore di sintassi. Poiché le nuove righe sono separatori di istruzioni, è possibile nascondere una nuova riga
utilizzando il carattere barra rovesciata. La sequenza "\ ", dove è la nuova riga appare?
a bc come spazi bianchi invece di una nuova riga. Un elenco di istruzioni è una serie di affermazioni
separati da punto e virgola e newline. Di seguito è riportato un elenco di bc dichiarazioni e cosa?
lo fanno: (Le cose racchiuse tra parentesi ([]) sono parti facoltative dell'istruzione.)

espressione
Questa affermazione fa una delle due cose. Se l'espressione inizia con "
...", è considerata una dichiarazione di assegnazione. Se il
espressione non è un'istruzione di assegnazione, l'espressione viene valutata e stampata
all'uscita. Dopo che il numero è stato stampato, viene stampata una nuova riga. Per esempio,
"a=1" è un'istruzione di assegnazione e "(a=1)" è un'espressione che ha un'espressione incorporata
Incarico. Tutti i numeri che vengono stampati vengono stampati nella base specificata dal
variabile capo. I valori legali per capo vanno da 2 a BC_BASE_MAX. (Vedi il
sezione LIMITI.) Per le basi da 2 a 16, il metodo usuale di scrittura dei numeri è
Usato. Per basi maggiori di 16, bc utilizza un metodo di cifre multi-carattere di
stampa dei numeri in cui ogni cifra di base più alta viene stampata come numero in base 10.
Le cifre multi-carattere sono separate da spazi. Ogni cifra contiene il numero
di caratteri necessari per rappresentare il valore in base dieci di "obase-1". Dal momento che i numeri
sono di precisione arbitraria, alcuni numeri potrebbero non essere stampabili su un singolo output
linea. Questi numeri lunghi saranno divisi su righe usando "\" come ultimo
carattere su una riga. Il numero massimo di caratteri stampati per riga è 70. Due
alla natura interattiva di bc, la stampa di un numero provoca l'effetto collaterale di
assegnando il valore stampato alla variabile speciale ultimo. Ciò consente all'utente di
recuperare l'ultimo valore stampato senza dover riscrivere l'espressione stampata
il numero. Assegnazione a ultimo è legale e sovrascriverà l'ultimo valore stampato
con il valore assegnato. Il nuovo valore assegnato rimarrà fino al prossimo
numero viene stampato o viene assegnato un altro valore a ultimo. (Alcune installazioni potrebbero
consentire l'uso di un singolo punto (.) che non fa parte di un numero come mano corta
notazione per per ultimo.)

stringa La stringa viene stampata nell'output. Le stringhe iniziano con un carattere di virgolette doppie
e contenere tutti i caratteri fino al successivo carattere di virgolette doppie. Tutti i personaggi
sono presi alla lettera, inclusi eventuali newline. Nessun carattere di nuova riga viene stampato dopo
la stringa.

stampare stratagemma
L'istruzione print (un'estensione) fornisce un altro metodo di output. La lista"
è un elenco di stringhe ed espressioni separate da virgole. Ogni stringa o
l'espressione viene stampata nell'ordine dell'elenco. Non viene stampato alcun carattere di fine riga.
Le espressioni vengono valutate e il loro valore viene stampato e assegnato alla variabile
ultimo. Le stringhe nell'istruzione print vengono stampate nell'output e possono contenere
personaggi speciali. I caratteri speciali iniziano con il carattere barra rovesciata (\).
I caratteri speciali riconosciuti da bc sono "a" (avviso o campanello), "b" (backspace),
"f" (form feed), "n" (nuova riga), "r" (ritorno a capo), "q" (virgolette doppie), "t"
(scheda) e "\" (barra rovesciata). Qualsiasi altro carattere dopo la barra rovesciata sarà
ignorato.

{ elenco_dichiarazioni }
Questa è la dichiarazione composta. Consente di raggruppare più istruzioni
insieme per l'esecuzione.

if ( espressione ) istruzione1 [altro dichiarazione2]
L'istruzione if valuta l'espressione ed esegue istruzione1 o istruzione2
a seconda del valore dell'espressione. Se l'espressione è diversa da zero,
viene eseguita l'istruzione1. Se è presente istruzione2 e il valore dell'espressione
è 0, viene eseguita istruzione2. (La clausola else è un'estensione.)

while (espressione) affermazione
L'istruzione while eseguirà l'istruzione mentre l'espressione è diversa da zero.
Valuta l'espressione prima di ogni esecuzione dell'istruzione. Cessazione
del ciclo è causato da un valore di espressione zero o dall'esecuzione di un'interruzione
.

per ( [espressione1] ; [espressione2] ; [espressione3] ) istruzione
L'istruzione for controlla l'esecuzione ripetuta dell'istruzione. Espressione1 è
valutata prima del ciclo. Expression2 viene valutata prima di ogni esecuzione del
dichiarazione. Se è diverso da zero, l'istruzione viene valutata. Se è zero, il ciclo
è terminato. Dopo ogni esecuzione dell'istruzione, viene valutata espressione3
prima della rivalutazione dell'espressione2. Se mancano espressione1 o espressione3,
nulla viene valutato nel punto in cui verrebbero valutati. Se espressione2 è
mancante, equivale a sostituire il valore 1 per espressione2. (L'opzionale
le espressioni sono un'estensione. POSIX bc richiede tutte e tre le espressioni.) Il
il seguente è il codice equivalente per l'istruzione for:
espressione1;
mentre (espressione2) {
economico;
espressione3;
}

rompere Questa istruzione provoca un'uscita forzata dalla più recente istruzione while o
per dichiarazione.

continua
L'istruzione continue (un'estensione) causa l'inclusione più recente per
istruzione per avviare l'iterazione successiva.

arresto L'istruzione halt (un'estensione) è un'istruzione eseguita che causa il bc
processore per uscire solo quando viene eseguito. Ad esempio, "se (0 == 1) alt" sarà
non causa bc terminare perché l'arresto non viene eseguito.

ritorno Restituisce il valore 0 da una funzione. (Vedi la sezione sulle funzioni.)

ritorno (espressione)
Restituisce il valore dell'espressione da una funzione. (Vedi la sezione su
funzioni.) Come estensione, le parentesi non sono necessarie.

NICKNAME DICHIARAZIONI
Queste affermazioni non sono affermazioni in senso tradizionale. Non vengono eseguiti
dichiarazioni. La loro funzione viene eseguita al momento della "compilazione".

limiti Stampa i limiti locali imposti dalla versione locale di bc. Questa è un'estensione.

smettere Quando viene letta l'istruzione quit, bc processore è terminato, indipendentemente da
dove si trova l'istruzione quit. Ad esempio, "se (0 == 1) esci" causerà bc
terminare.

garanzia
Stampa un avviso di garanzia più lungo. Questa è un'estensione.

FUNZIONI
Le funzioni forniscono un metodo per definire un calcolo che può essere eseguito in seguito.
Funzioni in bc calcola sempre un valore e lo restituisce al chiamante. Definizioni di funzioni
sono "dinamiche" nel senso che una funzione è indefinita finché non si incontra una definizione
nell'ingresso. Quella definizione viene quindi utilizzata fino a quando un'altra funzione di definizione per lo stesso
viene rilevato il nome. La nuova definizione sostituisce quindi la definizione precedente. Una funzione
è definito come segue:
definire Nome ( parametri ) { nuova linea
lista_auto lista_dichiarazioni }
Una chiamata di funzione è solo un'espressione della forma "Nome(parametri)".

I parametri sono numeri o array (un'estensione). Nella definizione della funzione, zero o più
i parametri sono definiti elencando i loro nomi separati da virgole. Tutti i parametri sono
parametri di chiamata per valore. Gli array sono specificati nella definizione del parametro dal
notazione"Nome[]". Nella chiamata alla funzione, i parametri effettivi sono espressioni complete per
parametri numerici. La stessa notazione viene utilizzata per passare gli array come per definire l'array
parametri. L'array denominato viene passato per valore alla funzione. Poiché la funzione
le definizioni sono dinamiche, i numeri e i tipi dei parametri sono controllati quando una funzione è
chiamato. Qualsiasi mancata corrispondenza nel numero o nei tipi di parametri causerà un errore di runtime. UN
si verificherà anche un errore di runtime per la chiamata a una funzione non definita.

Il lista_auto è un elenco facoltativo di variabili per l'uso "locale". La sintassi di
l'elenco automatico (se presente) è "auto Nome, ... ;". (Il punto e virgola è facoltativo.) Ciascuno Nome
è il nome di una variabile automatica. Gli array possono essere specificati usando la stessa notazione di
utilizzato nei parametri. Queste variabili hanno i loro valori inseriti in uno stack all'inizio di
la funzione. Le variabili vengono quindi inizializzate a zero e utilizzate per tutta la
esecuzione della funzione. All'uscita della funzione, queste variabili vengono spuntate in modo che
viene ripristinato il valore originario (al momento della chiamata della funzione) di queste variabili. Il
i parametri sono in realtà variabili automatiche che vengono inizializzate su un valore fornito nel
chiamata di funzione. Le variabili automatiche sono diverse dalle variabili locali tradizionali perché se
la funzione A chiama la funzione B, B può accedere alle variabili automatiche della funzione A semplicemente usando il
stesso nome, a meno che la funzione B non le abbia chiamate variabili automatiche. A causa del fatto che auto
variabili e parametri vengono inseriti in uno stack, bc supporta le funzioni ricorsive.

Il corpo della funzione è un elenco di bc dichiarazioni. Di nuovo, le affermazioni sono separate da
punto e virgola o a capo. Le istruzioni di ritorno causano la terminazione di una funzione e il
restituzione di un valore. Esistono due versioni dell'istruzione return. La prima forma,
"ritorno", restituisce il valore 0 all'espressione chiamante. La seconda forma, "ritorno (
espressione )", calcola il valore dell'espressione e restituisce quel valore al chiamante
espressione. C'è un implicito"ritorno (0)" alla fine di ogni funzione. Ciò consente a
funzione per terminare e restituire 0 senza un'istruzione di ritorno esplicita.

Le funzioni cambiano anche l'uso della variabile ibase. Tutte le costanti nel corpo della funzione
verrà convertito utilizzando il valore di ibase al momento della chiamata della funzione. Modifiche di
ibase verrà ignorato durante l'esecuzione della funzione ad eccezione dello standard
function read, che utilizzerà sempre il valore corrente di ibase per la conversione dei numeri.

Diverse estensioni sono state aggiunte alle funzioni. Innanzitutto, il formato della definizione ha
stato leggermente rilassato. Lo standard richiede che la parentesi di apertura sia sulla stessa linea del
definire parola chiave e tutte le altre parti devono trovarsi nelle righe seguenti. Questa versione di bc volere
consentire un numero qualsiasi di nuove righe prima e dopo la parentesi graffa di apertura della funzione. Per
esempio, le seguenti definizioni sono legali.
definire d (n) { ritorno (2*n); }
definire d (n)
{ ritorno (2*n); }

Le funzioni possono essere definite come nulla. Una funzione void non restituisce alcun valore e quindi potrebbe non essere
utilizzato in qualsiasi luogo che ha bisogno di un valore. Una funzione void non produce alcun output quando
chiamato da solo su una linea di input. La parola chiave nulla è posto tra la parola chiave
definire e il nome della funzione. Si consideri ad esempio la seguente sessione.
define py (y) { print "--->", y, "<---", "\n"; }
define void px (x) { print "--->", x, "<---", "\n"; }
py(1)
--->1<---
0
px(1)
--->1<---
Dal py non è una funzione nulla, la chiamata di py(1) stampa l'output desiderato e poi
stampa una seconda riga che è il valore della funzione. Poiché il valore di una funzione
a cui non viene fornita un'istruzione di ritorno esplicita è zero, viene stampato lo zero. Per px(1),
non viene stampato alcuno zero perché la funzione è una funzione nulla.

Inoltre, è stata aggiunta la chiamata per variabile per gli array. Per dichiarare una chiamata per array di variabili, il
la dichiarazione del parametro array nella definizione della funzione è simile a "*nome[]". Il
la chiamata alla funzione rimane la stessa delle matrici call by value.

MATEMATICA BIBLIOTECA
If bc viene invocato con il -l opzione, una libreria matematica è precaricata e la scala predefinita è
impostato su 20. Le funzioni matematiche calcoleranno i loro risultati sulla scala impostata in quel momento
della loro chiamata. La libreria matematica definisce le seguenti funzioni:

S (x) Il seno di x, x è in radianti.

C (x) Il coseno di x, x è in radianti.

a (x) L'arcotangente di x, l'arcotangente restituisce radianti.

l (x) Il logaritmo naturale di x.

e (x) La funzione esponenziale di elevare e al valore x.

J (n, x)
La funzione di Bessel di ordine intero n di x.

ESEMPI
In /bin/sh, quanto segue assegnerà il valore di "pi" alla variabile di shell pi.
pi=$(echo "scala=10; 4*a(1)" | bc -l)

Quella che segue è la definizione della funzione esponenziale utilizzata nella libreria matematica.
Questa funzione è scritta in POSIX bc.
scala = 20

/* Usa il fatto che e^x = (e^(x/2))^2
Quando x è abbastanza piccolo, usiamo la serie:
e^x = 1 + x + x^2/2! +x^3/3! + ...
*/

definire e(x) {
auto a, d, e, f, i, m, v, z

/* Controlla il segno di x. */
se (x<0) {
m = 1
x = -x
}

/* Precondizione x. */
z = scala;
scala = 4 + z + 44*x;
mentre (x > 1) {
f+= 1;
x/= 2;
}

/* Inizializza le variabili. */
v = 1+x
un = x
d = 1

per (i=2; 1; i++) {
e = (a*= x) / (d*= i)
se (e == 0) {
if (f>0) while (f--) v = v*v;
scala = z
se (m) restituisce (1/v);
ritorno (v/1);
}
v += e
}
}

Quello che segue è il codice che utilizza le funzionalità estese di bc per implementare un semplice programma
per il calcolo del saldo del libretto degli assegni. È meglio conservare questo programma in un file in modo che possa essere
usato molte volte senza doverlo riscrivere ad ogni utilizzo.
scala=2
print "\nControlla il programma del libro!\n"
print "Ricorda, i depositi sono transazioni negative.\n"
print " Esci con una transazione 0.\n\n"

print "Saldo iniziale?"; bal = leggi()
bal /= 1
stampa "\n"
mentre (1) {
"saldo corrente = "; bal
"transazione?"; trans = leggi()
se (trans == 0) interruzione;
bal -= trad
bal /= 1
}
smettere

La seguente è la definizione della funzione fattoriale ricorsiva.
definire f (x) {
se (x <= 1) restituisce (1);
ritorno (f(x-1) * x);
}

LINEA DI LETTURA E LIBERTA' VERSIONI
GNU bc può essere compilato (tramite un'opzione configure) per usare GNU readline editor di input
libreria o il BSD libido biblioteca. Ciò consente all'utente di modificare le linee prima
mandandoli a bc. Consente anche una cronologia delle righe digitate in precedenza. Quando questo
l'opzione è selezionata, bc ha un'altra variabile speciale. Questa variabile speciale, storia is
il numero di righe di storia conservate. Per readline, un valore di -1 significa che an
viene mantenuto un numero illimitato di righe della cronologia. Impostazione del valore di storia ad un
numero positivo limita il numero di righe della cronologia al numero dato. Il valore di 0
disabilita la funzione di cronologia. Il valore predefinito è 100. Per ulteriori informazioni, leggere il
manuali utente per GNU readline, storia e BSD libido biblioteche. Non si può abilitare
entrambi readline ed libido allo stesso tempo.

DIFFERENZE
Questa versione di bc è stato implementato dalla bozza POSIX P1003.2/D11 e contiene diversi
differenze ed estensioni rispetto al progetto e alle implementazioni tradizionali. è
non implementato in modo tradizionale utilizzando dc(1). Questa versione è un singolo processo
che analizza ed esegue una traduzione in codice byte del programma. C'è un "non documentato"
opzione (-c) che fa sì che il programma emetta invece il codice byte sullo standard output
di eseguirlo. È stato utilizzato principalmente per il debug del parser e la preparazione della matematica
biblioteca.

Una delle principali fonti di differenze sono le estensioni, in cui una funzionalità viene estesa per aggiungerne altre
funzionalità e aggiunte, dove vengono aggiunte nuove funzionalità. Di seguito è riportato l'elenco di
differenze ed estensioni.

LANG ambiente
Questa versione non è conforme allo standard POSIX nell'elaborazione del LANG
variabile d'ambiente e tutte le variabili d'ambiente che iniziano con LC_.

nomi Tradizionale e POSIX bc hanno nomi di lettere singole per funzioni, variabili e
matrici. Sono stati estesi per essere nomi multi-carattere che iniziano con a
lettera e può contenere lettere, numeri e il carattere di sottolineatura.

String
Le stringhe non possono contenere caratteri NUL. POSIX dice che tutti i caratteri devono
essere inclusi nelle stringhe.

ultimo POSIX bc non ha un ultimo variabile. Alcune implementazioni di bc usa il punto
(.) in un modo simile.

confronto
POSIX bc consente confronti solo nell'istruzione if, nell'istruzione while e nel
seconda espressione dell'istruzione for. Inoltre, una sola operazione relazionale è
consentito in ciascuna di tali dichiarazioni.

Istruzione if, clausola else
POSIX bc non ha una clausola else.

per dichiarazione
POSIX bc richiede che tutte le espressioni siano presenti nell'istruzione for.

&&, ||, !
POSIX bc non ha gli operatori logici.

funzione di lettura
POSIX bc non ha una funzione di lettura.

stampa dichiarazione
POSIX bc non ha una dichiarazione di stampa.

continuare la dichiarazione
POSIX bc non ha un'istruzione continue.

dichiarazione di ritorno
POSIX bc richiede parentesi intorno all'espressione di ritorno.

parametri dell'array
POSIX bc non supporta (attualmente) i parametri dell'array per intero. La grammatica POSIX
consente gli array nelle definizioni delle funzioni, ma non fornisce un metodo per specificare
un array come parametro effettivo. (Questo è molto probabilmente una svista nel
grammatica.) implementazioni tradizionali di bc avere solo una chiamata per valore array
parametri.

formato funzione
POSIX bc richiede la parentesi di apertura sulla stessa linea del definire parola chiave e il
auto dichiarazione alla riga successiva.

=+, =-, =*, =/, =%, =^
POSIX bc non richiede la definizione di questi operatori di assegnazione "vecchio stile".
Questa versione può consentire queste assegnazioni "vecchio stile". Usa la dichiarazione dei limiti per
vedere se la versione installata li supporta. Se supporta il "vecchio stile"
operatori di assegnazione, l'istruzione "a =- 1" diminuirà a di 1 invece di
regolazione a al valore -1.

spazi nei numeri
Altre implementazioni di bc consentire gli spazi nei numeri. Ad esempio, "x=1 3" sarebbe
assegnare il valore 13 alla variabile x. La stessa affermazione causerebbe una sintassi
errore in questa versione di bc.

errori ed esecuzione
Questa implementazione varia da altre implementazioni in termini di quale sarà il codice
eseguito quando vengono rilevati errori di sintassi e altri errori nel programma. Se un errore di sintassi
si trova in una definizione di funzione, il ripristino degli errori cerca di trovare l'inizio di a
istruzione e continuare ad analizzare la funzione. Una volta trovato un errore di sintassi nel
funzione, la funzione non sarà richiamabile e diventa indefinita. Errori di sintassi
nel codice di esecuzione interattivo invaliderà il blocco di esecuzione corrente. Il
il blocco di esecuzione è terminato da una fine della riga che appare dopo un completamento
sequenza di dichiarazioni. Per esempio,
a = 1
b = 2
ha due blocchi di esecuzione e
{ un = 1
b = 2}
ha un blocco di esecuzione. Qualsiasi errore di runtime interromperà l'esecuzione della corrente
blocco di esecuzione. Un avviso di runtime non terminerà il blocco di esecuzione corrente.

interrupt
Durante una sessione interattiva, il segnale SIGINT (generalmente generato dal controllo-
carattere C dal terminale) causerà l'esecuzione del blocco di esecuzione corrente
essere interrotto. Verrà visualizzato un errore di "runtime" che indica quale funzione era
interrotto. Dopo che tutte le strutture di runtime sono state ripulite, verrà visualizzato un messaggio
stampato per informare l'utente che bc è pronto per ulteriori input. Tutto precedentemente definito
le funzioni rimangono definite e il valore di tutte le variabili non automatiche è il valore a
il punto di interruzione. Tutte le variabili automatiche e i parametri delle funzioni vengono rimossi
durante il processo di pulizia. Durante una sessione non interattiva, il segnale SIGINT
terminerà l'intera corsa di bc.

LIMITI
Di seguito sono riportati i limiti attualmente in vigore per questo bc processore. Alcuni di loro potrebbero
sono stati modificati da un'installazione. Utilizzare la dichiarazione dei limiti per vedere i valori effettivi.

BC_BASE_MAX
La base di uscita massima è attualmente impostata su 999. La base di ingresso massima è 16.

BC_DIM_MAX
Questo è attualmente un limite arbitrario di 65535 come distribuito. La tua installazione
potrebbe essere diverso.

BC_SCALE_MAX
Il numero di cifre dopo la virgola è limitato a INT_MAX cifre. Anche,
il numero di cifre prima della virgola è limitato a INT_MAX cifre.

BC_STRING_MAX
Il limite al numero di caratteri in una stringa è INT_MAX caratteri.

esponente
Il valore dell'esponente nell'operazione di aumento (^) è limitato a LONG_MAX.

nomi di variabili
Il limite attuale per il numero di nomi univoci è 32767 per ciascuno dei nomi semplici
variabili, array e funzioni.

AMBIENTE VARIABILI


Le seguenti variabili di ambiente vengono elaborate da bc:

POSIXLY_CORRETTO
Questo è lo stesso del -s opzione.

BC_ENV_ARGS
Questo è un altro meccanismo per ottenere argomenti a bc. Il formato è lo stesso del
argomenti della riga di comando. Questi argomenti vengono elaborati per primi, quindi tutti i file elencati
nell'ambiente gli argomenti vengono elaborati prima di qualsiasi file di argomento della riga di comando.
Ciò consente all'utente di impostare opzioni "standard" e file da elaborare su
ogni invocazione di bc. I file nelle variabili d'ambiente in genere sarebbero
contengono definizioni di funzioni per le funzioni che l'utente vuole definire ogni volta bc is
eseguire.

BC_LINE_LENGTH
Questo dovrebbe essere un numero intero che specifica il numero di caratteri in una riga di output per
numeri. Ciò include la barra rovesciata e i caratteri di nuova riga per i numeri lunghi. Come
un'estensione, il valore zero disabilita la funzione multilinea. Qualsiasi altro valore
di questa variabile inferiore a 3 imposta la lunghezza della riga a 70.

DIAGNOSTICA


Se non è possibile aprire alcun file sulla riga di comando, bc segnalerà che il file è
non disponibile e terminare. Inoltre, ci sono diagnosi di compilazione ed esecuzione che dovrebbero
essere autoesplicativo.

Usa bc online utilizzando i servizi onworks.net


Server e workstation gratuiti

Scarica app per Windows e Linux

  • 1
    Bootloader EFI Clover
    Bootloader EFI Clover
    Il progetto si è spostato in
    https://github.com/CloverHackyColor/CloverBootloader..
    Caratteristiche: Avvia macOS, Windows e Linux
    in modalità UEFI o legacy su Mac o PC con
    UE...
    Scarica il bootloader Clover EFI
  • 2
    rpm uniti
    rpm uniti
    Unisciti a noi in Gitter!
    https://gitter.im/unitedrpms-people/Lobby
    Abilita il repository URPMS nel tuo
    sistema -
    https://github.com/UnitedRPMs/unitedrpms.github.io/bl...
    Scarica unitedrpms
  • 3
    Potenzia le librerie C++
    Potenzia le librerie C++
    Boost fornisce portatile gratuito
    librerie C++ sottoposte a revisione paritaria. Il
    l'accento è posto sulle librerie portatili che
    funzionano bene con la libreria standard C++.
    Vedi http://www.bo...
    Scarica le librerie Boost C++
  • 4
    VirtualGL
    VirtualGL
    VirtualGL reindirizza i comandi 3D da a
    Applicazione Unix/Linux OpenGL su a
    GPU lato server e converte il
    immagini 3D renderizzate in un flusso video
    con quale ...
    Scarica VirtualGL
  • 5
    libusb
    libusb
    Libreria per abilitare lo spazio utente
    programmi applicativi con cui comunicare
    dispositivi USB. Pubblico: sviluppatori, fine
    Utenti/Desktop. Linguaggio di programmazione: C.
    Categorie ...
    Scarica libus
  • 6
    SWIG
    SWIG
    SWIG è uno strumento di sviluppo software
    che collega programmi scritti in C e
    C++ con una varietà di alto livello
    linguaggi di programmazione. SWIG è usato con
    diverso...
    Scarica SIG
  • Di Più "

Comandi Linux

Ad