InggrisPerancisSpanyol

Ad


favorit OnWorks

bc - Online di Awan

Jalankan bc di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows, atau emulator online MAC OS

Ini adalah perintah bc yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


bc - Bahasa kalkulator presisi arbitrer

SINTAKSIS


bc [ -hlwsqv ] [opsi panjang] [ fillet ... ]

DESKRIPSI


bc adalah bahasa yang mendukung angka presisi arbitrer dengan eksekusi interaktif
pernyataan. Ada beberapa kesamaan dalam sintaks untuk bahasa pemrograman C. A
perpustakaan matematika standar tersedia dengan opsi baris perintah. Jika diminta, perpustakaan matematika
didefinisikan sebelum memproses file apa pun. bc dimulai dengan memproses kode dari semua file
terdaftar pada baris perintah dalam urutan yang tercantum. Setelah semua file diproses, bc
membaca dari input standar. Semua kode dieksekusi saat dibaca. (Jika file berisi
perintah untuk menghentikan prosesor, bc tidak akan pernah membaca dari input standar.)

Versi bc berisi beberapa ekstensi di luar tradisional bc implementasi dan
standar konsep POSIX. Opsi baris perintah dapat menyebabkan ekstensi ini dicetak sebagai
peringatan atau ditolak. Dokumen ini menjelaskan bahasa yang diterima oleh ini
prosesor. Ekstensi akan diidentifikasi seperti itu.

PILIHAN
-h, --bantuan
Cetak penggunaan dan keluar.

-i, --interaktif
Paksa mode interaktif.

-l, --mathlib
Tentukan perpustakaan matematika standar.

-w, --peringatkan
Berikan peringatan untuk ekstensi ke POSIX bc.

-s, --standar
Proses dengan tepat POSIX bc bahasa.

-q, --tenang
Jangan mencetak sambutan GNU bc normal.

-v, --versi
Cetak nomor versi dan hak cipta dan keluar.

ANGKA
Elemen paling dasar dalam bc adalah nomornya. Angka adalah angka presisi yang berubah-ubah.
Ketepatan ini ada di bagian bilangan bulat dan bagian pecahan. Semua nomor adalah
diwakili secara internal dalam desimal dan semua perhitungan dilakukan dalam desimal. (Versi ini
memotong hasil dari operasi pembagian dan perkalian.) Ada dua atribut dari
bilangan, panjang dan skala. Panjangnya adalah jumlah total desimal penting
digit dalam angka dan skala adalah jumlah digit desimal setelah desimal
titik. Sebagai contoh:
.000001 memiliki panjang 6 dan skala 6.
1935.000 memiliki panjang 7 dan skala 3.

VARIABEL
Angka disimpan dalam dua jenis variabel, variabel sederhana dan array. Keduanya sederhana
variabel dan variabel array diberi nama. Nama dimulai dengan huruf diikuti dengan angka apa saja
dari huruf, angka dan garis bawah. Semua huruf harus huruf kecil. (Alfa-numerik penuh
nama adalah ekstensi. Di POSIX bc semua nama adalah satu huruf kecil.) Jenisnya
variabel jelas oleh konteksnya karena semua nama variabel array akan diikuti oleh
tanda kurung ([]).

Ada empat variabel khusus, skala, dasar, obses, dan terakhir. skala mendefinisikan bagaimana beberapa
operasi menggunakan angka setelah titik desimal. Nilai default dari skala adalah 0. dasar dari
dan gemuk menentukan basis konversi untuk angka input dan output. Default untuk keduanya
input dan output adalah basis 10. terakhir (perpanjangan) adalah variabel yang memiliki nilai
nomor cetak terakhir. Ini akan dibahas secara lebih rinci jika sesuai. Semua
variabel-variabel ini mungkin memiliki nilai yang ditetapkan untuk mereka serta digunakan dalam ekspresi.

KOMENTAR
Komentar di bc mulai dari karakter /* dan diakhiri dengan karakter */. Komentar boleh
mulai di mana saja dan muncul sebagai satu ruang di input. (Hal ini menyebabkan komentar untuk
membatasi item input lainnya. Misalnya, komentar tidak dapat ditemukan di tengah
nama variabel.) Komentar menyertakan baris baru (akhir baris) antara awal dan akhir
dari komentar.

Untuk mendukung penggunaan skrip untuk bc, komentar satu baris telah ditambahkan sebagai
perpanjangan. Komentar satu baris dimulai dari a # karakter dan berlanjut ke akhir berikutnya
garis. Karakter akhir baris bukan bagian dari komentar dan diproses secara normal.

EKSPRESI
Angka-angka dimanipulasi oleh ekspresi dan pernyataan. Karena bahasanya adalah
dirancang untuk menjadi interaktif, pernyataan dan ekspresi dieksekusi sesegera mungkin.
Tidak ada program "utama". Sebagai gantinya, kode dieksekusi saat ditemui. (Fungsi,
dibahas secara rinci nanti, didefinisikan ketika ditemui.)

