İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

bcposix - Bulutta Çevrimiçi

Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında bcposix çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen bcposix komutudur.

Program:

ADI


bc - keyfi kesinlikli aritmetik dil

SİNOPSİS


bc [-l] [dosya...]

TANIM


The bc yardımcı program keyfi bir hassas hesap makinesi uygulayacaktır. Şuradan girdi alacaktır:
verilen herhangi bir dosya, ardından standart girdiden okuyun. Standart giriş ve standart ise
çıktısı bc bir terminale bağlanır, çağrılması bc olarak kabul edilecektir
interaktif, aşağıdaki bölümlerde açıklanan davranışsal kısıtlamalara neden olur.

SEÇENEKLER


The bc yardımcı program, POSIX.1‐2008'in Temel Tanımlar hacmine uygun olacaktır, Bölüm 12.2,
Yarar Sözdizimi Kuralları.

Aşağıdaki seçenek desteklenecektir:

-l (El harfi.) Matematik fonksiyonlarını tanımlayın ve sıfırlayın ölçek bunun yerine 20'ye
varsayılan sıfır; GENİŞLETİLMİŞ AÇIKLAMA bölümüne bakın.

İŞLENENLER


Aşağıdaki işlenen desteklenecektir:

dosya içeren bir metin dosyasının yol adı bc program ifadeleri. Nihayet dosyavar
okundu, bc standart girişi okuyacaktır.

STDIN


GİRİŞ DOSYALARI bölümüne bakın.

GİRİŞ DOSYALAR


Girdi dosyaları, bir dizi yorum, ifade ve
okundukça yürütülecek fonksiyon tanımları.

ÇEVRE DEĞİŞKENLER


Aşağıdaki ortam değişkenleri, aşağıdakilerin yürütülmesini etkiler: bc:

DİL Ayarlanmamış veya ayarlanmamış uluslararasılaştırma değişkenleri için varsayılan bir değer sağlayın.
boş. (Bkz. POSIX.1‐2008'in Temel Tanımlar cildi, Bölüm 8.2,
Uluslararasılaşma Değişkenler uluslararasılaşmanın önceliği için
yerel kategorilerin değerlerini belirlemek için kullanılan değişkenler.)

LC_ALL Boş olmayan bir dize değerine ayarlanırsa, diğer tüm değerlerin değerlerini geçersiz kılın
uluslararasılaştırma değişkenleri.

LC_CTYPE Metin verisi bayt dizilerinin yorumlanması için yerel ayarı belirleyin
karakter olarak (örneğin, çoklu bayt karakterlerin aksine tek bayt
argümanlar ve girdi dosyaları).

LC_MESSAGES
biçimini ve içeriğini etkilemek için kullanılması gereken yerel ayarı belirleyin.
standart hataya yazılan teşhis mesajları.

NLSPATH İşleme için mesaj kataloglarının yerini belirleyin. LC_MESSAGES.

ASENKRON ETKİNLİKLER


Varsayılan.

STDOUT


Çıktısı bc yardımcı program okunan program tarafından kontrol edilecek ve sıfırdan oluşacaktır.
veya atama olmadan yürütülen tüm ifadelerin değerini içeren daha fazla satır. bu
Çıktının yarıçapı ve kesinliği, obez ve ölçek
değişkenler; GENİŞLETİLMİŞ AÇIKLAMA bölümüne bakın.

STDER


Standart hata sadece teşhis mesajları için kullanılacaktır.

ÇIKTI DOSYALAR


Yok.

GENİŞLETİLMİŞ TANIM


Dilbilgisi
Bu bölümdeki dilbilgisi ve sonraki bölümdeki sözlük kuralları,
birlikte sözdizimini açıklayın bc programlar. Bu tarz için genel kurallar
gramer açıklanmıştır Bölüm 1.3, Dilbilgisi konvansiyonlar. Geçerli bir program olabilir
terminal olmayan sembol olarak temsil edilir program gramerde. Bu resmi sözdizimi
metin sözdizimi açıklamasına göre önceliklidir.

%jeton EOF YENİ HAT STRING MEKTUP NUMBER

% jeton MUL_OP
/* '*', '/', '%' */

% jeton ASSIGN_OP
/* '=', '+=', '−=', '*=', '/=', '%=', '^=' */

% jeton REL_OP
/* '==', '<=', '>=', '!=', '<', '>' */

% jeton INCR_DECR
/* '++', '−−' */

%token Ara Tanımla Çıkma Uzunluğu
/* 'tanımla', 'ara', 'çık', 'uzunluk' */

If while Sqrt için %token Dönüşü
/* 'dönüş', 'için', 'if', 'while', 'sqrt' */

%token Ölçek Ibase Obase Otomatik
/* 'ölçek', 'ibase', 'obase', 'otomatik' */

%programı başlat

%%

program : EOF
| input_item programı
;

input_item : noktalı virgül_listesi NEWLINE
| işlev
;

noktalı virgül_listesi : /* boş */
| Beyan
| noktalı virgül_listesi ';' Beyan
| noktalı virgül_listesi ';'
;

deyim_list : /* boş */
| Beyan
| deyim_list NEWLINE
| deyim_list NEWLINE deyimi
| deyim_listesi ';'
| deyim_listesi ';' Beyan
;

ifade : ifade
| SİCİM
| Kırmak
| Çıkış yapmak
| Dönüş
| Döndür '(' return_expression ')'
| '(' ifadesi ';' için
ilişkisel_ifade ';'
ifade ')' ifadesi
| if '(' ilişkisel_ifade ')' ifadesi
| '(' ilişkisel_ifade ')' ifadesi iken
| '{' deyim_listesi '}'
;

