LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: fender010

有没有人想一起弄一个中文的Octave手册的?

[复制链接]
 楼主| 发表于 2008-3-22 23:37:22 | 显示全部楼层
########################################

Statement:if switch while do-until for break continue unwind_protect try

########################################

if语句:

if语句有三种基本的形式:

第一种,判断一次,有两个可能的方向:

if (condition)
        then-body
endif

condition是一个表达式,用于控制then-body语句是不是执行,如果condition的结果是true则执行。

condition可以是一个数或者是一个向量或者一个矩阵,

如果是一个数的话只有0被认为是false其余看作true,

如果是向量或矩阵的话则只有只有所有元素全部非零时看作true。

第二种,判断一次,但是有三个可能的方向:

if (condition)
        then-body
else
        else-body
endif

如果condition=true则then-body执行,否则else-body执行。

第三种,可以判断多次,自然也有很多方向:

if (condition)
        then-body
elseif (condition)
        elseif-body
else
        else-body
endif

可以有很多个elseif语句,每个后面的condition=true以后则执行相应的body,如果都是false则执行最后else-body,

只能出现一个else语句,并且只能出现在最后。

########################################

switch语句:

switch语句同样是用来进行判断的,不同的是在进行多重判断的时候比上面介绍的if语句方便一些。

基本形式如下:

switch expression
        case label
                command_list
        case label
                command_list
        ...

        otherwise
                command_list
endswitch

关键词是switch,case,otherwise,endswitch

label可以是任何的表达式,但是只能有一个值,按照顺序先匹配expression的label对应的command_list会被执行。

至少有一个case label,otherwise语句是可选的。

########################################

while语句:

while主要用于生成循环,基本形式如下:

while (condition)
        body
endwhile

执行while语句时,Octave会先判断condition的值,如果是true则执行body,否则不执行body,当执行一次循环以后会再次判断condition来决定是否再次循环。

########################################

do-until语句:

do-until语句也用来产生循环,但是和while语句是有区别的。区别在于这个语句是不停的执行body知道condition=true,并且每次执行一个body以后检查一次condition的值。

基本形式如下:

do
        body
until (condition)

body是将要循环执行的语句,condition是是否进行下次训话的判断依据。

do-until和while的于别在于:do-until至少执行一次body,但是while可能一次都不执行body。

########################################

for语句:

for也是用来形成循环的,和上面不同的是for形成的循环次数是已经确定了的,基本形式如下:

for var=expression
        body
endfor

body是循环体,expression是任何的合法表达式,var是可能有几种形式,可能是一个值也可能是一个indexed variable。如果expression的值是一个结构,那么var也可能是一个list。

下面这段代码用于生成斐波那奇数,i=3:10指定了循环的次数。

fib = ones (1, 10);
for i = 3:10
        fib (i) = fib (i-1) + fib (i-2);
endfor

########################################

break语句:

break语句用于从循环中跳出,

当执行break语句时程序从循环之中跳出来,计算机会停止循环,并执行循环语句后面的部分。

下列代码用来寻找一个给定整数的最小公约数,并且确定素数。

num = 103;
div = 2;
while (div*div <= num)
        if (rem (num, div) == 0)
           break; %如果if的表达式值为true则开始执行break,从循环语句中跳出来。
        endif
   div++;
endwhile
%如果一直没有找到最小公约数那么就是一个素数
if (rem (num, div) == 0)
        printf ("Smallest divisor of %d is %d\n", num, div)
else
        printf ("%d is prime\n", num);
endif

When the remainder is zero in the first while statement, Octave immediately breaks out of the loop. This means that Octave proceeds immediately to the statement following the loop and continues processing. (This is very different from the exit statement which stops the entire Octave program.)

Here is another program equivalent to the previous one. It illustrates how the condition of a while statement could just as well be replaced with a break inside an if:

num = 103;
div = 2;
while (1)
   if (rem (num, div) == 0)
      printf ("Smallest divisor of %d is %d\n", num, div);
      break;
   endif
   div++;
   if (div*div > num)
     printf ("%d is prime\n", num);
     break;
   endif
endwhile


########################################

continue语句:

continue语句很像break语句,都是用于循环语句中,

不过和break的区别是continue并不跳出整个循环,只是进入下一次循环。

########################################

unwind_protect语句:

########################################

try语句:

########################################

Continuation Lines:

在Octave里面,多数的语句以一个换行符为结尾,但是你想输入一个很长的语句那应该怎么办呢?

如果你有一条语句比较长,在一行里面放着比较困难,你就可以用两行或者更多行来写,但是你必须告诉Octave这两行或者这三行是一个语句,方法是在行为输入...或者是\。

比如下面两条的语句是等价的:

x=long_variable_name1...
        +long_variable_name2\
        +long_variable_name3

x=long_variable_name1+long_variable_name2+long_variable_name3

########################################
回复 支持 反对

使用道具 举报

发表于 2008-3-23 10:48:31 | 显示全部楼层

我上传一个pdf手册文档

我上传一个pdf手册文档

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-23 14:03:01 | 显示全部楼层
我在google上面建了一个讨论组,

http://groups.google.com/group/gnu_octave_zh_CN?hl=zh-CN

欢迎感兴趣的人来一起完成。

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-23 14:11:30 | 显示全部楼层
最新的联系方式:

tju_fender_octave@yahoo.com.cn

不知道为什么我以前的邮件接受不到google的确认信,

所以特别申请一个。

欢迎任何人提任何的意见。
回复 支持 反对

使用道具 举报

发表于 2008-3-24 09:34:29 | 显示全部楼层
传了几个3.0.0pdf文件到到那边去了

liboctave-3.0.0.pdf
octave-a4-3.0.0.pdf
Octave-FAQ.pdf
refcard-a4-3.0.0.pdf
回复 支持 反对

使用道具 举报

发表于 2008-3-24 11:23:27 | 显示全部楼层
大家要商量好,如何分工!不然工作重复,工作量大
回复 支持 反对

使用道具 举报

发表于 2008-3-24 11:58:43 | 显示全部楼层
找一个国内的新闻组好吗?速度要快!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-24 21:20:11 | 显示全部楼层
我这边很快啊。

不过我是在教育网上面。
回复 支持 反对

使用道具 举报

发表于 2008-3-25 16:27:22 | 显示全部楼层
最近刚有点时间,也想研究一下octave,以前一直用matlab 的。。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-2 23:44:44 | 显示全部楼层
up

up

up
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表