Ekspresi sederhana hanyalah konstanta. bc mengubah konstanta menjadi desimal internal
angka menggunakan basis input saat ini, ditentukan oleh variabel dasar dari. (Ada sebuah
pengecualian dalam fungsi.) Nilai hukum dari dasar dari adalah 2 sampai 16. Menetapkan nilai
di luar kisaran ini untuk dasar dari akan menghasilkan nilai 2 atau 16. Nomor masukan mungkin berisi
karakter 0–9 dan A–F. (Catatan: Harus huruf kapital. Huruf kecil bisa berubah-ubah
nama.) Angka satu digit selalu memiliki nilai digit terlepas dari nilainya
of dasar dari. (yaitu A = 10.) Untuk nomor multi-digit, bc mengubah semua digit masukan lebih besar atau
sama dengan ibase dengan nilai dasar dari-1. Hal ini membuat nomor FFF selalu menjadi yang terbesar 3
nomor digit basis input.

Ekspresi penuh mirip dengan banyak bahasa tingkat tinggi lainnya. Karena hanya ada satu
jenis nomor, tidak ada aturan untuk pencampuran jenis. Sebaliknya, ada aturan tentang
skala ekspresi. Setiap ekspresi memiliki skala. Ini diturunkan dari skala
bilangan asli, operasi yang dilakukan dan dalam banyak kasus, nilai variabel
skala. Nilai hukum variabel skala adalah 0 hingga jumlah maksimum yang dapat diwakili oleh C
bilangan bulat.

Dalam deskripsi ekspresi hukum berikut, "expr" mengacu pada ekspresi lengkap
dan "var" mengacu pada variabel sederhana atau array. Sebuah variabel sederhana hanya
nama
dan variabel array ditentukan sebagai
nama[cepat]
Kecuali disebutkan secara khusus skala hasil adalah skala maksimum dari
ekspresi yang terlibat.

- expr Hasilnya adalah negasi dari ekspresi.

++ var Variabel bertambah satu dan nilai baru adalah hasil dari
ekspresi.

-- var Variabel dikurangi satu dan nilai baru adalah hasil dari
ekspresi.

var++
Hasil dari ekspresi adalah nilai variabel dan kemudian variabelnya adalah
bertambah satu.

var -- Hasil dari ekspresi adalah nilai dari variabel dan kemudian variabelnya adalah
dikurangi satu.

ekspr + ekspr
Hasil dari ekspresi adalah jumlah dari dua ekspresi.

expr - ekspr
Hasil dari ekspresi tersebut adalah selisih dari kedua ekspresi tersebut.

ekspr * ekspr
Hasil dari ekspresi adalah produk dari dua ekspresi.

ekspr / ekspr
Hasil dari ekspresi tersebut adalah hasil bagi dari kedua ekspresi tersebut. skala dari
hasilnya adalah nilai variabel skala.

ekspr % eksr
Hasil dari ekspresi adalah "sisa" dan dihitung sebagai berikut:
cara. Untuk menghitung a%b, a/b pertama dihitung ke skala angka. Hasil itu digunakan
untuk menghitung a-(a/b)*b ke skala maksimum skala+skala(b) dan skala(a).
If skala diatur ke nol dan kedua ekspresi adalah bilangan bulat, ekspresi ini adalah
fungsi sisa bilangan bulat.

ekspr ^ eksr
Hasil dari ekspresi adalah nilai yang pertama dinaikkan ke yang kedua. NS
ekspresi kedua harus bilangan bulat. (Jika ekspresi kedua bukan bilangan bulat,
peringatan dibuat dan ekspresi dipotong untuk mendapatkan nilai integer.)
skala hasilnya adalah skala jika eksponennya negatif. Jika eksponennya adalah
positif skala hasil adalah minimum dari skala pertama
ekspresi kali nilai eksponen dan maksimum skala dan skala
dari ekspresi pertama. (misalnya skala(a^b) = min(skala(a)*b, maks( skala,
scale(a))).) Perlu dicatat bahwa expr^0 akan selalu mengembalikan nilai 1.

( ekspr )
Ini mengubah prioritas standar untuk memaksa evaluasi ekspresi.

var = ekspr
Variabel diberi nilai ekspresi.

var = ekspr
Ini setara dengan "var = var expr" dengan pengecualian bahwa bagian "var"
dievaluasi hanya sekali. Ini dapat membuat perbedaan jika "var" adalah sebuah array.

Ekspresi relasional adalah jenis ekspresi khusus yang selalu bernilai 0 atau 1, 0
jika relasi salah dan 1 jika relasi benar. Ini mungkin muncul dalam hukum apa pun
ekspresi. (POSIX bc mensyaratkan bahwa ekspresi relasional digunakan hanya dalam if, while,
dan untuk pernyataan dan hanya satu tes relasional yang dapat dilakukan di dalamnya.)
operator

expr1 < expr2
Hasilnya adalah 1 jika expr1 benar-benar kurang dari expr2.

expr1 <= expr2
Hasilnya adalah 1 jika expr1 kurang dari atau sama dengan expr2.

expr1 > expr2
Hasilnya adalah 1 jika expr1 benar-benar lebih besar dari expr2.

ekspr1 >= ekspr2
Hasilnya adalah 1 jika expr1 lebih besar atau sama dengan expr2.

ekspr1 == ekspr2
Hasilnya adalah 1 jika expr1 sama dengan expr2.

ekspr1 != ekspr2
Hasilnya adalah 1 jika expr1 tidak sama dengan expr2.

