[工学]安徽省专升本之程序设计部分投影版1.doc

上传人:sccc 文档编号:4532743 上传时间:2023-04-26 格式:DOC 页数:60 大小:373KB
返回 下载 相关 举报
[工学]安徽省专升本之程序设计部分投影版1.doc_第1页
第1页 / 共60页
[工学]安徽省专升本之程序设计部分投影版1.doc_第2页
第2页 / 共60页
[工学]安徽省专升本之程序设计部分投影版1.doc_第3页
第3页 / 共60页
[工学]安徽省专升本之程序设计部分投影版1.doc_第4页
第4页 / 共60页
[工学]安徽省专升本之程序设计部分投影版1.doc_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《[工学]安徽省专升本之程序设计部分投影版1.doc》由会员分享,可在线阅读,更多相关《[工学]安徽省专升本之程序设计部分投影版1.doc(60页珍藏版)》请在三一办公上搜索。

1、程序设计入门首先,学习程序设计不需要具备较高的数学基础,有高中数学水平就差不多了。但是,学习程序设计要有一定的逻辑思维能力。逻辑思维需要长时间的锻炼,如果你觉得自己在逻辑思维能力上有不足,也没有关系,因为编写程序本身也是对逻辑思维的锻炼。学习程序设计要注重理解一些重要的概念。程序设计本身并不复杂,翻开一本程序设计学习的书籍,看到的无非就是变量、函数、条件语句、循环语句等概念。但要真正能进行程序设计,需要深入理解这些概念。因此,在程序入门阶段还是应该重视概念的学习。编程语言的选择不重要,编程思想才是根本。经常听到初学者问,“学什么语言好?”,其实选择什么语言不是最重要的,编程思想才是程序员要学的

2、根本。只有掌握了编程思想,才能找到编程感觉,各种编程问题都能应刃而解。在以后的学习中,我们会陆续地介绍一些较常用的编程思想。要经常自己动手设计程序和阅读别人设计好的程序。首先要认真地研究例题,然后“依葫芦画瓢”,模仿例题来亲自动手进行程序设计是学好编程的唯一方法。因此一定要多动手开发程序,而且要从小程序开发开始,逐渐提高开发程序的规模。“复杂程序是简单程序的有规律的叠加”另外,多看别人设计好的程序代码则可以学到别人优秀的程序设计思想,从而提高自身水平。请记住:先有模仿,后有创造另外在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概和看到老手如何实践的,就要敢于自己动手去

3、体验。有些人觉得以前从来没做过而不敢自己单独动手去做,非要等到什么都明白后才敢动手实践,这样是很难取得进步的。谁都有第一次,有些问题只有通过实践后才能明白的,也只有实践后才能把老师和书本上的知识变成自己的,老手与专家也是这样成才的。其实,学习是一个“痛并快乐着” 的过程。程序设计的概念什么是程序设计?不严格的说法是:用计算机能识别的语言编写程序。什么是程序? 程序数据+算法。要编写程序,首先应确定已知数据和待求数据,然后设计出对其操作的具体步骤。操作步骤在计算机术语中叫算法。 从拿到一个任务到得出正确的结果,要经过以下几个步骤:1 分析问题:弄清要解决的问题什么?需要哪些数据?2 确定处理方案

4、:建立反映问题的数学公式(数学模型)3 确定操作步骤 :具体列出让计算机如何操作的步骤4 根据操作步骤编写源程序例1:有三个数a, b, c ,取其中最大者。很容易把该程序写成:第1步:输入三个数 a, b, c第2步:从a, b, c 中找出最大者并赋给 max第3步:输出max由于计算机不能一次性地比较三个数(除非借助于其它方法),只能两两比较大小,这时候我们对第二步细化:2.1从 a, b中取最大者送max中2.2从 max 和c中取最大者送max中 完整的VFP程序为:(求最大值.prg)input “请输入a:”to ainput “请输入b:”to binput “请输入c:”to

