收藏 分享(赏)

《大学计算机基础》第4章_编程基础(new).ppt

上传人:dzzj200808 文档编号:3351151 上传时间:2018-10-17 格式:PPT 页数:99 大小:827.50KB
下载 相关 举报
《大学计算机基础》第4章_编程基础(new).ppt_第1页
第1页 / 共99页
《大学计算机基础》第4章_编程基础(new).ppt_第2页
第2页 / 共99页
《大学计算机基础》第4章_编程基础(new).ppt_第3页
第3页 / 共99页
《大学计算机基础》第4章_编程基础(new).ppt_第4页
第4页 / 共99页
《大学计算机基础》第4章_编程基础(new).ppt_第5页
第5页 / 共99页
点击查看更多>>
资源描述

1、1,第 4 章,程序设计基础,2,主要内容,程序设计基本概念 JavaScript语言及其运行环境 JavaScript编程基础 WSH的输入/输出功能 JavaScript流程控制 调试JavaScript程序 JavaScript函数,3,一、程序设计基本概念,程序设计语言 算法与流程图 结构化程序设计,4,一、程序设计基本概念(续),程序 用计算机语言描述的解决某一问题的步骤,由符合一定词法、语法和语义规则的符号序列组成 程序设计语言 用于编写计算机程序的语言,包括一组符号定义和相应规则 分类 机器语言 汇编语言 高级语言,5,一、程序设计基本概念(续),程序设计语言(续) 机器语言 二

2、进制代码语言,能被计算机硬件直接识别并执行 例:计算4+6的机器语言程序00100011 0000010000000011 0000011000000010,6,一、程序设计基本概念(续),程序设计语言(续) 汇编语言 一种面向机器的低级语言:用助记符代替操作码、用地址符代替操作数 例:计算4+6的汇编语言程序MOV A,4HADD A,6HOUTL BUS,A,7,一、程序设计基本概念(续),程序设计语言(续) 高级语言 表达方法接近于人的自然语言和数学表达式,不依赖于机器的特定属性 例:Print 4+6 两种工作方式: 编译方式 解释方式,8,一、程序设计基本概念(续),算法与流程图 算

3、法 计算机解决问题的方法和步骤 算法描述工具 自然语言 流程图 程序设计语言,9,一、程序设计基本概念(续),算法与流程图(续) 流程图 用一些几何框图、流程线和文字说明表示各种类型的操作,10,一、程序设计基本概念(续),算法与流程图(续) 算法描述实例:求8!,自然语言描述: S1:将1值存入被乘数变量f:1f;将2值存入乘数变量m:2m S2:将f与m的乘积存入f:f*mf;使m的值加1:m+1m S3:若m8,转S2;否则,转S4 S4:输出结果f并结束,流程图描述:,11,一、程序设计基本概念(续),算法与流程图(续) 算法描述实例:求,自然语言描述: S1:设累加和变量sum,且1

4、sum;设分母变量deno,且2deno;设数符变量sign,且1sign; S2:(-1)signsign;sign(1/deno)term;sum+termsum;deno+1deno S3:若deno100,转S2;否则,转S4 S4:输出结果sum并结束,流程图描述:,12,一、程序设计基本概念(续),算法与流程图(续) 算法评价标准 正确性 可读性 通用性 高效率,13,一、程序设计基本概念(续),程序设计 设计、编制和调试程序的方法和过程 一般步骤 问题分析、算法设计、程序编写、程序调试、资料整理 常用方法 结构化程序设计(Structured Programming,SP ) 方

5、法 面向对象程序设计(Object-Oriented Programming,OOP) 方法,14,一、程序设计基本概念(续),结构化程序设计 按照模块化、层次化的方法设计程序 核心思想 程序模块化 语句结构化 自顶向下、逐步求精,15,一、程序设计基本概念(续),例:某班80名学生,求某次考试的不及格率 任务分解 模块结构图,16,一、程序设计基本概念(续),用流程图描述各模块的实现算法使用某种程序设计语言加以实现,顶层流程图,”输入成绩“流程图,”统计不及格人数“流程图,17,二、JavaScript语言及其环境,JavaScript 解释型的、基于对象的脚本语言 适用于创建短小的应用程序