Operasi Boolean juga legal. (POSIX bc TIDAK memiliki operasi boolean). NS
hasil dari semua operasi boolean adalah 0 dan 1 (untuk salah dan benar) seperti dalam relasional
ekspresi. Operator boolean adalah:

!expr Hasilnya adalah 1 jika expr adalah 0.

expr && expr
Hasilnya adalah 1 jika kedua ekspresi bukan nol.

ekstr || expr
Hasilnya adalah 1 jika salah satu ekspresi bukan nol.

Ekspresi didahulukan adalah sebagai berikut: (terendah ke tertinggi)
|| operator, asosiatif kiri
&& operator, asosiatif kiri
! operator, nonasosiatif
Operator relasional, asosiatif kiri
Operator penugasan, asosiatif kanan
+ dan - operator, asosiatif kiri
*, / dan % operator, asosiatif kiri
^ operator, asosiatif kanan
unary - operator, nonasosiatif
++ dan -- operator, nonasosiatif

Prioritas ini dipilih agar sesuai dengan POSIX bc program akan berjalan dengan benar. Ini
akan menyebabkan penggunaan operator relasional dan logis memiliki beberapa perilaku yang tidak biasa
ketika digunakan dengan ekspresi penugasan. Pertimbangkan ekspresi:
a = 3 < 5

Sebagian besar programmer C akan menganggap ini akan menetapkan hasil "3 < 5" (nilai 1) ke
variabel "a". Apa yang dilakukan ini? bc adalah menetapkan nilai 3 ke variabel "a" dan kemudian
bandingkan 3 sampai 5. Yang terbaik adalah menggunakan tanda kurung saat menggunakan operator relasional dan logis
dengan operator penugasan.

Ada beberapa ekspresi khusus lagi yang disediakan di bc. Ini ada hubungannya dengan
fungsi yang ditentukan pengguna dan fungsi standar. Mereka semua muncul sebagai "nama(parameter)".
Lihat bagian tentang fungsi untuk fungsi yang ditentukan pengguna. Fungsi standarnya adalah:

panjang (ekspresi)
Nilai fungsi panjang adalah banyaknya angka penting pada
ekspresi.

Baca ( )
Fungsi baca (ekstensi) akan membaca angka dari input standar,
terlepas dari di mana fungsi itu terjadi. Hati-hati, ini dapat menyebabkan masalah dengan
pencampuran data dan program dalam input standar. Penggunaan terbaik untuk fungsi ini
ada dalam program yang ditulis sebelumnya yang membutuhkan input dari pengguna, tetapi tidak pernah mengizinkan
kode program yang akan diinput dari pengguna. Nilai dari fungsi baca adalah
angka yang dibaca dari input standar menggunakan nilai variabel saat ini dasar dari
untuk basis konversi.

skala (ekspresi)
Nilai fungsi skala adalah jumlah digit setelah titik desimal dalam
ekspresi.

kuadrat ( ekspresi )
Nilai fungsi kuadrat adalah akar kuadrat dari ekspresi. jika
ekspresi negatif, kesalahan waktu proses dihasilkan.

PERNYATAAN
Pernyataan (seperti dalam kebanyakan bahasa aljabar) memberikan urutan ekspresi
evaluasi. Di dalam bc pernyataan dieksekusi "sesegera mungkin." Eksekusi terjadi ketika
baris baru di temui dan ada satu atau lebih pernyataan lengkap. Karena ini
eksekusi segera, baris baru sangat penting dalam bc. Sebenarnya, titik koma dan a
baris baru digunakan sebagai pemisah pernyataan. Baris baru yang tidak ditempatkan dengan benar akan menyebabkan
kesalahan sintaks. Karena baris baru adalah pemisah pernyataan, dimungkinkan untuk menyembunyikan baris baru
dengan menggunakan karakter garis miring terbalik. Urutannya "\ ", di mana apakah baris baru muncul?
untuk bc sebagai spasi bukan baris baru. Daftar pernyataan adalah serangkaian pernyataan
dipisahkan oleh titik koma dan baris baru. Berikut ini adalah daftar bc pernyataan dan apa
mereka melakukannya: (Hal-hal yang diapit tanda kurung ([]) adalah bagian opsional dari pernyataan.)

