Angielskifrancuskihiszpański

Ad


Ulubiona usługa OnWorks

bc - Online w chmurze

Uruchom bc w bezpłatnym dostawcy hostingu OnWorks w systemie Ubuntu Online, Fedora Online, emulatorze online systemu Windows lub emulatorze online systemu MAC OS

To jest polecenie bc, które można uruchomić w bezpłatnym dostawcy hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS

PROGRAM:

IMIĘ


bc — Dowolny język kalkulatora precyzji

SKŁADNIA


bc [ -hlwsqv ] [długie opcje] [ filet ... ]

OPIS


bc to język obsługujący liczby o dowolnej precyzji z interaktywnym wykonywaniem
sprawozdania. Istnieją pewne podobieństwa w składni do języka programowania C. A
standardowa biblioteka matematyczna jest dostępna poprzez opcję wiersza poleceń. Na żądanie biblioteka matematyczna
jest definiowany przed przetwarzaniem jakichkolwiek plików. bc rozpoczyna się od przetworzenia kodu ze wszystkich plików
wymienione w wierszu poleceń w podanej kolejności. Po przetworzeniu wszystkich plików, bc
czyta ze standardowego wejścia. Cały kod jest wykonywany w trakcie jego czytania. (Jeśli plik zawiera plik
polecenie zatrzymania procesora, bc nigdy nie będzie czytać ze standardowego wejścia.)

Ta wersja bc zawiera kilka rozszerzeń wykraczających poza tradycyjne bc wdrożenia i
projekt standardu POSIX. Opcje wiersza poleceń mogą spowodować, że te rozszerzenia wydrukują plik a
ostrzeżenia lub do odrzucenia. W tym dokumencie opisano język w nim akceptowany
edytor. Rozszerzenia będą oznaczone jako takie.

OPCJE
-h, --pomoc
Wydrukuj użycie i wyjdź.

-i, --interaktywny
Wymuś tryb interaktywny.

-l, --mathlib
Zdefiniuj standardową bibliotekę matematyczną.

-w, --ostrzeżenie
Podaj ostrzeżenia dotyczące rozszerzeń POSIX bc.

-s, --standard
Przetwarzaj dokładnie POSIX bc język.

-q, --cichy
Nie drukuj normalnego powitania GNU bc.

-v, --wersja
Wydrukuj numer wersji i prawa autorskie, a następnie zakończ.

LICZBY
Najbardziej podstawowy element w bc jest numerem. Liczby są liczbami o dowolnej precyzji.
Precyzja ta dotyczy zarówno części całkowitej, jak i części ułamkowej. Wszystkie liczby są
reprezentowane wewnętrznie w postaci dziesiętnej, a wszystkie obliczenia są wykonywane w postaci dziesiętnej. (Ta wersja
obcina wyniki operacji dzielenia i mnożenia.) Istnieją dwa atrybuty
liczby, długość i skala. Długość to całkowita liczba znaczących miejsc po przecinku
cyfr w liczbie, a skala to całkowita liczba cyfr dziesiętnych po przecinku
punkt. Na przykład:
.000001 ma długość 6 i skalę 6.
1935.000 ma długość 7 i skalę 3.

ZMIENNE
Liczby są przechowywane w dwóch typach zmiennych: prostych zmiennych i tablicach. Obydwa proste
zmienne i zmienne tablicowe są nazywane. Imiona zaczynają się od litery, po której następuje dowolna liczba
liter, cyfr i podkreśleń. Wszystkie litery muszą być małe. (Pełne alfanumeryczne
nazwy są rozszerzeniem. W POSIXie bc wszystkie nazwy są pisane jedną małą literą.) Typ
zmiennej jest jasne z kontekstu, ponieważ po wszystkich nazwach zmiennych tablicowych będzie występował znak
nawiasy ([]).

Istnieją cztery specjalne zmienne, skala, ibaza, obe, i trwać. skala definiuje, jak niektórzy
operacje wykorzystują cyfry po przecinku. Domyślna wartość skala to 0. baza z
i skromny zdefiniować podstawę przeliczenia dla liczb wejściowych i wyjściowych. Wartość domyślna dla obu
wejście i wyjście to podstawa 10. trwać (rozszerzenie) jest zmienną, która ma wartość
ostatni wydrukowany numer. W stosownych przypadkach zostaną one omówione bardziej szczegółowo. Wszystkie z
zmienne te mogą mieć przypisane wartości, a także być używane w wyrażeniach.

KOMENTARZE
Komentarze w bc zacznij od postaci /* i zakończ znakami */. Komentarze mogą
zaczyna się w dowolnym miejscu i pojawia się jako pojedyncza spacja na wejściu. (To powoduje, że komentarze do
ogranicz inne elementy wejściowe. Na przykład nie można znaleźć komentarza w środku a
nazwa zmiennej.) Komentarze obejmują wszelkie znaki nowej linii (koniec linii) pomiędzy początkiem i końcem
komentarza.

Aby wspierać użycie skryptów dla bc, dodano komentarz jednoliniowy jako
rozszerzenie. Komentarz jednoliniowy zaczyna się od a # znaku i trwa do następnego końca
linia. Znak końca linii nie jest częścią komentarza i jest przetwarzany normalnie.

WYRAŻENIA
Liczbami manipuluje się za pomocą wyrażeń i instrukcji. Ponieważ język był
zaprojektowane tak, aby były interaktywne, instrukcje i wyrażenia są wykonywane tak szybko, jak to możliwe.
Nie ma programu „głównego”. Zamiast tego kod jest wykonywany w miarę napotkania. (Funkcje,
omówione szczegółowo później, są definiowane w przypadku ich napotkania.)