6、 脚本 用脚本语言编写的程序 通常解释执行 脚本宿主 执行脚本的解释器,18,二、JavaScript语言及其环境(续),JavaScript脚本的用途 动态网页编程 Web服务器编程 自动管理Windows系统,19,二、JavaScript语言及其环境(续),Windows脚本宿主(WSH) Windows脚本的运行环境 内嵌在微软的Windows操作系统中 脚本引擎 某种脚本语言的解释程序 安装WSH时已自动安装JavaScript和VBScrip这两种脚本引擎 WSH可以执行以文本文件格式独立存在的Windows脚本,如.js、.vbs、.wsf、.wsh,20,二、JavaScrip

7、t语言及其环境(续),编写JavaScript脚本程序 使用纯文本编辑器(如:记事本程序) 将程序代码保存为.js文件 例:,WScript.Echo(“Hello World!“);,21,二、JavaScript语言及其环境(续),WSH的两种形式 窗口式(WScript) 对应可执行文件WScript.exe 命令式(CScript) 对应可执行文件CScript.exe WScript和CScript的区别:输出形式不同,22,二、JavaScript语言及其环境(续),脚本的执行方式 显式启动WSH执行脚本 启动窗口式WSH(WScript)wscript E:ScriptsS040

8、4.js 启动命令式WSH(CScript)cscript E:ScriptsS0404.js 隐式启动WSH执行脚本 鼠标双击脚本文件 通过Windows“开始”菜单的“运行”命令 在命令提示符中键入脚本文件的完整路径名,23,二、JavaScript语言及其环境(续),使用Windows 脚本帮助 “Microsoft Windows 脚本技术” 文档(CHM 格式) 微软的脚本中心站点http:/ 数据类型 常量 变量 运算符 表达式,25,三、JavaScript编程基础(续),数据类型与常量 数值型 整数常量 十进制整数 八进制整数 以0开头 例:032,-032 十六进制整数 以0

9、X或0x开头 例:0x32,-0x2B,26,三、JavaScript编程基础(续),数据类型与常量(续) 数值型(续) 浮点数常量 普通形式 由整数部分、小数点和小数部分组成 如:3.2、12.0、12.、.5、-1.8 指数形式 指数是-324308之间的整数 如:5.34e5(表示5.34105)、312E-4(表示31210-4) NaN(Not a Number的缩写,即“非数字”),27,三、JavaScript编程基础(续),数据类型与常量(续) 字符串型 由0个或多个字符组成的序列 字符串常量必须用双引号“”或单引号“”括住 例: “Hello word!“ 亚运欢迎你! “a

10、“ 或 a “Hi!“ I said. 转义字符 以反斜杠“”开头,后跟一个或多个字符 如: n , t , ,28,三、JavaScript编程基础(续),数据类型与常量(续) 布尔型 即逻辑型,只有两个值:逻辑“真”和逻辑“假”,分别对应于布尔常量true和false 其他类型的常量 null 空值常量,表示空的或不存在的对象引用 undefined 未定义值常量,表示变量还没有赋值,29,三、JavaScript编程基础(续),变量 程序中一个已命名的存储单元 两个基本特征 变量名:标识变量的名称 变量值:变量存储的数据 变量的值可以通过赋值发生变化,30,三、JavaScript编程基

11、础(续),变量(续) 命名 以字母或下划线开头,由字母、数字和下划线构成 不能使用JavaScript保留字,如var 区分大小写 易于记忆、有意义 可以使用中文字符,31,三、JavaScript编程基础(续),变量(续) 声明 使用关键字 var 声明变量,形如:var variablename;或:var name,age,weight; 隐式声明,32,三、JavaScript编程基础(续),变量(续) 赋值 声明变量的同时给定初始值如:var name = “张三丰“; 使用赋值语句如:age = 20;,33,三、JavaScript编程基础(续),变量(续) 读取变量的值 把该变

