《《大学计算机基础》第4章编程基础.ppt》由会员分享,可在线阅读,更多相关《《大学计算机基础》第4章编程基础.ppt(99页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、了解程序设计的基本概念和方法,掌握JavaScript 的基础程序设计技术。1主要内容n 程序设计基本概念n JavaScript语言及其运行环境n JavaScript编程基础n WSH的输入/输出功能n JavaScript流程控制n 调试JavaScript程序n JavaScript函数2一、程序设计基本概念n 程序设计语言n 算法与流程图n 结构化程序设计3一、程序设计基本概念(续)n 程序u用计算机语言描述的解决某一问题的步骤,由符合一定词法、语法和语义规则的符号序列组成n 程序设计语言u用于编写计算机程序的语言,包括一组符号定义和相应规则u分类 机器语言 汇编语言 高级语言4一、
2、程序设计基本概念(续)n 程序设计语言(续)u机器语言 二进制代码语言,能被计算机硬件直接识别并执行 例:计算4+6的机器语言程序 00100011 00000100 00000011 00000110 000000105一、程序设计基本概念(续)n 程序设计语言(续)u汇编语言 一种面向机器的低级语言:用助记符代替操作码、用地址符代替操作数 例:计算4+6的汇编语言程序 MOV A,4H ADD A,6H OUTL BUS,A6一、程序设计基本概念(续)n 程序设计语言(续)u高级语言 表达方法接近于人的自然语言和数学表达式,不依赖于机器的特定属性 例:Print 4+6 两种工作方式:编译
3、方式解释方式7一、程序设计基本概念(续)n 算法与流程图u算法 计算机解决问题的方法和步骤 算法描述工具自然语言流程图程序设计语言8一、程序设计基本概念(续)n 算法与流程图(续)u流程图 用一些几何框图、流程线和文字说明表示各种类型的操作9一、程序设计基本概念(续)n 算法与流程图(续)u算法描述实例:求8!自然语言描述:S1:将1值存入被乘数变量f:1f;将2值存入乘数变量m:2mS2:将f与m的乘积存入f:f*mf;使m的值加1:m+1mS3:若m8,转S2;否则,转S4S4:输出结果f并结束流程图描述:10一、程序设计基本概念(续)n 算法与流程图(续)u算法描述实例:求自然语言描述:
4、S1:设累加和变量sum,且1sum;设分母变量deno,且2deno;设数符变量sign,且1sign;S2:(-1)signsign;sign(1/deno)term;sum+termsum;deno+1denoS3:若deno100,转S2;否则,转S4S4:输出结果sum并结束流程图描述:11一、程序设计基本概念(续)n 算法与流程图(续)u算法评价标准 正确性 可读性 通用性 高效率12一、程序设计基本概念(续)n 程序设计u设计、编制和调试程序的方法和过程u一般步骤 问题分析、算法设计、程序编写、程序调试、资料整理u常用方法结构化程序设计(Structured Programmin
5、g,SP)方法面向对象程序设计(Object-Oriented Programming,OOP)方法13一、程序设计基本概念(续)n 结构化程序设计u按照模块化、层次化的方法设计程序u核心思想程序模块化语句结构化自顶向下、逐步求精14一、程序设计基本概念(续)n 例:某班80名学生,求某次考试的不及格率u任务分解 模块结构图15一、程序设计基本概念(续)u用流程图描述各模块的实现算法u使用某种程序设计语言加以实现顶层流程图”输入成绩“流程图”统计不及格人数“流程图16二、JavaScript 语言及其环境n JavaScriptu解释型的、基于对象的脚本语言u适用于创建短小的应用程序n 脚本u
6、用脚本语言编写的程序u通常解释执行n 脚本宿主u执行脚本的解释器17二、JavaScript 语言及其环境(续)n JavaScript脚本的用途u动态网页编程u Web服务器编程u自动管理Windows系统18二、JavaScript 语言及其环境(续)n Windows脚本宿主(WSH)u Windows脚本的运行环境u内嵌在微软的Windows操作系统中n 脚本引擎u某种脚本语言的解释程序u安装WSH时已自动安装JavaScript和VBScrip这两种脚本引擎u WSH可以执行以文本文件格式独立存在的Windows脚本,如.js、.vbs、.wsf、.wsh19二、JavaScript
7、 语言及其环境(续)n 编写JavaScript脚本程序u使用纯文本编辑器(如:记事本程序)u将程序代码保存为.js文件u例:WScript.Echo(Hello World!);20二、JavaScript 语言及其环境(续)n WSH的两种形式u窗口式(WScript)对应可执行文件WScript.exeu命令式(CScript)对应可执行文件CScript.exeuWScript和CScript的区别:输出形式不同21二、JavaScript 语言及其环境(续)n 脚本的执行方式u显式启动WSH执行脚本 启动窗口式WSH(WScript)wscript E:ScriptsS0404.js
8、 启动命令式WSH(CScript)cscript E:ScriptsS0404.jsu隐式启动WSH执行脚本 鼠标双击脚本文件 通过Windows“开始”菜单的“运行”命令 在命令提示符中键入脚本文件的完整路径名22二、JavaScript 语言及其环境(续)n 使用Windows 脚本帮助u“Microsoft Windows 脚本技术”文档(CHM 格式)u微软的脚本中心站点23三、JavaScript 编程基础n 基本概念u数据类型u常量u变量u运算符u表达式24三、JavaScript 编程基础(续)n 数据类型与常量u数值型 整数常量十进制整数八进制整数l 以0开头l 例:032,
9、-032十六进制整数l 以0X或0 x开头l 例:0 x32,-0 x2B25三、JavaScript 编程基础(续)n 数据类型与常量(续)u数值型(续)浮点数常量普通形式l 由整数部分、小数点和小数部分组成l 如:3.2、12.0、12.、.5、-1.8指数形式l 指数是-324308之间的整数l 如:5.34e5(表示5.34105)、312E-4(表示31210-4)NaN(Not a Number的缩写,即“非数字”)26三、JavaScript 编程基础(续)n 数据类型与常量(续)u字符串型 由0个或多个字符组成的序列 字符串常量必须用双引号“”或单引号“”括住 例:Hello
10、word!亚运欢迎你!a 或 aHi!I said.转义字符 转义字符以反斜杠“”开头,后跟一个或多个字符如:n,t,27三、JavaScript 编程基础(续)n 数据类型与常量(续)u布尔型 即逻辑型,只有两个值:逻辑“真”和逻辑“假”,分别对应于布尔常量true和falseu其他类型的常量 null空值常量,表示空的或不存在的对象引用 undefined未定义值常量,表示变量还没有赋值28三、JavaScript 编程基础(续)n 变量u程序中一个已命名的存储单元u两个基本特征 变量名:标识变量的名称 变量值:变量存储的数据u变量的值可以通过赋值发生变化29三、JavaScript 编程
11、基础(续)n 变量(续)u命名 以字母或下划线开头,由字母、数字和下划线构成 不能使用JavaScript保留字,如var 区分大小写 易于记忆、有意义 可以使用中文字符30三、JavaScript 编程基础(续)n 变量(续)u声明 使用关键字 var 声明变量,形如:var variablename;或:var name,age,weight;隐式声明31三、JavaScript 编程基础(续)n 变量(续)u赋值 声明变量的同时给定初始值 如:var name=张三丰;使用赋值语句 如:age=20;32三、JavaScript 编程基础(续)n 变量(续)u读取变量的值把该变量的名字放
12、在常量可以出现的位置:表达式中赋值符的右边函数调用的实参表中33三、JavaScript 编程基础(续)例:变量的基本用法和含义,代码注释var name;/声明变量 namename=张三;/把字符串“张三”存储到变量 name 中age=20;/变量 age 被隐式声明,并赋值整数 20/*以上语句声明两个变量name、age,并赋值;以下语句取出这两个变量的值、并使用WScript.Echo方法输出。*/WScript.Echo(name);/取出变量name的值,并输出WScript.Echo(今年);/输出字符串“今年”WScript.Echo(age);/读取变量age的值,并输出
13、WScript.Echo(岁);/输出字符串“岁”34三、JavaScript 编程基础(续)n 变量(续)u类型变量值所属的数据类型 JavaScript是一种弱类型的编程语言,允许把任何类型的数据赋值给变量,因此JavaScript变量的类型是动态的,只有在程序运行时才能动态确定35三、JavaScript 编程基础(续)例:变量类型的动态性var x=20;WScript.Echo(typeof(x);x=您好;WScript.Echo(typeof(x);x=true;WScript.Echo(typeof(x);使用CScript执行该程序,输出为:numberstringboole
14、an36三、JavaScript 编程基础(续)n 变量(续)u作用域变量起作用的范围,在该范围内可引用该变量全局变量在所有函数之外定义作用范围是同一个脚本文件,从定义处到文件结束局部变量在函数内定义作用范围局限于函数37三、JavaScript 编程基础(续)n 运算符u指定计算操作的符号(如+、-、*、等)。被计算的值称为操作数。u基本属性优先级结合性u单目运算符、双目运算符、三目运算符u算术运算符、关系运算符、逻辑运算符38三、JavaScript 编程基础(续)n 表达式u运算符和操作数组合而成的式子u例:256、x、x+600u表达式的值 对操作数实施运算符所确定的计算后产生的结果值
15、 例:若有定义 var x=256;则:256、x、x+600的值分别是数值256、256、85639三、JavaScript 编程基础(续)n 运算符的优先级u决定各运算符的执行次序:优先级高的先计算u例:u尽量使用简单的表达式40三、JavaScript 编程基础(续)n 运算符的结合性u在运算符优先级相同的情况下,由结合性决定运算顺序u左结合左边的运算符优先计算例:100-20+5u右结合右边的运算符优先计算例:x=y=12341三、JavaScript 编程基础(续)n 表达式计算中的类型转换u JavaScript会根据运算符的特性和操作数的类型进行隐式类型转换u控制方法对于+运算符
16、如果有一个操作数为字符串,则为字符串连接运算如果两个操作数都不是字符串,则是算术加运算对于其他运算符自动把操作数转换为相应类型使用函数parseInt()和parseFloat()显式转换42三、JavaScript 编程基础(续)n 算术运算符u操作数和计算结果都是数值型u+-*/%+-u例:12%5/若有 var x=10,y;y=+x;y=x+;y=-x;y=x-;43三、JavaScript 编程基础(续)n 算术运算符(续)u例:网购一本书,书价7折,运费5元,共付款61元,问:书价是多少?paid=price*discount+transCosts price=(paid tran
17、sCosts)/discount44三、JavaScript 编程基础(续)n 关系运算符u对操作数进行比较,返回一个布尔值u又称比较运算符u=!=!=u运算规则 两个操作数都是字符串进行字符串比较运算(比较字符的Unicode码值)例:xyzXYZ、xXYZ“至少有一个操作数不是字符串先将非数值型操作数转换为数值,然后进行数值比较运算例:210、1true、truefalse、2=0X2、1=true、true=true 45三、JavaScript 编程基础(续)n 逻辑运算符u操作数和计算结果都是布尔值u&|!u例:score=85&score=100 year%4=0&year%100
18、!=0|year%400=0 46三、JavaScript 编程基础(续)n 位操作运算符u用于对整数的二进制位进行操作,计算结果仍为整数u&|u例:var a=4,b=7,c=2,result;WScript.Echo(a=4(0100),b=7(0111),c=2);result=a&b;WScript.Echo(a&b=+result);result=ac;WScript.Echo(ac;WScript.Echo(ac=+result);result=-12;WScript.Echo(-12=+result);result=-12;WScript.Echo(-12=+result);结果
19、:-1无符号右移结果:230-147三、JavaScript 编程基础(续)n 赋值运算符u=u组合赋值运算符=+=-=*=/=%=&=|=48三、JavaScript 编程基础(续)n 条件运算符u condition?true_result:false_resultu例:var number,dataOK;number=5;dataOK=(number0)?true:false;49四、WSH 的输入/输出功能n 借助脚本宿主对象所提供的有关方法进行n 1、使用WScript对象的Echo方法u 命令格式:WScript.Echo(Arg1,Arg2,Arg3.);u 例:WScript.
20、Echo(HelloWorld!);WScript.Echo(Hello,World!);WScript.Echo(1+2,=,1+2);50四、WSH 的输入/输出功能(续)n 2、使用WScript.Shell对象的Popup方法 命令格式:iB=object.Popup(strText,nSecondsToWait,strTitle,nType)例:var shell=WScript.CreateObject(WScript.Shell);var BtnCode=shell.Popup(您是会员吗?,8,确认框示例,1);var isMember=(BtnCode=1);var show
21、_text=isMember?欢迎!请进!:对不起!我们只对会员开放;WScript.Echo(show_text);51四、WSH 的输入/输出功能(续)n 3、使用 WScript对象的子对象StdIn、StdOut u 只能用CScript执行u WScript.StdIn对象的ReadLine方法从标准输入流中读取一行文本 使用转换函数parseInt()和parseFloat()u WScript.StdOut对象的WriteLine方法向标准输出流输出一行文本 52四、WSH 的输入/输出功能(续)n 3、使用 WScript对象的子对象StdIn、StdOut u 例1:var
22、age;WScript.StdOut.WriteLine(请输入你的年龄:);age=();WScript.Echo(比你年长5岁的人今年,age+5,岁);请输入你的年龄:20比你年长5岁的人今年 205 岁53四、WSH 的输入/输出功能(续)n 3、使用 WScript对象的子对象StdIn、StdOut u 例2:var age;WScript.StdOut.WriteLine(请输入你的年龄:);age=parseInt();WScript.Echo(比你年长5岁的人今年,age+5,岁);请输入你的年龄:20比你年长5岁的人今年 25 岁 54五、JavaScript 流程控制n
23、三种流程结构u顺序u选择u循环 if 语句switch 语句while 语句for 语句dowhile 语句55五、JavaScript 流程控制(续)n if语句u基本形式:if(判定条件)语句1;else 语句2;56五、JavaScript 流程控制(续)n例:判断用户输入的一个年份是否为闰年var year;WScript.StdOut.WriteLine(请输入年份:);year=();if(year%4=0&year%100!=0|year%400=0)WScript.Echo(year+年+是闰年);else WScript.Echo(year+年+不是闰年);57五、JavaS
24、cript 流程控制(续)if(year%4=0&year%100!=0|year%400=0)WScript.Echo(year+年+是闰年);else WScript.Echo(year+年+不是闰年);这个if语句的功能能否不用if语句实现?58五、JavaScript 流程控制(续)n if语句(续)u形式2:if(判定条件)语句1u例:求3个变量x,y,z中的最大值。max=x;if(maxy)max=y;if(maxz)max=z;59五、JavaScript 流程控制(续)n 代码缩排n 使用语句组60五、JavaScript 流程控制(续)n 例:if(carDoors=4)&
25、(driverAge 24)premium=650.00;WScript.Echo(保险费=+premium+LOW RISK);else premium=1200.00;WScript.Echo(保险费=+premium+HIGH RISK);61五、JavaScript 流程控制(续)n if语句(续)u嵌套形式:一个if语句中包含其他的if语句u例:等级成绩评定 62五、JavaScript 流程控制(续)n switch语句 switch(表达式)case 表达式1:语句1;break;case 表达式2:语句2;break;default:语句n+1;break;63五、JavaSc
26、ript 流程控制(续)n 例:根据用户输入的一个数字(0-6),输出它对应的是星期几/switch(weekday)case 0:WScript.Echo(星期日);break;case 1:WScript.Echo(星期一);break;case 2:WScript.Echo(星期二);break;case 3:WScript.Echo(星期三);break;case 4:WScript.Echo(星期四);break;case 5:WScript.Echo(星期五);break;case 6:WScript.Echo(星期六);break;default:WScript.Echo(输入有
27、误);break;64五、JavaScript 流程控制(续)n 当一些语句需要反复执行时,就要用到循环结构的语句,即循环语句。n JavaScript常用的循环语句u for语句u while语句u dowhile语句65五、JavaScript 流程控制(续)n for语句u格式:for(初值表达式;循环判定式;更新表达式)循环体语句;u执行步骤:66五、JavaScript 流程控制(续)n 例:求var sum=1,deno,sign=1,term;for(deno=2;deno=100;deno+)sign=(-1)*sign;term=sign*(1/deno);sum+=term
28、;WScript.Echo(该多项式的和为:,sum);67五、JavaScript 流程控制(续)n 例:显示十六进制数的数码0123ABCDEFfor(i=0;i16;i+)/i遍历每个数码 switch(i)/将十进制数i转换为对应的十六进制数码 case 10:digit=A;break;case 11:digit=B;break;.default:digit=i;break;/09 digits=digits+digit;WScript.Echo(十六进制的16个数码是:,digits);68五、JavaScript 流程控制(续)n while语句u格式:while(循环判定式)循
29、环体语句;u执行步骤:69五、JavaScript 流程控制(续)n 例:求var sum=1,deno=2,sign=1,term;while(deno=100)sign=(-1)*sign;term=sign*(1/deno);sum+=term;deno+;WScript.Echo(该多项式的和为:,sum);70五、JavaScript 流程控制(续)n do.while语句u格式:do 循环体语句 while(循环判定式);u执行步骤:71五、JavaScript 流程控制(续)n 例:求var sum=1,deno=2,sign=1,term;do sign=(-1)*sign;t
30、erm=sign*(1/deno);sum+=term;deno+;while(deno=100);WScript.Echo(该多项式的和为:,sum);72代码的输出结果?var i=0,text=;while(i5)text+=i;i+;WScript.Echo(text=,text);var i=0,text=;while(i5);text+=i;i+;WScript.Echo(text=,text);73代码的输出结果?var i=8,text=;while(i5)text+=i;i+;WScript.Echo(text=,text);var i=8,text=;do text+=i;
31、i+;while(i5);WScript.Echo(text=,text);dowhile的特点:至少执行一次循环体语句74n 在什么情况下,循环体及判定表达式皆相同的while和do.while不等价?75五、JavaScript 流程控制(续)n break语句u格式:break;u功能:结束循环语句(或switch语句)的执行n continue语句u格式:continue;u功能:结束循环体的当次执行n 在循环体中与if语句配合使用,控制循环 76五、JavaScript 流程控制(续)n 例:一段楼梯,每步跨2级,最后剩1级;每步跨3级,最后剩2级;每步跨4级,最后剩3级;每步跨5级
32、,最后剩4级;每步跨6级,最后剩5级;每步跨7级,则最后不剩。问:楼梯最少有多少级?var steps=7;while(true)if(steps%3=2&steps%4=3&steps%5=4&steps%6=5)break;steps+=7;WScript.Echo(楼梯最少有+steps+级);77五、JavaScript 流程控制(续)var text=,i,count=0;for(i=1;i100;i+)if(i%8=0)continue;count+;text=text+i+t;if(count%5=0)text+=nWScript.Echo(text);例:以每行5个数的方式输出
33、1100之间不能被8整除的数78五、JavaScript 流程控制(续)n 循环的嵌套u在一个循环语句的循环体中包含另一个循环语句u例:求1001000之间的所有素数思路:逐个数进行检查,是素数,则输出判断某数number是否为素数:看能否被2number-1之间的数整除,能,则不是素数79n 代码var number,submul,count=0;var text=1001000之间的素数:nn;for(number=100;number=1000;number+)for(submul=2;submulnumber;submul+)if(number%submul=0)break;if(su
34、bmul=number)text=text+number+;count+;if(count%10=0)text+=n;WScript.Echo(text);80小结n WSH的输入/输出n 流程控制u选择结构 if;switchu循环结构 for;while;do-whileu breaku continue81六、调试JavaScript 程序n 调试程序:排除程序中的错误n 程序错误u语法错误 程序不能正常执行 利用WSH错误提示进行排除u语义错误 程序可以执行,但结果不正确 利用调试工具进行排除跟踪程序的执行并查看执行中变量值的变化情况82六、调试JavaScript 程序(续)n 使用
35、Microsoft脚本编辑器来调试程序n 步骤 1:在调试器中执行脚本 如:CScript E:jajS0425-withError.js/X 2:设置断点、执行到断点 3:逐语句执行,观察变量值的变化 4:找到问题后,结束本次调试执行83七、Javascript 函数n 函数u语句序列u作用:完成程序中的一个子任务u优点:可重用u预定义函数u自定义函数84七、Javascript 函数(续)n 预定义函数u eval():计算在字符串中的常量表达式的值u escape():将字符串中的非字母数字的ASCII字符转换为%AA、或将非ASCII字符(如汉字)转换为%uUUUU。例:var esc
36、apestr=escape(您好!John);把变量 escapestr 赋值为字符串%u60A8%u597D%21%20Johnu unescape():功能与escape()相反85七、Javascript 函数(续)n 预定义函数(续)u isNaN():确定一个变量是否是NaNu isFinite():确定一个数值型变量是否有限 例:isFinite(1)返回true,而isFinite(a)返回falseu parseFloat():将字符串中开头的数字部分转换为浮点数。例:parseFloat(123.45abc)/123.45 parseFloat(abc123.45)/NaN
37、parseFloat(true)/NaN u parseInt()86七、Javascript 函数(续)n 自定义函数u定义格式:function 函数名(形参1,形参2.)函数体u例:自定义无参函数function Hello()WScript.Echo(您好!);87七、Javascript 函数(续)n 自定义函数(续)u例:判断整数是否为素数的函数function isPrime(number)for(submul=2;submulnumber;submul+)if(number%submul=0)break;if(submul=number)return true;else ret
38、urn false;88七、Javascript 函数(续)n 给函数添加返回值u return 表达式;89七、Javascript 函数(续)n 函数调用u形式:函数名(实参1,实参2)u例:调用无参函数Hellou调用流程/Hello();/90七、Javascript 函数(续)n 函数调用(续)u例:调用isPrime函数求1001000之间的素数var number,submul,count=0;var text=1001000之间的素数:nn;for(number=100;number=1000;number+)if(isPrime(number)text=text+number
39、+;count+;if(count%10=0)text+=n;WScript.Echo(text);91七、Javascript 函数(续)n 函数与过程u过程:只返回undefined的函数 无return语句 只有return;语句u过程调用单独构成一条语句,而函数调用通常出现在表达式中92七、Javascript 函数(续)n 函数的嵌套调用u函数定义的函数体语句中出现对另一个函数的调用93七、Javascript 函数(续)n 递归函数u函数定义的函数体中出现对自身的直接(或间接)调用u例:一个农夫现有一头刚出生的母牛,且,每头母牛从其出生的第4年起,每年生一头母牛,问:第n年农夫共有
40、多少牛?94问题分析年份:1 2 3 4 5 6 7 8 9 10新生牛数目:1 0 0 1 1 1 2 3 4 6牛的总数目:1 1 1 2 3 4 6 9 13 19牛的总数=上年牛的总数+本年新生牛的数目本年新生牛的数目=倒数第三年的牛的总数95数学公式Cows(year-1)+Cows(year-3)(year3)1(1=year=3)Cows(year)=96代码function CountCows(year)var cows;if(year=3)return 1;cows=CountCows(year-3)+CountCows(year-1);return cows;(要计算第几年的牛的数目?n);year=();WScript.Echo(第+year+年牛的数目为:+CountCows(year);97七、Javascript 函数(续)n 变量作用域u变量的作用范围,在该范围内可引用该变量u全局变量 vs.局部变量 由变量定义所处的位置决定(函数中/函数外)“局部优先”尽量使用局部变量,以避免冲突98小结n JavaScript程序调试n 函数u定义u调用u嵌套调用u递归函数99