Proste wyrażenie jest po prostu stałą. bc konwertuje stałe na wewnętrzny dziesiętny
liczby przy użyciu bieżącej podstawy wejściowej określonej przez zmienną baza z. (Tam jest
wyjątek w funkcjach.) Wartości prawne baza z mają wartość od 2 do 16. Przypisywanie wartości
poza tym zakresem do baza z spowoduje otrzymanie wartości 2 lub 16. Liczby wejściowe mogą zawierać
znaki 0–9 i A–F. (Uwaga: muszą to być wielkie litery. Małe litery są zmienne
nazwy.) Liczby jednocyfrowe zawsze mają wartość cyfry, niezależnie od wartości
of baza z. (tj. A = 10.) W przypadku liczb wielocyfrowych bc zmienia wszystkie wprowadzone cyfry na większe lub
równy ibase do wartości baza z-1. To tworzy liczbę FFF zawsze bądź największy 3
cyfra numeru podstawy wejściowej.

Pełne wyrażenia są podobne do wielu innych języków wysokiego poziomu. Ponieważ jest tylko jeden
rodzaj liczby, nie ma żadnych zasad mieszania typów. Zamiast tego obowiązują zasady dotyczące
skala wyrażeń. Każde wyrażenie ma skalę. Wynika to ze skali
oryginalne liczby, wykonywaną operację i w wielu przypadkach wartość zmiennej
skala. Dopuszczalne wartości zmiennej skala wynoszą 0 do maksymalnej liczby reprezentowanej przez C
liczba całkowita.

W poniższych opisach wyrażeń prawnych „wyrażenie” odnosi się do wyrażenia pełnego
a „var” odnosi się do zmiennej prostej lub tablicy. Prostą zmienną jest po prostu a
Nazwa
a zmienna tablicowa jest określona jako
Nazwa[expr]
O ile nie określono inaczej, skalą wyniku jest maksymalna skala
użyte wyrażenia.

- wyrażenie Wynikiem jest negacja wyrażenia.

++ var Zmienna jest zwiększana o jeden, a nowa wartość jest wynikiem
wyrażenie.

-- var Zmienna jest zmniejszana o jeden, a nowa wartość jest wynikiem
wyrażenie.

było ++
Wynikiem wyrażenia jest wartość zmiennej, a następnie zmienna
zwiększona o jeden.

var — Wynikiem wyrażenia jest wartość zmiennej, a następnie zmienna
pomniejszone o jeden.

wyrażenie + wyrażenie
Wynik wyrażenia jest sumą dwóch wyrażeń.

wyrażenie - wyrażenie
Wynikiem wyrażenia jest różnica między dwoma wyrażeniami.

wyrażenie * wyrażenie
Wynik wyrażenia jest iloczynem dwóch wyrażeń.

wyr / wyr
Wynikiem wyrażenia jest iloraz obu wyrażeń. Skala
wynikiem jest wartość zmiennej skala.

wyr % wyr
Wynikiem wyrażenia jest „reszta” i jest ona obliczana w następujący sposób
sposób. Aby obliczyć a%b, najpierw obliczane jest a/b skala cyfry. Ten wynik jest używany
obliczyć a-(a/b)*b w skali maksimum skala+skala(b) i skala(a).
If skala jest ustawione na zero i oba wyrażenia są liczbami całkowitymi. To wyrażenie jest
funkcja reszty całkowitej.

wyrażenie ^ wyrażenie
Wynikiem wyrażenia jest wartość pierwszego podniesiona do drugiej. The
drugie wyrażenie musi być liczbą całkowitą. (Jeśli drugie wyrażenie nie jest liczbą całkowitą,
generowane jest ostrzeżenie, a wyrażenie jest obcinane w celu uzyskania wartości całkowitej.)
Skala rezultatu jest skala jeśli wykładnik jest ujemny. Jeśli wykładnik jest
dodatnia, skala wyniku jest minimum skali pierwszego
wyrażenie razy wartość wykładnika i maksimum skala i skala
pierwszego wyrażenia. (np. skala(a^b) = min(skala(a)*b, max( skala,
skala(a))).) Należy zauważyć, że wyrażenie^0 zawsze zwróci wartość 1.

(wyr)
Zmienia to standardowy priorytet, aby wymusić ocenę wyrażenia.

zmienna = wyrażenie
Zmiennej przypisuje się wartość wyrażenia.

odm = wyrażenie
Jest to równoważne z „var = var expr” z wyjątkiem części „var”.
jest oceniany tylko raz. Może to mieć znaczenie, jeśli „var” jest tablicą.

Wyrażenia relacyjne są szczególnym rodzajem wyrażeń, których wartość zawsze wynosi 0 lub 1, 0
jeśli relacja jest fałszywa i 1, jeśli relacja jest prawdziwa. Mogą one pojawić się w dowolnym dokumencie prawnym
wyrażenie. (POSIX bc wymaga, aby wyrażenia relacyjne były używane tylko w if, while,
oraz dla stwierdzeń i że można w nich przeprowadzić tylko jeden test relacyjny.) Relacyjny
operatorzy są

wyrażenie1 < wyrażenie2
Wynikiem jest 1, jeśli wyrażenie1 jest mniejsze niż wyrażenie2.

wyrażenie1 <= wyrażenie2
Wynikiem jest 1, jeśli wyrażenie1 jest mniejsze lub równe wyrażenie2.

