4.3 运算符 4.3 运算符 运算符是一种特殊符号, 一般由1-3个字符组成,用于实现数据之间的运算、赋值和比较。运算符共分以下几种 :

Slides:



Advertisements
Similar presentations
因数与倍数 2 、 5 的倍数的特征
Advertisements

3 的倍数特征 抢三十

2 和 5 的倍数的特征 运动热身 怎样找一个数的倍数? 从小到大写出 2 的倍数( 10 个): 写出 5 的倍数( 6 个) 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 5 , 10 , 15 , 20 , 25 , 30.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
10.2.switch语句.
第4章 选择结构程序设计 选择结构是计算机科学用来描述自然界和社会生活中分支现象的手段。其特点是:根据所给定选择条件为真(即分支条件成立)与否,而决定从各实际可能的不同操作分支中执行某一分支的相应操作,并且任何情况下恒有“无论分支多寡,必择其一;纵然分支众多,仅选其一”的特性。
第六章 循环控制.
Tool Command Language --11级ACM班 金天行.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
JavaScript 语言基础.
第10章 JavaScript和DHTML技术
C语言实验 第一课 标题:学号+姓名.
数学建模与MATLAB 第五讲:循环结构(1) 2017/9/12.
第三章 第三节javascript企业常用开发1-1
在PHP和MYSQL中实现完美的中文显示
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
C#程序设计基础 $5 流程控制.
第7章:文件共享 与远程控制——回顾 第8章:bash脚本编程 本章教学目标: 了解shell程序的基本结构 网络文件系统NFS的概念
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
第3章 C语言的基本语句 和程序结构设计.
走进编程 程序的顺序结构(二).
辅导课程六.
SPARQL若干问题的解释 刘颖颖
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第3章 选择结构与循环结构 王德俊 上海交通大学继续教育学院.
1.2 MATLAB变量表达式与数据格式 MATLAB变量与表达式 MATLAB的数据显示格式
第二章 Java语言基础.
第4章 PHP流程控制语句.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
第四章 一次函数 4. 一次函数的应用(第1课时).
Java软件设计基础 3. 流程控制.
姚金宇 MIT SCHEME 使用说明 姚金宇
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
Lightweight Data-flow Analysis for Execution-driven Constraint Solving
信号量(Semaphore).
第3章 JavaScript基本语句.
第4章 Excel电子表格制作软件 4.4 函数(一).
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
第九节 赋值运算符和赋值表达式.
实验二 带进位控制8位算术逻辑运算实验 带进位控制8位算术逻辑运算: ① 带进位运算 ② 保存运算后产生进位
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
3.16 枚举算法及其程序实现 ——数组的作用.
College of Computer Science & Technology
第4课时 绝对值.
1.2基本算法语句 1.2.3循环语句.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
学习目标 1、了解基本运算符 2、运算符优先级.
第二章 Java基本语法 讲师:复凡.
C程序设计 实验二 数据类型、运算符和表达式 第6讲
临界区问题的硬件指令解决方案 (Synchronization Hardware)
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
第二章 Java基本语法 讲师:复凡.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
五 循环结构程序设计 厦大附中信息技术.
张孝祥IT课堂 -Java就业培训教程 主讲老师:□□□.
鸡兔同笼(续) ——选择结构.
Java程序设计 第3章 控制语句.
1.2.2条件语句.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
任课教师:戴开宇 TA:时均帅、谭肖、王安华 程序设计B班 :20-16:50(90分钟)
顺序结构程序设计 ——关于“字符串”和数值.
考察点:switch\while\for System.in\Scanner char vs int
一元一次方程的解法(-).
Presentation transcript:

4.3 运算符 4.3 运算符 运算符是一种特殊符号, 一般由1-3个字符组成,用于实现数据之间的运算、赋值和比较。运算符共分以下几种 : 4.3 运算符 4.3 运算符 运算符是一种特殊符号, 一般由1-3个字符组成,用于实现数据之间的运算、赋值和比较。运算符共分以下几种 : 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 4.3.1 算术运算符 JavaScript 中的算术运算符有以下一些。 +:加法运算符或正值运算符, 例如, x+5,+6。“+”也能实现多个字符串的相加,只要表达式中至少有一个字符串, “+” 就用于将字符串与其他的数据类型相连成一个新的字符串,例如:“x”+123 的结果是“x123”。 -: 减法运算符或负值运算符, 例如, 7-3,-8。

