科学计算语言Julia及MWORKS实践 课件 12-流程控制_第1页
科学计算语言Julia及MWORKS实践 课件 12-流程控制_第2页
科学计算语言Julia及MWORKS实践 课件 12-流程控制_第3页
科学计算语言Julia及MWORKS实践 课件 12-流程控制_第4页
科学计算语言Julia及MWORKS实践 课件 12-流程控制_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二、Julia语言基础语法2.1

基本数据类型2.2数组2.3集合容器2.4

数学运算和初等函数2.5流程控制2.5、流程控制Julia语言支持各种流程控制结构,通常包括复合表达式、条件表达式、循环表达式等,通过使用流程控制结构,可以使编写出高效、灵活的代码。经过良好组织的代码更易于阅读与维护,更便于自己或者其他人员的复用。1、复合表达式2、条件表达式3、循环表达式4、短路求值流程控制2.5、流程控制2.5.1复合表达式复合表达式构造:多个语句变为一个语句julia>a=5*8;b=a^21600julia>c1=(a=5*8;b=a^2)1600julia>c1=(a=5*8;b=a^2)1600说明:分号;隔开的多个并列表达式返回最后一个表达式的结果圆括号作为代码块的边界,当语法容易出现歧义时不可省略链式表达式中不限定必须是单行julia>begina=5*8;b=a^2

end1600julia>c2=begina=5*8;b=a^2

end1600julia>begin

a=5*8

b=a^2end1600说明:Julia中不要求将分号作为语句结尾字符,但多个表达式在一行中时,需用分号隔开且不可省略方法一(“;”):子表达式;子表达式;......(子表达式;子表达式;

子表达式......)方法二(begin-end):begin#任意多的子表达式end2.5、流程控制2.5.2条件表达式if语句:julia>if

3>0

3elseif

2>0

2end3julia>if

1#条件表达式只能为布尔量

println("true")end

ERROR:TypeError:non-boolean(Int64)usedinbooleancontextjulia>z=if

3<0#if语句也属于复合表达式

10else

-10end-10注意:条件表达式中if是必须的,且只能出现一次;else可以不出现但若出现则只能一次;elseif可多次使用;条件表达式与关键词之间用空格隔开条件表达式为布尔量说明:if语句中只有一个分支会被执行不支持将0或1作为true或false使用if语句也属于复合表达式,可以将其赋给一个变量一般格式:

if

条件表达式1

#执行语句

elseif条件表达式2#执行语句

elseif

条件表达式3#执行语句

else#执行语句end2.5、流程控制2.5.2条件表达式if语句:例如:编写一个函数文件,计算如下分段函数的数值。程序:function

section(x)

ifx<1y=x

elseifx>=1&&x<=10y=2*x-1

elseifx>10&&x<=30y=3*x-11

elsey=sin(x)+log(x)

end

returnyend程序运行结果为:section(genericfunctionwith1method)julia>println("resulit:","section(0.5)=",section(0.5),"section(6)=",section(6),"section(15)=",section(15),"section(35)=",section(35))resulit:section(0.5)=0.5section(6)=11section(15)=34section(35)=3.12716539199326252.5、流程控制2.5.2条件表达式julia>x=3;x>10?true:falsefalsejulia>3>0?3:03julia>false?3:00说明:各符号之间有空格;a是条件表达式,值为true时该三元运算符返

回b值,否则返回c值;

ifab

elsecend

功能等价三元运算符:一般格式:a?b:c2.5、流程控制2.5.3循环表达式while语句julia>i=11julia>whilei<=5

println(i)

i+=1end12345julia>i6说明:条件表达式为布尔量,为true时,执行语句才会执行;一般格式:while

条件表达式#执行语句end2.5、流程控制2.5.3循环表达式for语句julia>fori=1:5

print(i)end12345julia>foriin[1

2

3

4

5]

print(i)end12345julia>fori∈(1,2,3,4,5)

print(i)end12345注意:三个遍历操作符=、in及∈是等价的,可以任选一个;∈输入:\in+tab键可迭代的内容包括元组、字典、集合、数组、及列表等一般格式(单个迭代变量):格式1:for

迭代变量=可迭代数集

#语句块end格式2:for迭代变量in可迭代数集

#语句块end格式3:for迭代变量∈可迭代数集

#语句块end2.5、流程控制2.5.3循环表达式julia>fori=1:2;j=3:4

print((i,j))end(1,3:4)(2,3:4)julia>fori=1:2,jin(1,2,3)

print((i,j))end(1,1)(1,2)(1,3)(2,1)(2,2)(2,3)julia>foriin[1

2

3],j=3:4

print((i,j))end(1,3)(1,4)(2,3)(2,4)(3,3)(3,4)julia>forj=3:4,iin[1

2

3]

print((i,j))end(1,3)(2,3)(3,3)(1,4)(2,4)(3,4)说明:for循环支持同时对多个数据集进行遍历;遍历操作符的顺序影响内部语句循环变量

的取值。julia>

fori=1:2

forjin(1,2,3)

print((i,j))

endend(1,1)(1,2)(1,3)(2,1)(2,2)(2,3)等价多个迭代变量:2.5、流程控制2.5.3循环表达式julia>i=1;j=1;julia>whilej<=4

whilei<10

print(i)

ifi>5

break

end

i+=1

end

j+=1

i=1

println()end123456123456123456123456说明:break在多层嵌套的循环中只会影响其所处的那一

层,不会波及外层或内层循环结构。julia>i=11julia>whilei<10

ifi>5

break

end

print(i)

i+=1end12345说明:break强制循环在满足控制条件时退出。break在for循环中的使用与while循环相同。break—强制退出循环2.5、流程控制2.5.3循环表达式julia>i=1;j=1;julia>whilej<=4

whilei<10

i+=1

ifi<5

continue

end

print(i)

end

j+=1

i=1

println()end5678910567891056789105678910说明:continue在多层嵌套的循环中只会影响其所处的那一

层,不会波及外层或内层循环结构。julia>i=11julia>whilei<10

i+=1

ifi<5

continue

end

print(i)end5678910julia>i10说明:continue可以让循环跳过当前迭代,直接进入到下一个循环的迭代。continue在for循环中的使用与while循环相同。continue—强制跳过当前迭代2.5、流程控制2.5.4短路求值短路运算(&&与||):表达式只要能够确认最终结果,就会提前返回且不执行后续的判断julia>t(x)=(println(x);true)t(genericfunctionwith1method)julia>f(x)=(println(x);false)f(genericfunctionwith1method)julia>t(1)&&t(2)12truejulia>f(1)&&t(2)1falsejulia>t(1)||t(2)1truejulia>f(1)||t(2)12truejulia>1&&true#第一项一定为布尔量ERROR:TypeError:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论