5、 cif ab max=aelse max=bendifif maxc max=maxelse max=cendif ?”三个数的最大值为:”,maxcancel VFP程序设计基础第一部分 VFP语言基础一、 数据和数据类型 1数据的类型 数据类型是数据的基本属性。对数据进行操作的时候,只有同类型的数据才能一起进行操作,若对不同类型的数据进行操作,将被系统判为语法出错。(1)数值型数据(n):用来表示数量,它由数字09,e,E、一个符号(或)和一个小数点(.)组成。例如:13,-12.8,3.9e+3,3.9E3等。(2)字符(串)型数据(c):由双引号或单引号 等定界符括起来的数字、空格、

6、字母等ASCII码字符组成的。例如:”a”,” ”,”abc defg”,05573680439 ,”王三”,”女”等ABC351二、变量称存放可变数据的内存单元为“变量”,其中存放的数据称为变量的值。变量的作用是存放参加计算的数据,包括:从键盘输入的初始数据,计算的中间结果,程序的最终结果。每个变量都有一个名称,叫做变量名,VFP通过引用相应的变量名来实现对变量操作。变量名的命名规则是: 以字母或汉字开头,后跟字母、数字下划线、汉字等。例如变量名a,x1,x2,sum,delta,pi,max,zdz,stu_name。给变量命名时最好能“见明知义”。另外,使用变量名不区分大小写。三、运算符

