BC- (1) Halaman Manual

BC- (1) Halaman Manual

Nama

BC - bahasa kalkulator ketepatan sewenang -wenang

Sintaks

BC [ -HLWSQV ] [Long-options] [ Fail… ]

Versi

Lelaki ini Dokumen GNU BC Versi 1.06.

Penerangan

BC adalah bahasa yang menyokong nombor ketepatan sewenang -wenang dengan pelaksanaan interaktif pernyataan. Terdapat beberapa persamaan dalam sintaks ke bahasa pengaturcaraan C. Perpustakaan Matematik Standard boleh didapati dengan pilihan baris arahan. Sekiranya diminta, perpustakaan matematik ditakrifkan sebelum memproses sebarang fail. BC bermula dengan memproses kod dari semua fail yang disenaraikan di baris arahan dalam pesanan yang disenaraikan. Selepas semua fail telah diproses, BC dibaca dari input standard. Semua kod dilaksanakan seperti yang dibaca. (Sekiranya fail mengandungi arahan untuk menghentikan pemproses, BC tidak akan pernah membaca dari input standard.)

Versi ini BC mengandungi beberapa sambungan di luar tradisional BC pelaksanaan dan standard draf POSIX. Pilihan baris arahan boleh menyebabkan sambungan ini mencetak amaran atau ditolak. Dokumen ini menerangkan bahasa yang diterima oleh pemproses ini. Sambungan akan dikenal pasti seperti itu.

Pilihan

-H, -help
Cetak penggunaan dan keluar.
-Saya, -Interactive
Memaksa mod interaktif.
-L, -Mathlib
Tentukan Perpustakaan Matematik Standard.
-W, -warn
Beri amaran untuk sambungan ke POSIX BC.
-s, -tandar
Proses betul -betul posix BC bahasa.
-Q, -quiet
Jangan cetak selamat datang GNU BC biasa.
-v, -Versi
Cetak nombor versi dan hak cipta dan berhenti.

Nombor

Elemen paling asas dalam BC adalah nombor. Nombor adalah nombor ketepatan sewenang -wenang. Ketepatan ini berada di bahagian integer dan bahagian pecahan. Semua nombor diwakili secara dalaman dalam perpuluhan dan semua pengiraan dilakukan dalam perpuluhan. (Versi ini memangkas hasil daripada membahagikan dan membiak operasi.) Terdapat dua atribut nombor, panjang dan skala. Panjangnya ialah jumlah digit perpuluhan yang signifikan dalam bilangan dan skala adalah jumlah angka perpuluhan selepas titik perpuluhan. Sebagai contoh:

 .000001 mempunyai panjang 6 dan skala 6. 1935.000 mempunyai panjang 7 dan skala 3.

Pembolehubah

Nombor disimpan dalam dua jenis pembolehubah, pembolehubah mudah dan tatasusunan. Kedua -dua pembolehubah mudah dan pembolehubah array dinamakan. Nama bermula dengan surat yang diikuti dengan bilangan huruf, digit dan garis bawah. Semua huruf mestilah kes yang lebih rendah. (Nama-nama alfa penuh adalah lanjutan. Di POSIX BC Semua nama adalah satu huruf kes yang lebih rendah.) Jenis pembolehubah jelas dengan konteks kerana semua nama pembolehubah array akan diikuti dengan kurungan ([]).

Terdapat empat pemboleh ubah khas, skala, ibase, obase, dan terakhir. skala mentakrifkan bagaimana beberapa operasi menggunakan digit selepas titik perpuluhan. Nilai lalai skala adalah 0. ibase dan Obase Tentukan asas penukaran untuk nombor input dan output. Lalai untuk kedua -dua input dan output adalah asas 10. terakhir (pelanjutan) adalah pemboleh ubah yang mempunyai nilai nombor cetak terakhir. Ini akan dibincangkan secara terperinci jika sesuai. Semua pembolehubah ini mungkin mempunyai nilai yang diberikan kepada mereka serta digunakan dalam ekspresi.

Komen

Komen dalam BC Mulakan dengan watak /* dan berakhir dengan watak */. Komen boleh bermula di mana sahaja dan muncul sebagai satu ruang dalam input. (Ini menyebabkan komen untuk membatalkan item input lain. Contohnya, komen tidak dapat dijumpai di tengah -tengah nama yang berubah -ubah.) Komen termasuk mana -mana garis baru (akhir baris) antara permulaan dan akhir komen.

Untuk menyokong penggunaan skrip untuk BC, Satu komen baris telah ditambah sebagai lanjutan. Komen baris tunggal bermula pada a # watak dan terus ke hujung baris seterusnya. Akhir watak garis bukan sebahagian daripada komen dan diproses secara normal.

Ungkapan