wyrażenie1 > wyrażenie2
Wynikiem jest 1, jeśli wyrażenie1 jest ściśle większe niż wyrażenie2.

wyrażenie1 >= wyrażenie2
Wynikiem jest 1, jeśli wyrażenie1 jest większe lub równe wyrażenie2.

wyrażenie1 == wyrażenie2
Wynikiem jest 1, jeśli wyrażenie1 jest równe wyrażeniu2.

wyrażenie1 != wyrażenie2
Wynikiem jest 1, jeśli wyrażenie1 nie jest równe wyrażenie2.

Operacje logiczne są również dozwolone. (POSIX bc NIE ma operacji boolowskich). The
wynikiem wszystkich operacji boolowskich są 0 i 1 (dla fałszu i prawdy), jak w przypadku relacji
wyrażenia. Operatory logiczne to:

!wyrażenie Wynikiem jest 1, jeśli wyrażenie wynosi 0.

wyr && wyr
Wynikiem jest 1, jeśli oba wyrażenia są różne od zera.

wyrażenie || wyr
Wynikiem jest 1, jeśli którekolwiek wyrażenie jest niezerowe.

Pierwszeństwo wyrażeń jest następujące: (od najniższego do najwyższego)
|| operator, lewostronny łącznik
Operator &&, łącznik lewostronny
! operator, nieasocjacyjny
Operatory relacyjne, lewostronne
Operator przypisania, skojarzenie prawostronne
Operatory + i -, lewostronne łączenie
Operatory *, / i %, lewostronnie łączne
operator ^, łącznik prawostronny
jednoargumentowy - operator, nieasocjacyjny
Operatory ++ i --, nieasocjacyjne

To pierwszeństwo zostało wybrane tak, aby było zgodne z POSIX bc programy będą działać poprawnie. Ten
spowoduje, że użycie operatorów relacyjnych i logicznych będzie miało nietypowe zachowanie
gdy jest używany z wyrażeniami przypisania. Rozważ wyrażenie:
a = 3 < 5

Większość programistów C założyłaby, że przypisuje to wynik „3 < 5” (wartość 1).
zmienna „a”. Co to robi w bc to przypisać wartość 3 do zmiennej „a”, a następnie
porównaj 3 z 5. Najlepiej używać nawiasów, gdy używasz operatorów relacyjnych i logicznych
z operatorami przypisania.

Istnieje jeszcze kilka wyrażeń specjalnych dostępnych w bc. To ma związek z
funkcje zdefiniowane przez użytkownika i funkcje standardowe. Wszystkie pojawiają się jako „Nazwa(parametry)".
Zobacz sekcję dotyczącą funkcji, aby zapoznać się z funkcjami zdefiniowanymi przez użytkownika. Standardowe funkcje to:

długość (wyrażenie)
Wartością funkcji długości jest liczba cyfr znaczących w
wyrażenie.

Czytać ( )
Funkcja read (rozszerzenie) odczyta liczbę ze standardowego wejścia,
niezależnie od tego, gdzie funkcja ta występuje. Uważaj, może to powodować problemy z
miksowanie danych i programu na wejściu standardowym. Najlepsze wykorzystanie tej funkcji
znajduje się w wcześniej napisanym programie, który wymaga wkładu użytkownika, ale nigdy na to nie pozwala
kod programu do wprowadzenia przez użytkownika. Wartością funkcji read jest
liczba odczytana ze standardowego wejścia przy użyciu aktualnej wartości zmiennej baza z
dla podstawy konwersji.

skala (wyrażenie)
Wartością funkcji skali jest liczba cyfr po przecinku
ekspresja.

sqrt (wyrażenie)
Wartością funkcji sqrt jest pierwiastek kwadratowy z wyrażenia. Jeśli
wyrażenie jest ujemne, generowany jest błąd wykonania.

SPRAWOZDANIA
Instrukcje (jak w większości języków algebraicznych) zapewniają kolejność wyrażeń
ocena. W bc instrukcje są wykonywane „tak szybko, jak to możliwe”. Wykonanie następuje, gdy
napotkano znak nowej linii i istnieje jedna lub więcej kompletnych instrukcji. Z tego powodu
natychmiastowe wykonanie, znaki nowej linii są bardzo ważne bc. W rzeczywistości zarówno średnik, jak i a
znak nowej linii są używane jako separatory instrukcji. Nieprawidłowo umieszczony znak nowej linii spowoduje:
błąd składni. Ponieważ znaki nowej linii są separatorami instrukcji, możliwe jest ukrycie znaku nowej linii
za pomocą znaku odwrotnego ukośnika. Sekwencja "\ ", Gdzie pojawia się znak nowej linii
do bc jako spacja zamiast znaku nowej linii. Lista instrukcji to seria instrukcji
oddzielone średnikami i znakami nowej linii. Poniżej znajduje się lista bc wypowiedzi i co
tak: (Rzeczy ujęte w nawiasy ([]) są opcjonalnymi częściami instrukcji.)

