1、计算机程序设计,顾 刚 计算机教学实验中心,授课提纲,课程简介 相关名词术语 C+程序概貌 程序设计步骤 编程举例,课程简介 交流,学过一门计算机语言 课程知多少 教材领取,课程简介 意义,衡量现代大学生水平? 计算机 + 外语 外语有四六级英语考试来衡量 计算机水平如何衡量?教学计划4年机时量 会使用计算机的含义?,课程简介 意义,理论科学、实验科学和计算科学作为科学发现三大支柱 正推动着人类文明进步和科技创新 计算科学作为人类第三种科学研究手段 弥补理论科学与实验科学研究的不足 计算科学的核心是软件(程序)开发,课程简介 意义,课程简介 意义,计算机和家用电器的最大区别是什么? 根据社会需
2、求随时随地编写软件(程序) 不断扩充、增加计算机的“能力” 核心是程序设计:让计算机按你的意愿去工作 计算机是最忠实的ROBOT C+是目前最流行的计算机语言之一,课程简介 教学模式,每周授课与实验:2+2 实验暂定周四下午14:00至16:00 课堂讲授:授课内容、程序设计举例 上机实验:章后习题、课堂举例、布置题目 参考教材选教材391页列出的图书14、15,课程简介 交互方式,精品课程网站:http:/ 答疑:网上答疑+办公室答疑 EMAIL: 电话:82668634或82668636 教学课件及资源及实验使用电子教室 用户名:后8位学号 密码:后8位学号 交实验报告:电子教室,电子教室
3、使用方法,电子教室使用 浏览器中输入http:/202.117.35.239/moodle18 点击登录:学号+学号(密码) 点击课程名称 点击某周作业,查看作业题目或下载资源 上传要交的实验报告,课程简介 若干要求,课前预习、上课专心、上机勤练 交作业约定:纸本作业+实验报告 本周课堂布置纸本作业,下周课堂交 本周布置实验,下周二晚10点前交 不要欠帐,授课提纲,课程简介 相关名词术语 C+程序概貌 程序设计步骤 编程举例,几个概念术语,程序 使用计算机语言为完成某个任务所组成的指令集合 指令 让计算机进行某个操作的命令 算法 完成某个特定任务的方法步骤 描述算法的工具 伪代码、流程图、自然
4、语言等,算法可用各种方法加以描述,常用下面两种,伪代码(英文、中文、类Pascal、类C语言),流程图(框形、盒图、PAD图),几个概念术语,伪代码是介于自然语言和计算机语言之间的语言 所谓流程图是采用图形符号来表示各种操作步骤 常用流程图符号如下表:,几个概念术语,设计计算1+2+3+1000的算法,伪代码描述算法如下: 步骤1:使SUM=0 步骤2:使I=1 步骤3:计算SUM=SUM+I 步骤4:计算I=I+1 步骤5:如果I1000,则转步骤3,否则转下一步 步骤6:输出(或显示)SUM的值,几个概念术语,步骤1:计算(1+1000)1000/2,将结果再放入SUM中 步骤2:输出(或
5、显示)SUM的值,前面累加的算法太繁琐 根据数学上可以推导出计算公式( 1+1000 ) 1000/2 具体伪代码和流程图算法描述如下:,几个概念术语,程序设计指的是安排计算机按人们的意志去工作,程序设计往往是一个过程,这个过程主要包括:,几个概念术语,调试程序包含如下步骤: 编辑程序:输入编写好的程序,形成源程序.cpp 编译程序:将源程序翻译成目标程序.obj,检错纠错 连接程序:将目标程序连接转换成可执行程序.exe 运行程序:运行可执行程序,检验结果的正确性,几个概念术语,授课提纲,课程简介 相关名词术语 C+程序概貌 程序设计步骤 编程举例,C+程序结构,先看一个最简单的C+程序例子
6、 程序功能:在屏幕上显示一句话:Happy New Year , Everybody!,C+程序结构,#include /包含一个库文件 void main() /主函数名 /输出语句cout “Happy New Year , Everybody!“ endl;return; /结束语句 ,使用 Visual C+ 6.0要点创建项目创建文件输入源程序编译源程序连接目标程序运行程序,C+程序结构,将C+程序功能改为介绍我自己 程序功能:在屏幕上显示如下内容:Happy New Year , Everybody!My name is Brown Hartley,I am studing in
7、Xian Jiaotong Univ,I come from U.S.A。,C+程序结构,#include /包含一个库文件 void main() /主函数名 /输出语句cout “Happy New Year , Everybody!“ endl;cout “My name is Brown Hartley,“ endl;cout “I am studing in Xian Jiaotong Univ,n“;cout “I come from U.S.A。“ endl;return; /结束语句 ,C+程序结构,将程序编写成另一种形式,C+程序结构,#include /程序功能介绍我自己的
8、文字 void output_mycard( ) cout“My name is Brown Hartley“endl;cout“I am studing in Xian Jiaotong Univ.“endl;cout“I come from U.S.An“endl;return; void main() cout“Happy New Year , Everybody!“endl;output_mycard();return; ,增加年龄信息,通过输入年龄数据,再显示,C+程序结构,#include /包含一个库文件 void main() /主函数名 int age; /定义整数变量cou
9、t age;cout “Happy New Year , Everybody!“ endl;cout “My name is Brown Hartley,“ endl;cout “My age is “ age endl;cout“I am studing in Xian Jiaotong Univ,n“;cout“I come from U.S.A。“endl;return; /结束语句 ,C+程序结构小结,C+程序有#include开头 C+程序由若干函数组成 函数由若干条语句组成 函数格式:函数名+一对圆括号、花括号 一行一般书写一条语句,语句用分号结束 注释语句用/开始 三种C+函数:
10、主函数、自定义函数、标准函数 前两种函数程序员自编 标准函数系统携带:sin(x)、cos(x)、max(a,b) 主函数是程序执行的开始点,C+程序与文章类比,在屏幕上显示如下文字: 1+2+3+100=5050,编写1+2+3+100的程序,#include /包含一个库文件int main() /主函数名 /输出语句cout “1+2+3+100=” ;cout (1+100)*100/2 endl;return 0; /结束语句,试改写程序求最小值?,编写两个数比较大小的程序,#includeint main() int a,b; /定义两个整数变量cout a b ; /输入语句if
11、 ( a b ) /比较语句cout “The maxium number is” a endl ;elsecout “The maxium number is” b endl ;return 0;,标识符,标识符是为程序中变量、类型、函数和标号的名称。由字母、数字和下划线“_”组成,第一个字符不能是数字。例如:正确标识符 max _sum _123 k length_6不正确标识符 12 2abc _123# count-1“大小写敏感”,例如count与Count被视为不同的标识符在标识符中恰当运用下划线,大、小写字母混用以及使用较长的名字都有助于提高程序的可读性。,关键词和标点符号,关键
12、词:指有特殊语义的标识符,或者说被C+系统规定了语义的标识符 asm,auto,bad_cast,bad_typed,bool,break,case,catch,char,class,const,const_cast,continue,default,delete,do,double,dynamic_cast,else,enum,except,extern,explicit,false,finally,float,for,friend,goto,if,inline,int,long,mutable,namespace,new,operator,private,protected,public,
13、register,reinterpret_cast,return,short,signed,sizeof,static,static_cast,struct,switch,template,this,throw,try,type_info,typedef,typeid,union,unsigned,using,virtual,void,volatile,while,define,elif,else,endif,error,if,ifdef,ifndef,include,line,progma,undef C+的标点和特殊字符有 ! % : “ ? , . / #,输入与输出,cin表示输入语句
14、,其基本格式为:cinV1V2Vn; 在输入时,应注意用空格或tab键将所输入的数据分隔开 必须注意所输入数据的类型应与接受该数据之变量的类型相匹配,否则输入操作将会失败或者得到的将是一个错误的数据。cout表示输出语句,其基本格式是:cout E1 E2 Em; 在输出时,要注意恰当使用字符串和换行符endl,提高输出信息的可读性。,授课提纲,课程简介 相关名词术语 C+程序概貌 程序设计步骤 编程举例,用具体例子说明程序设计全过程,实际问题 求任意两个正整数中的最大公因数,程序设计步骤小结,求最大公因数,问题分析如下: 给定两个正整数P和Q, 求其最大公因数 p和q只能是正整数的子集 最大
15、公因数的定义:能整除P和Q,且是最大的除数 p和q数值通过键盘录入 结果显示在屏幕上 普通PC机环境均可 这是小问题,一个人在短时间内即可完成 值得一提:这是初学者认为最简单而在实际程序开发工程中最难的工作。在软件工程中被称作“需求分析”。,算法描述,开始,输入p和q,pq,r=p; p=q; q=r,成立,输出q,结束,r=p除以q的余数,r=0,p=q; q=r,r=p除以q的余数,成立,不成立,步骤1: 任意输入两个数放入p和q中 步骤2: 如果p q,交换p 和q 步骤3: 求出p/q的余数放入r中 步骤4: 如果r=0,则执行步骤8,否则执行下一步 步骤5: 令p = q,q = r
16、 步骤6: 计算 p 和q 的余数r 步骤7: 执行步骤4 步骤8: q就是所求的结果,输出结果q,编写程序,#include /包含库文件 void main() int p, q, r; /定义三个整数变量cin p q; /输入两个正整数if (p q) /比较p和q大小r = p;p = q;q = r;r = p % q; /计算余数while( r != 0 ) /循环计算余数p = q; q = r;r = p % q;cout “最大公因数是” q ; /输出结果 ,如何调试? 编辑 编译 连接 运行 语法错误和逻辑错误,调试程序,整理文档,整理文档就是将前面四步所产生的所有文
17、档资料进行整理 特别是将程序的高级语言编写的代码(即源程序)文件和可执行的程序代码(即目标程序)整理 并编写如何运行该程序的使用说明书(即用户手册) 所有这些文档资料一并提交给用户。常见文档资料清单如下:源程序可执行程序用户手册数据库文件各种规范说明,授课提纲,课程简介 相关名词术语 C+程序概貌 程序设计步骤 编程举例,程序功能:从键盘输入二个实型数据,求其和并在屏幕上输出。,举例:加法计算器程序,输 入: Please input two numbers: 12.0 34.0 输 出: 12.000000 + 34.000000 = 46.000000,/ Example 1-3:加法计算
18、器程序 #include int main() double a,b,c;coutab;c = a+b;couta“+”b“=“cendl;return 0; ,举例:显示生日贺卡,/ Example 1-4:显示生日卡 #include int main() char name141,name241;cout name1;cout name2;cout endl “=“ endl;cout “My dearest “ name1 “,“ endl;cout “ Happy birthday to you!“ endl;cout “ yours,“ endl;cout “ “ name2 en
19、dl;cout “=“ endl;return 0; ,万有引力计算公式:F = Gm 1m 2 / R 2 算法: 令 G 6.66666710-8厘米 克秒令 太阳的质量 m 1 = 1.9871033克令 地球的质量 m 2 = 5.9751027克令 距离 R = 1.4951011厘米计算 F = Gm 1m 2 / R 2输出计算结果F的值,举例:计算星球之间的万有引力,#include / 计算太阳和地球之间的万有引力 void main() double F, Msun = 1.987E30, Mearth = 5.975E24;double G = 6.67259E-11,
20、R = 1.495E11;F = G* Msun * Mearth /(R*R);cout“太阳和地球之间的引力为”F“牛顿n”; ,#include double grav(double m1, double m2, double distance) double g, G = 6.67E-11;g = G*m1*m2/(distance*distance);return g; int main() double Gse, Gme; /太阳1.9871030千克,地球5.9751024千克,间距1.4951011米double Msun = 1.987E30, Mearth = 5.975E
21、24;Gse = grav(Msun, Mearth, 1.495E11);cout “The gravitation between sun and earth is “ Gse “ N.n“;/月亮7.3481022千克,地球5.9751024千克,间距3.844105米double Mmoon = 7.348E22, Dme = 3.844E5;Gme=grav(Mmoon, Mearth, Dme);cout “The gravitation between moon and earth is “ Gme “ N.n“;return 0; ,计算任意星球之间的万有引力,如果增加计算地球
22、和月亮之间的万有引力?,将计算任意两个质点之间的引力公式单独编写为一个函数grav(), 用于计算太阳和地球之间的万有引力。这样做有两个好处: (1)简化了主函数的编写。在编写主函数时,只需按要求填写实际参数,调用grav()就可以得到计算结果。 (2)如果还要计算其他物体之间的引力, 例如地球和月球之间的万有引力,就不必再次编写相应的程序段了, 只需在调用grav()函数时换上相应的实际参数即可。 按这种方法设计程序就称为模块化程序设计。,程序分析,举例:使用梯形法计算定积分,使用梯形法计算定积分f(x)dx,其中a=0, b=1, 被积函数为sin(x), 取积分区间等分数为 1000。,
23、a,b,x,y,f(x),xi,xi+1,h,梯型面积 =,(上底+下低)x高,2,#include / 用梯形法计算定积分 #include /包含标准数学函数的math.h函数库 int main() double a=0, b=1.0; / 双精度类型变量: 积分上下限double h; / 双精度类型变量: 积分步长double sum=0;/ 双精度类型变量: 存放最后为积分值int n=1000; / 整型变量 : 积分区间等分数int i=0; / 整型变量 : 循环工作变量h = (b-a)/n; / 计算小区间长度while(in) / 循环计算公式中的和式sum=sum+(sin(a+i*h)+sin (a+(i+1)*h)*h/2;i=i+1;/ 输出计算结果cout“The result is “ sum endl;return 0; ,纸本作业: 5仿照例1-6,编写一个计算矩形面积的程序。 3修改例1-5的生日卡程序,使其能够输入和显示日期。 实验作业: 2乘法计算器程序:可以根据例1-3自行改编。 4使用梯形法计算下式定积分的值。,作业,