7、与表达式运算是对数据进行加工的过程,描述各种不同运算的符号称为运算符,如加、减、乘、除,而参与运算的数据称为操作数。表达式由运算符和配对的圆括号将常数、变量、函数等操作数以合理的形式组合而成的式子。1.算术运算符及表达式a.算术运算符。它们运算的含义与数学中基本相同。 + 加法、正号 - 减法、负号 * 乘法 同数学中的 / 除法同数学中的 或* 乘方 同数学中的乘方,如43或4*3表示43 求余 125表示12除以5所得的余数,8%4,4%8 ( ) 括号 只允许出现圆括号算术运算符在计算时的优先次序是:( ) - * */ + -b.算术表达式 50*2+(70-6)8,a+b/a-b,(

8、a+b)/(a-b) (哪个相当于?)c.注意事项算术表达式与数学中的表达式写法有所区别,在书写表达式时应当特别注意:每个符号占1格,所有符号都必须一个一个并排写在同一横线上,不能在右上角或右下角写方次或下标。例如:23要写成23,Xl十X2要写成X1+X2。原来在数学表达式中省略的内容必须重新写上。例如:2X要写成2*X。所有括号都用小括号(),且括号必须配对。例如:3x+2(y+z)必须写成3*(x+2*(y+z)。要把数学表达式中的某些希腊、拉丁符号,改成VFP中可以表示的符号。例如:要把2r改为2*pi*r。例如:数学的求根公式应写成(-b+sqrt(b2-4*a*c)/(2*a)和(

9、-b-sqrt(b2-4*a*c)/(2*a),这里的sqrt是个数学函数,求数的平方根。2.字符串运算符及表达式字符串运算符 将字符型数据进行连接ABCl23+666xyz 连接后结果为:ABCl23666xyzABC DEFG 连接后结果为:ABC DEFG 3.比较运算符及表达式 (1) 运算符 =(等于) (大于)=(大于等于) (小于) =(小于等于) 或!=(不等于)(2) 表达式 常用于表示条件 x=3 y10 4.条件复合运算符及表达式 (1) 运算符 and 与操作 (.and.)格式:条件1 and 条件2 例如x=1 and x=10说明:只有两个条件都满足(术语称为“真

10、”)时,结果满足;否则结果不满足(术语称为“假”) or 或操作 ( .or.)格式:条件1 or 条件2 例如 x=1说明:两者中只要有一个条件满足,结果就满足;否则,结果不满足 not 条件取反 (.not.) 例如 not x1 相当于x=1) and (xb 任意三个数能否构成三角形的判定条件(a+bc) and (a+cb) and (b+ca) year是闰年否?( year%400=0) or (year%4=0 and year%1000) 说明:一个表达式中出现多种运算,先进行算术运算,再比较大小,最后将比较结果进行复合。四、函数 在VFP中,算术运算仅提供加减乘除的四则运算

11、,如何求一些复杂的运算(例如正弦、余弦)呢?学过高数的同学知道有个“台劳公式”,太复杂!事实上,为方便用户编程,每种程序设计语言都提供功能强大的系统函数(与数学上的函数没有什么区别)供用户调用,从而避免了一些繁琐的计算。从程序设计的角度来看,函数是子程序的一种,它能完成一种特定的运算。函数有三要素:函数名、逗号分开的参数、函数值。例如 abs(-9),max(9,-3)等。用户在使用这些函数时要注意参数的约束条件,比如只能对非负数求其平方根。1常用函数(1)数学函数函数格式说 明abs(n)求n的绝对值例如:abs(-9)的值是9int(n)取n的整数部分 例如:int(4.5)的值是4,in

12、t(-4.5)的值是-4sin(n)cos(n)对n分别求正弦和余弦值max(n1,n2)min(n1,n2)求n1、n2中的最大者 例如:max(9,3)的值是9求n1、n2中的最小者 例如:min(9,3)的值是3sqrt(n)求n的平方根(n=0)例如:sqrt(9)的值是3(2)字符串函数函数格式说 明len(c)求字符串c长度。例如len(“abc de”)的值是6。substr(c,n,m)求子串。从字符串c中提取从n开始的m个字符的子串。space(n)产生含有n个空格的字符串。例如space(5)得到字符串” ”。asc(c)求一个字符的asc码值。例如asc(”A”)为65,

13、asc(”B”)=66, asc(“Z”)=90, asc(”a”)为97, asc(”b”)为98。asc(“z”)=122显然一个字母的大小写的asc值恰好相差32。chr(n)由一个asc值得到对应字符。例如chr(97)为字符”a”。返回substr(“abcde”,2,3) 结果”bcd”substr(“abcde”,1,1) 结果”a”第二部分 VFP编程基础一、赋值语句在程序中若需要保存数据,可使用变量来实现。其一般格式为:变量名 = 表达式说明:(1) 计算机先计算右边表达式的值,然后再将该值赋给指定变量。(2) 不要将赋值号(=)与是数学中的等号混淆,a=5应读作“将数值5赋

14、给变量a”或是“使变量a的值等于5”。不同于数学表达式,下面两个语句的作用是不同的: x=y y=x(3)不同于C语言,VFP是一种弱类型语言,它允许通过此语句随时建立一个变量并赋值,其值可以随时改变。 x=10 &定义变量x,并赋初值 x=x+10 &将x的值在原来的基础上增10 x=x*x &将x 的值平方后再赋值给x(4)z=x+y不能写成x+y=z(5)在引用一个变量前必须确保它已经赋值。 x=3y=x*10y=z+2 &此时系统提示出错:找不到变量z二、输入输出语句 一个程序如果没有输出操作就没有什么实用价值,而如果没有输入操作,则必然缺乏灵活性。VFP提供命令来实现信息的输入和输出

15、。1、键盘输入语句 input 提示信息” to 变量名说明:系统执行到此命令时,先显示提示信息,并等待用户输入数据。举例:input 请输入a: TO a 注意:此命令一次只能输入一个变量的值。若需输入多个变量时,则必须多次使用此命令。? 表达式说明:在屏幕上同行输出表达式的值举例:b=12 ?b2、屏幕输出语句 ? 表达式1,表达式2 说明:在屏幕上换行依次输出各表达式的值 举例:a=12 ?a ?”a”,a ?”a的值是:”,a 三、程序的结束语句 cancel 四、注释语句 * 注释语句 只能放在句首 & 注释语句 放在句后 说明:程序中的注释语句只是增加程序可读性,vfp执行程序时忽

16、略之。第三部分 VFP程序设计一、 一、 程序的建立和修改在命令窗口输入: modify command filename.prg作用:建立一个新程序或打开一个旧程序举例:modify command exp1.prginput “请输入a:”to ainput “请输入b:”to binput “请输入c:”to c.?”三个数的最大值为:”,maxcancel注:在程序录入时,一行只能输入一条命令。 二、程序的执行在命令窗口输入: do 作用:执行一个程序举例:do exp1(结合以上操作演示上机步骤)三、程序的设计1、程序的基本结构 (1)顺序结构 顺序结构是在程序执行时,根据程序中语句

17、的书写顺序依次执行的命令序列。Visual FoxPro系统中的大多数命令都可以作为顺序结构中的语句。语句序列1语句序列2注:这里的语句序列指的VFP的一条或多条命令行例1 *exp1.prga=123b=456s=a+b?scancel例2输入一个华氏温度,要求输出一个摄氏温度。公式为c=(f-32)*exp2.prginput “请输入一个华氏温度:” to fc =5/9*(f-32) ?”摄氏温度为:”,ccancel例3求ax2+bx+c=0方程的实根。这里的a、b、c由键盘输入。*exp3.prginput “请输入a:” to ainput “请输入b:” to binput “

18、请输入c:” to cdelta=b*b-4*a*cx1=(-b+sqrt(delta)/(2*a)x2=(-b-sqrt(delta)/(2*a)?”x1=”,x1,”x2=”,x2 &输出x1和x2的值cancel表达式的值语句序列Endif后的语句YN 注意:该程序正确运行的前提是delta0,否则出错!事实上,绝大多数问题仅用顺序结构是无法解决的,还要用到分支结构、循环结构和子程序结构。(2)选择结构1.单分支 if 条件表达式 语句序列 endif . . . 执行过程:系统首先判断条件表达式的值,若满足(真,.t.),先执行语句序列后退出if结构,否则(假,.f.)直接退出。表达式

19、的值语句序列1endif后的语句YN语句序列2例4从键盘输入一个数,求其绝对值。*exp4.prginput “请输入一个x:” to xif x=0 ?sqrt (x)&显示其平方根值endifcancel2双分支 if 条件表达式语句序列1 else 语句序列2 endif.执行过程:系统首先判断条件表达式的值,若满足(真,.t.),执行语句序列1后退出if结构,否则(假,.f.)执行语句序列2后退出if结构。例5从键盘输入两个数,求它们最大值*最大值.prginput “请输入a:” to ainput “请输入b:” to bif ab max=aelse max=bendif?”最大

20、值是:” ,maxcancel请你编程(qnbc): p1. 从键盘输入三个数,求它们最大值 (答案见第一个程序-求最大值.prg)p2. 从键盘输入两个数,求它们最小值input “请输入a:” to ainput “请输入b:” to bif ac) and (a+cb) and (b+ca) &如果是三角形 p=(a+b+c)/2 s=sqrt(p*(p-a)* (p-b)*(p-c) &利用海伦公式 ?” 三角形的面积为:”,selse &不是三角形 ?”不能构成三角形”endifcancelqnbc:p3.求一元二次方程ax2+bx+c=0方程的实根。这里的a、b、c由键盘输入。*p

21、3.prginput “请输入a:” to ainput “请输入b:” to binput “请输入c:” to cdelta=b*b-4*a*cif delta=0 x1=(-b+sqrt(delta)/(2*a) x2=(-b-sqrt(delta)/(2*a) ?”x1=”,x1,”x2=”,x2 else ?”无实根”ednifcancel 表达式1表达式2表达式3语句序列1语句序列2语句序列3语句序列4NYNNYY3多分支(术语叫做嵌套)if 条件表达式1 语句序列1else if 条件表达式2 语句序列2 else if 条件表达式3 语句序列3 . . . endif endi

22、fendif.例7有一函数:Y=。编一程序,输入一个x的值,输出y的值。*exp7.prginput “请输入x:” to xif x0 y=1else if x=0 y=0 else y=-1 endifendif?”y=”,ycancelqnbc: p4.有一函数:y= 。写一程序,输入x的值,输出y的值。*p4.prginput “请输入x:” to xif x1 y=xelse if x=1 and x=90 dj=”A”else if fs=80 dj=”B” Else if fs=70 dj=”C” else if fs=60 dj=”D” else dj=”E” endif en

23、dif endif endif?”该生的等级制成绩为:”,dj cancelp6:企业发放的奖金根据利润(p)提成。制定的标准如下: p10万元 10% 10p20万元 低于10万10%,高于部分7.5% 20p40万元 低于20万同前,高于部分5% 40p60万元 低于40万同前,高于部分3% 60p100万元 低于60万同前,高于部分1.5%100p 低于100万同前,高于部分1%从键盘输入当月利润p,求应发奖金总数。 input “请输入当月利润:” to pif p=10 s=p*0.1else if p=20 s=10*0.1+(p-10)*0.075 else if p=40 s=

24、10*0.1+10*0.075+(p-20)*0.05 else if p=60 s=10*0.1+10*0.075+20*0.05+(p-40)*0.3 else if p=100 s=10*0.1+10*0.075+20*0.05+20*0.3+(p-60)*0.15 else s=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01 endif endif endif endifendif?”应发利润:”,s,”万元”cancel*走进考场*例从键盘输入任意两个数x,y,要求输出时x存放大数,y存放小数。请注意变量赋值次序! 分析:在

25、输入时,若x的值为5,y的值为3,满足条件;若x的值为3,y的值为5,则必须交换x、y的值。那么如何交换两个变量的值?错误做法:x=y y=x 类似于生活中换装一瓶酱油和一瓶醋,须借助第三只瓶,同样这里需要第三个变量t(这里的t指临时的),当然也可以用其它名称,例如z。正确做法t=xx=yy=t或者 t=yy=xx=t*排序.prginput “请输入x:” to xinput “请输入y:” to yif xy t=x x=y y=tendif?x,y &从大到小输出cancel专升本试题从键盘输入三个数,要求从大到小输出。分析:同前例,先确保x放最大值,y次之,z放最小值后再输出它们*排序

26、1.prginput “请输入x:” to xinput “请输入y:” to yinput “请输入y:” to yif xy t=x x=y y=tendifif xz t=x x=z z=tendifif yz t=z z=y y=tendif?”从大到小输出为:”,x,y,z cancel作业:从键盘输入三个数,要求从小到大输出。(3)循环结构表达式的值语句序列NY在解决实际问题的过程中,常常需要循环结构。所谓循环,就是反复执行某些程序段。循环控制常用于数学迭代、对象遍历等问题的求解,几乎所有实用程序都包含循环。较简单的如数学中的累加,累乘,列出部分或全部某些性质的特殊数等等。1当型循

27、环控制语句 do while enddo. 执行过程:系统首先判断表达式的值:若“真”,执行语句序列,执行完毕后 再返回到循环头,再一次判断表达式的值,若“真”,重复执行语句序列。就这样循环若干次,直到某个时候表达式的值为“假”,从而退出循环,跳至enddo后面的语句继续执行。s的初值置为0i的初值置为1i10?将i的值累加到s上同时将i的值增1例8分析下面程序的作用s=0i=1do while i=10s=s+ii=i+1enddo?s &请思考这时的i的值是多少cancel 分析:这里的s称为累加器,其初值为0。之所以称为累加器,是因为它的每一次加法都是在原来的基础上的增加;同时i的值也在

28、不断增1,所以本程序结束时s=0+1+2+3+10qnbc:p7.编程计算s=1+2+3+100和s=1+2+3+n input “请输入n:” to ns=0i=1do while i=n s=s+i i=i+1enddo?”1+2+3+n=”,scancel s=0i=1do while i=100 s=s+ii=i+1enddo?s,i &i的值为101 cancel 例9编程求1+3+5+7+99分析:这里参加求和的数据项有什么规律?第一项是1,以后的每一项是前一项增2。最后一项是99。s=0i=1do while i=99s=s+ii=i+2 &数据项的规律是:后一项是前一项增2en

29、ddo?scancel 结论:结合数据项的初值和终值能够发现出数据项的规律是我们编程的关键。qnbc:p8. 编程计算2+4+6+100和2+4+6+2n s=0i=2do while i=100 s=s+ii=i+2enddo?scancelinput “请输入n:” to ns=0i=2do while i=2*n s=s+i i=i+2enddo?” 2+4+2n=”,scancel 例10编程求或者input “请输入n:” to ns=1 &没有规律的数单独加i=2do while i=ns=s+1/i i=i+1enddo?scancel 分析:这里的数据项有什么规律?input

30、“请输入n:” to ns=0i=1do while i=n s=s+1/i i=i+1enddo?scancelqnbc:求或者s=1i=2do while i=100 s=s+1/(i-1)*i) i=i+1enddo?”结果为:”,scancels=1i=1do while i=99 s=s+1/(i*(i+1) i=i+1enddo?”结果为:”,scancel例11 编程求 input “请输入n:” to ns=0i=1fh=1do while i=n s=s+fh*1/i i=i+1 fh=fh*(-1) &符号改变enddo?scancel 例12求1+2+3+n之和刚大于10

31、00时的n值。 分析:由于这里不知道循环次数,所以不能通过i控制循环,而是通过和s来控制。i=0s=0do while s=1e-4 &注意如何把题目要求转变为循环条件 pi=pi+fh*1/i i=i+2 fh=fh*(-1)enddopi=pi*4?”pi的值为:”, picancel例14 分析下面程序的作用s=1i=1do while i=10 s=s*i i=i+1enddo?s cancel说明:这里的s称为累乘器,其初值为1。注意与累加器的区别。程序的结果s=12310=10!例15求1!+2!+3!+10!s1=0s2=1i=1do while i1e-4s2=s2*is1=s

32、1+1/s2i=i+1enddo?”e”,s1cancel例17一张纸厚0.06mm,我们假设它足够大,问折叠多少次可达8844m? h=0.06i=0do while h8848000h=h*2i=i+1enddo?icancel例18如果我国工农业生产每年以8%速度增长,问多少年后产值翻一番?基值设为100。 分析:逐年计算产值,看是否达到200。 p=100r=0.08n=0do while p200 p=p*(1+r) n=n+1enddo?”经过:”,n,”年”cancelqnbc:人口增长平均1.5%,设现人口12.3 亿,问多少年后人口达到或超过 15亿。p=12.3e+9r=0

33、.015n=0do while p15e+9 p=p*(1+r) n=n+1enddo?年,n,人口,pcancelqnbc:一个求从100米高空落下,每次弹起的高度是前一次的一半,第10次落地时共经过多少米? high=100s=100 i=1 do while i=9 high=high/2 s=s+2*high i=i+1 enddo第一次 第二次 第三次 ?”第10次落地时经过:”,s cancel思考:第10次反弹多高?例20求两个整数的最大公约数,并利用此结果求最小公倍数。分析:1穷举法,从较小数由大到小列举,直到找到公约数立即中断列举,得到的公约数便是最大公约数2辗转相除法,又名

34、欧几里德算法,是计算最大公约数和最小公倍数的重要方法,比穷举法简便得多。主要过程是设两数为a和b, 1)求ab,得余数c。若c=0,则b是所求数;否则2)将b送入a,c送入b;3)再求ab的余数c ,若c0,重复2);否则,最后一次的除数就是最大公约数。先演示一下手工操作,例如求85和35的最大公约数。35 15 5 input “请输入整数a:” to ainput “请输入整数b:” to bp=a*bc=a%b &若余数为0,不执行循环,b就是;否则, do while c0 a=b&将上一次的除数作为下一次被除数b=c&将上一次的余数作为下一次除数c=a%b&再求余数enddo?”两个

35、数的最大公约数是:”,b?”两个数的最小公倍数是:”,p/bcancel思考:增加什么代码如何求最小公倍数?作业:从键盘输入一个整数,要求以反序输出。例如:2345,结果:5432提示:先将各位数字分离。 10 10 10 10input “请输入正整数a:” to ab=a%10 &取余数5a=int(a/10) &取商234do while a0 b=b*10+a%10 a=int(a/10)enddo?bcancelinput “请输入正整数a:” to as=0m=0b=a%10 &取余数5s=s+b*8ma=int(a/10) &取商234do while a0 b=a%10 m=m+1 s=s+b*8m a=int(a/10)enddo?bcancel2计数型循环控制语句 计数型循环控制语句,适用于循环次数已知的情况。即根据循环变量的初值、终值和步长,决定循环体内语句的执行次数。这个书写比do while 更简洁。 for 循环变量=初值 to 终值 step 步长 循环变量 = 初值 endforne

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

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号