wyrażenie
To stwierdzenie spełnia jedną z dwóch rzeczy. Jeśli wyrażenie zaczyna się od „
...”, jest to uważane za instrukcję przypisania. Jeśli
wyrażenie nie jest instrukcją przypisania, wyrażenie jest oceniane i drukowane
do wyjścia. Po wydrukowaniu liczby drukowany jest znak nowej linii. Na przykład,
„a=1” to instrukcja przypisania, a „(a=1)” to wyrażenie z osadzeniem
zadanie. Wszystkie numery, które są drukowane, są drukowane w bazie określonej przez
zmienna skromny. Wartości prawne dla skromny są od 2 do BC_BASE_MAX. (Zobacz
sekcja OGRANICZENIA.) W przypadku liczb o podstawach od 2 do 16 typową metodą zapisywania liczb jest
używany. Dla zasad większych niż 16, bc wykorzystuje metodę cyfr wieloznakowych
drukowanie liczb, w których każda wyższa cyfra podstawowa jest drukowana jako liczba podstawowa 10.
Cyfry wieloznakowe oddziela się spacjami. Każda cyfra zawiera liczbę
znaków wymaganych do przedstawienia dziesiątki wartości „obase-1”. Ponieważ liczby
mają dowolną precyzję, niektóre liczby mogą nie dać się wydrukować na jednym wyjściu
linia. Te długie liczby zostaną podzielone między wiersze, używając „\” na końcu
znak w linii. Maksymalna liczba znaków drukowanych w wierszu wynosi 70. Wymagane
do interaktywnego charakteru bc, wydrukowanie liczby powoduje efekt uboczny
przypisanie drukowanej wartości do zmiennej specjalnej trwać. Umożliwia to użytkownikowi
odzyskać ostatnią wydrukowaną wartość bez konieczności ponownego wpisywania wydrukowanego wyrażenia
numer. Przypisywanie do trwać jest legalne i nadpisze ostatnią wydrukowaną wartość
z przypisaną wartością. Nowo przypisana wartość pozostanie do następnej
drukowany jest numer lub przypisana jest do niego inna wartość trwać. (Niektóre instalacje mogą
pozwalają na użycie pojedynczej kropki (.), która nie jest częścią liczby, jako krótkiej ręki
zapis dla trwać.)

ciąg Ciąg znaków jest wypisywany na wyjście. Ciągi znaków zaczynają się od znaku podwójnego cudzysłowu
i zawierać wszystkie znaki aż do następnego znaku podwójnego cudzysłowu. Wszystkie postacie
są brane dosłownie, łącznie ze wszystkimi znakami nowej linii. Po tym nie jest drukowany żaden znak nowej linii
ciąg.

podstęp
Instrukcja print (rozszerzenie) zapewnia inną metodę wyprowadzania. Lista"
to lista ciągów znaków i wyrażeń oddzielonych przecinkami. Każdy ciąg lub
wyrażenie jest drukowane w kolejności zgodnej z listą. Nie jest drukowany kończący znak nowej linii.
Wyrażenia są oceniane, a ich wartość jest drukowana i przypisana do zmiennej
trwać. Ciągi znaków w instrukcji print są wypisywane na wyjściu i mogą zawierać
znaki specjalne. Znaki specjalne zaczynają się od ukośnika odwrotnego (\).
Znaki specjalne rozpoznawane przez bc to „a” (alarm lub dzwonek), „b” (backspace),
„f” (podawanie formularza), „n” (nowa linia), „r” (powrót karetki), „q” (podwójny cudzysłów), „t”
(tabulator) i „\” (ukośnik odwrotny). Każdy inny znak po ukośniku odwrotnym będzie
ignorowane.

{ lista_wyciągów }
To jest zdanie złożone. Umożliwia grupowanie wielu instrukcji
razem do egzekucji.

if ( wyrażenie ) instrukcja1 [więcej oświadczenie2]
Instrukcja if ocenia wyrażenie i wykonuje instrukcję1 lub instrukcję2
w zależności od wartości wyrażenia. Jeśli wyrażenie jest niezerowe,
instrukcja 1 jest wykonywana. Jeśli instrukcja2 jest obecna i wartość wyrażenia
wynosi 0, wówczas wykonywana jest instrukcja2. (Klauzula else jest rozszerzeniem.)

Podczas (wyrażenie) stwierdzenie
Instrukcja while wykona instrukcję, gdy wyrażenie jest niezerowe.
Ocenia wyrażenie przed każdym wykonaniem instrukcji. Zakończenie
pętli jest spowodowane zerową wartością wyrażenia lub wykonaniem przerwania
komunikat.

dla ( [wyrażenie1] ; [wyrażenie2] ; [wyrażenie3] ) instrukcja
Instrukcja for kontroluje wielokrotne wykonanie instrukcji. Wyrażenie 1 jest
oceniane przed pętlą. Wyrażenie2 jest oceniane przed każdym wykonaniem
oświadczenie. Jeśli jest różna od zera, instrukcja jest oceniana. Jeśli wynosi zero, pętla
zostaje zakończony. Po każdym wykonaniu instrukcji oceniane jest wyrażenie3
przed przewartościowaniem wyrażenia2. Jeśli brakuje wyrażenia1 lub wyrażenia3,
nic nie jest oceniane w tym momencie, w którym byłoby oceniane. Jeśli wyrażenie2 jest
brak, jest to równoznaczne z podstawieniem wartości 1 do wyrażenia2. (Opcjonalne
wyrażenia są rozszerzeniem. POSIX bc wymaga wszystkich trzech wyrażeń.) The
poniżej znajduje się równoważny kod instrukcji for:
wyrażenie1;
podczas gdy (wyrażenie2) {
oświadczenie;
wyrażenie3;
}

złamać Ta instrukcja powoduje wymuszone wyjście z ostatniej dołączonej instrukcji while lub
za oświadczenie.

kontynuować
Instrukcjacontinue (rozszerzenie) powoduje, że najnowsze załączenie dla
instrukcja rozpoczynająca następną iterację.

