julia-表达式控制语句(第8讲)
发布日期:2021-06-29 14:44:38
浏览次数:2
分类:技术文章
本文共 3236 字,大约阅读时间需要 10 分钟。
表达式控制语句 2020/5/31================================================================================ 1.1.语法规范: # 控制语句或函数定义必以 end 结尾 1.2.分类: 复合表达式 : begin 和 (;) 条件求值 : if-elseif-else 和 ?: 短路求值 : &&, || 重复求值 : while 和 for 异常处理 : try-catch , error 和 throw 任务协程 : yieldto # 任务提供了非本地的控制流,便于在临时暂停的计算中进行切换。 # 在 Julia 中,异常处理和协同多任务都是使用的这个机制。================================================================================2.0.代数系数-数值文本系数 用途:编写多项式表达式更加简洁 规则: 数字变量:被解释为乘法 -2x=(-2)*x; √2x=(√2) * x 优先级略低于一元运算符 指数结合:同单目运算符 2^3x=2^(3x); 2x^3=2*(x^3) 右结合 数值括号: 3(x-1); 2(x-1)^2=2*[(x-1)^2] 括号变量: (x-1)x # 代数因子和变量或括号表达式之间不能有空格 (x-1)(x+1) # ERROR:不要接着写两个变量括号表达式-被解析为函数调用 x(x+1) # ERROR:不要把变量放在括号表达式之前-被解析为函数调用 x = 3 2x^2 - 3x + 1 # 2x^3 =2*(x^3) 2^2x # 2^2x=2^(2x) 3(x-1) # 6 2(x-1)^2 # 8 语法冲突: 以 0x 开头的表达式,都被解析为十六进制文本 以数字文本开头,后面跟着 e 或 E ,都被解析为浮点数文本 以数字文字开头的表达式f始终是32位浮点文字;1.5F22等于1.5 * F22 ================================================================================2.1.复合表达式 定义:用单个表达式按顺序计算多个子表达式,然后返回最后一个子表达式的值作为其值 方法:begin 块和 (;) 链 实例1:begin z = begin #1.多行书写 x = 1 y = 2 x + y end # 返回最后表达式的值: 3 (x = 1; #2.多行书写: ";" y = 2; x + y) 实例2:(;) 链 z = (x = 1; y = 2; x + y) #3.单行书写: ";" begin x = 1; y = 2; x + y end #4.单行书写 ================================================================================ 2.2.条件表达式/语句: 2.2.1.if语句: if Bool-[elseif-else] end if x < y a=1 #if无局部变量,if块中定义的变量可在之后使用; elseif x > y a=2 #注意定义的变量引用可能存在问题:若无x>y语句后续出现x>y时提示a未定义 else a=3 #请确保所有可能的代码路径都为变量定义了一个值 end if 1 println("true") end#错误 值是Bool true or false 2.2.2.链式问号表达式:a ? b : c --结合规则是从右到左; "?",":"和变量之间必须有空格 z=x < y ? "X1" : "X2" z=x < y ? "X1" : x>y ? "X2" : "X3" 2.2.3.短路求值 说明: # && , || 布尔运算符称为短路求值,仅计算最少表达式来确定整个链的布尔值。 # a && b 只有 a= true 才计算;a || b 只有 a = false 才计算;都右结合, && 比 || 优先级高 用途: 简洁if 语句替代。 function factorial(n::Int) n >= 0 || error("msg")# if !(n>=0) error("msg") end n == 0 && return 1 # if n==0 return 1 end n * factorial(n-1) end================================================================================ 2.3.循环2.3.1.for 循环--可以遍历任意容器 for i in [1,2,3] println(i) end for i = 1:10 # 1:3 是一个 Range 对象,表示1, 2, 3序列与Matlab一致 println(i) if i >= 5 break end # -终止循环-# if i % 3 != 0 continue end # 中断本次循环 end for i = 1:2, j = 3:4 # 多层 for 循环 println((i, j)) # 用 break 可以直接跳出所有循环 end # (1,3) # (1,4) # (2,3) # (2,4) 2.3.2.while 循环 # while 循环不同于 Matlab 或者 Python,这是因为 Julia 语言中变量的作用域不同 # 循环体中变量(局部)作用域限制在循环体内,不会影响到循环体外 i = 0; while i < 5 println("i=",i); global i += 1; end ================================================================================
转载地址:https://chunyou.blog.csdn.net/article/details/106460744 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月28日 11时48分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
物联网平台Node-red初涉——访问搭建的简易服务器
2019-04-29
2020-10-27
2019-04-29
OpenCV+python识别并打印HSV颜色
2019-04-29
2021-03-29
2019-04-29
网络攻击与防御--引言
2019-04-29
网络攻击与防御--网络协议漏洞
2019-04-29
sql注入: 判断注入点类型
2019-04-29
千人千面Elasticsearch实战学习笔记
2019-04-29
最大子数组问题(递归)(java)
2019-04-29
2021年第十二届蓝桥杯软件赛省赛第二场 C/C++ 大学 A 组
2019-04-29
2020年哨兵数据批量下载(USGS)
2019-04-29
简单3步快速生成千万级别mysql测试数据库,模拟电商数据
2019-04-29
EasyDSS平台接入设备量过多的情况下如何进行批量推流测试?
2019-04-29
mysql数据库操作基础
2019-04-29
Mariadb基础管理
2019-04-29
awk 的内置变量 NF、NR、FNR、FS、OFS、RS、ORS
2019-04-29