File: bc.1

package info (click to toggle)
manpages-pl 20050320-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 12,200 kB
  • ctags: 16
  • sloc: makefile: 1,454; perl: 477; sh: 316
file content (852 lines) | stat: -rw-r--r-- 37,933 bytes parent folder | download | duplicates (4)
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)