işlev : LETTER '(' opt_parameter_list ')' tanımlayın
'{' NEWLINE opt_auto_define_list
deyim_listesi '}'
;

opt_parameter_list : /* boş */
| parametre_listesi
;

parametre_listesi : HARF
| define_list ',' MEKTUP
;

opt_auto_define_list : /* boş */
| Otomatik tanımla_liste NEWLINE
| Otomatik tanımla_liste ';'
;

define_list : MEKTUP
| MEKTUP '[' ']'
| define_list ',' MEKTUP
| define_list ',' HARF '[' ']'
;

opt_argument_list : /* boş */
| argüman_listesi
;

argüman_listesi: ifade
| HARF '[' ']' ',' argüman_listesi
;

ilişkisel_ifade: ifade
| ifade REL_OP ifadesi
;

dönüş_ifadesi : /* boş */
| ifade
;

ifade: adlandırılmış_ifade
| NUMARA
| '(' ifade ')'
| MEKTUP '(' opt_argument_list ')'
| '-' ifadesi
| ifade '+' ifadesi
| ifade '-' ifadesi
| ifade MUL_OP ifadesi
| ifade '^' ifadesi
| INCR_DECR adlandırılmış ifade
| adlandırılmış_ifade INCR_DECR
| adlandırılmış_ifade ASSIGN_OP ifadesi
| Uzunluk '(' ifade ')'
| Sqrt '(' ifade ')'
| Ölçek '(' ifade ')'
;

adlandırılmış_ifade: MEKTUP
| HARF '[' ifade ']'
| Ölçek
| Ibaz
| oba
;

sözlük konvansiyonlar in bc
için sözlük kuralları bc programlar, önceki dilbilgisine göre,
aşağıdaki gibidir:

1. Belirtilmedikçe, bc mümkün olan en uzun belirteç veya sınırlayıcı başlangıcı tanıyacaktır
belirli bir noktada.

2. Bir yorum, iki bitişik karakterle başlayan herhangi bir karakterden oluşacaktır.
"/*" ve iki bitişik karakterin bir sonraki oluşumuyla sonlandırılır "*/".
Yorumların, sözcük belirteçlerini sınırlamak dışında hiçbir etkisi olmayacaktır.

3. belirteç olarak kabul edilecektir YENİ HAT.