ekspresi
Pernyataan ini melakukan salah satu dari dua hal. Jika ekspresi dimulai dengan "
...", itu dianggap sebagai pernyataan tugas. Jika
ekspresi bukan pernyataan tugas, ekspresi dievaluasi dan dicetak
ke keluaran. Setelah nomor dicetak, baris baru dicetak. Sebagai contoh,
"a=1" adalah pernyataan penugasan dan "(a=1)" adalah ekspresi yang memiliki
penugasan. Semua nomor yang dicetak dicetak di dasar yang ditentukan oleh
variabel gemuk. Nilai hukum untuk gemuk adalah 2 sampai BC_BASE_MAX. (Lihat
bagian BATAS.) Untuk basis 2 hingga 16, metode penulisan bilangan yang biasa adalah
digunakan. Untuk basa lebih besar dari 16, bc menggunakan metode digit multi-karakter dari
mencetak angka di mana setiap digit dasar yang lebih tinggi dicetak sebagai angka dasar 10.
Digit multi-karakter dipisahkan oleh spasi. Setiap digit berisi nomor
karakter yang diperlukan untuk mewakili nilai sepuluh dasar "obase-1". Sejak angka
presisi sewenang-wenang, beberapa angka mungkin tidak dapat dicetak pada satu output
garis. Angka-angka panjang ini akan dibagi menjadi beberapa baris menggunakan "\" sebagai yang terakhir
karakter pada satu baris. Jumlah maksimum karakter yang dicetak per baris adalah 70. Karena
dengan sifat interaktif dari bc, mencetak nomor menyebabkan efek samping dari
menetapkan nilai yang dicetak ke variabel khusus terakhir. Ini memungkinkan pengguna untuk
memulihkan nilai terakhir yang dicetak tanpa harus mengetik ulang ekspresi yang dicetak
nomor. Menugaskan ke terakhir legal dan akan menimpa nilai cetak terakhir
dengan nilai yang diberikan. Nilai yang baru ditetapkan akan tetap sampai berikutnya
nomor dicetak atau nilai lain ditetapkan ke terakhir. (Beberapa instalasi mungkin
izinkan penggunaan titik tunggal (.) yang bukan bagian dari angka sebagai jarum pendek
notasi untuk terakhir.)

string String dicetak ke output. String dimulai dengan karakter tanda kutip ganda
dan berisi semua karakter hingga karakter tanda kutip ganda berikutnya. Semua karakter
diambil secara harfiah, termasuk baris baru apa pun. Tidak ada karakter baris baru yang dicetak setelahnya
string.

mencetak daftar
Pernyataan cetak (perpanjangan) menyediakan metode keluaran lain. Daftar"
adalah daftar string dan ekspresi yang dipisahkan dengan koma. Setiap string atau
ekspresi dicetak dalam urutan daftar. Tidak ada baris baru terminasi yang dicetak.
Ekspresi dievaluasi dan nilainya dicetak dan ditetapkan ke variabel
terakhir. String dalam pernyataan print dicetak ke output dan mungkin berisi
karakter spesial. Karakter khusus dimulai dengan karakter garis miring terbalik (\).
Karakter khusus yang dikenali oleh bc adalah "a" (peringatan atau bel), "b" (spasi mundur),
"f" (umpan formulir), "n" (baris baru), "r" (carriage return), "q" (kutipan ganda), "t"
(tab), dan "\" (garis miring terbalik). Karakter lain yang mengikuti garis miring terbalik akan menjadi
diabaikan.

{ daftar_pernyataan }
Ini adalah pernyataan majemuk. Ini memungkinkan beberapa pernyataan untuk dikelompokkan
bersama untuk dieksekusi.

if ( ekspresi ) pernyataan1 [lain pernyataan2]
Pernyataan if mengevaluasi ekspresi dan mengeksekusi pernyataan1 atau pernyataan2
tergantung pada nilai ekspresi. Jika ekspresi bukan nol,
pernyataan1 dijalankan. Jika pernyataan2 hadir dan nilai ekspresi
adalah 0, maka pernyataan2 dieksekusi. (Klausa lain adalah ekstensi.)

sementara (ekspresi) pernyataan
Pernyataan while akan mengeksekusi pernyataan sementara ekspresi bukan nol.
Ini mengevaluasi ekspresi sebelum setiap eksekusi pernyataan. Penghentian
loop disebabkan oleh nilai ekspresi nol atau eksekusi break
pernyataan.

untuk ( [ekspresi1] ; [ekspresi2] ; [ekspresi3]) pernyataan
Pernyataan for mengontrol eksekusi pernyataan yang berulang. Ekspresi1 adalah
dievaluasi sebelum loop. Expression2 dievaluasi sebelum setiap eksekusi dari
penyataan. Jika bukan nol, pernyataan tersebut dievaluasi. Jika nol, loop
dihentikan. Setelah setiap eksekusi pernyataan, ekspresi3 dievaluasi
sebelum evaluasi ulang ekspresi2. Jika ekspresi1 atau ekspresi3 tidak ada,
tidak ada yang dievaluasi pada saat mereka akan dievaluasi. Jika ekspresi2 adalah
hilang, itu sama dengan mengganti nilai 1 untuk ekspresi2. (Opsional
ekspresi adalah ekstensi. POSIX bc membutuhkan ketiga ekspresi.) The
berikut ini adalah kode yang setara untuk pernyataan for:
ekspresi1;
while (ekspresi2) {
penyataan;
ekspresi3;
}

istirahat Pernyataan ini menyebabkan keluar paksa dari pernyataan while terlampir terbaru atau
untuk pernyataan.

terus
Pernyataan lanjutkan (perpanjangan) menyebabkan penutup terbaru untuk
pernyataan untuk memulai iterasi berikutnya.

berhenti Pernyataan halt (ekstensi) adalah pernyataan yang dieksekusi yang menyebabkan bc
prosesor untuk berhenti hanya ketika dijalankan. Misalnya, "jika (0 == 1) halt" akan
bukan penyebab bc untuk mengakhiri karena halt tidak dieksekusi.

kembali Mengembalikan nilai 0 dari suatu fungsi. (Lihat bagian tentang fungsi.)

kembali ( ekspresi )
Mengembalikan nilai ekspresi dari suatu fungsi. (Lihat bagian tentang
fungsi.) Sebagai ekstensi, tanda kurung tidak diperlukan.

