diff --git a/zh-cn/bc-cn.html.markdown b/zh-cn/bc-cn.html.markdown new file mode 100644 index 00000000..e2cc3680 --- /dev/null +++ b/zh-cn/bc-cn.html.markdown @@ -0,0 +1,96 @@ +--- +language: bc +contributors: + - ["Btup"] +translators: + - ["CloneWith", "https://github.com/CloneWith"] +filename: learnbc.bc +lang: zh-cn +--- +```bc +/*这是一条 +多行注释。*/ +# 这(在 GNU bc 中)也是一条(单行)注释! + + /*1. 变量与指令结构*/ +num = 45 /*所有变量都只以双精度浮点数形式存储, + 并且 bc 不支持直接存储字符串常量。*/ +num = 45; /*每个语句后可以添加 + 一个英文分号,也可以不加。*/ +/*语句块使用 {} 运算符表示(与 C 语言相似):*/ +while(num < 50) { + num += 1 /*等价于 num=num+1。 + a = a op b 等价于 a op= b。*/ +} +/*也有 ++(自加)与 --(自减)运算符。*/ +/*有三个特殊变量: +scale: 定义双精度浮点数字的比例。 +ibase: 定义输入数值的基数。 +obase: 定义输出数值的基数。*/ +/*If 语句:*/ +hour = read() /*输入一个数字*/ + +if(hour < 12) { /*运算符的用法与 C 语言类似。*/ + print "Good morning\n" /*“print”输出字符串或变量,用英文逗号分隔。*/ +} else if(hour == 12) { + print "Hello\n" + /*字符串中的转义序列以反斜杠 \ 开头。 + 为了讲述清楚,以下为 bc 中常用转义序列表: + \b: 退格 + \c: 硬回车 + \n: 换行符 + \t: 制表符 + \\: 反斜杠*/ +} else { + print "Good afternoon\n" +} + +/*像 C 语言一样,只有 0 定义为假(false)。*/ +num = 0 +if(!num) {print "false\n"} + +/*与 C 语言不同,bc 没有 ?: 运算符。例如, + 这个代码块会导致出错: +a = (num) ? 1 : 0 +但是你可以模拟一个:*/ +a = (num) && (1) || (0) /*&& 代表“与”,|| 代表“或”*/ + +/*循环语句*/ +num = 0 +for(i = 1; i <= 100; i++) {/*与 C 语言中的循环类似。*/ + num += i +} + + /*2.函数与数组*/ +define fac(n) { /*使用“define”定义函数。*/ + if(n == 1 || n == 0) { + return 1 /*返回一个数值*/ + } + return n * fac(n - 1) /*可以使用递归*/ +} + +/*不可使用闭包与匿名函数。*/ + +num = fac(4) /*24*/ + +/*这是局部变量的示例:*/ +define x(n) { + auto x + x = 1 + return n + x +} +x(3) /*4*/ +print x /*看起来无法在函数外访问 x。*/ +/*数组与 C 语言中的等同。*/ +for(i = 0; i <= 3; i++) { + a[i] = 1 +} +/*这样访问它:*/ +print a[0], " ", a[1], " ", a[2], " ", a[3], "\n" +quit /*添加这行代码,确保程序退出。 +这行代码可写可不写。*/ +``` + +请享用这个简单的计算器吧!(或者确切地讲,这个编程语言。) + +本程序全部使用 GNU bc 语言编写。要运行程序,请使用 ```bc learnbc.bc```。