*:乘法运算符, 例如, 3*6。 /:除法运算符, 例如, 9/4, 如果不能整除, 结果就是实型, 保留小数部分。 %:求模运算符(算术中的求余), 例如, 5%2。 ++:将变量值加1后再将结果赋给这个变量。有两种用法, 即 ++X,X++ 。前者是变量在参与其他运算之前先将自己加1后, 再用新的值参与其他运算, 而后者是先用原值参与其他运算后, 再将自己加1。例如, b=++a 是 a 先自增, 即 a 的值加1后,才赋值给b; b=a++ 是先将 a 赋值给b后, a 再自增。 --:将变量值减1后,再将结果赋给这个变量, 与 ++ 的用法一样。

4.3.2 赋值运算符 赋值运算符的作用是将一个值赋给一个变量。最常用的赋值运算符是“=”。还可以由“=”赋值运算符和其他一些运算符组合产生一些新的赋值运算符, 例如, “+=”,“*=”等。 =:将一个值或表达式的结果赋给变量, 例如,x=3。 +=:将变量与所赋的值相加后的结果再赋给该变量, 例如, X+=3 等价于 X=X+3。 -=:将变量与所赋的值相减后的结果再赋给该变量, 例如, X-=3 等价于 X=X-3。 *=:将变量与所赋的值相乘后的结果再赋给该变量, 例如, X*=3 等价于X=X*3。 /=:将变量与所赋的值相除后的结果再赋给该变量, 例如,X/=3 等价于 X=X/3。 %=:将变量与所赋的值求模后的结果再赋给该变量, 例如, X%=3 等价于 X=X%3。

4.3.3 比较运算符 比较运算符的作用是比较两边的操作数,并根据比较结果返回一个布尔值(true 或false), 具体如下。 !=:当左边操作数不等于右边操作数时返回 true, 否则返回 false。例如 x=4;,则表达式 x<5 的返回结果是 true, 而表达式 x>5 的返回结果是 false。 注意,不要将比较运算符 “==”误写成 “=”, 如果你少写了一个 "=", 那就不是比较了, 整个语句变成了赋值语句。

逻辑运算符采用布尔值 true 或 false 作为操作数, 其返回值也是逻辑值, 具体如下 。 4.3.4 逻辑运算符 逻辑运算符采用布尔值 true 或 false 作为操作数, 其返回值也是逻辑值, 具体如下 。 &&:逻辑与, 当左右两边操作数都为 true 时 , 返回值为 true, 否则返因 false 。 ︱ ︱:逻辑或, 当左右两边操作数都为 false 时, 返回值为 false, 否则返回 true 。 !:逻辑非, 当操作数为 true 时, 返回值为 false, 否则返回true 。 4.3.5 位运算符 计算机是一种电子设备, 由复杂的数字和模拟电子元器件组合而成。数字电子元器件的一个最小单元只有带电和不带电两种状态, 其带电状态表示数值 1, 不带电状态表示数值 0。 多个这样的单元组合可以表示更多状态, 也就是可以表示更多的数据, 其中 ,每个单元分别表示数据中的一位, 被称之为 bit 位, 一个 bit 位中的数据只能是 0 或1。

︱:只有参加运算的两位都为 0, 运算的结果才为 0, 否则就为 1 。就是或运算。 例如, 3 个单元的组合可以具有 23=8 种状态, 它可以表示 8 个数值, 000 表示0, 001 表示 1, 010 表示 2, 011 表示 3, 依此类推 , 111 表示 7, 这种表示数据的方式就叫二进制。在实际应用中 , 总是将 8 个电子元器件单元组合起来使用 , 这样的组合就称之为一 个字节 (byte) , 一个字节可以表示 28=256 个数值 , 数值范值为 0~255。任何信息在计算机中都是以二进制的形式存在的,位运算用于对操作数中的每一个二进制位进行运算,包括位逻辑运算符和位移动运算符。 位逻辑运算符如下: &:只有参加运算的两位都为 1, 运算的结果才为 1, 否则就为 0 。就是与运算。 ︱:只有参加运算的两位都为 0, 运算的结果才为 0, 否则就为 1 。就是或运算。 ∧: 只有参加运算的两位不同, 运算的结果才为 1, 否则就为 0 。就是模二加运算。