12、量的名字放在常量可以出现的位置: 表达式中赋值符的右边 函数调用的实参表中,34,三、JavaScript编程基础(续),例:变量的基本用法和含义,代码注释var name; /声明变量 name name=“张三“;/把字符串“张三”存储到变量 name 中 age=20; /变量 age 被隐式声明,并赋值整数 20 /*以上语句声明两个变量name、age,并赋值;以下语句取出这两个变量的值、并使用WScript.Echo方法输出。 */ WScript.Echo(name); /取出变量name的值,并输出 WScript.Echo(“今年“); /输出字符串“今年” WScript.

13、Echo(age); /读取变量age的值,并输出 WScript.Echo(“岁“); /输出字符串“岁”,35,三、JavaScript编程基础(续),变量(续) 类型 变量值所属的数据类型 JavaScript是一种弱类型的编程语言,允许把任何类型的数据赋值给变量,因此JavaScript变量的类型是动态的,只有在程序运行时才能动态确定,36,三、JavaScript编程基础(续),例:变量类型的动态性 var x=20; WScript.Echo(typeof(x); x=“您好“; WScript.Echo(typeof(x); x=true; WScript.Echo(typeof

14、(x);,使用CScript执行该程序,输出为: number string boolean,37,三、JavaScript编程基础(续),变量(续) 作用域 变量起作用的范围,在该范围内可引用该变量 全局变量 在所有函数之外定义 作用范围是同一个脚本文件,从定义处到文件结束 局部变量 在函数内定义 作用范围局限于函数,38,三、JavaScript编程基础(续),运算符 指定计算操作的符号(如+、-、*、等)。被计算的值称为操作数。 基本属性 优先级 结合性 单目运算符、双目运算符、三目运算符 算术运算符、关系运算符、逻辑运算符,39,三、JavaScript编程基础(续),表达式 运算符和

15、操作数组合而成的式子 例:256、x、x+600 表达式的值 对操作数实施运算符所确定的计算后产生的结果值 例:若有定义var x=256;则:256、x、x+600的值分别是数值256、256、856,40,三、JavaScript编程基础(续),运算符的优先级 决定各运算符的执行次序:优先级高的先计算 例:尽量使用简单的表达式,41,三、JavaScript编程基础(续),运算符的结合性 在运算符优先级相同的情况下,由结合性决定运算顺序 左结合 左边的运算符优先计算 例:100-20+5 右结合 右边的运算符优先计算 例:x=y=123,42,三、JavaScript编程基础(续),表达式

16、计算中的类型转换 JavaScript会根据运算符的特性和操作数的类型进行隐式类型转换 控制方法 对于+运算符 如果有一个操作数为字符串,则为字符串连接运算 如果两个操作数都不是字符串,则是算术加运算 对于其他运算符 自动把操作数转换为相应类型 使用函数parseInt()和parseFloat()显式转换,43,三、JavaScript编程基础(续),算术运算符 操作数和计算结果都是数值型 + - * / % + - 例:12%5/若有 var x=10,y;y = +x; y = x+; y = -x; y = x-;,44,三、JavaScript编程基础(续),算术运算符(续) 例:网

17、购一本书,书价7折,运费5元,共付款61元,问:书价是多少?,paid = price * discount + transCosts,price = ( paid transCosts ) / discount,45,三、JavaScript编程基础(续),关系运算符 对操作数进行比较,返回一个布尔值 又称比较运算符= = != = != 运算规则 两个操作数都是字符串 进行字符串比较运算(比较字符的Unicode码值) 例:“xyz“XYZ“、“x“XYZ“ 至少有一个操作数不是字符串 先将非数值型操作数转换为数值,然后进行数值比较运算 例:2“10“、1true、truefalse、2=

18、“0X2“、1=true、“true“=true,46,三、JavaScript编程基础(续),逻辑运算符 操作数和计算结果都是布尔值 & | ! 例:score=85 & score=100year%4=0 & year%100!=0 | year%400=0,47,三、JavaScript编程基础(续),位操作运算符 用于对整数的二进制位进行操作,计算结果仍为整数 ,结果:-1,无符号右移结果:230-1,48,三、JavaScript编程基础(续),赋值运算符 = 组合赋值运算符= += -= *= /= %= &= |= = = =,49,三、JavaScript编程基础(续),条件运

19、算符 condition? true_result : false_result 例:var number, dataOK;number = 5; dataOK = (number0)? true : false;,50,四、WSH的输入/输出功能,借助脚本宿主对象所提供的有关方法进行 1、使用WScript对象的Echo方法 命令格式:WScript.Echo(Arg1 ,Arg2 ,Arg3 .);例:WScript.Echo(“HelloWorld!“);WScript.Echo(“Hello“,“World!“);WScript.Echo(“1+2“,“=“,1+2);,51,四、WS

20、H的输入/输出功能(续),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_text = isMember? “欢迎!请进!“:“对不起!我们只对会员开放“; WScript.Echo(show

21、_text);,52,四、WSH的输入/输出功能(续),3、使用 WScript对象的子对象StdIn、StdOut 只能用CScript执行 WScript.StdIn对象的ReadLine方法从标准输入流中读取一行文本 使用转换函数parseInt()和parseFloat() WScript.StdOut对象的WriteLine方法向标准输出流输出一行文本,53,四、WSH的输入/输出功能(续),3、使用 WScript对象的子对象StdIn、StdOut 例1:var age;WScript.StdOut.WriteLine(“请输入你的年龄:“);age = WScript.StdI

22、n.ReadLine();WScript.Echo(“比你年长5岁的人今年“, age+5, “岁“);,请输入你的年龄: 20 比你年长5岁的人今年 205 岁,54,四、WSH的输入/输出功能(续),3、使用 WScript对象的子对象StdIn、StdOut 例2:var age;WScript.StdOut.WriteLine(“请输入你的年龄:“);age = parseInt(WScript.StdIn.ReadLine();WScript.Echo(“比你年长5岁的人今年“, age+5, “岁“);,请输入你的年龄: 20 比你年长5岁的人今年 25 岁,55,五、JavaSc

23、ript流程控制,三种流程结构 顺序选择循环,if 语句,switch 语句,while 语句,for 语句,dowhile 语句,56,五、JavaScript流程控制(续),if语句 基本形式:if (判定条件)语句1;else语句2;,57,五、JavaScript流程控制(续),例: 判断用户输入的一个年份是否为闰年var year; WScript.StdOut.WriteLine(“请输入年份:“); year = parseInt(WScript.StdIn.ReadLine(); if(year%4=0 ,58,五、JavaScript流程控制(续),if(year%4=0 ,

24、这个if语句的功能能否不用if语句实现?,59,五、JavaScript流程控制(续),if语句(续) 形式2:if (判定条件)语句1例:求3个变量x, y, z中的最大值。max = x; if (maxy) max=y; if (maxz) max=z;,60,五、JavaScript流程控制(续),代码缩排 使用语句组,61,五、JavaScript流程控制(续),例:if (carDoors = 4) ,62,五、JavaScript流程控制(续),if语句(续) 嵌套形式:一个if语句中包含其他的if语句 例:等级成绩评定,63,五、JavaScript流程控制(续),switch

25、语句switch(表达式) case 表达式1:语句1; break; case 表达式2:语句2; break; default:语句n+1; break; ,64,五、JavaScript流程控制(续),例:根据用户输入的一个数字(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

26、.Echo(“星期四“);break;case 5: WScript.Echo(“星期五“);break;case 6: WScript.Echo(“星期六“);break;default:WScript.Echo(“输入有误“);break;,65,五、JavaScript流程控制(续),当一些语句需要反复执行时,就要用到循环结构的语句,即循环语句。 JavaScript常用的循环语句 for语句 while语句 dowhile语句,66,五、JavaScript流程控制(续),for语句 格式: for(初值表达式; 循环判定式; 更新表达式) 循环体语句; 执行步骤:,67,五、Java

27、Script流程控制(续),例:求,var sum=1, deno, sign=1, term;for(deno=2; deno=100; deno+) sign=(-1)*sign;term=sign*(1/deno);sum+=term; WScript.Echo(“该多项式的和为:“, sum);,68,五、JavaScript流程控制(续),例:显示十六进制数的数码0123ABCDEF,for(i=0; i16; i+) /i遍历每个数码 switch(i)/将十进制数i转换为对应的十六进制数码case 10:digit=“A“; break;case 11:digit=“B“; br

28、eak;.default: digit=i; break; /09digits = digits + digit; WScript.Echo(“十六进制的16个数码是:“,digits);,69,五、JavaScript流程控制(续),while语句 格式:while(循环判定式) 循环体语句; 执行步骤:,70,五、JavaScript流程控制(续),例:求,var sum=1, deno=2, sign=1, term;while(deno=100) sign=(-1)*sign;term=sign*(1/deno);sum+=term;deno+; WScript.Echo(“该多项式的

29、和为:“, sum);,71,五、JavaScript流程控制(续),do.while语句 格式:do 循环体语句 while(循环判定式); 执行步骤:,72,五、JavaScript流程控制(续),例:求,var sum=1, deno=2, sign=1, term;do sign=(-1)*sign;term=sign*(1/deno);sum+=term;deno+; while(deno=100);WScript.Echo(“该多项式的和为:“, sum);,73,代码的输出结果?,var i=0, text=“;while(i5) text+=i;i+; WScript.Echo

30、(“text=“, text);,var i=0, text=“;while(i5); text+=i;i+; WScript.Echo(“text=“, text);,74,代码的输出结果?,var i=8, text=“;while(i5) text+=i;i+; WScript.Echo(“text=“, text);,var i=8, text=“;do text+=i;i+; while(i5);WScript.Echo(“text=“, text);,dowhile的特点:至少执行一次循环体语句,75,在什么情况下,循环体及判定表达式皆相同的while和do.while不等价?,7

31、6,五、JavaScript流程控制(续),break语句 格式: break; 功能:结束循环语句(或switch语句)的执行 continue语句 格式: continue; 功能:结束循环体的当次执行在循环体中与if语句配合使用,控制循环,77,五、JavaScript流程控制(续),例:一段楼梯,每步跨2级,最后剩1级;每步跨3级,最后剩2级;每步跨4级,最后剩3级;每步跨5级,最后剩4级;每步跨6级,最后剩5级;每步跨7级,则最后不剩。问:楼梯最少有多少级?,var steps=7;while(true) if(steps%3 = 2 ,78,五、JavaScript流程控制(续),

32、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 += “n“ WScript.Echo(text);,例: 以每行5个数的方式输出1100之间不能被8整除的数,79,五、JavaScript流程控制(续),循环的嵌套 在一个循环语句的循环体中包含另一个循环语句 例:求1001000之间的所有素数 思路: 逐个数进行检查,是素数,则输出 判断某数number是否为素数:看能否被2number-1之间的数整除,能,则不是素

33、数,80,代码,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(submul = number)text = text + number + “ “;count+;if(count%10 = 0)text += “n“; WScript.Echo(text);,81,小结,WSH的输入/输出 流程控制 选择结构 if;swit

34、ch 循环结构 for;while;do-while break continue,82,六、调试JavaScript程序,调试程序:排除程序中的错误 程序错误 语法错误 程序不能正常执行 利用WSH错误提示进行排除 语义错误 程序可以执行,但结果不正确 利用调试工具进行排除 跟踪程序的执行并查看执行中变量值的变化情况,83,六、调试JavaScript程序(续),使用Microsoft脚本编辑器来调试程序 步骤 1:在调试器中执行脚本如:CScript E:jajS0425-withError.js /X 2:设置断点、执行到断点 3:逐语句执行,观察变量值的变化 4:找到问题后,结束本次调

35、试,执行,84,七、Javascript函数,函数 语句序列 作用:完成程序中的一个子任务 优点:可重用 预定义函数 自定义函数,85,七、Javascript函数(续),预定义函数 eval( ) :计算在字符串中的常量表达式的值escape( ):将字符串中的非字母数字的ASCII字符转换为%AA、或将非ASCII字符(如汉字)转换为%uUUUU。例:var escapestr=escape(“您好! John“);把变量 escapestr 赋值为字符串%u60A8%u597D%21%20Johnunescape( ):功能与escape( ) 相反,86,七、Javascript函数(

36、续),预定义函数(续) isNaN( ) :确定一个变量是否是NaN isFinite( ):确定一个数值型变量是否有限例:isFinite(1)返回true,而isFinite(“a“)返回falseparseFloat( ):将字符串中开头的数字部分转换为浮点数。例: parseFloat(“123.45abc“) /123.45parseFloat(“abc123.45“) /NaNparseFloat(true) /NaN parseInt( ),87,七、Javascript函数(续),自定义函数 定义格式: function 函数名(形参1 ,形参2.) 函数体 例:自定义无参函数

37、,function Hello( ) WScript.Echo(“您好!“); ,88,七、Javascript函数(续),自定义函数(续) 例:判断整数是否为素数的函数,function isPrime(number) for(submul=2; submulnumber; submul+)if(number%submul = 0)break; if(submul = number)return true;elsereturn false; ,89,七、Javascript函数(续),给函数添加返回值return 表达式;,90,七、Javascript函数(续),函数调用 形式:函数名(实

38、参1 , 实参2 ) 例:调用无参函数Hello调用流程,/ Hello(); /,91,七、Javascript函数(续),函数调用(续) 例:调用isPrime函数求1001000之间的素数,var number, submul, count=0; var text=“1001000之间的素数:nn“; for(number=100; number=1000; number+) if(isPrime(number)text = text + number + “ “;count+;if(count%10 = 0)text += “n“; WScript.Echo(text);,92,七、J

39、avascript函数(续),函数与过程 过程:只返回undefined的函数 无return语句 只有return;语句 过程调用单独构成一条语句,而函数调用通常出现在表达式中,93,七、Javascript函数(续),函数的嵌套调用 函数定义的函数体语句中出现对另一个函数的调用,94,七、Javascript函数(续),递归函数 函数定义的函数体中出现对自身的直接(或间接)调用 例:一个农夫现有一头刚出生的母牛,且,每头母牛从其出生的第4年起,每年生一头母牛,问:第n年农夫共有多少牛?,95,问题分析,年份: 1 2 3 4 5 6 7 8 9 10 新生牛数目:1 0 0 1 1 1 2

40、 3 4 6 牛的总数目:1 1 1 2 3 4 6 9 13 19,牛的总数 = 上年牛的总数 + 本年新生牛的数目 本年新生牛的数目 = 倒数第三年的牛的总数,96,数学公式,Cows(year-1) + Cows(year-3) (year3),1 (1=year=3),Cows(year) =,97,代码,function CountCows(year) var cows;if ( year=3 )return 1;cows = CountCows(year-3) + CountCows(year-1);return cows; WScript.stdOut.Writeline(“要计算第几年的牛的数目?n“); year = parseInt(WScript.stdIn.Readline(); WScript.Echo(“第“ + year + “年牛的数目为:“ + CountCows(year);,98,七、Javascript函数(续),变量作用域 变量的作用范围,在该范围内可引用该变量 全局变量 vs. 局部变量 由变量定义所处的位置决定(函数中/函数外) “局部优先” 尽量使用局部变量,以避免冲突,99,小结,JavaScript程序调试 函数 定义 调用 嵌套调用 递归函数,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报