SEMU PERNYATAAN
Pernyataan-pernyataan ini bukanlah pernyataan dalam pengertian tradisional. Mereka tidak dieksekusi
pernyataan. Fungsi mereka dilakukan pada waktu "kompilasi".

batas Cetak batas lokal yang diberlakukan oleh versi lokal bc. Ini adalah ekstensi.

berhenti Ketika pernyataan berhenti dibaca, bc prosesor dihentikan, terlepas dari
di mana pernyataan berhenti ditemukan. Misalnya, "jika (0 == 1) berhenti" akan menyebabkan bc
untuk mengakhiri.

jaminan
Cetak pemberitahuan garansi yang lebih lama. Ini adalah ekstensi.

FUNGSI
Fungsi menyediakan metode untuk mendefinisikan komputasi yang dapat dieksekusi nanti.
Fungsi dalam bc selalu menghitung nilai dan mengembalikannya ke pemanggil. Definisi fungsi
adalah "dinamis" dalam arti bahwa suatu fungsi tidak terdefinisi sampai definisi ditemukan
di masukan. Definisi itu kemudian digunakan sampai definisi lain berfungsi untuk hal yang sama
nama ditemui. Definisi baru kemudian menggantikan definisi lama. Sebuah fungsi
didefinisikan sebagai berikut:
menetapkan nama ( parameter ) { garis baru
daftar_otomatis pernyataan_daftar }
Panggilan fungsi hanyalah ekspresi dari bentuk "nama(parameter)".

Parameter adalah angka atau larik (perpanjangan). Dalam definisi fungsi, nol atau lebih
parameter didefinisikan dengan mencantumkan nama mereka dipisahkan dengan koma. Semua parameter adalah
panggilan dengan parameter nilai. Array ditentukan dalam definisi parameter oleh
notasi "nama[]". Dalam pemanggilan fungsi, parameter aktual adalah ekspresi penuh untuk
parameter angka. Notasi yang sama digunakan untuk melewatkan array seperti untuk mendefinisikan array
parameter. Array bernama dilewatkan oleh nilai ke fungsi. Sejak fungsi
definisi bersifat dinamis, nomor dan tipe parameter diperiksa ketika suatu fungsi
ditelepon. Setiap ketidakcocokan dalam jumlah atau jenis parameter akan menyebabkan kesalahan runtime. A
kesalahan runtime juga akan terjadi untuk panggilan ke fungsi yang tidak ditentukan.

Grafik daftar_otomatis adalah daftar variabel opsional untuk penggunaan "lokal". Sintaks dari
daftar otomatis (jika ada) adalah "mobil nama, ... ;". (Titik koma adalah opsional.) Setiap nama
adalah nama variabel otomatis. Array dapat ditentukan dengan menggunakan notasi yang sama seperti
digunakan dalam parameter. Variabel-variabel ini memiliki nilainya didorong ke tumpukan di awal
fungsi. Variabel kemudian diinisialisasi ke nol dan digunakan di seluruh
eksekusi fungsi. Pada fungsi keluar, variabel-variabel ini muncul sehingga
nilai asli (pada saat pemanggilan fungsi) dari variabel-variabel ini dikembalikan. NS
parameter benar-benar variabel otomatis yang diinisialisasi ke nilai yang disediakan di
panggilan fungsi. Variabel otomatis berbeda dari variabel lokal tradisional karena if
fungsi A memanggil fungsi B, B dapat mengakses variabel otomatis fungsi A hanya dengan menggunakan
nama yang sama, kecuali fungsi B memanggilnya variabel otomatis. Karena fakta bahwa otomatis
variabel dan parameter didorong ke tumpukan, bc mendukung fungsi rekursif.

Badan fungsi adalah daftar dari bc pernyataan. Sekali lagi, pernyataan dipisahkan oleh
titik koma atau baris baru. Pernyataan kembali menyebabkan penghentian fungsi dan
kembalinya suatu nilai. Ada dua versi pernyataan return. Bentuk pertama,
"kembali", mengembalikan nilai 0 ke ekspresi panggilan. Bentuk kedua, "kembali (
ekspresi )", menghitung nilai ekspresi dan mengembalikan nilai itu ke panggilan
ekspresi. Ada tersirat"kembali (0)" di akhir setiap fungsi. Ini memungkinkan a
berfungsi untuk mengakhiri dan mengembalikan 0 tanpa pernyataan pengembalian eksplisit.

Fungsi juga mengubah penggunaan variabel dasar dari. Semua konstanta dalam badan fungsi
akan dikonversi menggunakan nilai dasar dari pada saat pemanggilan fungsi. Perubahan dari
dasar dari akan diabaikan selama eksekusi fungsi kecuali untuk standar
fungsi Baca baca, yang akan selalu menggunakan nilai saat ini dari dasar dari untuk konversi angka.

Beberapa ekstensi telah ditambahkan ke fungsi. Pertama, format definisi memiliki
telah sedikit santai. Standar mengharuskan kurung buka berada pada baris yang sama dengan
menetapkan kata kunci dan semua bagian lainnya harus berada di baris berikut. Versi ini bc akan
izinkan sejumlah baris baru sebelum dan sesudah kurung kurawal fungsi. Untuk
contoh, definisi berikut adalah hukum.
define d (n) { kembali (2*n); }
tentukan d (n)
{ kembali (2*n); }