位移动运算符如下: >>:将左边操作数在内存中的二进制数据右移右边操作数指定的位数,左边移空的部分补上左边操作数原来的最高位的二进制位值。如图4.2。 <<:将左边操作数在内存中的二进制数据左移右边操作数指定的位数,右边移空的部分补0。例如, a=Ox EOOOOOO1, a 在内存中的二进制状态为 1110,0000,0000,0000,0000,0000,0000,0001。 语句 a<<2 执行后的结果在内存中的二进制状态为 1000,0000,0000,0000,0000,0000,0000,0100 。 >>>:将左边操作数在内存中的二进制数据右移右边操作数指定的位数,左边移空的部分补0。 位运算符也可以与 “=”赋值运算符组合产生一些新的赋值运算符, 如:“<<="、“>>="、"&="、“∧="、"∣=" 等。

4.4 程序的流程控制 JavaScript 常用的程序流程有三种结构 : 顺序结构 选择结构 循环结构 4.4.1 顺序结构 顾名思义, 顺序结构就是程序从上到下按顺序一行一行执行的结构, 这是所有程序的最基本结构,一个程序中的大部分代码采用的都是顺序结构。 4.4.2 if 条件选择语旬 if 语句是使用最为普遍的条件选择语句, 每一种编程语言都有一种或多种形式的if语句, 在编程中总是避免不了要用到它。if 语句有多种形式的应用。

(1) 第一种应用格式 if ( 条件语句 ) { 执行语句 } 其中的条件语句可以是任何一种逻辑表达式。如果条件语句的返回结果为 true, 则程序先执行后面大括号对({ })中的执行语句,然后接着顺序执行它后面的其他代码。如果条件语句的返回结果为 false, 则程序跳过条件语句后面的执行语句, 直接去执行程序后面的其他代码。大括号的作用就是将多条语句组合成一个复合语句, 作为一个整体来处理。

如果大括号中只有一条语句, 这对大括号对 ({ })也可以被省略, 例如:if第1种用法.htm <script language="javascript"> var x=0; if (x==4) alert(“x==4"); </script> 上面的条件语句先判断x的值是否等于4,如果条件成立, 则弹出 "x==4"的对话框, 否则什么也不做。由于x的值等于0,所以 alert ("x==1"); 语句不会执行。为了让程序代码具有易读、易维护性,即使if从句部分只有一条语句, 也不要省略其中的大括号对, 这是一个良好的编程习惯。

如果用下面的语句 : var x; 定义了一个变量 x, 但没有对变量 x 赋值, x 的值为 undefined。在这种情况下, 可以使用 if (x ==null) 或 if (typeof (x) ==‘undefined’)比较语句来判断变量 x 的值是否为 undefined。是则返回 true, 否则返回 false。 要判断变量 x 的值是否为 undefined 或 null, 也可以简写成 if (!x), 例如,下面的程序代码检查到变量 x 没有被赋初值时,则对 x 进行赋值。 <script language="javascript"> if (!x) {x=55;alert("x = "+x);} </script> 举例见后面的网页文件“if第2-1种用法.htm”。

如果 x 未赋值,则弹出 'x==undefinde ! 未赋值。'对话框,否则将弹出’x=’+x对话杠。 (2) 第二种应用格式 if ( 条件语句 ) {执行语句块 1} else {执行语句块 2} 这种格式在 if 从句的后面添加了一个 else 从句。当if条件语句的返回结果为false时, 执行else后面部分的从句, 如:if第2-1种用法.htm <script language="javascript"> var x; if (!x) {alert('x==undefinde ! 未赋值。')} {alert(‘x =‘+x);} </script> 如果 x 未赋值,则弹出 'x==undefinde ! 未赋值。'对话框,否则将弹出’x=’+x对话杠。

<script language="javascript"> var x=-6; y=x>0?x:-x; alert(y) 对于 if...else...语句, 还有一种更简便的写法: 变量 = 布尔表达式 ? 语句 1 : 语句 2; 例如下面的程序代码:if第2-2种用法.htm <script language="javascript"> var x=-6; y=x>0?x:-x; alert(y) </script>可以简写成 : 这是一个求绝对值的语句, 如果 x 大于0, 就把x赋值给交量y, 如果x不大于0, 就把-x 赋值给前面的y。 这就是:如果问号“ ?” 前的表达式结果为真,则计算问号和冒号中间的表达式, 并把结果赋值给变量y; 否则将计算冒号后面的表达式,并把结果赋值给变量y。 这种写法的好处在于代码简洁,并且有一个返回值。

(3) 第三种应用格式 if ( 条件语句1)。 {执行语句块 1} else if ( 条件语句 2) {执行语句块 2} … else if ( 条件语句n ) {执行语句块n} else {执行语句块n +1} 这种格式用 else if 语句进行更多的条件判断 , 不同的条件对应不同的执行代码块。

例如:if第3种用法.htm <script language="javascript"> var x=0.159; if (x<1) alert('x<1'); else if (x>=1&&x<10) alert("x>=1且x<10"); else if (x>=10&&x<100) alert("x>=10且x<100"); else alert('x>=100'); </script> 程序首先判断 x 是否小于1, 如果是, 就执行 alert (“x < 1”) 语句;如果不是, 程序将继续判断x是否大于等于1且小于10, 如果是, 则执行 alert (“x>=l && x<lO”) 语句;如果还不是, 程序将判断x是否大于等于10且小于100, 如果是, 则执行 alert (“x>=10 &&x<100”) 语句;如果上面的条件都不满足,则执行else 从句。最后的 else 语句部分也可以 不要, 这样,当所有的条件都不满足时, 就什么也不做。

但是,在使用 if 嵌套语句时, 最好使用{ }来确定相互的层次关系。例如:if第4种用法.htm if 语句还可以嵌套使用, 当 if 语句 ( 或其他语句 ) 的从句部分的内容是另外一个完整 的 if 语句 ( 或其他语句 ) 时, 外层的 if 语句 ( 或其他语句 ) 的从句部分的{ }也可以省略。 但是,在使用 if 嵌套语句时, 最好使用{ }来确定相互的层次关系。例如:if第4种用法.htm <script language="javascript"> var x=1; var y=135; if (x==1) {if (y==1) alert('x==1,y==1'); else alert('x==1,y!=1');} alert('x!=1,y==1'); alert('x!=1,y!=1');} </script>