postój Instrukcja halt (rozszerzenie) jest wykonywaną instrukcją, która powoduje bc
procesor, aby zakończyć działanie dopiero po jego wykonaniu. Na przykład „if (0 == 1) halt” będzie
nie przyczyną bc zakończyć, ponieważ zatrzymanie nie zostało wykonane.

powrót Zwróć wartość 0 z funkcji. (Zobacz sekcję dotyczącą funkcji.)

powrót ( wyrażenie )
Zwróć wartość wyrażenia z funkcji. (Zobacz sekcję dot
funkcje.) Jako rozszerzenie nawiasy nie są wymagane.

RZEKOMY SPRAWOZDANIA
Stwierdzenia te nie są stwierdzeniami w tradycyjnym znaczeniu. Nie są wykonywane
sprawozdania. Ich funkcja jest wykonywana w czasie „kompilacji”.

Limity Wydrukuj lokalne limity narzucone przez lokalną wersję programu bc. To jest rozszerzenie.

porzucić Po przeczytaniu instrukcjikończ bc procesor zostaje zakończony, niezależnie od
gdzie znajduje się instrukcja rezygnacji. Na przykład „if (0 == 1) wyjdź” spowoduje bc
zakończyć.

gwarancja
Wydrukuj dłuższą informację gwarancyjną. To jest rozszerzenie.

FUNKCJE
Funkcje zapewniają metodę definiowania obliczeń, które można wykonać później.
Funkcje w bc zawsze oblicza wartość i zwraca ją wywołującemu. Definicje funkcji
są „dynamiczne” w tym sensie, że funkcja jest niezdefiniowana do czasu napotkania definicji
na wejściu. Definicja ta jest następnie używana aż do pojawienia się innej funkcji definiującej dla tej samej definicji
imię i nazwisko. Nowa definicja zastępuje wówczas starszą definicję. Funkcja
jest zdefiniowany w następujący sposób:
określić Nazwa ( parametry ) { Nowa linia
auto_lista lista_oświadczeń }
Wywołanie funkcji jest po prostu wyrażeniem postaci „Nazwa(parametry)".

Parametry to liczby lub tablice (rozszerzenie). W definicji funkcji zero lub więcej
parametry definiuje się poprzez wypisanie ich nazw oddzielonych przecinkami. Wszystkie parametry są
wywołać według parametrów wartości. Tablice są określone w definicji parametrów poprzez
notacja "Nazwa[]". W wywołaniu funkcji rzeczywiste parametry są pełnymi wyrażeniami
parametry liczbowe. Do przekazywania tablic używa się tej samej notacji, co do definiowania tablicy
parametry. Nazwana tablica jest przekazywana przez wartość do funkcji. Ponieważ funkcja
definicje są dynamiczne, numery parametrów i typy są sprawdzane, gdy funkcja jest
zwany. Jakakolwiek niezgodność liczby lub typów parametrów spowoduje błąd wykonania. A
błąd wykonania wystąpi także w przypadku wywołania niezdefiniowanej funkcji.

Połączenia auto_lista to opcjonalna lista zmiennych przeznaczonych do użytku „lokalnego”. Składnia
lista automatyczna (jeśli jest) to „samochód Nazwa, ... ;”. (Średnik jest opcjonalny.) Każdy Nazwa
to nazwa zmiennej automatycznej. Tablice można określać przy użyciu tej samej notacji co
używane w parametrach. Wartości tych zmiennych są umieszczane na stosie na początku
funkcja. Zmienne są następnie inicjowane do zera i używane w całym procesie
wykonanie funkcji. Przy wyjściu z funkcji zmienne te są usuwane, tak że
przywracana jest pierwotna wartość (w momencie wywołania funkcji) tych zmiennych. The
parametry są tak naprawdę zmiennymi automatycznymi, które są inicjalizowane wartością podaną w pliku
wywołanie funkcji. Zmienne automatyczne różnią się od tradycyjnych zmiennych lokalnych, ponieważ if
funkcja A wywołuje funkcję B, B może uzyskać dostęp do zmiennych automatycznych funkcji A, po prostu używając
o tej samej nazwie, chyba że funkcja B nazwała je zmiennymi automatycznymi. Z uwagi na to, że auto
zmienne i parametry są wypychane na stos, bc obsługuje funkcje rekurencyjne.

Ciało funkcji jest listą bc sprawozdania. Ponownie, instrukcje są oddzielone przez
średniki lub znaki nowej linii. Instrukcje return powodują zakończenie funkcji i
zwrot wartości. Istnieją dwie wersje instrukcji return. Pierwsza forma,
"powrót", zwraca wartość 0 do wyrażenia wywołującego. Druga forma, "powrót (
wyrażenie )", oblicza wartość wyrażenia i zwraca tę wartość do wywołującego
wyrażenie. Istnieje dorozumiane „powrót (0)" na końcu każdej funkcji. Umożliwia to a
funkcja kończąca i zwracająca 0 bez jawnej instrukcji return.

Funkcje zmieniają także sposób użycia zmiennej baza z. Wszystkie stałe w treści funkcji
zostanie przeliczona przy użyciu wartości baza z w momencie wywołania funkcji. Zmiany
baza z będą ignorowane podczas wykonywania funkcji, z wyjątkiem standardu
funkcjonować czytać, który zawsze będzie używał bieżącej wartości baza z do konwersji liczb.