Fungsi dapat didefinisikan sebagai membatalkan. Fungsi void tidak mengembalikan nilai dan dengan demikian mungkin tidak
digunakan di setiap tempat yang membutuhkan nilai. Fungsi void tidak menghasilkan output apa pun ketika
dipanggil dengan sendirinya pada saluran input. Kata kuncinya membatalkan ditempatkan di antara kata kunci
menetapkan dan nama fungsi. Sebagai contoh, perhatikan sesi berikut.
define py (y) { print "--->", y, "<---", "\n"; }
define void px (x) { print "--->", x, "<---", "\n"; }
py(1)
--->1<---
0
px(1)
--->1<---
Sejak py bukan fungsi batal, panggilan py(1) mencetak output yang diinginkan dan kemudian
mencetak baris kedua yang merupakan nilai fungsi. Karena nilai fungsi
yang tidak diberikan pernyataan pengembalian eksplisit adalah nol, nol dicetak. Untuk px(1),
tidak ada angka nol yang tercetak karena fungsi tersebut adalah fungsi batal.

Juga, panggilan dengan variabel untuk array telah ditambahkan. Untuk mendeklarasikan panggilan dengan array variabel,
deklarasi parameter array dalam definisi fungsi terlihat seperti "*nama[]"
panggilan ke fungsi tetap sama dengan panggilan dengan array nilai.

MATH PERPUSTAKAAN
If bc dipanggil dengan -l pilihan, perpustakaan matematika dimuat sebelumnya dan skala default adalah
diatur ke 20. Fungsi matematika akan menghitung hasilnya ke skala yang ditetapkan pada saat itu
dari panggilan mereka. Pustaka matematika mendefinisikan fungsi-fungsi berikut:

s (x) Sinus dari x, x dalam radian.

c (x) Kosinus dari x, x dalam radian.

Sebuah (x) Arctangent dari x, arctangent mengembalikan radian.

l (x) Logaritma natural dari x.

danx) Fungsi eksponensial menaikkan e ke nilai x.

J (n,x)
Fungsi Bessel dari orde bilangan bulat n dari x.

CONTOH
In / Bin / sh, berikut ini akan menetapkan nilai "pi" ke variabel shell pi.
pi=$(gema "skala=10; 4*a(1)" | bc -l)

Berikut ini adalah definisi fungsi eksponensial yang digunakan dalam library matematika.
Fungsi ini ditulis dalam POSIX bc.
skala = 20

/* Menggunakan fakta bahwa e^x = (e^(x/2))^2
Ketika x cukup kecil, kami menggunakan deret:
e^x = 1 + x + x^2/2! +x^3/3! + ...
*/

tentukan e(x) {
otomatis a, d, e, f, i, m, v, z

/* Periksa tanda x. */
jika (x<0) {
m=1
x = -x
}

/* Prasyarat x. */
z = skala;
skala = 4 + z + .44*x;
sementara (x > 1) {
f + = 1;
x /= 2;
}

/* Inisialisasi variabel. */
v = 1+x
sebuah = x
d = 1

untuk (i=2; 1; i++) {
e = (a *= x) / (d *= i)
jika (e == 0) {
if (f>0) while (f--) v = v*v;
skala = z
jika (m) kembali (1/v);
kembali (v/1);
}
v += e
}
}

Berikut ini adalah kode yang menggunakan fitur tambahan dari bc untuk mengimplementasikan program sederhana
untuk menghitung saldo buku cek. Program ini paling baik disimpan dalam file sehingga dapat
digunakan berkali-kali tanpa harus mengetik ulang setiap kali digunakan.
skala = 2
print "\nPeriksa program buku!\n"
print " Ingat, deposit adalah transaksi negatif.\n"
print " Keluar dengan 0 transaksi.\n\n"

print "Saldo awal?"; bal = baca()
bola /= 1
cetak "\n"
sementara (1) {
"saldo saat ini = "; bal
"transaksi? "; trans = baca()
jika (trans == 0) istirahat;
bal -= trans
bola /= 1
}
berhenti

Berikut ini adalah definisi dari fungsi faktorial rekursif.
tentukan f (x) {
jika (x <= 1) kembali (1);
kembali (f(x-1) * x);
}

BACAAN DAN LIBEDIT PILIHAN
GNU bc dapat dikompilasi (melalui opsi konfigurasi) untuk menggunakan GNU garis baca editor masukan
perpustakaan atau BSD bebas Perpustakaan. Ini memungkinkan pengguna untuk melakukan pengeditan baris sebelumnya
mengirim mereka ke bc. Ini juga memungkinkan riwayat baris sebelumnya yang diketik. Kapan ini
pilihan dipilih, bc memiliki satu variabel khusus lagi. Variabel khusus ini, sejarah is
jumlah baris sejarah dipertahankan. Untuk garis baca, nilai -1 berarti bahwa
jumlah garis sejarah yang tidak terbatas dipertahankan. Menetapkan nilai sejarah ke
angka positif membatasi jumlah baris sejarah ke nomor yang diberikan. Nilai 0
menonaktifkan fitur riwayat. Nilai default adalah 100. Untuk informasi lebih lanjut, baca
panduan pengguna untuk GNU garis baca, sejarah dan BSD bebas perpustakaan. Seseorang tidak dapat mengaktifkan
kedua garis baca dan bebas pada saat yang sama.