4.4.3 switch 选择语句 switch 语句用于将一个表达式的结果同多个值进行比较,并根据比较结果来选择执行语句,switch 语句的使用格式如下: switch ( 表达式 ) { case 取值 1: 语句块1 break; … case 取值 n: 语句块n default: 语句块 n+1 }

<script language="javascript"> var x=2; switch(x) {case 1: case 语句只是相当于定义了一个标记位置, 程序根据 switch 条件表达式的结果,直接跳转到第一个匹配的标记位置处, 开始顺序执行标记后面的所有程序代码, 包括后面的其他case语句下的代码, 直到碰到 break 语句或函数返回语句为止。default 语句是可选的,它匹配上面所有的 case 语句定义的值以外的其他值,也就是谁也不要的都归它。要将1~3 对应的星期几的英文单词打印出来, 程序代码如下:switch用法.htm <script language="javascript"> var x=2; switch(x) {case 1: alert('Monday'); break; case 2: alert ('Tuesday');

alert('Sorry, I do not know!');} </script> case 3: alert('Wednesday'); break; default: alert('Sorry, I do not know!');} </script> 程序运行结果是弹出一个内容为 “Tuesday” 的对话框。 如非刻意, 一定要记住在每个 case 语句后用 break 语句退出 switch 代码块。例如, 如果 alert (‘Tuesda’); 语句后面没有 break 语句, 程序运行的结果将是打开两个对话框, 两个对话框上面显示的内容分别是 Tuesday 和 Wednesday。

最后的匹配语句后有没有 break 语句, 效果都是一样的, 例如上面的 default 语句后就省略了 break 语句。 case 语句后面可以跟多个执行语句, 这些语句可以不用大括号括起来, 如果将多个语句用大括号括起来,当然也是可以的。 接着来思考一个问题:用同一段语句来处理多个 case 条件, 程序该如何编写呢 ? 示例代码如下: case 1: case 2: case 3: case 4: case 5: alert(‘working day’); break; default: alert (‘off day’); 对于上面这种应用, 不用死记硬背, 要从原理上去思考。还记得前面讲的 "switch 条件一旦碰到第一个 case 匹配,如果没有 break 语句 , 就会继续执行后面的所有程序代码,包括后面的其他 case 语句下的代码 " 这个原理吗 ?

4.4.4 while 循环语句 while 语句是循环语句,也是条件判断语句。while 语句的语法结构如下所示: while ( 条件表达式语句 ) { 执行语句块 } 当条件表达式的返回值为 true 时, 则执行{ }中的语句块,当执行完{ } 中的语句块后,再次检测条件表达式的返回值, 如果返回值还为 true, 则重复执行{ }中的语句块,如此往复, 直到返回值为 false 时, 结束整个循环过程, 接着往下执行 while 代码段后面的程序代码。