Do funkcji dodano kilka rozszerzeń. Po pierwsze, format definicji ma
był lekko zrelaksowany. Norma wymaga, aby nawias otwierający znajdował się na tej samej linii co nawias
określić słowo kluczowe i wszystkie inne części muszą znajdować się w kolejnych wierszach. Ta wersja bc będzie
zezwalaj na dowolną liczbę znaków nowej linii przed i po nawiasie otwierającym funkcji. Dla
na przykład poniższe definicje są legalne.
zdefiniuj d (n) { powrót (2*n); }
zdefiniuj d (n)
{ powrót (2*n); }

Funkcje można zdefiniować jako unieważnić. Funkcja void nie zwraca żadnej wartości i dlatego może nią nie być
używany w dowolnym miejscu, które potrzebuje wartości. Funkcja void nie generuje żadnych danych wyjściowych, gdy
wywoływana sama w linii wejściowej. Słowo klucz unieważnić jest umieszczony pomiędzy słowem kluczowym
określić i nazwę funkcji. Rozważmy na przykład następującą sesję.
zdefiniuj py (y) { drukuj „--->”, y, „<---”, „\n”; }
zdefiniuj void px (x) { drukuj "--->", x, "<---", "\n"; }
py(1)
--->1<---
0
px(1)
--->1<---
Ponieważ py nie jest funkcją pustą, wywołanie py(1) drukuje żądane dane wyjściowe, a następnie
wypisuje drugą linię będącą wartością funkcji. Ponieważ wartość funkcji
dla którego nie podano jawnej instrukcji return, wynosi zero, zero jest drukowane. Dla px(1),
żadne zero nie jest drukowane, ponieważ funkcja jest funkcją nieważną.

Dodano także wywołanie zmiennej dla tablic. Aby zadeklarować wywołanie za pomocą tablicy zmiennych, metoda
deklaracja parametru tablicowego w definicji funkcji wygląda następująco: „*Nazwa[]"
wywołanie funkcji pozostaje takie samo jak wywołanie przez tablice wartości.

MATH BIBLIOTEKA
If bc jest wywoływany z -l opcja, biblioteka matematyczna jest wstępnie załadowana, a skala domyślna to
ustaw na 20. Funkcje matematyczne obliczą swoje wyniki w skali ustawionej w danym momencie
ich wezwania. Biblioteka matematyczna definiuje następujące funkcje:

s (x) Sinus x, x jest w radianach.

c (x) Cosinus x, x jest w radianach.

a (x) Arcus tangens x, arcus tangens zwraca radiany.

l (x) Logarytm naturalny x.

ix) Funkcja wykładnicza podniesienia e do wartości x.

J (n, x)
Funkcja Bessela rzędu całkowitego n od x.

PRZYKŁADY
In / Bin / sh, poniżej przypisze wartość „pi” do zmiennej powłoki pi.
pi=$(echo "skala=10; 4*a(1)" | pne -l)

Poniżej znajduje się definicja funkcji wykładniczej używana w bibliotece matematycznej.
Ta funkcja jest napisana w POSIX bc.
skala = 20

/* Wykorzystuje fakt, że e^x = (e^(x/2))^2
Gdy x jest wystarczająco małe, używamy szeregu:
e^x = 1 + x + x^2/2! +x^3/3! + ...
*/

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

/* Sprawdź znak x. */
jeśli (x<0) {
m = 1
x = -x
}

/* Warunek wstępny x. */
z = skala;
skala = 4 + z + 44*x;
podczas gdy (x > 1) {
fa += 1;
x /= 2;
}

/* Zainicjuj zmienne. */
v = 1+x
za = x
d = 1

dla (i=2; 1; i++) {
mi = (a *= x) / (d *= i)
jeśli (e == 0) {
jeśli (f>0) podczas gdy (f--) v = v*v;
skala = z
if (m) zwrot (1/v);
powrót (v/1);
}
v += mi
}
}

Poniżej znajduje się kod korzystający z rozszerzonych funkcji bc wdrożyć prosty program
do obliczania salda książeczki czekowej. Najlepiej przechowywać ten program w pliku, aby tak było
używany wiele razy, bez konieczności ponownego wpisywania go przy każdym użyciu.
skala=2
drukuj "\nSprawdź program książki!\n"
print " Pamiętaj, depozyty to transakcje ujemne.\n"
print "Wyjdź poprzez transakcję 0.\n\n"

print "Saldo początkowe? "; bal = czytaj()
bal /= 1
drukuj "\n"
podczas gdy (1) {
"bieżące saldo = "; bal
"transakcja? "; trans = czytaj()
if (trans == 0) przerwa;
bal -= przeł
bal /= 1
}
porzucić

Poniżej znajduje się definicja rekurencyjnej funkcji silni.
zdefiniuj f (x) {
jeśli (x <= 1) zwróć (1);
powrót (f(x-1) * x);
}

CZYTAJ LINIĘ ROLNICZE LIBEDYT OPCJE
GNU bc można skompilować (poprzez opcję konfiguracji), aby używać GNU Czytaj linię edytor wejściowy
biblioteka lub BSD libacja biblioteka. Dzięki temu użytkownik może wcześniej dokonać edycji linii
wysyłając je do bc. Pozwala także na historię wpisanych wcześniej linii. Kiedy to
wybrana jest opcja, bc ma jeszcze jedną specjalną zmienną. Ta specjalna zmienna, historia is
liczba zachowanych linii historii. Dla Czytaj linię, wartość -1 oznacza, że ​​an
zachowywana jest nieograniczona liczba linii historii. Ustawianie wartości historia do
liczba dodatnia ogranicza liczbę linii historii do podanej liczby. Wartość 0
wyłącza funkcję historii. Wartość domyślna to 100. Aby uzyskać więcej informacji, przeczytaj
podręczniki użytkownika dla GNU Czytaj linię, historia i BSD libacja biblioteki. Nie można włączyć
obie Czytaj linię i libacja w tym samym czasie.