PERBEDAAN
Versi bc diimplementasikan dari draf POSIX P1003.2/D11 dan berisi beberapa
perbedaan dan perluasan relatif terhadap draf dan implementasi tradisional. Dia
tidak dilaksanakan dengan cara tradisional menggunakan dc(1). Versi ini adalah satu proses
yang mem-parsing dan menjalankan terjemahan kode byte dari program. Ada yang "tidak berdokumen"
opsi (-c) yang menyebabkan program mengeluarkan kode byte ke keluaran standar
dari menjalankannya. Itu terutama digunakan untuk men-debug parser dan menyiapkan matematika
Perpustakaan.

Sumber perbedaan utama adalah ekstensi, di mana fitur diperluas untuk menambahkan lebih banyak
fungsionalitas dan tambahan, di mana fitur baru ditambahkan. Berikut daftarnya
perbedaan dan perluasan.

lingkungan LAN
Versi ini tidak sesuai dengan standar POSIX dalam pemrosesan LANG
variabel lingkungan dan semua variabel lingkungan dimulai dengan LC_.

nama Tradisional dan POSIX bc memiliki nama huruf tunggal untuk fungsi, variabel dan
array. Mereka telah diperluas menjadi nama multi-karakter yang dimulai dengan a
huruf dan dapat berisi huruf, angka, dan karakter garis bawah.

String
String tidak boleh mengandung karakter NUL. POSIX mengatakan semua karakter harus
dimasukkan ke dalam string.

POSIX terakhir bc tidak punya terakhir variabel. Beberapa implementasi dari bc gunakan periode
(.) dengan cara yang sama.

perbandingan
POSIX bc memungkinkan perbandingan hanya dalam pernyataan if, pernyataan while, dan
ekspresi kedua dari pernyataan for. Juga, hanya satu operasi relasional yang
diperbolehkan dalam setiap pernyataan tersebut.

jika pernyataan, klausa lain
POSIX bc tidak memiliki klausa else.

untuk pernyataan
POSIX bc mengharuskan semua ekspresi hadir dalam pernyataan for.

&&, ||, !
POSIX bc tidak memiliki operator logika.

fungsi baca
POSIX bc tidak memiliki fungsi baca.

pernyataan cetak
POSIX bc tidak memiliki pernyataan cetak.

lanjutkan pernyataan
POSIX bc tidak memiliki pernyataan lanjutan.

pernyataan pengembalian
POSIX bc membutuhkan tanda kurung di sekitar ekspresi pengembalian.

parameter larik
POSIX bc tidak (saat ini) mendukung parameter array secara penuh. Tata bahasa POSIX
memungkinkan array dalam definisi fungsi, tetapi tidak menyediakan metode untuk menentukan
array sebagai parameter aktual. (Ini kemungkinan besar merupakan kelalaian dalam
tata bahasa.) Implementasi tradisional dari bc hanya memiliki panggilan dengan array nilai
parameter.

format fungsi
POSIX bc membutuhkan kurung kurawal pada baris yang sama dengan menetapkan kata kunci dan
mobil pernyataan pada baris berikutnya.

=+, =-, =*, =/, =%, =^
POSIX bc tidak memerlukan operator penugasan "gaya lama" ini untuk didefinisikan.
Versi ini memungkinkan penetapan "gaya lama" ini. Gunakan pernyataan limit untuk
lihat apakah versi yang diinstal mendukungnya. Jika memang mendukung "gaya lama"
operator penugasan, pernyataan "a =- 1" akan berkurang a dengan 1 bukannya
pengaturan a ke nilai -1.

spasi dalam angka
Implementasi lain dari bc memungkinkan spasi dalam angka. Misalnya, "x=1 3" akan
menetapkan nilai 13 ke variabel x. Pernyataan yang sama akan menyebabkan sintaks
kesalahan dalam versi ini bc.

kesalahan dan eksekusi
Implementasi ini bervariasi dari implementasi lain dalam hal kode apa yang akan
dieksekusi ketika sintaks dan kesalahan lain ditemukan dalam program. Jika kesalahan sintaks
ditemukan dalam definisi fungsi, pemulihan kesalahan mencoba menemukan awal a
pernyataan dan terus mengurai fungsi. Setelah kesalahan sintaks ditemukan di
fungsi, fungsi tersebut tidak akan dapat dipanggil dan menjadi tidak terdefinisi. Kesalahan sintaks
dalam kode eksekusi interaktif akan membatalkan blok eksekusi saat ini. NS
blok eksekusi diakhiri oleh akhir baris yang muncul setelah selesai
urutan pernyataan. Sebagai contoh,
a = 1
b = 2
memiliki dua blok eksekusi dan
{ sebuah = 1
b = 2}
memiliki satu blok eksekusi. Setiap kesalahan runtime akan menghentikan eksekusi saat ini
blok eksekusi. Peringatan runtime tidak akan menghentikan blok eksekusi saat ini.