Nombor dimanipulasi oleh ungkapan dan pernyataan. Oleh kerana bahasa itu direka untuk menjadi interaktif, pernyataan dan ekspresi dilaksanakan secepat mungkin. Tidak ada program "utama". Sebaliknya, kod dilaksanakan seperti yang dihadapi. (Fungsi, dibincangkan secara terperinci kemudian, ditakrifkan ketika ditemui.)

Ungkapan mudah hanya tetap. BC Menukar pemalar ke dalam nombor perpuluhan dalaman menggunakan asas input semasa, yang ditentukan oleh pembolehubah ibase. (Terdapat pengecualian dalam fungsi.) Nilai undang -undang bagi ibase adalah 2 hingga 16. Memberikan nilai di luar julat ini ke ibase akan menghasilkan nilai 2 atau 16. Nombor input mungkin mengandungi aksara 0-9 dan a-f. (Nota: Mereka mesti menjadi modal. Huruf kes yang lebih rendah adalah nama yang berubah -ubah.) Nombor digit tunggal selalu mempunyai nilai digit tanpa mengira nilai ibase. (i.e. A = 10.) Untuk nombor pelbagai angka, BC mengubah semua digit input lebih besar atau sama dengan ibase dengan nilai ibase-1. Ini menjadikan nombornya F F F Sentiasa menjadi nombor 3 digit terbesar dari asas input.

Ekspresi penuh serupa dengan banyak bahasa peringkat tinggi yang lain. Oleh kerana hanya ada satu jenis nombor, tidak ada peraturan untuk jenis pencampuran. Sebaliknya, terdapat peraturan mengenai skala ekspresi. Setiap ungkapan mempunyai skala. Ini diperoleh dari skala nombor asal, operasi yang dilakukan dan dalam banyak kes, nilai pembolehubah skala. Nilai undang -undang pembolehubah skala adalah 0 hingga bilangan maksimum yang boleh diwakili oleh integer c.

Dalam perihalan ekspresi undang -undang berikut, "expr" merujuk kepada ekspresi lengkap dan "var" merujuk kepada pembolehubah sederhana atau array. Pemboleh ubah sederhana hanya a

nama

dan pemboleh ubah array ditentukan sebagai

nama[expr]

Kecuali secara khusus menyebut skala hasilnya adalah skala maksimum ungkapan yang terlibat.

- expr
Hasilnya adalah penolakan ungkapan.
++ var
Pembolehubah ditingkatkan oleh satu dan nilai baru adalah hasil ungkapan.
- var
Pembolehubah diturunkan oleh satu dan nilai baru adalah hasil ungkapan.
var ++
Hasil ungkapan adalah nilai
pemboleh ubah dan kemudian pemboleh ubah ditingkatkan oleh satu.
var -
Hasil ungkapan adalah nilai pembolehubah dan kemudian pemboleh ubah diturunkan oleh satu.
expr + expr
Hasil ungkapan adalah jumlah dua ungkapan.
expr - expr
Hasil ungkapan adalah perbezaan dua ungkapan.
expr * expr
Hasil dari ungkapan adalah hasil dari dua ungkapan.
expr / expr
Hasil dari ungkapan adalah kuota dua ungkapan. Skala hasilnya ialah nilai pembolehubah skala.
expr % expr
Hasil ungkapan adalah "selebihnya" dan dikira dengan cara berikut. Untuk mengira%B, A/B pertama dikira untuk skala Digit. Hasilnya digunakan untuk mengira A- (A/B)*B ke skala maksimum skala+skala (b) dan skala (a). Jika skala ditetapkan kepada sifar dan kedua -dua ungkapan adalah bilangan bulat ungkapan ini adalah fungsi baki integer.
expr ^ expr
Hasil ungkapan adalah nilai yang pertama dibangkitkan ke tempat kedua. Ungkapan kedua mestilah integer. (Sekiranya ungkapan kedua bukan integer, amaran dihasilkan dan ekspresi dipotong untuk mendapatkan nilai integer.) Skala hasilnya adalah skala Sekiranya eksponen negatif. Sekiranya eksponen positif, skala hasilnya adalah minimum skala masa ekspresi pertama nilai eksponen dan maksimum skala dan skala ungkapan pertama. (e.g. skala (a^b) = min (skala (a)*b, max ( skala, skala (a))).) Harus diingat bahawa expr^0 akan selalu mengembalikan nilai 1.
(expr)
Ini mengubah keutamaan standard untuk memaksa penilaian ungkapan.
var = expr
Pemboleh ubah diberikan nilai ungkapan.
var = expr
Ini bersamaan dengan "var = var expr" dengan pengecualian bahawa bahagian "var" dinilai hanya sekali. Ini boleh membuat perbezaan jika "var" adalah array.