RÓŻNICE
Ta wersja bc został zaimplementowany na podstawie wersji roboczej POSIX P1003.2/D11 i zawiera kilka
różnice i rozszerzenia w stosunku do wersji roboczej i tradycyjnych wdrożeń. To jest
nie realizowane w tradycyjny sposób przy użyciu dc(1). Ta wersja to pojedynczy proces
który analizuje i uruchamia translację kodu bajtowego programu. Istnieje „nieudokumentowany”
opcja (-c), która powoduje, że program zamiast tego wypisuje kod bajtowy na standardowe wyjście
uruchomienia go. Używano go głównie do debugowania parsera i przygotowywania obliczeń matematycznych
biblioteka.

Głównym źródłem różnic są rozszerzenia, w przypadku których funkcja jest rozszerzana w celu dodania kolejnych
funkcjonalność i dodatki, w których dodawane są nowe funkcje. Poniżej znajduje się lista
różnice i rozszerzenia.

Środowisko LANG
Ta wersja nie jest zgodna ze standardem POSIX w zakresie przetwarzania LANG
zmienna środowiskowa i wszystkie zmienne środowiskowe zaczynające się od LC_.

nazwy Tradycyjne i POSIX bc mają jednoliterowe nazwy funkcji, zmiennych i
tablice. Zostały one rozszerzone do nazw wieloznakowych rozpoczynających się od a
litera i może zawierać litery, cyfry i znak podkreślenia.

Smyczki
Ciągi nie mogą zawierać znaków NUL. POSIX mówi, że wszystkie znaki muszą
być zawarte w ciągach znaków.

ostatni POSIX bc nie ma trwać zmienny. Niektóre wdrożenia bc użyj kropki
(.) w podobny sposób.

porównania
POSIX bc pozwala na porównania tylko w instrukcji if, instrukcji while i instrukcji
drugie wyrażenie instrukcji for. Ponadto istnieje tylko jedna operacja relacyjna
dozwolone w każdym z tych stwierdzeń.

instrukcja if, klauzula else
POSIX bc nie zawiera klauzuli else.

za oświadczenie
POSIX bc wymaga obecności wszystkich wyrażeń w instrukcji for.

&&, ||, !
POSIX bc nie ma operatorów logicznych.

funkcja odczytu
POSIX bc nie ma funkcji odczytu.

wydrukować oświadczenie
POSIX bc nie ma instrukcji drukowania.

kontynuuj oświadczenie
POSIX bc nie zawiera instrukcjicontinue.

instrukcja zwrotu
POSIX bc wymaga nawiasów wokół wyrażenia zwrotnego.

parametry tablicy
POSIX bc nie obsługuje (obecnie) w pełni parametrów tablicowych. Gramatyka POSIX
pozwala na tablice w definicjach funkcji, ale nie udostępnia metody do określenia
tablicę jako rzeczywisty parametr. (Najprawdopodobniej jest to przeoczenie w pliku
gramatyka.) Tradycyjne implementacje bc mają tylko tablicę wywołań według wartości
parametry.

format funkcji
POSIX bc wymaga nawiasu otwierającego w tej samej linii co określić słowo kluczowe i
samochód oświadczenie w następnym wierszu.

=+, =-, =*, =/, =%, =^
POSIX bc nie wymaga definiowania operatorów przypisania „starego stylu”.
Ta wersja może pozwalać na te przypisania w „starym stylu”. Użyj instrukcji limitów do
sprawdź, czy zainstalowana wersja je obsługuje. Jeśli obsługuje „stary styl”
operatory przypisania, instrukcja „a =- 1” będzie zmniejszana a o 1 zamiast
ustawienie a do wartości -1.

spacje w liczbach
Inne realizacje bc dopuszczaj spacje w liczbach. Na przykład „x=1 3”.
przypisz wartość 13 zmiennej x. To samo stwierdzenie spowodowałoby składnię
błąd w tej wersji bc.

błędy i wykonanie
Ta implementacja różni się od innych implementacji pod względem tego, jaki będzie kod
wykonywany, gdy w programie zostaną znalezione błędy składniowe i inne. Jeśli błąd składni
zostanie znaleziony w definicji funkcji, usuwanie błędów próbuje znaleźć początek a
instrukcję i kontynuuj analizowanie funkcji. Po znalezieniu błędu składniowego w pliku
funkcja, funkcja ta nie będzie wywoływalna i stanie się niezdefiniowana. Błędy składniowe
w interaktywnym kodzie wykonawczym unieważni bieżący blok wykonawczy. The
blok wykonania kończy się końcem linii, która pojawia się po zakończeniu
sekwencja wypowiedzi. Na przykład,
a = 1
b = 2
ma dwa bloki wykonawcze i
{ za = 1
b = 2 }
ma jeden blok wykonawczy. Każdy błąd w czasie wykonywania zakończy wykonywanie bieżącego
blok wykonawczy. Ostrzeżenie w czasie wykonywania nie zakończy bieżącego bloku wykonania.

