1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852
|
.\" {PTM/WK/0.1 /11-08-1999/"jzyk kalkulatora dowolnej precyzji"}
.\"
.\" bc.1 - the *roff document processor source for the bc manual
.\"
.\" This file is part of GNU bc.
.\" Copyright (C) 1991-1994, 1997, 2000 Free Software Foundation, Inc.
.\"
.\" This program is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2 of the License , or
.\" (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with this program; see the file COPYING. If not, write to:
.\" The Free Software Foundation, Inc.
.\" 59 Temple Place, Suite 330
.\" Boston, MA 02111 USA
.\"
.\" You may contact the author by:
.\" e-mail: philnelson@acm.org
.\" us-mail: Philip A. Nelson
.\" Computer Science Department, 9062
.\" Western Washington University
.\" Bellingham, WA 98226-9062
.\"
.\"
.TH bc 1 "Podrcznik polece" v1.06 "12 wrzenia 2000"
.SH NAZWA
bc - jzyk kalkulatora dowolnej precyzji
.SH SKADNIA
\fBbc\fR [\fB-hlwsqv\fR] [\fBdugie_opcje\fR] [\fIplik\fR...]
.SH WERSJA
Niniejszy podrcznik opisuje GNU bc w wersji 1.06.
.SH OPIS
\fBbc\fR jest jzykiem obsugujcym obliczenia na liczbach dowolnej
dokadnoci z interaktywnym wykonywaniem instrukcji. Istniej pewne
podobiestwa skadni do jzyka programowania C. Przy pomocy opcji wiersza
polece dostpna jest standardowa biblioteka matematyczna. Na danie,
biblioteka matematyczna jest definiowana przed rozpoczciem przetwarzania
plikw. \fBbc\fR rozpoczyna prac przetwarzajc kod z wszystkich plikw
wymienionych w wierszu polece, zachowujc ich kolejno. Po przetworzeniu
wszystkich plikw, \fBbc\fR czyta ze standardowego wejcia. Cao kodu
wykonywana jest w miar czytania. (Jeli plik zawiera polecenie zatrzymania
procesora, to \fBbc\fR nie bdzie prowadzi odczytu ze standardowego
wejcia.)
.PP
Omawiana wersja \fBbc\fR zawiera kilka rozszerze w stosunku do
tradycyjnych realizacji \fBbc\fR i standardu POSIX.
Opcje wiersza polece mog powodowa, e rozszerzenia te bd wywietla
ostrzeenia lub bd odrzucane. Niniejszy dokument opisuje jzyk akceptowany
przez ten procesor bc. Rozszerzenia s w nim wyranie wyrnione.
.SS OPCJE
.TP
.BR -h ", " --help
Wypisuje informacj o sposobie wywoania i koczy dziaanie.
.TP
.BR -i ", " --interactive
Wymusza tryb interaktywny.
.TP
.BR -l ", " --mathlib
Definiuje standardow bibliotek matematyczn.
.TP
.B -w ", " --warn
Ostrzega o rozszerzeniach w stosunku do POSIX \fBbc\fR.
.TP
.B -s ", " --standard
Przetwarza wycznie standardowy, POSIX-owy jzyk \fBbc\fR.
.TP
.B -q ", " --quiet
Nie wywietla zwykego przywitania GNU bc.
.TP
.B -v ", " --version
Wypisuje numer wersji, informacj o prawach autorskich i koczy dziaanie.
.SS LICZBY
Najbardziej podstawowym elementem w \fBbc\fR jest liczba. Liczby s liczbami
dowolnej dokadnoci. Dokadno ta odnosi si zarwno do czci cakowitej
jak i do uamkowej. Wszystkie liczby s reprezentowane wewntrznie w postaci
dziesitnej i wszystkie obliczenia prowadzone s w ukadzie dziesitnym.
(Opisywana wersja obcina wyniki operacji dzielenia i mnoenia.)
Liczby posiadaj dwa atrybuty: dugo i dokadno.
[od tum.: (org.scale) - w tumaczeniu uywane bdzie sowo `dokadno'
w znaczeniu zblionym do znanego np. z obsugi kalkulatorw]
Dugo jest cakowit liczb cyfr znaczcych liczby, za dokadno jest
cakowit liczb cyfr dziesitnych po kropce dziesitnej.
Na przykad:
.nf
.RS
.000001 ma dugo 6 i dokadno 6.
1935.000 ma dugo 7 i dokadno 3.
.RE
.fi
.SS ZMIENNE
Liczby przechowywane s w dwu rodzajach zmiennych, zmiennych prostych
i tablicach. Zarwno zmienne proste jak i tablice posiadaj nazwy. Nazwy
zaczynaj si od litery, po ktrej nastpuje dowolna liczba liter, cyfr
i znakw podkrelenia. Wszystkie litery musz by mae. (Nazwy w peni
alfanumeryczne s rozszerzeniem. W POSIXowym \fBbc\fR wszystkie nazwy s
pojedynczymi maymi literami.) Rodzaj zmiennej wynika z kontekstu, gdy
po nazwie kadej zmiennej tablicowej wystpi nawiasy ([]).
.PP
Istniej cztery zmienne specjalne: \fBscale\fR, \fBibase\fR, \fBobase\fR
oraz \fBlast\fR. \fBscale\fR okrela, jak niektre operacje uywaj cyfr po
kropce dziesitnej. Domyln wartoci \fBscale\fR jest 0. \fBibase\fR
oraz \fBobase\fR okrelaj podstaw pozycyjnego systemu liczbowego przy
konwersji wejcia i wyjcia. Domyln podstaw zarwno dla wejcia jak i dla
wyjcia jest 10. \fBlast\fR (rozszerzenie standardu) jest zmienn, ktra
przechowuje warto ostatnio wydrukowanej liczby. Zmienne te bd omwione
szczegowo pniej, w odpowiedniej czci. Wszystkie z nich mog mie
przypisywane wartoci, jak rwnie mog by uywane w wyraeniach.
.SS KOMENTARZE
Komentarze w \fBbc\fR rozpoczynaj si od znakw \fB/*\fR za kocz znakami
\fB*/\fR. Komentarze mog zaczyna si w dowolnym miejscu i na wejciu
pojawiaj si jako pojedyncze spacje. (Powoduje to, e komentarze s
ogranicznikami innych elementw wejcia. Na przykad, komentarz nie moe
znajdowa si w rodku nazwy zmiennej.) Komentarze obejmuj znaki nowej
linii (koca linii) pomidzy pocztkiem a kocem komentarza.
.PP
Do zapewnienia obsugi skryptw dla \fBbc\fR, jako rozszerzenie dodano
komentarz w pojedynczym wierszu. Komentarz jednowierszowy rozpoczyna si
znakiem \fB#\fR i rozciga si do koca wiersza. Znak koca linii nie jest
tu czci komentarza i jest przetwarzany jak zwykle.
.SS WYRAENIA
Liczbami posuguj si wyraenia i instrukcje. Poniewa jzyk zosta
zaprojektowany jako interaktywny, instrukcje i wyraenia wykonywane s
niezwocznie. Nie ma adnego programu "gwnego" ("main"). Zamiast tego, kod
jest wykonywany zaraz po jego napotkaniu. (Funkcje, omwione szczegowo
dalej, s zdefiniowane po ich napotkaniu.)
.PP
Proste wyraenie jest po prostu sta. \fBbc\fR zamienia stae na wewntrzne
liczby dziesitne przy uyciu biecej podstawy systemu dla wprowadzania,
podanej w zmiennej \fBibase\fR. (Istnieje wyjtek dla funkcji.) Dopuszczalnymi
wartociami \fBibase\fR s 2 do 16. Przypisanie \fBibase\fR wartoci spoza
tego zakresu nada jej warto 2 lub 16. Liczby wejciowe mog zawiera znaki
0-9 oraz A-F. (Uwaga: musz to by wielkie litery. Mae litery s nazwami
zmiennych.) Liczby jednocyfrowe maj zawsze warto cyfry, bez wzgldu na
warto \fBibase\fR. (tj. A = 10.) Dla liczb wielocyfrowych \fBbc\fR
zamienia wszystkie cyfry wejciowe wiksze bd rwne \fBibase\fR na warto
\fBibase-1\fR. Powoduje to, e liczba \fBFFF\fR bdzie zawsze najwiksz
trzycyfrow liczb przy danej podstawie systemu dla wejcia.
.PP
Pene wyraenia s podobne do wystpujcych w wielu jzykach wysokiego
poziomu. Poniewa wystpuje tylko jeden rodzaj liczb, nie ma regu
okrelajcych uycie rnych typw. Zamiast tego istniej reguy dotyczce
dokadnoci wyrae. Kade wyraenie posiada okrelon dokadno. Zaley
ona od dokadnoci pierwotnych liczb, wykonywanego dziaania i, w wielu
przypadkach, wartoci zmiennej \fBscale\fR. Dopuszczalnymi wartociami
zmiennej \fBscale\fR s liczby od 0 a do maksymalnej liczby, jaka moe by
reprezentowana jako cakowita (integer) w jzyku C.
.PP
W podanych poniej opisach dopuszczalnych wyrae, "wyraenie" okrela
pene wyraenie a "zmienna" okrela zmienn prost lub tablicow.
Zmienn prost jest po prostu
.RS
\fInazwa\fR
.RE
a zmienna tablicowa jest okrelona jako
.RS
\fInazwa\fR[\fIwyraenie\fR]
.RE
Dokadno wyniku jest maksymaln z dokadnoci uytych w nim wyrae, chyba
e podano inaczej.
.IP "- wyraenie"
Wynikiem jest warto przeciwna do wyraenia.
.IP "++ zmienna"
Zmienna jest powikszana o jeden a wynikiem wyraenia jest ta nowa warto.
.IP "-- zmienna"
Zmienna jest pomniejszana o jeden a wynikiem wyraenia jest ta nowa warto.
.IP "zmienna ++"
Wynikiem wyraenia jest warto zmiennej, a nastpnie zmienna jest
powikszana o jeden.
.IP "zmienna --"
Wynikiem wyraenia jest warto zmiennej, a nastpnie zmienna jest
pomniejszana o jeden.
.IP "wyraenie + wyraenie"
Wynikiem tego wyraenia jest suma obu wyrae.
.IP "wyraenie - wyraenie"
Wynikiem tego wyraenia jest rnica obu wyrae.
.IP "wyraenie * wyraenie"
Wynikiem tego wyraenia jest iloczyn obu wyrae.
.IP "wyraenie / wyraenie"
Wynikiem tego wyraenia jest iloraz obu wyrae. Liczba cyfr po kropce
dziesitnej wyniku jest rwna wartoci zmiennej \fBscale\fR.
.IP "wyraenie % wyraenie"
Wynikiem tego wyraenia jest "reszta" z dzielenia obliczana w nastpujcy
sposb. W celu obliczenia a%b, obliczane jest najpierw a/b z dokadnoci do
\fBscale\fR cyfr dziesitnych. Wynik uywany jest do obliczenia
a-(a/b)*b z dokadnoci okrelon jako maksymalna z
\fBscale\fR+scale(b) oraz scale(a). Jeeli \fBscale\fR ustawiona jest na
zero, za oba wyraenia s cakowite to wyraenie to jest funkcj reszty
cakowitej.
.IP "wyraenie ^ wyraenie"
Wynikiem tego wyraenia jest warto pierwszego z wyrae podniesiona do
potgi okrelonej przez drugie. Drugie wyraenie musi by liczb cakowit.
(Jeli drugie wyraenie nie jest cakowite, to emitowane jest ostrzeenie a
wyraenie jest obcinane tak, by otrzyma warto cakowit). Liczba cyfr
uamkowych wyniku wynosi \fBscale\fR, jeli wykadnik jest ujemny. Jeeli
jest on dodatni, to dokadno (liczba cyfr po kropce dziesitnej) wyniku
stanowi minimum z dokadnoci pierwszego wyraenia przemnoonej przez
warto wykadnika i maksimum z \fBscale\fR i dokadnoci pierwszego
wyraenia. To znaczy:
.nf
scale(a^b) = min(scale(a)*b, max( \fBscale,\fR scale(a)))
.fi
Naley pamita, e wyraenie^0 zawsze zwraca warto 1.
.IP "( wyraenie )"
Nawiasy wymuszaj zmian standardowych priorytetw przy obliczaniu
wyraenia.
.IP "zmienna = wyraenie"
Zmiennej przypisywana jest warto wyraenia.
.IP "zmienna <op>= wyraenie"
jest to rwnowane zapisowi "zmienna = zmienna <op> wyraenie", z wyjtkiem
tego, i cz "zmienna" jest wyliczana tylko raz. Moe to by istotne,
jeli "zmienna" jest tablic.
.PP
Wyraenia relacyjne s specjalnym rodzajem wyrae, zwracajcym zawsze
warto 0 lub 1: zero jeli relacja jest faszywa, za 1 jeeli jest prawdziwa.
Mog one wystpowa w dowolnych dozwolonych wyraeniach. (POSIX bc wymaga,
by wyraenia relacyjne byy uywane wycznie w instrukcjach if, while
i for oraz aby byo w nich uyte tylko jedno sprawdzenie relacji.) Operatorami
relacji s:
.IP "wyraenie1 < wyraenie2"
Wynikiem jest jeden jeli wyraenie1 jest mniejsze ni wyraenie2.
.IP "wyraenie1 <= wyraenie2"
Wynikiem jest 1 gdy wyraenie jest mniejsze bd rwne wyraenie2.
.IP "wyraenie1 > wyraenie2"
Wynikiem jest 1 jeli wyraenie1 jest wiksze ni wyraenie2.
.IP "wyraenie1 >= wyraenie2"
Wynikiem jest 1 gdy wyraenie1 jest wiksze bd rwne wyraenie2.
.IP "wyraenie1 == wyraenie2"
Wynikiem jest 1 gdy wyraenie1 jest rwne wyraenie2.
.IP "wyraenie != wyraenie2"
Wynikiem jest 1 gdy wyraenie1 nie jest rwne wyraenie2.
.PP
Dozwolone s take operacje logiczne. (POSIX \fBbc\fR NIE posiada operacji
logicznych). Wynikami wszystkich operacji logicznych s 0 lub 1 (dla faszu
i prawdy), tak jak dla wyrae relacyjnych. Operatorami logicznymi s:
.IP "!wyraenie"
Zaprzeczenie. Wynikiem jest 1 jeli wyraenie ma warto 0.
.IP "wyraenie && wyraenie"
Koniunkcja. Wynikiem jest 1 jeeli oba wyraenia s niezerowe.
.IP "wyraenie || wyraenie"
Alternatywa. Wynikiem jest 1 jeli dowolne z wyrae jest niezerowe.
.PP
Wyraenia posiadaj nastpujcy priorytet: (od najniszego do najwyszego)
.nf
.RS
operator ||, wizanie lewe
operator &&, wizanie lewe
operator !, niezwizany
operatory relacji, wizanie lewe
operator przypisania, wizanie prawe
operatory + i -, wizanie lewe
operatory *, / i %, wizanie lewe
operator ^, wizanie prawe
jednoargumentowy operator -, niezwizany
operatory ++ i --, niezwizane
.RE
.fi
.PP
Kolejno wykonywania zostaa dobrana tak, by programy zgodne z POSIX
\fBbc\fR dziaay poprawnie. Powoduje to, e operatory relacyjne i logiczne,
uyte w wyraeniach przypisania, bd wykazywa niecodzienne zachowywanie.
Rozwa wyraenie:
.RS
a = 3 < 5
.RE
.PP
Wikszo programistw C uwaaaby, e przypisze ono wynik operacji "3 < 5"
(warto 1) zmiennej "a". Tymczasem w \fBbc\fR nadaje ono warto 3 zmiennej
"a", a nastpnie porwnuje 3 z 5. Uywajc operatorw relacji i operatorw
logicznych z operatorami przypisania najlepiej jest posuy si nawiasami.
.PP
\fBbc\fR obsuguje jeszcze kilka innych wyrae specjalnych. Zwizane s one
z funkcjami definiowanymi przez uytkownika i funkcjami standardowymi.
Wszystkie one maj posta "\fInazwa\fB(\fIparametry\fB)\fR". Funkcje
definiowane przez uytkownika opisano w sekcji \fBFunkcje\fP. Funkcjami
standardowymi s:
.IP "length ( wyraenie )"
Wynikiem funkcji length jest liczba cyfr znaczcych w wyraeniu.
.IP "read ( )"
Funkcja ta, bdca rozszerzeniem, odczytuje liczb ze standardowego wejcia,
niezalenie od miejsca uycia funkcji. Strze si -- moe to spowodowa
kopoty przy przeplataniu si danych i programu ze standardowego wejcia.
Najlepszym zastosowaniem tej funkcji jest uycie jej w uprzednio napisanym
programie, ktry wymaga wprowadzania danych przez uytkownika, ale nigdy
nie pozwala na wprowadzanie kodu programu. Wynikiem dziaania funkcji read
jest liczba odczytana ze standardowego wejcia z konwersj ukadu
liczbowego wedug aktualnej wartoci zmiennej \fBibase\fR.
.IP "scale ( wyraenie )"
Wynikiem funkcji scale jest liczba cyfr po kropce dziesitnej w wyraeniu
bdcym jej parametrem.
.IP "sqrt ( wyraenie )"
Wynikiem funkcji sqrt jest pierwiastek kwadratowy z wyraenia. Jeeli
wyraenie ma warto ujemn, to generowany jest bd wykonania.
.SS INSTRUKCJE
Instrukcje (jak w wikszoci jzykw algorytmicznych) umoliwiaj sterowanie
kolejnoci wykonywania wyrae. W \fBbc\fR instrukcje wykonywane s
bezzwocznie, "tak szybko jak to jest moliwe". Wykonanie odbywa si gdy
napotkano znak nowej linii i istnieje jedna lub wicej pena instrukcja.
W zwizku z takim natychmiastowym wykonaniem, znaki nowej linii s bardzo
istotne w \fBbc\fR. W rzeczywistoci, jako organiczniki instrukcji uywane
s zarwno znaki nowej linii jak i redniki. Nieprawidowo umieszczony znak
nowej linii spowoduje bd skadni. Poniewa znaki nowej linii
rozdzielaj instrukcje, moliwe jest ich ukrycie (przed
interpretacj) przy pomocy znaku odwrotnego ukonika. Sekwencja "\e<nl>",
gdzie <nl> jest znakiem nowej linii postrzegana jest przez \fBbc\fR jako
znak zwykej spacji zamiast znaku nowej linii. Poniej umieszczono list
instrukcji \fBbc\fR i ich znaczenia: (elementy umieszczone w nawiasach
kwadratowych ([]) s opcjonalnymi czciami instrukcji.)
.IP "wyraenie"
Instrukcja ta wykonuje dwie rzeczy. jeeli wyraenie rozpoczyna si od
"<zmienna> <przypisanie> ...", to jest traktowane jak instrukcja
przypisania. Jeli wyraenie nie jest instrukcj przypisania, to wyraenie
jest wyliczane i drukowane na standardowym wyjciu. Po wydrukowaniu liczby
drukowany jest znak nowej linii. Na przykad, "a=1" jest instrukcj
przypisania za "(a=1)" jest wyraeniem zawierajcym przypisanie. Wszystkie
liczby drukowane s przy uyciu systemu pozycyjnego okrelonego zmienn
\fBobase\fR. Dopuszczalnymi wartociami \fBobase\fR s 2 do BC_BASE_MAX.
(Patrz sekcja OGRANICZENIA.) Dla podstaw systemu od 2 do 16 uywana jest
zwyczajowa metoda zapisu liczb. Dla podstaw wikszych od 16 \fBbc\fR
posuguje si metod cyfr wieloznakowych wywietlania liczb, gdzie kada
z kolejnych cyfr wywietlana jest jako liczba dziesitna. Cyfry wieloznakowe
oddzielane s odstpami. Kada z cyfr zawiera tyle znakw, ile jest
niezbdnych do przedstawienia dziesitnie wartoci "obase-1". Poniewa
liczby maj dowoln dokadno, niektre z liczb mog nie da wydrukowa si
w pojedynczym wierszu. Takie dugie liczby zostan podzielone midzy wiersze
przy zastosowaniu "\e" jako ostatniego znaku wiersza. Maksymaln liczb
znakw drukowanych w wierszu jest 70. Z powodu interaktywneggo charakteru
\fBbc\fR drukowanie liczby ma efekt uboczny w postaci przypisania
wydrukowanej wartoci do specjalnej zmiennej o nazwie \fBlast\fR. Umoliwia
to uytkownikowi odtworzenie ostatnio wydrukowanej wartoci bez potrzeby
ponownego wpisywania wyraenia, ktre j wydrukowao. Nadawanie wartoci
zmiennej \fBlast\fR jest dozwolone; spowoduje ono zastpienie ostatnio
wydrukowanej wartoci wartoci przypisan. Nowo przypisana warto
pozostanie a do wydrukowania kolejnej liczby lub nadania \fBlast\fR innej
wartoci. (Niektre z implementacji mog dopuszcza uycie pojedynczej kropki
(.), nie bdcej czci liczby, jako skrconej notacji dla \fBlast\fR.)
.IP "acuch"
Na wyjciu drukowany jest acuch znakowy. acuchy rozpoczynaj si znakiem
cudzysowu i zawieraj wszystkie znaki do nastpnego znaku cudzysowu.
Wszystkie znaki, wcznie ze znakami nowej linii, traktowane s dosownie.
Po wydrukowaniu acucha nie jest drukowany znak nowej linii.
.IP "\fBprint\fR lista"
Instrukcja print (rozszerzenie) umoliwia uycie innego sposobu wydruku
wynikw. "Lista" jest list acuchw i wyrae oddzielonych przecinkami.
Kady acuch czy wyraenie drukowany jest w kolejnoci wystpowania na
licie. Nie jest drukowany koczcy znak nowej linii (przejcie do
nastpnego wiersza). Wyliczana jest warto wyrae; jest ona drukowana i
przypisywana zmiennej \fBlast\fR. acuchy uyte w instrukcji print s
drukowane na wyjciu i mog zawiera znaki specjalne. Znaki specjalne
rozpoczynaj si znakiem odwrotnego ukonika (\e). \fBbc\fR rozpoznaje
nastpujce znaki specjalne:
"a" (dzwonek, bell), "b" (backspace), "f" (wysuw strony, form feed),
"n" (nowa linia, newline), "r" (powrt karetki, carriage return),
"q" (cudzysw, double quote), "t" (tabulacja, tab) oraz
"\e" (odwrotny ukonik, backslash).
Inne znaki wystpujce po odwrotnym ukoniku bd ignorowane.
.IP "\fB{\fR lista_instrukcji \fB}\fR"
Jest to instrukcja grupowania. Pozwala na grupowanie wielu instrukcji do
wykonania.
.IP "\fBif (\fR wyraenie \fB)\fR instrukcja1 [\fBelse\fR instrukcja2]"
Instrukcja if oblicza wyraenie i wykonuje instrukcj1 bd
instrukcj2 w zalenoci od wartoci wyraenia. Jeeli wyraenie jest
niezerowe, wykonywana jest instrukcja1. Jeli wystpuje instrukcja2 a
wartoci wyraenia jest 0, to wykonywana jest instrukcja2. (Klauzula
else instrukcji if jest rozszerzeniem).
.IP "\fBwhile (\fR wyraenie \fB)\fR instrukcja"
Instrukcja while powtarza wykonywanie danej instrukcji pki wyraenie jest
niezerowe. Oblicza ona warto wyraenia przed kadym wykonaniem instrukcji.
Przerwanie ptli powodowane jest zerow wartoci wyraenia lub wykonaniem
instrukcji break (przerwania).
.IP "\fBfor (\fR [wyr1] ; [wyr2] ; [wyr3] \fB)\fR instrukcja"
Instrukcja for kontroluje powtarzane wykonanie danej instrukcji. Przed ptl
obliczane jest wyraenie1. Wyraenie2 jest obliczane przed kadym
wykonaniem instrukcji. Jeli jest niezerowe, to wykonywana jest instrukcja.
Jeli ma ono warto zero, to ptla jest przerywana. Po kadym wykonaniu
danej instrukcji wyliczana jest warto wyraenia3 przed ponownym wyliczeniem
wyraenia2. Jeeli pominito wyraenie1 lub wyraenie3, to nic nie jest
obliczane w chwili, gdy powinna by okrelana ich warto. Jeeli pominito
wyraenie2, to jest ono zastpowane wartoci 1. (Wyraenie opcjonalne
stanowi rozszerzenie. \fBbc\fR w POSIXie wymaga wszystkich trzech wyrae.)
Poniszy kod jest rwnowany instrukcji for:
.\" If expression2 is missing, it is the same as substituting
.\" the value 1 for expression2.
.nf
.RS
wyraenie1;
while (wyraenie2) {
instrukcja;
wyraenie3;
}
.RE
.fi
.IP "\fBbreak\fR"
Instrukcja ta powoduje wymuszone zakoczenie ostatniej obejmujcej j
instrukcji while lub for.
.IP "\fBcontinue\fR"
Instrukcja continue (rozszerzenie) powoduje rozpoczcie kolejnej
iteracji przez ostatni obejmujc j instukcj for.
.IP "\fBhalt\fR"
Instrukcja halt (rozszerzenie) jest instrukcj nakazujc preprocesorowi
\fBbc\fR zakoczenie pracy (ale tylko wtedy gdy instrukcja ta jest
wykonywana).
Na przykad, "if (0 == 1) halt" nie spowoduje przerwania pracy \fBbc\fR,
gdy instrukcja halt nie bdzie wykonana.
.IP "\fBreturn\fR"
Zwraca warto zero jako wynik funkcji. (Patrz sekcja dotyczca funkcji).
.IP "\fBreturn (\fR wyraenie \fB)\fR"
Zwraca warto wyraenia jako wynik funkcji. (Patrz sekcja dotyczca funkcji).
Nawiasy nie s wymagane, co jest rozszerzeniem GNU bc.
.SS PSEUDO-INSTRUKCJE
Te instrukcje nie s instrukcjami w tradycyjnym sensie tego terminu. Nie s
one instrukcjami wykonywanymi. Ich funkcja jest wykonywana podczas
"kompilacji".
.IP "\fBlimits\fR"
Wypisuje lokalne ograniczenia narzucone przez lokalna wersj \fBbc\fR.
Jest to rozszerzenie.
.IP "\fBquit\fR"
Po odczycie instrukcji quit procesor \fBbc\fR koczy prac, niezalenie od
tego, gdzie wystpia ta instrukcja. Na przykad, "if (0 == 1) quit"
spowoduje zakoczenie pracy \fBbc\fR.
.IP "\fBwarranty\fR"
Wypisuje dusz notk na temat gwarancji. Jest to rozszerzenie.
.SS FUNKCJE
Funkcje dostarczaj sposobu definiowania oblicze, ktre mog by wykonane
pniej. Funkcje w \fBbc\fR zawsze obliczaj warto i zwracaj j do
miejsca wywoania. Definicje funkcji s "dynamiczne" w tym sensie, e funkcja
pozostaje niezdefiniowana dopki na wejciu nie zostanie odczytana jej
definicja. Definicja ta jest nastpnie uywana dopki nie zostanie napotkana
inna definicja funkcji o tej samej nazwie. Wwczas nowa definicja zastpuje
starsz. Funkcja definiowana jest nastpujco:
.nf
.RS
\fBdefine \fInazwa \fB( \fIparametry \fB) { \fInowa_linia
\fI lista_auto lista_instrukcji \fB}\fR
.RE
.fi
Wywoanie funkcji jest po prostu wyraeniem postaci
"\fInazwa\fB(\fIparametry\fB)\fR".
.PP
Parametry s liczbami lub tablicami (rozszerzenie). W definicji funkcji
definiuje si rwnoczenie jest zero lub wicej jej parametrw przez podanie
ich nazw rozdzielonych przecinkami. Liczby s jedynymi parametrami wywoywanymi
przez warto. Tylko tablice s woane przez wskazanie zmiennej.
Tablice podawane
.\" Numbers are only call by value parameters. Arrays are only call by variable
s w definicji parametrw przy pomocy notacji "\fInazwa\fB[ ]\fR".
W wywoaniu
funkcji parametry rzeczywiste dla parametrw numerycznych s penymi
wyraeniami. Do przekazywania tablic uywana jest ta sama notacja, co przy
definiowaniu parametrw typu tablicowego. Dana tablica przesyana jest do
funkcji przez nazw (wskazanie). Poniewa definicje funkcji s dynamiczne,
w trakcie wywoywania funkcji sprawdzana jest liczba i typy jej parametrw.
Niezgodnoc liczby parametrw lub ich typw powoduje bd wykonania. Bd
wykonania pojawi si take przy prbie wywoania niezdefiniowanej funkcji.
.PP
\fIlista_auto\fR jest opcjonaln list zmiennych, do uytku "lokalnego".
A oto skadnia tej listy (jeli wystpuje): "\fBauto \fInazwa\fR, ... ;".
rednik jest opcjonalny. Kada z \fInazw\fR jest nazw auto-zmiennej.
Tablice mog by podane przy uyciu takiej samej skadni jak w parametrach.
Na pocztku funkcji wartoci tych zmiennych odkadane s na stosie.
Nastpnie zmienne s inicjowane zerami i uywane w czasie wykonywania
funkcji. Przy zakoczeniu funkcji zmienne s zdejmowane ze stosu,
tak e przywracana jest ich pierwotna warto (z momentu wywoania
funkcji). Parametry te s faktycznie zmiennymi auto inicjowanymi wartociami
dostarczonymi w wywoaniu funkcji. Zmienne typu auto rni si od
tradycyjnych zmiennych lokalnych, gdy jeli funkcja A woa funkcj B, to
B moe posugiwa si zmiennymi auto funkcji A po prostu uywajc tych
samych nazw, chyba e funkcja B traktuje je jako zmienne auto. Poniewa
zmienne auto i parametry skadowane s na stosie, to \fBbc\fR obsuguje
funkcje rekurencyjne.
.PP
Ciao funkcji jest list instrukcji \fBbc\fR. I znw, jak w czci
zasadniczej, instrukcje
oddzielane s rednikami lub znakami nowej linii. Instrukcje return (powrt)
powoduj zakoczenie funkcji i zwrcenie wartoci. Istniej dwa warianty
instrukcji return. Pierwsza posta, "\fBreturn\fR", zwraca warto 0 do
wywoujcego wyraenia. Druga posta, "\fBreturn ( \fIwyraenie \fB)\fR",
oblicza warto wyraenia i zwraca j do wyraenia woajcego. Kada funkcja
domylnie koczy si niejawn instrukcj "\fBreturn (0)\fR". Pozwala to na
funkcji na zakoczenie dziaania i zwrcenie zera bez jawnej instrukcji
powrotu.
.PP
Funkcje inaczej korzystaj ze zmiennej \fBibase\fR. Wszystkie stae
w obrbie ciaa funkcji bd konwertowane przy zastosowaniu
wartoci \fBibase\fR w momencie wywoania funkcji. Zmiany \fBibase\fR w czasie
wykonywania funkcji s ignorowane, z wyjtkiem funkcji standardowej
\fBread\fR, ktra zawsze do konwersji liczb wykorzystuje biec warto
\fBibase\fR.
.PP
Rozszerzeniem GNU \fBbc\fR jest nieco luniejszy format dla definicji.
Standard wymaga, by nawias otwierajcy znajdowa si w tym samym wierszu
co sowo kluczowe \fBdefine\fR, a wszystkie pozostae czci w kolejnych
wierszach. Opisywana tu wersja \fBbc\fR zezwala na dowoln ilo znakw
nowej linii przed i po nawiasie otwierajcym funkcji. Na przykad,
dozwolone s ponisze definicje.
.nf
.RS
\f(CW
define d (n) { return (2*n); }
define d (n)
{ return (2*n); }
\fR
.RE
.fi
.SS BIBLIOTEKA MATEMATYCZNA
.\" .SS MATH LIBRARY
Jeeli \fBbc\fR wywoywane jest z opcj \fB-l\fR, to wstpnie wczytywana
jest biblioteka matematyczna (math library), a domylna liczba cyfr
dziesitnych (scale) ustawiana jest na 20. Funkcje matematyczne obliczaj
swe wyniki z dokadnoci okrelon w momencie ich wywoania.
Bibilioteka matematyczna definiuje nastpujce funkcje:
.TP
.B "s(\fIx\fP)"
Sinus x, x podawany jest w radianach.
.TP
.B "c(\fIx\fP)"
Cosinus x, x w radianach.
.TP
.B "a(\fIx\fP)"
Arcus tangens x; arcus tangens zwraca radiany.
.TP
.B "l(\fIx\fP)"
Logarytm naturalny z x.
.TP
.B "e(\fIx\fP)"
Funkcja wykadnicza - e do potgi x.
.TP
.B "j(\fIn\fP,\fIx\fP)"
Funkcja Bessela rzdu n (cakowitego) z argumentem x.
.\" The bessel function of integer order n of x.
.SS PRZYKADY
W powoce /bin/sh, ponisze polecenie przypisuje warto liczby "Pi"
zmiennej rodowiska \fBpi\fR.
.RS
\f(CW
pi=$(echo "scale=10; 4*a(1)" | bc -l)
\fR
.RE
.PP
Poniej podano definicj funkcji wykadniczej uywanej w bibliotece
matematycznej. Funkcja ta napisana jest w \fBbc\fR standardu POSIX.
.nf
.RS
\f(CW
scale = 20
/* wykorzystuje fakt, e e^x = (e^(x/2))^2
Gdy x jest dostatecznie mae, uywamy szeregu:
e^x = 1 + x + x^2/2! + x^3/3! + ...
*/
define e(x) {
auto a, d, e, f, i, m, v, z
/* sprawdzenie znaku x */
if (x<0) {
m = 1
x = -x
}
/* przewidywane x */
z = scale;
scale = 4 + z + .44*x;
while (x > 1) {
f += 1;
x /= 2;
}
/* inicjowanie zmiennych */
v = 1+x
a = x
d = 1
for (i=2; 1; i++) {
e = (a *= x) / (d *= i)
if (e == 0) {
if (f>0) while (f--) v = v*v;
scale = z
if (m) return (1/v);
return (v/1);
}
v += e
}
}
\fR
.RE
.fi
.PP
Poniszy kod posuguje si rozszerzonymi cechami \fBbc\fR do uzyskania
prostego programu liczcego salda ksieczki czekowej. Najlepiej byoby
zachowa go w pliku, tak by mg by wykorzystany wielokrotnie bez potrzeby
kadorazowego przepisywania.
.nf
.RS
\f(CW
scale=2
print "\enProgram ksieczki czekowej!\en"
print " Pamitaj, wpaty s transakcjami ujemnymi.\en"
print " Koniec - transakcja zerowa.\en\en"
print "Saldo pocztkowe? "; bal = read()
bal /= 1
print "\en"
while (1) {
"biece saldo = "; bal
"transakcja? "; trans = read()
if (trans == 0) break;
bal -= trans
bal /= 1
}
quit
\fR
.RE
.fi
.PP
Poniej zamieszczono definicj rekurencyjnej funkcji silni.
.nf
.RS
\f(CW
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
\fR
.RE
.fi
.SS OPCJE READLINE I LIBEDIT
GNU \fBbc\fR moe zosta skompilowany (poprzez opcj konfiguracji) tak, by
posugiwa si bibliotek GNU edytora wejcia o nazwie \fBreadline\fR
lub te bibliotek BSD \fBlibedit\fR.
Umoliwia to uytkownikowi edycj wierszy przed wysaniem ich
do \fBbc\fR. Pozwala te na wykorzystanie historii poprzednio wprowadzonych
wierszy. Przy wybraniu tej opcji \fBbc\fR posiada dodatkow zmienn
specjaln. Ta specjalna zmienna, \fBhistory\fR, przechowuje liczb
zachowywanych wierszy historii. Dla \fBreadline\fR, warto -1 oznacza, e
przechowywana jest nieograniczona liczba wierszy historii. Ustawienie
wartoci \fBhistory\fR na liczb dodatni ogranicza liczb przechowywanych
wierszy historii do podanej liczby. Warto zero wycza funkcj historii
wprowadzonych wierszy. Wartoci domyln jest 100. Wicej informacji
mona znale w podrcznikach uytkownika dla bibliotek GNU \fBreadline\fR
i \fBhistory\fR oraz BSD \fBlibedit\fR. Nie mona rwnoczenie wczy
zarwno \fBreadline\fR jak i \fBlibedit\fR.
.SS RÓŻNICE
Niniejsza wersja \fBbc\fR zostaa zbudowana w oparciu
o projekt POSIX P1003.2/D11
i zawiera kilka rnic i rozszerze w stosunku do tego dokumentu i
tradycyjnych realizacji.
Nie jest wykonana w tradycyjny sposb, wykorzystujcy polecenie \fBdc\fR(1).
Wersja ta jest pojedynczym procesem, analizujcym i uruchamiajcym kod
binarny bdcy tumaczeniem programu.
Istnieje "nieudokumentowana" opcja (-c) powodujca, e program wywietla kod
binarny na standardowym wyjciu zamiast wykonywania go. Uywana bya ona
gwnie do debuggowania analizatora skadni i przy przygotowaniu
biblioteki matematycznej.
.PP
Gwnym rdem rnic s rozszerzenia, w ktrych jaka cecha, moliwo
programu jest rozbudowana w celu dodania funkcjonalnoci, oraz dodatki, gdzie
dodano nowe moliwoci.
Poniej podano list rnic i rozszerze.
.IP "Zmienna rodowiska LANG"
Niniejsza wersja nie spenia standardu POSIX przetwarzania zmiennej
rodowiska LANG i wszystkich zmiennych rodowiska rozpoczynajcych si na
LC_.
.IP nazwy
Tradycyjny i POSIXowy \fBbc\fR posiadaj jednoliterowe nazwy funkcji,
zmiennych i tablic. Zostay one rozszerzone do nazw wieloznakowych,
rozpoczynajcych si liter i mogcych zawiera litery, cyfry i znaki
podkrelenia.
.IP acuchy
acuchy nie mog zawiera znakw NUL. POSIX stwierdza, e wszystkie znaki
musz by zawarte w acuchach.
.\" POSIX says all characters must be included in strings.
.IP last
POSIX \fBbc\fR nie posiada zmiennej \fBlast\fR. Niektre implementacje
\fBbc\fR uywaj kropki (.) w podobny sposb.
.IP porwnania
POSIX \fBbc\fR dopuszcza porwnania wycznie w instrukcjach if, while oraz
w drugim wyraeniu instrukcji for. Dodatkowo, w kadej z tych instrukcji
dopuszczalna jest tylko jedna operacja porwnania (relacji).
.IP "instrukcja if, klauzula else"
POSIX \fBbc\fR nie posiada klauzuli else.
.IP "instrukcja for"
POSIX \fBbc\fR wymaga by w instrukcji for wystpoway wszystkie wyraenia.
.IP "&&, ||, !"
POSIX \fBbc\fR nie posiada operatorw logicznych.
.IP "funkcja read"
POSIX \fBbc\fR nie posiada funkcji read.
.IP "instrukcja print"
POSIX \fBbc\fR nie posiada instrukcji print.
.IP "instrukcja continue"
POSIX \fBbc\fR nie posiada instrukcji continue.
.IP "instrukcja return"
POSIX \fBbc\fR wymaga nawiasw wok zwracanego wyraenia.
.IP "parametry tablicowe"
POSIX \fBbc\fR nie obsuguje (obecnie) w peni parametrw tablicowych.
Gramatyka POSIX zezwala na uycie tablic w definicjach funkcji, ale nie
zapewnia metody przekazania tablicy jako biecego parametru. (Jest to
najprawdopodobniej przeoczenie w zdefiniowanej gramatyce.) Tradycyjne
implementacje \fBbc\fR posiadaj jedynie wywoanie parametrw tablicowych
przez warto.
.\" have only call by value array parameters.
.IP "format funkcji"
POSIX \fBbc\fR wymaga, by nawias otwierajcy by w tym samym wierszu, co
sowo kluczowe \fBdefine\fR, za instrukcja \fBauto\fR w nastpnym wierszu.
.IP "=+, =-, =*, =/, =%, =^"
POSIX \fBbc\fR nie wymaga, by byy zdefiniowane powysze operatory
przypisania "starego typu". Niniejsza wersja zezwala na takie przypisania
w "starym stylu". Naley skorzysta z instrukcji \fBlimits\fP, by stwierdzi,
czy zainstalowana wersja je rozpoznaje. Jeeli obsuguje ona przypisania
w "starym stylu", to instrukcja "a =- 1" pomniejszy \fBa\fR o jeden zamiast
przypisa \fBa\fR warto -1.
.IP "spacje w liczbach"
Inne implementacje \fBbc\fR dopuszczaj wystpowanie spacji w liczbach.
Na przykad, "x=1 3" przypisze warto 13 zmiennej x. Ta sama instrukcja
spowoduje bd skadni w opisywanej tu wersji \fBbc\fR.
.IP "bdy i wykonanie"
Opisywana implementacja rni si od innych sposobem, w jaki wykonywany jest
kod w przypadku znalezienia w programie bdw skadniowych i innych.
W przypadku napotkania bdu w definicji funkcji, obsuga bdw prbuje
odnale pocztek instrukcji i kontynuowa analiz skadniow
funkcji.
.\" error recovery tries to find the beginning of a statement and continue to
.\" parse the function.
Po znalezieniu bdu w funkcji, nie jest ona moliwa do wywoania i staje
si niezdefiniowana. Bdy skadniowe w interaktywnym wykonywaniu kodu
uniewaniaj biecy blok wykonania. Blok wykonania jest zakoczony
kocem linii pojawiajcym si po penej sekwencji instrukcji.
Na przykad,
.RS
.RS
.nf
a = 1
b = 2
.fi
.RE
.RE
.RS
posiada dwa bloki wykonania a
.RS
.nf
{ a = 1
b = 2 }
.fi
.RE
ma jeden blok wykonania.
Kady z bdw wykonania przerywa wykonywanie biecego bloku wykonania.
Ostrzeenie w trakcie wykonywania nie przerywa biecego bloku.
.RE
.IP "Przerwania"
Podczas sesji interaktywnej sygna SIGINT (zwykle generowany przez znak
control-C z terminala) spowoduje przerwanie biecego bloku wykonywania.
Wywietli on bd wykonania ("runtime"), wskazujcy ktra funkcja zostaa
przerwana. Po wyczyszczeniu wszystkich struktur (runtime structures)
wykonania, zostanie wywietlony komunikat informujcy uytkownika, e
\fBbc\fR jest gotw do przyjmowania kolejnych danych. Wszystkie uprzednio
zdefiniowane funkcje pozostaj zdefiniowane, za wartoci wszystkich
zmiennych innych ni zmienne typu auto s wartociami sprzed przerwania.
Podczas procesu oczyszczania struktur danych usuwane s wszystkie zmienne
typu auto oraz parametry funkcji.
W czasie sesji nieinteraktywnej sygna SIGINT przerywa wykonanie caego
\fBbc\fR.
.SS OGRANICZENIA
Poniej podano obecne ograniczenia opisywanego procesora \fBbc\fR.
Niektre z nich mog by zmienione podczas instalacji.
Faktyczne ograniczenia mona sprawdzi za pomoc instrukcji \fBlimits\fP
(ograniczenia).
.IP BC_BASE_MAX
Maksymalna podstawa pozycyjnego ukadu, w ktrym wyprowadzane s wyniki
obecnie ustawiona jest na 999. Maksymaln podstaw ukadu wejciowego jest 16.
.IP BC_DIM_MAX
Obecnie ustawione jest arbitralne ograniczenie do 65535 (w wersji
rozpowszechnianej). Twoja instalacja moe by inna.
.IP BC_SCALE_MAX
Liczba cyfr po kropce dziesitnej ograniczona jest do INT_MAX cyfr. Take
liczba cyfr przed kropk dziesitn ograniczona jest do INT_MAX cyfr.
.IP BC_STRING_MAX
Maksymalnie w acuchu moe wystpi INT_MAX znakw.
.IP wykadnik
Warto wykadnika w operacji potgowania (^) ograniczona jest do LONG_MAX.
.ig
.IP mnoenie
Procedura mnoenia moe dawa nieprawidowe wyniki jeeli liczba posiada
wicej ni LONG_MAX / 90 cyfr ogem. Dla 32 bitowych dugich liczb
cakowitych (longint) jest to 23,860,929 cyfr.
.IP "rozmiar kodu"
Kada funkcja oraz program "gwny" nie mog przekroczy 16384 bajtw
skompilowanego kodu binarnego. Ograniczenie to (BC_MAX_SEGS) moe by atwo
zmienione, tak by uzyska wicej ni 16 segmentw 1024-bajtowych.
..
.IP "nazwy zmiennych"
Obecnie nie moe by wicej ni 32767 unikalnych nazw w kadym z rodzajw:
zmiennych prostych, tablic i funkcji.
.SH ZMIENNE RODOWISKA
\fBbc\fR przetwarza nastpujce zmienne rodowiska:
.TP
.B POSIXLY_CORRECT
To samo, co opcja \fB-s\fR. Tryb zgodnoci z POSIX.
.TP
.B BC_ENV_ARGS
Inny sposb przekazywania argumentw do \fBbc\fR. Format jest taki sam, jak
argumentw wiersza polece. Argumenty te przetwarzane s na pocztku, wic
pliki podane w argumentach rodowiska przetwarzane s przed plikami
podanymi jako argumenty wiersza polece. Umoliwia to uytkownikowi
ustawienie "standardowych" opcji i plikw, jakie bd przetwarzane przy
kadym wywoaniu \fBbc\fR. Pliki podane w zmiennych rodowiska zawieraj
zwykle definicje funkcji, ktre uytkownik chce mie zdefiniowane przy
kadym uruchomieniu \fBbc\fR.
.TP
.B BC_LINE_LENGTH
Powinna to by liczba cakowita (integer) podajca ilo znakw w wierszu
wynikowym. Obejmuje ona znaki odwrotnego ukonika i nowej linii dla dugich
liczb.
.ig
.SH PLIKI
W wikszoci instalacji \fBbc\fR jest cakowicie samowystarczalny
(self-contained). Tam, gdzie ma znaczenie rozmiar pliku wykonywalnego lub
kompilator C nie radzi sobie z bardzo dugimi acuchami znakowymi, \fBbc\fR
bdzie odczytywa standardow bibliotek matematyczn z pliku
\fI/usr/local/lib/libmath.b\fR. (Faktyczne jego pooenie moe by rne.
Moe to by \fI/lib/libmath.b\fR.)
..
.SH DIAGNOSTYKA
Jeeli ktry z plikw podanych w wierszu polece nie moe zosta otwarty
\fBbc\fR zgosi, e plik ten jest niedostpny i przerwie prac. Istniej te
komunikaty diagnostyczne kompilacji i wykonania, ktre powinny by
zrozumiae.
.\" self-explanatory.
.SH BDY
Obsuga bdw (error recovery) nie jest jeszcze bardzo dobra.
.PP
Bdy prosz zgasza (w jz.angielskim) na adres
.BR bug-bc@gnu.org .
Upewnij si, e pole tematu wiadomoci zawiera gdzie sowo ``bc''.
.SH AUTOR
.nf
Philip A. Nelson
phil@cs.wwu.edu
.fi
.SH PODZIKOWANIA
Autor chciaby podzikowa Steve'owi Sommars (Steve.Sommars@att.com) za
jego szerok pomoc w testowaniu tej implementacji. Podsun on wiele cennych
sugestii. Dziki jego zaangaowaniu jest to o wiele lepszy produkt.
.SH ZOBACZ TAKE
.BR dc (1),
.BR expr (1),
.BR awk (1)
|