4. jeton STRING bir dizi sabitini temsil edecektir; herhangi bir karakterden oluşacaktır
çift ​​tırnak karakteriyle başlayan ('''') ve başka bir olay tarafından sonlandırıldı
çift ​​tırnak karakterinin. Dizenin değeri, hepsinin sırasıdır.
iki çift alıntı karakteri arasında, ancak bu karakterler dahil değildir. Bütün karakterler
tam anlamıyla girdiden alınacaktır ve bir dize belirtmenin bir yolu yoktur
bir çift tırnak karakteri içerir. Her dizenin değerinin uzunluğu
{BC_STRING_MAX} bayt ile sınırlıdır.

5. Bir içinde görünüyorsa, sıradan bir karakter dışında hiçbir etkisi olmayacaktır.
STRING belirteç veya bunun dışında bir sözcük belirtecini sınırlamak için STRING.

6. Bir kombinasyonu karakter hemen ardından bir acak
aşağıdaki istisnalar dışında sözcük belirteçlerini sınırlamaktan başka bir etkisi yoktur:

* Karakter dizisi olarak yorumlanacaktır. "\ " in STRING Token kazanacaksınız.

* Çoklu hattın bir parçası olarak göz ardı edilecektir. NUMBER jeton.

7. jeton NUMBER sayısal bir sabiti temsil edecektir. tarafından kabul edilecektir.
aşağıdaki gramer:

NUMBER : tamsayı
| "." tamsayı
| tamsayı "."
| tamsayı "." tamsayı
;

tamsayı: rakam
| tam sayı
;

rakam : 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7
| 8 | 9 | bir | B | C | D | E | F
;

8. a'nın değeri NUMBER belirteç, tarafından belirtilen tabandaki bir sayı olarak yorumlanacaktır.
dahili kaydın değeri baz (Aşağıda açıklanan). Her biri basamak
karakterler burada listelenen sırada 0 ile 15 arasında bir değere sahip olacaktır ve
karakter, sayı tabanını temsil edecektir. davranış tanımsız ise
değerine eşit veya daha büyük rakamlar baz belirteçte görünür. Ancak, not
tek basamaklı değerlerin atanması istisnası baz ve obez kendileri, içinde
Operasyon in bc.

9. Aşağıdaki anahtar kelimeler jeton olarak kabul edilecektir:

Oto baz uzunluk dönüş süre
kırılma if obez ölçek
tanımlamak için çıkmak sqrt

10. Bir anahtar sözcük dışında herhangi bir yerde meydana gelen aşağıdaki karakterlerden herhangi biri,
belirteç olarak kabul edildi MEKTUP:

a b c d e f g h i j k l m n o p q r s t u v w x y z

11. Aşağıdaki tek karakterli ve iki karakterli diziler,
simge ASSIGN_OP:

= += -= *= /= %= ^=

12. Eğer bir '=' karakter, bir belirtecin başlangıcı olarak, ardından bir '-' ile karakter
araya giren sınırlayıcı yok, davranış tanımsız.

13. Aşağıdaki tek karakterler belirteç olarak kabul edilecektir. MUL_OP:

* / %

14. Aşağıdaki tek karakterli ve iki karakterli diziler,
simge REL_OP:

== <= >= != < >

15. Aşağıdaki iki karakterli diziler belirteç olarak kabul edilecektir. INCR_DECR:

++ -

16. Aşağıdaki tek karakterler, adları
karakter:

( ) , + - ; [ ] ^ { }

17. jeton EOF girişin sonuna ulaşıldığında döndürülür.

Operasyon in bc
Üç tür tanımlayıcı vardır: sıradan tanımlayıcılar, dizi tanımlayıcıları ve
işlev tanımlayıcıları. Her üç tür de tek küçük harften oluşur. Sıralamak
tanımlayıcılardan sonra köşeli parantezler ("[]"). Bir dizi abonesi gerekli
bir bağımsız değişken veya otomatik liste dışında. Diziler tek boyutludur ve en fazla
{BC_DIM_MAX} öğe. İndeksleme sıfırdan başlayacak, böylece bir dizi 0'dan indekslenecek
{BC_DIM_MAX}-1. Alt simgeler tamsayılara kısaltılacaktır. Uygulama şunları sağlayacaktır:
bu işlev tanımlayıcılarını, muhtemelen bağımsız değişkenleri içeren parantezler takip eder. bu
üç tür tanımlayıcı çakışmaz.

Aşağıdaki tablo, tüm öğelerin öncelik ve ilişkilendirilebilirlik kurallarını özetlemektedir.
operatörler. Aynı hattaki operatörler aynı önceliğe sahip olacaktır; sıralar sıralıdır
azalan öncelik

Tablo: Operatörler in bc

┌──────────────────────────────────────┐
KullanımBirleşim
├──────────────────────────────────────┤
│++, −− │ Yok │
│tekli − │ Yok │
│^ │ Sağdan sola │
│*, /, % │ Soldan sağa │
│+, ikili − │ Soldan sağa │
│=, +=, −=, *=, /=, %=, ^= │ Sağdan sola │
│==, <=, >=, !=, <, > │ Yok │
└──────────────────────────────────────┘
Her ifade veya adlandırılmış ifadenin bir ölçek, ondalık basamak sayısıdır
ifadenin kesirli kısmı olarak korunacaktır.

adlı ifade değerlerin saklandığı yerlerdir. Adlandırılmış ifadeler şu tarihte geçerli olacaktır:
bir ödevin sol tarafı. Adlandırılmış bir ifadenin değeri, depolanan değer olacaktır.
adlı yerde. Basit tanımlayıcılar ve dizi öğeleri, adlandırılmış ifadelerdir; onlar sahip
sıfır başlangıç ​​değeri ve sıfır başlangıç ​​ölçeği.

Dahili kayıtlar ölçek, baz, ve obez hepsi adlandırılmış ifadelerdir. ölçeği
bu kayıtlardan birinin adından oluşan ifade sıfır; atanan değerler
bu kayıtlardan herhangi birine, tamsayılara kısaltılır. bu ölçek kayıt şunları içerecektir
ifade ölçeğinin hesaplanmasında kullanılan global değer (aşağıda açıklandığı gibi). Değeri
kayıt ölçek 0 ≤ ile sınırlıdır ölçek ≤ {BC_SCALE_MAX} ve varsayılan bir değere sahip olacaktır
sıfır. bu baz ve obez kayıtlar, giriş ve çıkış sayı tabanıdır,
sırasıyla. Değeri baz aşağıdakilerle sınırlı olacaktır:

2 baz 16

Değeri obez aşağıdakilerle sınırlı olacaktır:

2 obez {BC_BASE_MAX}

Ne zaman baz or obez tek atanır basamak listedeki değer sözlük
konvansiyonlar in bc, değer onaltılık olarak kabul edilecektir. (Örneğin, baz=A kümeleri
akımdan bağımsız olarak on tabanına baz değer.) Aksi takdirde, davranış tanımsızdır.
değerinden büyük veya buna eşit rakamlar olduğunda baz girişte görünür. Her ikisi de baz
ve obez 10 başlangıç ​​değerlerine sahip olacaktır.

Dahili hesaplamalar, giriş ve
çıktı tabanları, belirtilen ondalık basamak sayısına. Kesin sonuç olmadığında
elde edildi (örneğin, ölçek=0; 3.2/1), sonuç kesilecektir.

tüm değerleri için obez POSIX.1‐2008'in bu cildinde belirtilen, bc sayısal çıktı verecek
aşağıdaki adımların her birini sırayla gerçekleştirerek değerler:

1. Değer sıfırdan küçükse, bir ('-') karakter çıktısı alınacaktır.

2. Sayısal değere bağlı olarak aşağıdakilerden biri verilir:

* Sayısal değerin mutlak değeri birden büyük veya bire eşitse,
değerin tamsayı kısmı, aşağıdakilere uygun bir dizi basamak olarak çıkarılacaktır.
obez (aşağıda açıklandığı gibi), önce en anlamlı rakam. En anlamlı
sıfırdan farklı bir rakam daha sonra çıkarılacak, ardından her biri art arda daha az
önemli rakam

* Sayısal değerin mutlak değeri birden küçük ancak
sıfır ve sayısal değerin ölçeği sıfırdan büyük, belirtilmemiş
0 karakterinin çıktı olup olmadığı.

* Sayısal değer sıfır ise 0 karakteri çıkacaktır.

3. Değerin ölçeği sıfırdan büyükse ve sayısal değer sıfır değilse,
karakter çıktısı alınacak, ardından aşağıdakilere uygun bir dizi rakam
obez (aşağıda açıklandığı gibi) kesirli bölümün en önemli bölümünü temsil eden
değerin bir parçası. Eğer s çıktı alınan değerin ölçeğini temsil eder,
rakam çıktısı olacaktır s if obez 10, küçük veya eşittir s if obez daha büyüktür
10'dan büyük veya ona eşit veya daha büyük s if obez 10'dan küçük. obez değerlerimiz
10 dışında, bu, kesinliği temsil etmek için gereken basamak sayısı olmalıdır.
10s.

İçin obez 2'den 16'ya kadar olan değerler, geçerli rakamlar ilk obez tek karakterlerden:

0 1 2 3 4 5 6 7 8 9 A B C D E F

sırasıyla sıfırdan 15'e kadar olan değerleri temsil eder.

16'dan büyük tabanlar için, her basamak ayrı bir çok basamaklı ondalık sayı olarak yazılmalıdır.
numara. En anlamlı kesirli basamak dışındaki her basamaktan önce bir
bekar . 17'den 100'e kadar olan bazlar için, bc iki basamaklı ondalık sayılar yazacaktır; için
101'den 1000'e kadar tabanlar, üç basamaklı ondalık diziler vb. Örneğin, ondalık
1024 tabanındaki 25 sayısı şu şekilde yazılır:

01 15 24

ve taban 125'te şu şekilde:

008 024

POSIX'te çok büyük sayılar satır başına 70 karakter olacak şekilde satırlara bölünecektir.
yerel ayar; diğer yerel ayarlar farklı karakter sınırlarında bölünebilir. olan çizgiler
devamı ile sona erecektir .

Bir işlev çağrısı, bir işlev adından ve ardından bir parantez içeren bir parantezden oluşacaktır.
- işlev bağımsız değişkenleri olan ayrılmış ifadeler listesi. Bütün bir dizi
bağımsız değişken olarak iletilen dizi adı ve ardından boş kare ile belirtilir
parantez. Tüm fonksiyon argümanları değere göre iletilecektir. Sonuç olarak, yapılan değişiklikler
biçimsel parametrelerin gerçek argümanlar üzerinde hiçbir etkisi olmayacaktır. eğer fonksiyon
gerçekleştirerek sona erer dönüş ifadesinde, fonksiyonun değeri, değer olacaktır.
parantez içindeki ifadenin dönüş ifade veya hayır ise sıfır olacaktır
ifadesi verilir veya yoksa dönüş ifadesi.

Sonucu sqrt(ifade) ifadenin karekökü olacaktır. Sonuç
en az anlamlı ondalık basamakta kesilecektir. Sonucun ölçeği
ifadenin ölçeği veya değeri olsun ölçek, hangisi daha büyükse.

Sonucu uzunluk(ifade) anlamlı ondalık basamakların toplam sayısı olacaktır
ifadede. Sonucun ölçeği sıfır olacaktır.

Sonucu ölçek(ifade) ifadesinin ölçeği olacaktır. ölçeği
sonuç sıfır olacaktır.

Sayısal bir sabit bir ifade olacaktır. Ölçek, hanelerin sayısı olacaktır.
sabiti temsil eden girişteki sayı tabanı noktasını veya taban noktası yoksa sıfırı takip edin
görüntülenir.

Sekans ( ifade ) ile aynı değer ve ölçekte bir ifade olacaktır.
ifade. Parantezler normal önceliği değiştirmek için kullanılabilir.

Birli ve ikili operatörlerin semantiği aşağıdaki gibidir:

-ifade
Sonuç negatif olacaktır ifade. Sonucun ölçeği
ölçeği olmak ifade.

Birli artırma ve eksiltme operatörleri, adlandırılmış olanın ölçeğini değiştirmeyecektir.
üzerinde çalıştıkları ifade. Sonucun ölçeği, bunun ölçeği olacaktır.
adlı ifade.

++adlandırılmış ifade
Adlandırılmış ifade birer birer artırılır. Sonuç değeri olacaktır
Artıştan sonra adlandırılmış ifade.

-adlandırılmış ifade
Adlandırılmış ifade bir azaltılır. Sonuç değeri olacaktır
azaltıldıktan sonra adlandırılmış ifade.

adlandırılmış ifade++
Adlandırılmış ifade birer birer artırılır. Sonuç değeri olacaktır
artırmadan önce adlandırılmış ifade.

adlandırılmış ifade-
Adlandırılmış ifade bir azaltılır. Sonuç değeri olacaktır
azaltmadan önce adlandırılmış ifade.

üs alma operatörü, ('^'), sağdan sola bağlanacaktır.

ifade^ifade
Sonuç ilk olacak ifade ikincinin gücüne yükseltilmiş
ifade. İkinci ifade bir tamsayı değilse, davranış tanımsızdır.
If a sol ifadenin ölçeğidir ve b hakkın mutlak değeridir
ifadesi, sonucun ölçeği şöyle olacaktır:

if b >= 0 mina * b, max(ölçek, A)) if b < 0 ölçek

çarpma operatörleri ('*', '/', '%') soldan sağa bağlanacaktır.

ifade*ifade
Sonuç, iki ifadenin ürünü olacaktır. Eğer a ve b ölçekler
iki ifade, ardından sonucun ölçeği şöyle olacaktır:

min(a+b,maks(ölçek,a,b))

ifade/ifade
Sonuç, iki ifadenin bölümü olacaktır. sonucun ölçeği
değeri olacaktır ölçek.

ifade%ifade
ifadeler için a ve b, a%b adımlara eşdeğer olarak değerlendirilecektir:

1. Hesaplama a/b mevcut ölçeğe.

2. Aşağıdakileri hesaplamak için sonucu kullanın:

a - (a / b) * b

ölçeklemek:

max(ölçek + ölçek(b), ölçek(a))

Sonucun ölçeği şöyle olacaktır:

max(ölçek + ölçek(b), ölçek(a))

Ne zaman ölçek sıfır, '%' operatörü matematiksel kalan operatörüdür.

katkı operatörleri ('+', '-') soldan sağa bağlanacaktır.

ifade+ifade
Sonuç, iki ifadenin toplamı olacaktır. Sonucun ölçeği
ifadelerin ölçeklerinin maksimumu.

ifade-ifade
Sonuç, iki ifadenin farkı olacaktır. sonucun ölçeği
ifadelerin ölçeklerinin maksimumu olacaktır.

atama operatörleri ('=', "+=", "-=", "*=", "/=", "%=", "^=") hakkını bağlar
ayrıldı.

adlandırılmış ifade=ifade
Bu ifade, sağdaki ifadenin değerinin atanmasıyla sonuçlanacaktır.
soldaki adlandırılmış ifadeye. Hem adlandırılmış ifadenin ölçeği hem de
sonuç ölçeği olacaktır ifade.

Bileşik atama formları:

adlandırılmış ifade <Şebeke>= ifade

şuna eşdeğer olacaktır:

adlandırılmış ifade=adlandırılmış ifade <Şebeke> ifade

bunun dışında adlandırılmış ifade sadece bir kez değerlendirilecektir.

Diğer tüm operatörlerin aksine, ilişkisel operatörler ('<', '>', "<=", ">=", "==", "!=")
yalnızca bir nesne olarak geçerli olacaktır if, süreveya içinde bir için ifadesi.

ifade1<ifade2
değeri ise ilişki doğru olacaktır ifade1 kesinlikle daha azdır
değeri ifade2.

ifade1>ifade2
değeri ise ilişki doğru olacaktır ifade1 kesinlikle daha büyüktür
değeri ifade2.

ifade1<=ifade2
değeri ise ilişki doğru olacaktır ifade1 küçük veya eşittir
değeri ifade2.

ifade1>=ifade2
değeri ise ilişki doğru olacaktır ifade1 büyük veya eşit
değerini ifade2.

ifade1==ifade2
değerlerinin olması durumunda ilişki doğru olacaktır. ifade1 ve ifade2 eşittir.

ifade1!=ifade2
değerlerinin olması durumunda ilişki doğru olacaktır. ifade1 ve ifade2 eşit değiller.

Yalnızca iki depolama sınıfı vardır bc: genel ve otomatik (yerel). Yalnızca tanımlayıcılar
bir işlev için yerel olan, ile bildirilmesi gerekir Oto emretmek. Argümanlar bir
işlev, işleve yerel olacaktır. Diğer tüm tanımlayıcıların genel olduğu varsayılır
ve tüm işlevler için kullanılabilir. Tüm tanımlayıcılar, genel ve yerel, başlangıç ​​değerlerine sahiptir:
sıfır. Otomatik olarak bildirilen tanımlayıcılar, işleve girişte tahsis edilecektir ve
fonksiyondan döndüğünde serbest bırakılır. Bu nedenle aralarındaki değerleri tutmazlar.
işlev çağrıları. Otomatik diziler, dizi adı ve ardından boş kare ile belirtilecektir.
parantez. Bir fonksiyona girildiğinde, parametre olarak görünen isimlerin eski değerleri
ve otomatik değişkenler olarak bir yığına itilecektir. Fonksiyon dönene kadar,
bu isimlere yapılan atıflar sadece yeni değerlere atıfta bulunacaktır.

Bu işlevden çağrılan diğer işlevlerden bu adlardan herhangi birine yapılan başvurular
ayrıca bu işlevlerden biri yerel bir işlev için aynı adı kullanana kadar yeni değere bakın.
değişkeni.

Bir ifade bir ifade olduğunda, ana operatör bir atama olmadığı sürece,
ifade, ifadenin değerini ve ardından bir .

Bir ifade bir dize olduğunda, ifadenin yürütülmesi, ifadenin değerini yazacaktır.
dize.

ile ayrılmış ifadeler veya karakterler yürütülecek
sırayla. etkileşimli bir çağrıda bc, her seferinde bir şu okundu
gramer üretimini karşılar:

girdi_öğesi : noktalı virgül_listesi YENİ HAT

oluşturan ifadelerin sıralı listesi noktalı virgül_listesi idam edilecek
derhal ve bu yürütme tarafından üretilen herhangi bir çıktı herhangi bir gecikme olmaksızın yazılacaktır.
tamponlama nedeniyle.

Bir de if Beyan (if(ilişki) ifade) ifade yürütülürse,
ilişki doğrudur.

The süre Beyan (süre(ilişki) ifade) içinde bir döngü uygular. ilişki is
test edildi; her seferinde ilişki doğrudur, ifade yürütülecek ve ilişki
tekrar test edildi. Ne zaman ilişki yanlışsa, yürütme bundan sonra devam edecek ifade.

A için Beyan(için(ifade; ilişki; ifade) ifade) ile aynı olacaktır:

ilk ifade
süre (ilişki) {
ifade
son ifade
}

Uygulama, her üç ifadenin de mevcut olmasını sağlamalıdır.

The kırılma beyanı feshe neden olacaktır için or süre ifadesi.

The Oto Beyan (Oto tanımlayıcı [,tanımlayıcı] ...) değerlerine neden olacaktır.
aşağı itilecek tanımlayıcılar. Tanımlayıcılar sıradan tanımlayıcılar veya dizi olabilir
tanımlayıcılar. Dizi tanımlayıcıları, dizi adı boş olarak izlenerek belirtilecektir.
köşeli parantez. Uygulama, Oto açıklama ilk
bir fonksiyon tanımındaki ifade.

A tanımlamak Beyan:

tanımlamak MEKTUP ( opt_parameter_list ) {
opt_auto_define_list
deyim_listesi
}

adlı bir işlevi tanımlar MEKTUP. adlı bir işlev varsa MEKTUP daha önce tanımlanmıştı,
tanımlamak ifadesi önceki tanımın yerini alacaktır. İfade:

MEKTUP ( opt_argument_list )

adlı işlevi çağıracak MEKTUP. sayısı ise davranış tanımsızdır.
çağrıdaki bağımsız değişkenler, tanımdaki parametre sayısıyla eşleşmiyor.
Fonksiyonlar, çağrılmadan önce tanımlanmalıdır. Bir işlev olarak kabul edilecektir
kendi bünyesinde tanımlandığı için özyinelemeli çağrılar geçerlidir. Sayısal sabitlerin değerleri
bir fonksiyon içinde, değeri tarafından belirtilen tabanda yorumlanmalıdır. baz
işlev çağrıldığında kaydolun.

The dönüş ifadeler (dönüş ve dönüş(ifade)) sona erdirilmesine neden olur
işlevi, otomatik değişkenlerinin ortaya çıkması ve işlevin sonucunun belirtilmesi.
İlk form şuna eşdeğer olacaktır: dönüş(0). Sonucun değeri ve ölçeği
işlev tarafından döndürülen, döndürülen ifadenin değeri ve ölçeği olacaktır.

The çıkmak Beyan (çıkmak) yürütmeyi durdurur bc programın bulunduğu noktada
deyimi, bir işlev tanımında veya bir if,
içinya da süre ifadesi.

Aşağıdaki işlevler, aşağıdaki durumlarda tanımlanmalıdır: -l seçenek belirtilir:

s( ifade )
Radyan cinsinden argüman sinüsü.

c( ifade )
Radyan cinsinden argümanın kosinüsü.

a( ifade )
Argümanın arktanjantı.

l( ifade )
Argümanın doğal logaritması.

e( ifade )
Argümanın üstel işlevi.

j( ifade, ifade )
Tamsayı mertebesinin Bessel fonksiyonu.

Bu işlevler tarafından döndürülen sonucun ölçeği, ölçek
fonksiyonun çağrıldığı anda kayıt olun. değeri ölçek bunlardan sonra kayıt ol
yerine getirilmesini tamamlayan işlevler, çağrıldıklarında sahip oldukları değerle aynı olacaktır.
Bu işlevlerden herhangi biri dışarıda bir argümanla çağrılırsa, davranış tanımsızdır.
matematiksel fonksiyonun alanı.

EXIT DURUMU


Aşağıdaki çıkış değerleri döndürülecektir:

0 Tüm girdi dosyaları başarıyla işlendi.

belirtilmemiş
Bir hata oluştu.

SONUÇLARI OF HATALAR


Varsa dosya işlenen belirtildi ve adlandırılmış dosyaya erişilemiyor, bc bir yazacak
standart hataya tanılama mesajı ve başka bir işlem yapmadan sonlandırın.

etkileşimli bir çağrıda bc, yardımcı program bir hata mesajı yazdırmalı ve kurtarmalı
girişteki herhangi bir hatayı takiben. Etkileşimli olmayan bir çağrıda bc, Geçersiz Giriş
tanımsız davranışa neden olur.

The takip etme bölümler vardır bilgilendirici.

BAŞVURUSU KULLANIM


Otomatik değişkenler bc C veya PL/1 ile tam olarak aynı şekilde çalışmaz.

Tarihsel nedenlerle, çıkış durumu bc olduğunu belirtmek için güvenilemez.
hata meydana geldi. Bir hatadan sonra sıfıra dönmek mümkündür. Öyleyse, bc olmalı
öncelikle etkileşimli kullanıcılar (hata mesajlarına tepki verebilen) veya uygulama tarafından kullanılır
döndürülen yanıtların hata mesajlarını içermediğini bir şekilde doğrulayabilen programlar.

The bc yardımcı program her zaman kullanır (".") bir sayı tabanını temsil edecek karakter,
geçerli yerel ayarın bir parçası olarak belirtilen herhangi bir ondalık nokta karakterinden bağımsız olarak. İçinde
C veya gibi diller awk, karakter program kaynağında kullanılır, bu nedenle
taşınabilir ve açık, yerel ayara özgü karakter ise giriş ve çıkışta kullanılır.
Çünkü kaynak ve girdi arasında bir ayrım yoktur. bc, bu düzenleme olmaz
mümkün olmak. Yerel ayara özgü karakteri kullanma bc'nin girişi belirsizliklere neden olur
dile; aşağıdaki örneği bir yerel ayarda düşünün olarak
ondalık nokta karakteri:

tanımlamak f(a,b) {
...
}
...

F 1,2,3)

Bu tür belirsizlikler nedeniyle, karakter girişte kullanılır. Giriş takibine sahip olmak
çıktıdan farklı sözleşmeler, boru hattı kullanımında veya
etkileşimli kullanım, bu nedenle çıktıda da kullanılır.

ÖRNEKLER


Kabukta, aşağıdaki ilk on basamağa yaklaşık bir değer atar: 'pi' için
değişken x:

x=$(yazdır "%s\n" 'ölçek = 10; 104348/33215' | M.Ö)

Aşağıdaki bc program aynı yaklaşımı yazdırır 'pi', bir etiketle, standarda göre
çıktı:

ölçek = 10
"pi eşittir "
104348 / 33215

Aşağıdaki, üstel değerin yaklaşık bir değerini hesaplamak için bir işlevi tanımlar.
işlev (böyle bir işlevin önceden tanımlı olduğuna dikkat edin, -l seçenek belirtilir):

ölçek = 20
tanımlamak eski){
Oto a, b, c, i, s
a = 1
b = 1
s = 1
için (i = 1; 1 == 1; ben++){
a = bir * x
b = ben
c = a / b
if (c == 0) {
İadeler)
}
s = s+c
}
}

Aşağıdaki, ilk on fonksiyonun üstel fonksiyonunun yaklaşık değerlerini yazdırır.
tamsayılar:

için (i = 1; i <= 10; ++ben) {
e(i)
}

GEREKÇESİ


The bc yardımcı program tarihsel olarak bir ön uç işlemci olarak uygulanır. dc; dc değildi
POSIX.1‐2008'in bu cildinin bir parçası olarak seçilmiştir çünkü bc daha fazla olduğu düşünülüyordu
sezgisel programatik arayüz. Uygulanan mevcut uygulamalar bc kullanma dc vardır
uyumlu olması bekleniyor.

Hata koşullarının çıkış durumu, çeşitli nedenlerle belirtilmeden bırakılmıştır:

* bc yardımcı program hem etkileşimli hem de etkileşimli olmayan durumlarda kullanılır. Farklı
çıkış kodları iki kullanım için uygun olabilir.

* Sıfırdan farklı bir çıkışın ne zaman verilmesi gerektiği belirsizdir; sıfıra bölme, tanımsız
işlevler ve sözdizimi hataları tüm olasılıklardır.

* Çıkış durumunun ne işe yaradığı belli değil.

* 4.3 BSD, System V ve Ninth Edition uygulamalarında, bc birlikte çalışır
ile dc. dc yardımcı program ebeveyndir, bc çocuktur. Bu temiz bir şekilde yapıldı
bitirmek bc if dc iptal edildi.

Sahip olma kararı bc erişilemeyen bir girdi dosyasıyla karşılaşıldığında çıkış,
buna inan bc file1 file2 en sık ne zaman kullanılır file1 veri/işlev içerir
bildirimler/başlatmalar. sahip olmak bc eksik önkoşul dosyalarıyla devam et
muhtemelen kullanışlı değil. HATALARIN SONUÇLARI bölümünde, bc
herhangi birini açmadan önce tüm dosyalarını erişilebilirlik açısından kontrol etmelidir.

tarafından kabul edilen dilin uygunluğu konusunda hatırı sayılır bir tartışma vardı. bc.
Birkaç gözden geçiren, C dilinin saf bir alt kümesini veya bazı değişiklikleri görmeyi tercih etti.
dili C ile daha uyumlu hale getirmek için. bc dilin bazı belirgin özellikleri vardır
C ile benzerlikler, hiçbir zaman C'nin herhangi bir sürümüyle uyumlu olduğunu iddia etmemiştir.
C'nin bir alt kümesi için yorumlayıcı çok değerli bir yardımcı program olabilir ve potansiyel olarak
yapmak bc modası geçmiş. Bununla birlikte, tarihsel uygulamada böyle bir fayda bilinmemektedir ve öyle de değildi.
Bu tür bir dil ve yardımcı programı tanımlamak için POSIX.1‐2008'in bu cildi kapsamında. Eğer
ve tanımlandıklarında, bunları gelecekteki bir sürüme dahil etmek uygun olabilir.
bu standart. Bu, aşağıdaki alternatifleri bıraktı:

1. Herhangi bir hesap makinesi dilini POSIX.1‐2008'in bu cildinden hariç tutun.

Standart geliştiricilerin fikir birliği, basit bir programlı hesap makinesinin
dil, hem uygulamalar hem de etkileşimli kullanıcılar için çok kullanışlıdır. Tek
Herhangi bir hesap makinesini hariç tutma argümanları, eğer ve ne zaman olursa olsun eski hale geleceğiydi.
C uyumlu bir tane ortaya çıktı veya yokluğun gelişimini teşvik edeceği
böyle bir C uyumlu olanı. Bu argümanlar toplumun ihtiyaçlarını yeterince karşılamadı.
mevcut uygulama geliştiricileri.

2. Tarihi standartlaştırın dc, muhtemelen küçük değişikliklerle.

Standart geliştiricilerin fikir birliği şuydu: dc temelde daha az kullanılabilir
dil ve bunun sorunundan kaçınmak için çok ağır bir ceza olacağını
C'ye benzer, ancak C ile uyumsuzdur.

3. Tarihi standartlaştırın bc, muhtemelen küçük değişikliklerle.

Alınan yaklaşım buydu. Dili değiştirme taraftarlarının çoğu,
C ile uyumsuzlukların çoğu veya tamamı giderilene kadar karşılandı.
En çok arzu edilen değişikliklerin çoğu tarihsel olarak kırılmaya neden olacağından
uygulamalar ve tarihsel uygulamalarda önemli değişiklikler gerektirir,
neredeyse hiç değişiklik yapılmadı. Yapılan tek önemli değişiklik,
tarihin yerini alması bc atama operatörleri "=+", ve benzeri ile
daha modern "+=", ve benzeri. Daha eski sürümler temel olarak kabul edilir
gibi kullanımlardaki sözcüksel belirsizlik nedeniyle kusurlu a=-1.

Uygulamaların gördükleri gibi geriye dönük uyumlulukla başa çıkmasına izin vermek için
uygun, bu belirsiz yapının davranışı tanımsız hale getirildi. (En az üç
uygulamaların bu değişikliği desteklediği zaten biliniyor, bu nedenle
dahil olan değişiklik büyük olmamalıdır.)

The '%' operatörü, matematiksel olarak kalan operatör olduğunda ölçek sıfır. Davranış
diğer değerler için bu operatörün ölçek tarihsel uygulamalarından bc, ve
sezgisel olmamasına rağmen tarihsel uygulamalar uğruna korunmuştur.
doğa.

Tarihsel uygulamalar izin ayarı baz ve obez daha geniş bir değer aralığına
Bu, 2'den küçük olan ve yeterince yararlı görülmeyen değerleri içerir.
standartlaştırın. Bu uygulamalar, girdilerin değerleri için doğru şekilde yorumlanmaz. baz
16'dan büyüktür. Bunun nedeni, sayısal sabitlerin sözdizimsel olarak tanınmasıdır,
POSIX.1‐2008'in bu cildinde açıklandığı gibi, sözcüksel olarak değil. Onlar inşa edilmiştir
tek onaltılık basamakların sözcük belirteçleri ve karakterler. Dan beri
belirteçler arasındaki karakterler sözdizimsel düzeyde görünmez,
Üst tabanlarda kullanılan çok basamaklı “rakamları” doğru tanır. yeteneği
bu temellerdeki girdiyi tanımak, bunların değiştirilmesini gerektirecek kadar yararlı görülmedi.
uygulamalar. Sözdizimsel düzeyde sayısal sabitlerin tanınmasının
etkilemediği için POSIX.1‐2008'in bu cildine uygunlukla ilgili bir sorun değildir.
uyumlu uygulamaların davranışı (ve doğru bc programlar). Tarihsel uygulamalar
ayrıca tüm rakamlarla girişi kabul et '0'-'9' ve 'A',-'F' değerinden bağımsız olarak
baz; değerinden büyük veya ona eşit olan basamaklar baz gerçekten uygun değil,
göründükleri zaman davranış, genel durum dışında tanımsızdır:

ibase=8;
/* süreci in sekizli tabanı. */
...
ibase=A
/* Restore ondalık tabanı. */

Bazı tarihsel uygulamalarda, yazılacak ifade başlatılmamışsa
dizi öğesi, önde gelen ve/veya en fazla dört önde gelen 0 karakter çıktısı alınabilir
sıfırdan önce. Bu davranış bir hata olarak kabul edilir; herhangi birinin olması pek olası değil
şu anda uyumlu uygulama aşağıdakilere dayanmaktadır:

kaçırmak 'b[3]' | bc

00000 yerine 0 döndürüyor.

Bir tabanda belirli bir değer için çıkarılacak kesirli basamak sayısının tam hesaplanması
10 dışındakiler hesaplama açısından pahalı olabilir. Tarihsel uygulamalar daha hızlı kullanır
yaklaşımdır ve buna izin verilir. Gereksinimlerin yalnızca değerleri için geçerli olduğunu unutmayın.
obez POSIX.1‐2008'in bu cildinin (özellikle,
bir uygulama bunları bir uzantı olarak destekliyorsa, 1, 0 veya negatif tabanlara değil).

Tarihsel uygulamaları bc dizi parametrelerinin son olarak iletilmesine izin vermedi
bir fonksiyona parametre. Bu kısıtlamayı kaldırmak için yeni uygulamalar teşvik edilir
gramer gerektirmese de.

GELECEK TARİFİ


Yok.

onworks.net hizmetlerini kullanarak bcposix'i çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

  • 1
    Libusb
    Libusb
    Kullanıcı alanını etkinleştirmek için kitaplık
    iletişim kurmak için uygulama programları
    USB cihazları. Kitle: Geliştiriciler, Son
    Kullanıcılar/Masaüstü. Programlama Dili: C.
    Kategoriler ...
    libusb'u indir
  • 2
    yudum
    yudum
    SWIG bir yazılım geliştirme aracıdır
    C ile yazılmış programları birbirine bağlayan ve
    Çeşitli yüksek seviyeli C++
    Programlama dilleri. SWIG ile birlikte kullanılır
    farklı...
    SWIG'i indirin
  • 3
    WooCommerce Nextjs Tepki Tepkisi
    WooCommerce Nextjs Tepki Tepkisi
    İle oluşturulmuş React WooCommerce teması
    Sonraki JS, Webpack, Babel, Node ve
    GraphQL ve Apollo kullanarak Express
    Müşteri. React'te WooCommerce Mağazası(
    içerir: Ürünler...
    WooCommerce Nextjs React Temasını İndirin
  • 4
    arşiv_repo
    arşiv_repo
    ArchLabs için paket deposu Bu bir
    ayrıca alınabilen uygulama
    itibaren
    https://sourceforge.net/projects/archlabs-repo/.
    OnWorks'te barındırılan...
    archlabs_repo'yu indirin
  • 5
    Zephyr Projesi
    Zephyr Projesi
    Zephyr Projesi yeni nesildir
    gerçek zamanlı işletim sistemi (RTOS)
    birden fazla donanımı destekler
    mimariler. Bir
    az yer kaplayan çekirdek...
    Zephyr Projesini İndirin
  • 6
    SCon'lar
    SCon'lar
    SCons bir yazılım oluşturma aracıdır
    bu daha üstün bir alternatif
    klasik "Yap" oluşturma aracı
    hepimiz biliyoruz ve seviyoruz. SCons (şimdiki değeri)
    uygulanmış...
    SCons'u İndirin
  • Daha fazla »

Linux komutları

Ad