Przerwania
Podczas sesji interaktywnej sygnał SIGINT (zwykle generowany przez
znak C z terminala) spowoduje wykonanie bieżącego bloku wykonawczego
zostać przerwane. Wyświetli błąd „runtime” wskazujący, która funkcja była
przerwany. Po wyczyszczeniu wszystkich struktur wykonawczych zostanie wyświetlony komunikat
wydrukowane, aby powiadomić o tym użytkownika bc jest gotowy na dalsze informacje. Wszystko wcześniej zdefiniowane
funkcje pozostają zdefiniowane, a wartością wszystkich zmiennych innych niż auto jest wartość at
punkt przerwania. Wszystkie zmienne automatyczne i parametry funkcji zostaną usunięte
podczas procesu czyszczenia. Podczas sesji nieinteraktywnej sygnał SIGINT
zakończy cały bieg bc.

OGRANICZENIA
Poniżej przedstawiono aktualnie obowiązujące ograniczenia w tym zakresie bc edytor. Niektóre z nich mogą
zostały zmienione przez instalację. Użyj instrukcji limitów, aby zobaczyć rzeczywiste wartości.

BC_BASE_MAX
Maksymalna podstawa wyjściowa jest obecnie ustawiona na 999. Maksymalna podstawa wejściowa wynosi 16.

BC_DIM_MAX
Jest to obecnie arbitralny limit wynoszący 65535 w dystrybucji. Twoja instalacja
może być inny.

BC_SCALE_MAX
Liczba cyfr po przecinku jest ograniczona do INT_MAX cyfr. Również,
liczba cyfr przed przecinkiem dziesiętnym jest ograniczona do INT_MAX cyfr.

BC_STRING_MAX
Limit liczby znaków w ciągu wynosi INT_MAX znaków.

wykładnik potęgowy
Wartość wykładnika w operacji podnoszenia (^) jest ograniczona do LONG_MAX.

nazwy zmiennych
Aktualny limit liczby unikalnych nazw wynosi 32767 dla każdej nazwy prostej
zmienne, tablice i funkcje.

ŚRODOWISKO ZMIENNE


Następujące zmienne środowiskowe są przetwarzane przez bc:

POSIXLY_CORRECT
To jest to samo co -s opcja.

BC_ENV_ARGS
To kolejny mechanizm pozyskiwania argumentów bc. Format jest taki sam jak w przypadku
argumenty wiersza poleceń. Argumenty te są przetwarzane w pierwszej kolejności, więc wyświetlane są wszystkie pliki
w środowisku argumenty są przetwarzane przed jakimkolwiek plikiem argumentów wiersza poleceń.
Dzięki temu użytkownik może ustawić „standardowe” opcje i pliki, które mają być przetwarzane
każde wywołanie bc. Pliki w zmiennych środowiskowych zazwyczaj
zawierają definicje funkcji, które użytkownik chce za każdym razem zdefiniować bc is
uruchomić.

BC_LINE_LENGTH
Powinna to być liczba całkowita określająca liczbę znaków w linii wyjściowej
liczby. Obejmuje to ukośnik odwrotny i znaki nowej linii w przypadku długich liczb. Jak
rozszerzenie, wartość zero wyłącza funkcję wielowierszową. Dowolna inna wartość
tej zmiennej, która jest mniejsza niż 3, ustawia długość linii na 70.

DIAGNOSTYKA


Jeśli nie można otworzyć żadnego pliku w wierszu poleceń, bc zgłosi, że plik jest
niedostępne i zakończone. Istnieją również narzędzia diagnostyczne w czasie kompilacji i wykonywania, które powinny
być oczywista.

Korzystaj z bc online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

  • 1
    Program ładujący Clover EFI
    Program ładujący Clover EFI
    Projekt został przeniesiony do
    https://github.com/CloverHackyColor/CloverBootloader..
    Funkcje: Uruchom system macOS, Windows i Linux
    w trybie UEFI lub starszym na komputerze Mac lub PC z
    UE...
    Pobierz program ładujący Clover EFI
  • 2
    zjednoczone obroty
    zjednoczone obroty
    Dołącz do nas w Gitterze!
    https://gitter.im/unitedrpms-people/Lobby
    Włącz repozytorium URPMS w swoim
    system -
    https://github.com/UnitedRPMs/unitedrpms.github.io/bl...
    Pobierz unitedrpms
  • 3
    Zwiększ biblioteki C ++
    Zwiększ biblioteki C ++
    Boost zapewnia bezpłatne przenośne
    recenzowane biblioteki C++. The
    nacisk kładziony jest na przenośne biblioteki, które
    dobrze współpracuje z biblioteką standardową C++.
    Zobacz http://www.bo...
    Pobierz biblioteki Boost C++
  • 4
    WirtualnyGL
    WirtualnyGL
    VirtualGL przekierowuje polecenia 3D z a
    Unix/Linux OpenGL na a
    GPU po stronie serwera i konwertuje plik
    renderowane obrazy 3D do strumienia wideo
    z którym ...
    Pobierz VirtualGL
  • 5
    libusba
    libusba
    Biblioteka, aby włączyć przestrzeń użytkownika
    programy użytkowe do komunikacji
    Urządzenia USB. Publiczność: deweloperzy, koniec
    Użytkownicy/Pulpit. Język programowania: C.
    Kategorie...
    Pobierz plik libusb
  • 6
    HAUST
    HAUST
    SWIG to narzędzie do tworzenia oprogramowania
    która łączy programy napisane w C i
    C++ z różnymi wysokopoziomowymi
    języki programowania. SWIG jest używany z
    różne...
    Pobierz SWIG
  • więcej »

Komendy systemu Linux

Ad