Terganggu
Selama sesi interaktif, sinyal SIGINT (biasanya dihasilkan oleh kontrol-
karakter C dari terminal) akan menyebabkan eksekusi blok eksekusi saat ini
untuk diganggu. Ini akan menampilkan kesalahan "runtime" yang menunjukkan fungsi mana yang
terganggu. Setelah semua struktur runtime telah dibersihkan, sebuah pesan akan
dicetak untuk memberi tahu pengguna bahwa bc siap untuk lebih banyak masukan. Semua ditentukan sebelumnya
fungsi tetap ditentukan dan nilai semua variabel non-otomatis adalah nilai di
titik gangguan. Semua variabel otomatis dan parameter fungsi dihapus
selama proses pembersihan. Selama sesi non-interaktif, sinyal SIGINT
akan menghentikan seluruh proses bc.

BATAS
Berikut ini adalah batasan yang saat ini berlaku untuk ini bc prosesor. Beberapa dari mereka mungkin
telah diubah oleh instalasi. Gunakan pernyataan limit untuk melihat nilai sebenarnya.

BC_BASE_MAX
Basis keluaran maksimum saat ini diatur pada 999. Basis masukan maksimum adalah 16.

BC_DIM_MAX
Saat ini batas sewenang-wenang 65535 sebagai terdistribusi. Instalasi Anda
mungkin berbeda.

BC_SCALE_MAX
Jumlah digit setelah titik desimal dibatasi hingga INT_MAX digit. Juga,
jumlah digit sebelum titik desimal dibatasi hingga INT_MAX digit.

BC_STRING_MAX
Batas jumlah karakter dalam string adalah INT_MAX karakter.

eksponen
Nilai eksponen dalam operasi kenaikan (^) terbatas pada LONG_MAX.

nama variabel
Batas saat ini pada jumlah nama unik adalah 32767 untuk masing-masing sederhana
variabel, array, dan fungsi.

LINGKUNGAN VARIABEL


Variabel lingkungan berikut diproses oleh: bc:

POSIXLY_BENAR
Ini sama dengan -s .

BC_ENV_ARGS
Ini adalah mekanisme lain untuk mendapatkan argumen untuk bc. Formatnya sama dengan
argumen baris perintah. Argumen ini diproses terlebih dahulu, jadi file apa pun yang terdaftar
dalam argumen lingkungan diproses sebelum file argumen baris perintah apa pun.
Ini memungkinkan pengguna untuk mengatur opsi dan file "standar" untuk diproses di
setiap seruan bc. File-file dalam variabel lingkungan biasanya akan
berisi definisi fungsi untuk fungsi yang diinginkan pengguna didefinisikan setiap saat bc is
menjalankan.

BC_LINE_LENGTH
Ini harus berupa bilangan bulat yang menentukan jumlah karakter dalam baris keluaran untuk
angka. Ini termasuk karakter garis miring terbalik dan baris baru untuk angka panjang. Sebagai
ekstensi, nilai nol menonaktifkan fitur multi-baris. Nilai lainnya
variabel ini yang kurang dari 3 menetapkan panjang garis menjadi 70.

DIAGNOSTIK


Jika ada file pada baris perintah tidak dapat dibuka, bc akan melaporkan bahwa file tersebut adalah
tidak tersedia dan berhenti. Juga, ada diagnosa kompilasi dan run time yang seharusnya
menjadi cukup jelas.

Gunakan bc online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

  • 1
    Bootloader EFI semanggi
    Bootloader EFI semanggi
    Proyek telah pindah ke
    https://github.com/CloverHackyColor/CloverBootloader..
    Fitur: Boot macOS, Windows, dan Linux
    dalam UEFI atau mode lama di Mac atau PC dengan
    UE...
    Unduh bootloader Clover EFI
  • 2
    bersaturpms
    bersaturpms
    Bergabunglah dengan kami di Gitter!
    https://gitter.im/unitedrpms-people/Lobby
    Aktifkan repositori URPMS di . Anda
    sistem -
    https://github.com/UnitedRPMs/unitedrpms.github.io/bl...
    Unduh unitedrpms.dll
  • 3
    Tingkatkan Perpustakaan C++
    Tingkatkan Perpustakaan C++
    Boost menyediakan portabel gratis
    pustaka C++ peer-review. Itu
    penekanannya adalah pada perpustakaan portabel yang
    bekerja dengan baik dengan C++ Standard Library.
    Lihat http://www.bo...
    Unduh Boost C++ Libraries
  • 4
    VirtualGL
    VirtualGL
    VirtualGL mengalihkan perintah 3D dari a
    Aplikasi OpenGL Unix/Linux ke a
    GPU sisi server dan mengonversi
    merender gambar 3D menjadi aliran video
    dengan yang ...
    Unduh VirtualGL.dll
  • 5
    libusb
    libusb
    Perpustakaan untuk mengaktifkan ruang pengguna
    program aplikasi untuk berkomunikasi dengan
    perangkat USB. Pemirsa: Pengembang, Akhir
    Pengguna/Desktop. Bahasa Pemrograman:C.
    Kategori ...
    Unduh libusb.dll
  • 6
    menenggak
    menenggak
    SWIG adalah alat pengembangan perangkat lunak
    yang menghubungkan program yang ditulis dalam C dan
    C++ dengan berbagai level tinggi
    bahasa pemrograman. SWIG digunakan dengan
    berbeda...
    Unduh SWIG.dll
  • Lebih banyak lagi »

Perintah Linux

Ad