Ekspresi hubungan adalah jenis ungkapan khas yang selalu menilai ke 0 atau 1, 0 jika hubungannya palsu dan 1 jika hubungannya benar. Ini mungkin muncul dalam ungkapan undang -undang. (POSIX BC menghendaki ekspresi hubungan hanya digunakan dalam jika, sementara, dan untuk pernyataan dan hanya satu ujian relasi yang dapat dilakukan di dalamnya.) Pengendali hubungan adalah

expr1 < expr2
Hasilnya ialah 1 jika expr1 adalah kurang daripada expr2.
expr1 <= expr2
Hasilnya ialah 1 jika expr1 kurang daripada atau sama dengan expr2.
expr1> expr2
Hasilnya ialah 1 jika expr1 lebih besar daripada expr2.
expr1> = expr2
Hasilnya ialah 1 jika expr1 lebih besar daripada atau sama dengan expr2.
expr1 == expr2
Hasilnya ialah 1 jika expr1 sama dengan expr2.
expr1 != expr2
Hasilnya ialah 1 jika expr1 tidak sama dengan expr2.

Operasi Boolean juga sah. (POSIX BC tidak mempunyai operasi boolean). Hasil dari semua operasi Boolean adalah 0 dan 1 (untuk palsu dan benar) seperti dalam ekspresi hubungan. Pengendali Boolean adalah:

!expr
Hasilnya ialah 1 jika expr adalah 0.
expr && expr
Hasilnya ialah 1 jika kedua-dua ungkapan tidak sifar.
expr || expr
Hasilnya ialah 1 jika ada ungkapan bukan sifar.

Ekspresi keutamaan adalah seperti berikut: (terendah hingga tertinggi)

|| pengendali, pengendali bersekutu kiri & & kiri bersekutu ! pengendali, nonassociative
Pengendali relasi,
Pengendali Tugasan Bersekutu Kiri, Pengendali Bersekutu + dan - Pengendali,
pengendali bersekutu kiri *, / dan %, pengendali bersekutu kiri, bersekutu kanan
operator unary, nonassociative ++ dan - operator, nonassociative

Keutamaan ini dipilih supaya patuh posix BC program akan dijalankan dengan betul. Ini akan menyebabkan penggunaan pengendali hubungan dan logik mempunyai tingkah laku yang luar biasa apabila digunakan dengan ekspresi tugasan. Pertimbangkan ungkapan:

A = 3 < 5

Kebanyakan pengaturci C akan menganggap ini akan memberikan hasil "3 < 5” (the value 1) to the variable “a”. What this does in BC berikan nilai 3 kepada pembolehubah "A" dan kemudian bandingkan 3 hingga 5. Lebih baik menggunakan kurungan ketika menggunakan pengendali relasi dan logik dengan pengendali tugasan.

Terdapat beberapa ungkapan khas yang disediakan di BC. Ini mempunyai kaitan dengan fungsi yang ditetapkan pengguna dan fungsi standard. Mereka semua muncul sebagai "nama(parameter) ". Lihat bahagian mengenai fungsi untuk fungsi yang ditetapkan pengguna. Fungsi standard adalah:

panjang (ungkapan)
Nilai fungsi panjang adalah bilangan digit penting dalam ungkapan.
Baca ()
Fungsi baca (pelanjutan) akan membaca nombor dari input standard, tanpa mengira fungsi berlaku. Berhati -hati, ini boleh menyebabkan masalah dengan pencampuran data dan program dalam input standard. Penggunaan terbaik untuk fungsi ini adalah dalam program yang ditulis sebelumnya yang memerlukan input dari pengguna, tetapi tidak pernah membenarkan kod program menjadi input dari pengguna. Nilai fungsi baca adalah nombor yang dibaca dari input standard menggunakan nilai semasa pembolehubah ibase untuk asas penukaran.
skala (ungkapan)
Nilai fungsi skala adalah bilangan digit selepas titik perpuluhan dalam ungkapan.
sqrt (ungkapan)
Nilai fungsi sqrt adalah akar kuadrat ungkapan. Sekiranya ungkapannya negatif, ralat masa berjalan dihasilkan.

Pernyataan

Kenyataan (seperti dalam kebanyakan bahasa algebra) memberikan urutan penilaian ekspresi. Dalam BC pernyataan dilaksanakan "secepat mungkin."Pelaksanaan berlaku ketika garis baru yang ditemui dan ada satu atau lebih pernyataan lengkap. Oleh kerana pelaksanaan segera ini, garis baru sangat penting BC. Malah, kedua -dua titik koma dan garis baru digunakan sebagai pemisah penyataan. Newline yang diletakkan secara tidak wajar akan menyebabkan ralat sintaks. Kerana garis baru adalah pemisah penyataan, mungkin untuk menyembunyikan garis baru dengan menggunakan watak backslash. Urutan "\", di mana garis baru kelihatan BC sebagai ruang putih dan bukannya garis baru. Senarai pernyataan adalah satu siri pernyataan yang dipisahkan oleh titik koma dan garis baru. Berikut adalah senarai BC pernyataan dan apa yang mereka lakukan: (perkara yang tertutup dalam kurungan ([]) adalah bahagian pilihan pernyataan.)

