Programowanie w systemie UNIX/bc: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Programowanie_w_systemie_UNIX/dc |
linki, interpunkcja, formatowanie |
||
Linia 1:
'''bc''' (
* operowanie liczbami w dowolnych systemach liczbowych (wejście możliwe w systemie maksymalnie szesnastkowym, wyjście w dowolnie dużym)
* operowanie liczbami dowolnej precyzji (zarówno przed, jak i po przecinku)
* wykonywanie skryptów
* wczytywanie danych z pliku lub standardowego wejścia. Pozwala to na użycie [[Programowanie_w_systemie_UNIX/Potok_(Unix)|potoku (
bc jest preprocesorem dla [[Programowanie_w_systemie_UNIX/dc|dc]]<ref>[http://www.basicallytech.com/blog/?/archives/23-command-line-calculations-using-bc.html command-line calculations using bc by Rob Newcater]</ref>▼
▲bc jest preprocesorem dla [[Programowanie_w_systemie_UNIX/dc|dc]]<ref>[http://www.basicallytech.com/blog/
=Podstawowe operacje=
==Uruchomianie==
Linia 14 ⟶ 12:
bc
Jest to podstawowy sposób uruchomienia. Standardowo liczba miejsc po przecinku (
Uruchomienie z opcją l powoduje
* załadowanie przy uruchomieniu biblioteki standardowej, zawierającą np. funkcje trygonometryczne
* ustawia liczbę miejsc po przecinku dla dzielenia
bc -l
Pełna składnia
bc [-hlwsqv] [długie_opcje] [plik...]
Linia 33 ⟶ 29:
==Kończenie pracy ==
W celu zakończenia pracy wpisujemy w bc
quit
albo sekwencje klawiszy
control-D
Linia 45 ⟶ 41:
===limits===
Za pomocą komendy
limits
sprawdzamy aktualne ustawienia
BC_BASE_MAX = 2147483647
Linia 58 ⟶ 52:
MAX Exponent = 9223372036854775807
Number of vars = 32767
===ibase i obase===
Są to 2 specjalne zmienne (
Najpierw sprawdźmy domyślne ustawienie
ibase
Linia 77 ⟶ 69:
===scale===
Możemy zmienić poprzez
* [[Programowanie w systemie UNIX/bc#Uruchomianie|uruchomienie]] (
* ręczne ustawienie
* ustawienie w pliku <code>.bashrc</code>
** w pliku .bashrc w katalogu domowym dodać <code>BC_ENV_ARGS=~/.bc</code>
** potem <code>export BC_ENV_ARGS</code>
** utworzyć plik <code>.bc</code> w katalogu domowym z jedną linią <code>scale=2
=== BC_LINE_LENGTH===
Długość linii wydruku jest określona przez zmienną BC_LINE_LENGTH. Standardowo zmienna nie jest określona.
Przykład
echo "scale=100;last=10;8/(1+(1/3))" | bc
powoduje
<pre>
Linia 100 ⟶ 92:
</pre>
W celu zmiany tego zachowania
export BC_LINE_LENGTH=105
i ponownie
echo "scale=100;last=10;8/(1+(1/3))"|bc▼
▲echo "scale=100;last=10;8/(1+(1/3))"|bc
▲otrzymujemy :
6.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
=== BC_ENV_ARGS===
Linia 118 ⟶ 106:
==Interaktywny==
===bc===
Uruchamiamy bc poprzez wpisanie
bc
otrzymujemy
bc 1.06.95
Linia 129 ⟶ 117:
For details type `warranty'.
Przykładowe obliczenie
2^5-1
i wynik
31
Linia 148 ⟶ 136:
For details type `warranty'.
Sprawdzamy
scale
wynik
20
Wprowadzamy obliczenia
<pre>
33877456965431938318210482471113262183356704085033125021829876006886584214655562
Linia 168 ⟶ 156:
.14285714285714285714
Zwiększamy dokładność
scale=300
Ponownie obliczamy
<pre>
33877456965431938318210482471113262183356704085033125021829876006886584214655562
Linia 179 ⟶ 167:
</pre>
Wynik
<pre>
.1428571428571428571428571428571428571428571428571428571428571428571
Linia 190 ⟶ 178:
===z poziomu bash'a===
Z poziomu bash'a przesyłamy dane do bc
echo '57+43' | bc
otrzymujemy wynik
100
lub inny sposób
bc <<< 56.8+77.7
otrzymujemy
134.5
Inny przykład
bc -l <<< '10.5 / 1'
Linia 213 ⟶ 199:
Inna metoda
cru=$(echo $center_im+$r | bc -l)
Linia 219 ⟶ 205:
===Bash'a===
Skrypt Bash'a wysyła dane do bc. Odbiera wyniki i zapisuje je do zmiennych (
<pre>
#!/bin/bash
Linia 240 ⟶ 226:
==Podstawowe działania==
===Kolejność wykonywania działań===
1/3*2
.66666666666666666666
Linia 247 ⟶ 231:
.16666666666666666666
Komentarz dzielenie i mnożenia mają ten sam poziom<ref>[http://www.gnu.org/software/bc/manual/html_node/bc_13.html bc manual
Może to powodować błąd w następującej sytuacji
1/1*10^-6
Linia 260 ⟶ 244:
echo 'scale=25;57/43' | bc
wynik
1.3255813953488372093023255
Linia 267 ⟶ 251:
====Zmiana e na 10====
Jak przekształcić <code>1.0e-2</code> na <code>1.0*10^-2
radius="1.0e-2.0"
Linia 273 ⟶ 257:
echo $rim
wynik
1.0*10^-2.0
====zmiana
Przekształcamy dziesiętną
$ echo 'obase=2;12' | bc
otrzymujemy
1100
====zmiana typu====
Zmiennoprzecinkowa do całkowitej (
echo '(4.2-1.3) / 1' | bc
wynik
2
Linia 301 ⟶ 283:
=Pomoc=
<b>Podręcznik offline</b><ref>[[w:man (Unix)|man (Unix)]]</ref> w aktualnej wersji po polsku (
man bc
lub
info bc
Zamykamy podręcznik klawiszem <code>q</code>.
Pomoc online jest zwykle nieaktualna <ref>[http://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html bc doc at opengroup]</ref>
<b>Wersja
bc -v
otrzymujemy
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
Podobna informacja jest na 1 stronie podręcznika
WERSJA Niniejszy podręcznik opisuje GNU bc w wersji 1.06.
=Źródła=
<references/>
|