控制语句
Julia中的控制语句与其他语言都大同小异,语法规范与Matlab相似,需要以end来结尾,而不是Python的缩进控制。此外,Julia中多了一种复合语句。控制语句具体分为4类。
- 复合语句:begin.......end
- if-else-end
- while -end
- for end
Julia中,对于控制语句或者是函数function定义,都必须以end来结尾,这一点上与Matlab保持一致。
begin...end
复合语句是Julia语言的特色,有点类似于数学公式的推导。
a = begin x = 1 y = 2 z = x+y end # begin...end语句会将最后一个式子的值进行返回 # 运行后a的值是z,即3。
for循环
Julia中的for循环表达即像Matlab,又具有一些Python的特性。首先,for循环中循环变量的表达即可以用$=$,也可以用关键字$in$。
for i=1:3 # 用=进行循环变量的循环,与Matlab一致 println("hello, world!") end for i in [1,2,3] # in遍历向量[1,2,3]中的各个元素 println("hello, world!") end
while循环
while语句常常用于未知循环次数时的循环表达,在数值计算中,迭代算法往往需要用while循环,而不是for循环,while是入口条件的循环体,循环控制条件一般用前后两步结果的差值来衡量(对于向量来说采用范数来衡量)。但是Julia中while循环却不同于Matlab或者Python,这是因为Julia语言中变量的作用域不同。while循环的语法为:
i = 0; # 初始化一个变量i,i后面座位循环变量 while i < 5 println("hello, world!"); global i += 1; end
变量的作用域
之前已经给出了Julia中循环语句的语法,但是,在实际学习中会发现,虽然语法上与Matlab或者Python基本一致,但是却无法运行。导致错误的原因就是Julia中循环体中变量的作用域是限制在循环体内部的,是一个局部变量,不会影响到循环体外。while中要让循环变量发生增加才能使得循环结束,所以需要在循环内部将循环变量申明为全局变量global。不论是for还是while循环都遵循这个规律,因而Julia的循环控制使用起来会让人觉得生疏。
# 求一个一维向量的和,用for循环完成 a = rand(10); # 随机生成一个10个元素组成的向量a s = 0; # s表示和,初始值为0 for i in a global s += i; end
如果没有global,程序一样会执行,但是s的值永远为0,因为内部的变量都是局部变量。而且此时工作空间中是没有变量i的,因为它仅是一个内部变量,不会对全局产生任何影响。而在Python中,不需要用global申明,循环体内变量本身就是全局的,Python的结果中,i的值是a向量中最后一个元素的值。
条件语句
Julia中if-elseif-else-end语句与Matlab或者Python的语法十分相似,用法也大同小异,elseif可以省略,但是只要出现elseif就必须要有else,if语句必须以end结尾。
if a > b println("a is greater than b"); elseif a == b println("a is equal to b"); else println("a is less than b"); end
本站文章如非特别说明,均为原创。未经本人同意,请勿转载!转载请务必注明出处!