<script language="javascript"> var x=1; while(x<3) { 例如,while用法.htm <script language="javascript"> var x=1; while(x<3) { alert('x='+x); x++; } 程序运行的结果是打开两个对话框,显示的内容分别是,x=l 和 x=2, 当 x 等于 3 时, 循环结束。注意 while 表达式的括号后一定不要加 “;“。 例如 : while (x<3) ; 这样, 一条空语句被作为 while 从句, 而大括号中的代码不再是 while 语句的一部分, while 语句将进入无限循环。

4.4.5 do while 语旬 do while 语句的语法结构如下所示 : do { 执行语句块 } while ( 条件表达式语句 ) ; do while 语句的功能与 while 语句差不多, 只不过它是在执行完第一次循环之后才检测条件表达式的值, 这意味着包含在大括号中的代码块至少要被执行一次。另外, do while 语句结尾处的 while 条件语句的括号后有一个分号 (;) 。

下面的例子代码中, while 语句和 do while 语句比较条件一开始就都不成立, while 循 环里面的代码块没有机会被执行, 但 do while 循环中的代码块还是能够执行一次。 var x=3; while (x==0) { alert ("okl") ; x++; } var y=3; do alert ("ok2") ; y++; } while (y==0) ;

<script language="javascript"> var output=""; 4.4.6 for 循环语句 for 循环语句的基本使用格式如下 : for ( 初始化表达式 ; 循环条件表达式 ; 循环后的操作表达式 ) { 执行语句块 } 下面是使用 for 循环语句的例子:for用法.htm <script language="javascript"> var output=""; for (var x=1;x<10;x++) output=output+'x='+x; alert(output); </script>

for 后面的小括号中的内容被 “;” 分隔成三部分 , 其中第一部分 x=1 是给 x 赋 一个初值 , 只在刚进入 for 语句时执行一次; 第二部分 x<10 是一个条件判断语句, 条件满足就进入 for 循环, 循环体中的代码执行完后又会回来执行这一条件判断语句, 直到条件 不成立时结束循环;第三部分 x++ 是对变量 x 的操作, 在每次循环体代码执行完 , 即将进入下一轮条件判断前执行。

for 语句还可以用下面的特殊语法格式 : for (;;) { … } 这是一个无限循环语句 , 需要使用 break 语句跳出循环 , 读者在以后的编程中可能会 遇到 , 例如 , 前面使用 for 循环的程序代码 , 还可以修改成下面的情况 : var x=1; for (; ; ) if (x<10) break; x++; 使用 while (true) 语句 , 也能实现无限循环 , 格式如下 : while (true) 在 JavaScript 中 , 还有一种 foru'in 循环语句。读者需要先对 JavaScript 的对象有一个 基本的了解 , 才能够理解 foru'in 循环语句的作用 , 因此 , 我们将 foru'in 循环语句放在本 章后面讲解。

4.4.7 break 与 continue 语句 只有循环条件表达式的值为 false 时, 循环语句才能结束循环, 如果想提前中断循环, 可以在循环体语句块中添加 break 语句。也可以在循环体语句块中添加 continue 语句 , 跳 过本次循环要执行的剩余语句 , 然后开始下一次循环。 (1) break 语句 break 语句可以中止循环体中的执行语句和 switch 语句。一个无标号的 break 语句会把 控制传给当前循环 ( while 、 do 、 for 或 switch) 的下一条语句。如果break 语句有标号, 控制会被传递 给当前方法中的带有这一标号的循环语句 , 例如 :

st :while (true) { while (true) break st; } 执行完 break st; 语句后 , 程序会跳出外面的 while 循环 , 如果不使用 st 标号 , 程序只会 跳出里面的 while 循环。

<script language="javascript"> (2) continue 语句 continue 语句只能出现在循环语句(while、do、for) 的循环体语句块中, 无标号的continm语句的作用是跳过当前循环的剩余语句, 接着执行下一次循环。 下面是一个打印1-10之间的所有奇数的例子程序, 当i是偶数时就跳过本次循环后的代码, 直接执行for 语句中的第三部分, 然后进入下一次循环的比较,若是奇数就打印出来。 Continue用法.htm <script language="javascript"> var output=""; for (var x=1;x<10;x++) {if (x%2==0) continue; output=output+'x='+x+';';} alert(output); </script>