ungkapan
Kenyataan ini melakukan salah satu daripada dua perkara. Sekiranya ungkapan bermula dengan ""..."", ia dianggap sebagai pernyataan tugasan. Sekiranya ungkapan bukan pernyataan tugasan, ungkapan itu dinilai dan dicetak ke output. Setelah nombor dicetak, garis baru dicetak. Sebagai contoh, ""a = 1"" adalah pernyataan tugasan dan ""(a = 1)"" adalah ungkapan yang mempunyai tugasan tertanam. Semua nombor yang dicetak dicetak di pangkalan yang ditentukan oleh pembolehubah Obase. Nilai undang -undang untuk Obase adalah 2 hingga bc_base_max. (Lihat had bahagian.) Untuk pangkalan 2 hingga 16, kaedah penulisan biasa digunakan. Untuk pangkalan lebih besar daripada 16, BC Menggunakan kaedah digit pelbagai aksara mencetak nombor di mana setiap digit asas yang lebih tinggi dicetak sebagai nombor 10 nombor. Digit pelbagai aksara dipisahkan oleh ruang. Setiap digit mengandungi bilangan aksara yang diperlukan untuk mewakili asas sepuluh nilai ""obase-1"". Oleh kerana nombor adalah ketepatan sewenang -wenangnya, beberapa nombor tidak boleh dicetak pada satu baris output. Nombor panjang ini akan dibahagikan kepada garis menggunakan ""\"" sebagai watak terakhir pada baris. Jumlah maksimum aksara yang dicetak setiap baris ialah 70. Kerana sifat interaktif BC, Mencetak nombor menyebabkan kesan sampingan memberikan nilai bercetak kepada pemboleh ubah khas terakhir. Ini membolehkan pengguna memulihkan nilai terakhir yang dicetak tanpa perlu mengulang semula ungkapan yang mencetak nombor. Menugaskan ke terakhir adalah sah dan akan menimpa nilai bercetak terakhir dengan nilai yang diberikan. Nilai yang baru diberikan akan kekal sehingga nombor seterusnya dicetak atau nilai lain diberikan kepada terakhir. (Beberapa pemasangan mungkin membenarkan penggunaan satu tempoh (.) yang bukan sebahagian daripada nombor sebagai notasi tangan pendek untuk terakhir.)
tali
Rentetan dicetak ke output. Rentetan bermula dengan watak kutipan berganda dan mengandungi semua aksara sehingga watak kutipan berganda seterusnya. Semua watak diambil secara literal, termasuk mana -mana garis baru. Tiada watak baru dicetak selepas tali.
Cetak senarai
Pernyataan Cetak (Pelanjutan) menyediakan kaedah output lain. ""Senarai"" adalah senarai rentetan dan ekspresi yang dipisahkan oleh koma. Setiap rentetan atau ungkapan dicetak mengikut urutan senarai. Tidak ada yang menamatkan baris dicetak. Ungkapan dinilai dan nilai mereka dicetak dan diberikan kepada pemboleh ubah terakhir. Rentetan dalam pernyataan cetak dicetak ke output dan mungkin mengandungi aksara khas. Watak khas bermula dengan watak backslash (\). Watak khas yang diiktiraf oleh BC adalah ""a"" (amaran atau loceng), ""b"" (backspace), ""f"" (borang suapan), ""n"" (newline), ""r"" (pulangan kereta), ""q"" (quote berganda), ""t ""(Tab), dan"" \ ""(backslash). Mana -mana watak lain yang mengikuti backslash akan diabaikan.
stening_list
Ini adalah pernyataan kompaun. Ia membolehkan pelbagai kenyataan dikumpulkan bersama untuk pelaksanaan.
jika (ungkapan) pernyataan1 [lain pernyataan2]
Pernyataan jika menilai ungkapan dan melaksanakan pernyataan1 atau pernyataan2 bergantung pada nilai ungkapan. Sekiranya ungkapan itu bukan sifar, pernyataan1 dilaksanakan. Sekiranya penyata2 hadir dan nilai ungkapannya adalah 0, maka pernyataan2 dilaksanakan. (Klausa lain adalah lanjutan.)
manakala pernyataan (ungkapan)
Pernyataan sementara akan melaksanakan pernyataan sementara ungkapan itu bukan sifar. Ia menilai ungkapan sebelum setiap pelaksanaan pernyataan. Penamatan gelung disebabkan oleh nilai ekspresi sifar atau pelaksanaan pernyataan rehat.
untuk ([Expression1]