D语言简单实例
tag:d language tutorial,d language program,d language 编程
下面所有代码都用最好的 D语言编辑器 SciTE4D为例,如果你还没有安装,可以到下面地址免费下功:
http://scite4d.d-programming-language-china.org/
出处:
http://bbs.d-programming-language-china.org/
最简单的D语言例子
在SciTE4D里新建一个文件,保存为D:/hello.d
输入下面的代码并按Ctrl+S保存.虽然什么也没有做,却可以编译成功。
每个D语言程序必须包含一个main函数。在上面的例子中,只有一个main函数。main函数可能返回void或者int。可以没有参数,或者带参数char[][]支持命令行调用。
输出hello
示例代码如下:
初始化变量
在这个例子中,我们学习如何初始化整数和字符串变量。
数据类型
下面例子演示了用min,max,sizeof分别获得数据类型的最小值,最大值,和bytes
简单的If/Else语句
代码如下:
多次重复做某事是很让人讨厌的。比如让你写下面的代码:
关于标识符,补充几点。在程序设计中,标识符如同人的名字,用来标识变量,函数..
标识符必须以字母或下划线开始。一般我们在应用中标识符不用下划线开始,以避免和保留名字(如_arguments)冲突。
标识符第一个以后的字符可以是字母,数字或下划线。
标识符可以很长。
在D语言里,标识符是大小写敏感的,在上面例子中myInt,myint和MYINT是三个不同的标识符。
使用表达式
下面的例子演示了数学表达式的使用:
这是一个Windows下待候用户键盘输入再继续的程序。
开始使用函数
我们把常用的操作写成函数,然后可以在任何时候,你需要的地方调用。
20070421
初版
20080315
全部用例改用 Tango, 想想Ruby,PHP,Apache...开源的巨大成功,比较封闭且不兼容Tango的Phobos实在没有使用它的理由
tag:d language tutorial,d language program,d language 编程
下面所有代码都用最好的 D语言编辑器 SciTE4D为例,如果你还没有安装,可以到下面地址免费下功:
http://scite4d.d-programming-language-china.org/
出处:
http://bbs.d-programming-language-china.org/
最简单的D语言例子
在SciTE4D里新建一个文件,保存为D:/hello.d
输入下面的代码并按Ctrl+S保存.虽然什么也没有做,却可以编译成功。
复制内容到剪贴板
按Ctrl+F5运行代码看看.
代码:
module hello.d;
void
main()
{
}
每个D语言程序必须包含一个main函数。在上面的例子中,只有一个main函数。main函数可能返回void或者int。可以没有参数,或者带参数char[][]支持命令行调用。
输出hello
示例代码如下:
复制内容到剪贴板
import语句表示从tango.io.Console模块中导入符号。
代码:
module hello.d;
import tango.io.Console;
void
main(
char
[][] args)
{
Cout("hello, http://bbs.d-programming-language-china.org/ ").newline;
}
初始化变量
在这个例子中,我们学习如何初始化整数和字符串变量。
复制内容到剪贴板
这里使用了Stdout函数,newline就是输出换行符。按Ctrl+F5运行.
代码:
module hello.d;
import tango.io.Stdout;
void
main(
char
[][] args)
{
int fid = 18;
Stdout("D语言入门论坛 fid ")(fid).newline;
Stdout("D语言论坛")(" http://bbs.d-programming-language-china.org/ ").newline;
}
数据类型
下面例子演示了用min,max,sizeof分别获得数据类型的最小值,最大值,和bytes
复制内容到剪贴板
在D语言编器SciTE4D里,按Ctrl+F5运行程序,在编辑器的输出区将打印出信息.
代码:
module hello.d;
import tango.io.Stdout;
int
main()
{
// 整型...
Stdout("bool min: {} max: {} ({})", bool.min, bool.max, bool.sizeof).newline;
Stdout("ubyte min: {} max: {} ({})", ubyte.min, ubyte.max, ubyte.sizeof).newline;
Stdout("ushort min: {} max: {} ({})", ushort.min, ushort.max, ushort.sizeof).newline;
Stdout("uint min: {} max: {} ({})", uint.min, uint.max, uint.sizeof).newline;
Stdout("ulong min: {} max: {} ({}) ", ulong.min, ulong.max, ulong.sizeof).newline;
Stdout("byte min: {} max: {} ({})", byte.min, byte.max, byte.sizeof).newline;
Stdout("short min: {} max: {} ({})", short.min, short.max, short.sizeof).newline;
Stdout("int min: {} max: {} ({})", int.min, int.max, int.sizeof).newline;
Stdout("long min: {} max: {} ({}) ", long.min, long.max, long.sizeof).newline;
// 浮点型...
Stdout("float ({}) double ({}) real ({}) ", float.sizeof, double.sizeof, real.sizeof).newline;
Stdout("ifloat ({}) idouble ({}) ireal ({}) ", ifloat.sizeof, idouble.sizeof, ireal.sizeof).newline;
Stdout("cfloat ({}) cdouble ({}) creal ({}) ", cfloat.sizeof, cdouble.sizeof, creal.sizeof).newline;
Stdout("cfloat ({}) cdouble ({}) creal ({}) ", cfloat.sizeof, cdouble.sizeof, creal.sizeof).newline;
// 字符型...
Stdout("char ({}) wchar ({}) dchar ({}) ", char.sizeof, wchar.sizeof, dchar.sizeof).newline;
return 0;
}
简单的If/Else语句
代码如下:
复制内容到剪贴板
D语言的for循环
代码:
import tango.io.Stdout;
void
main()
{
int i;
if (i == 1)
Stdout("我是1!").newline;
else
Stdout("我可不是1!").newline;
}
多次重复做某事是很让人讨厌的。比如让你写下面的代码:
复制内容到剪贴板
这时for循环语句就派上用场了。它会返回原来的位置,并告诉计算机:从1数到10,打印出每个数字。
代码:
Stdout(
"
1
"
);
Stdout(
"
2
"
);
Stdout(
"
3
"
);
Stdout(
"
4
"
);
...
复制内容到剪贴板
等价于QuickBASIC的语句:
代码:
import tango.io.Stdout;
int
main()
{
for (int i = 1; i <= 10; i++)
Stdout(i).newline;
return 0;
}
复制内容到剪贴板
打印出:
代码:
DIM I
%
FOR I
%
=
1
TO
10
PRINT I
%
NEXT I
%
复制内容到剪贴板
变量声明方法
代码:
1
2
3
4
5
6
7
8
9
10
复制内容到剪贴板
声明了三个int类型的变量,myInt,myint和MYINT。类似于C,C++和Java,在D语言里,所有变量必须在使用前声明,可以用,分隔一次声明多个变量。
代码:
void
main()
{
int myInt,
myint,
MYINT;
}
关于标识符,补充几点。在程序设计中,标识符如同人的名字,用来标识变量,函数..
标识符必须以字母或下划线开始。一般我们在应用中标识符不用下划线开始,以避免和保留名字(如_arguments)冲突。
标识符第一个以后的字符可以是字母,数字或下划线。
标识符可以很长。
在D语言里,标识符是大小写敏感的,在上面例子中myInt,myint和MYINT是三个不同的标识符。
使用表达式
下面的例子演示了数学表达式的使用:
复制内容到剪贴板
等待键盘输入的小程序
import tango.io.Stdout;
void
main()
{
int i, j;
i = 12 * 12; /* 乘法 */
Stdout("12 x 12 = {}", i).newline; /* 144 */
j = i / 8; /* 除法 */
Stdout("144 / 8 = {}", j).newline; /* 18 */
i -= 44; /* 等价于 "i = i - 44;" */
Stdout("144 - 44 = {}", i).newline; /* 100 */
}
import tango.io.Stdout;
void main() {
int i, j;
i = 12 * 12; /* 乘法 */
Stdout("12 x 12 = {}", i).newline; /* 144 */
j = i / 8; /* 除法 */
Stdout("144 / 8 = {}", j).newline; /* 18 */
i -= 44; /* 等价于 "i = i - 44;" */
Stdout("144 - 44 = {}", i).newline; /* 100 */
}
void main() {
int i, j;
i = 12 * 12; /* 乘法 */
Stdout("12 x 12 = {}", i).newline; /* 144 */
j = i / 8; /* 除法 */
Stdout("144 / 8 = {}", j).newline; /* 18 */
i -= 44; /* 等价于 "i = i - 44;" */
Stdout("144 - 44 = {}", i).newline; /* 100 */
}
这是一个Windows下待候用户键盘输入再继续的程序。
复制内容到剪贴板
然后写一个dsss.conf文件,里面只有一行:
代码:
module hello.d;
import tango.io.Console;
void
main()
{
Cout("请输入你的名字").newline;
char[] name;
auto result = Cin.readln(name);
if(result && name.length)
Cout("你的名字是 ")(name).newline;
else
Cout("难道你是火星人???").newline;
Cin.readln(name);
}
复制内容到剪贴板
然后在SciTE4D里按F7编译,进入D:/,点击hello.exe, 试一下运行结果.如果你从未接触D语言,第一次运行本例就成功了,请到 D语言论坛
http://bbs.d-programming-language-china.org/ 本贴下报喜.
代码:
[hello.d]
开始使用函数
我们把常用的操作写成函数,然后可以在任何时候,你需要的地方调用。
复制内容到剪贴板
字符串连接的例子
代码:
module hello.d;
import tango.io.Stdout;
uint
squareIt(
uint
x)
{
return x * x;
}
void
main()
{
uint i;
Stdout(" (初始值)", i).newline;
i = squareIt(3);
Stdout(" (3 * 3)", i).newline;
i = squareIt(4);
Stdout(" (4 * 4)", i).newline;
i = squareIt(5);
Stdout(" (5 * 5)", i).newline;
}
复制内容到剪贴板
断言的例子
代码:
module hello.d;
import tango.io.Stdout;
void
main()
{
char[] s;
Stdout.format("长度: {} 字符串: {}", s.length, s).newline;
s ~= "something ";
Stdout.format("长度: {} 字符串: {}", s.length, s).newline;
s ~= "whatever";
Stdout.format("长度: {} 字符串: {}", s.length, s).newline;
}
复制内容到剪贴板
本文历史
代码:
module hello.d;
import tango.io.Stdout;
void
main()
{
Stdout("下面测试一下D语言的断言...");
/* 下面的断言成功,因为他们的值是 true. */
assert(true);
assert('ª' == 'ª');
assert(221 % 5 == 1);
assert(25 * 4 * 20 + 4 == 2004);
/* 断言失败...
tango.core.Exception.AssertException@hello.d(行号): Assertion failure */
assert(false); //断言失败,会在输出区提示错误信息
Stdout("如果看到这句,就是全部断言都成功(true).").newline;
}
20070421
初版
20080315
全部用例改用 Tango, 想想Ruby,PHP,Apache...开源的巨大成功,比较封闭且不兼容Tango的Phobos实在没有使用它的理由