1、0,西安交通大学 计算机教学实验中心 http:/ 2012,第1章 程序设计与C+,计算机程序设计(C+),内容提要,什么是计算机? 计算机语言的发展 机器语言、低级语言、高级语言、C+语言 源程序、目标程序、编译、解释、可执行程序 C+程序的结构; C+语言的基本组成 简单的输入、输出、信息表达、计算 编程步骤 算法的描述,1,1.1 程序设计与计算机语言,1.1.1计算机语言的发展 1.机器语言 机器指令 机器语言 机器语言程序 2.汇编语言 指令助记符 汇编格式指令 汇编语言 汇编语言程序(汇编语言源程序、源程序) 执行过程(汇编程序,汇编,目标程序) 低级语言特点(机器相关、底层细节
2、),2,1.1 程序设计与计算机语言,3.高级语言 1953年,美国IBM公司约翰贝克斯 IBM 704 FORTRAN 高级语言 种类 如COBOL、BASIC、PASCAL、 C、C+、Java、php、Python 特点(机器无关、解决问题) 核心部件 编译,编译器 解释,解释器,3,1.1 程序设计与计算机语言,1.1.2 C+语言 二十世纪50年代末的ALGOL 60 1963年,剑桥大学将ALGOL 60语言发展成为CPL 1967年,剑桥大学的Matin Richards,BCPL语言。 1969年,美国贝尔实验室的Ken Thompson, B语言1973年,贝尔实验室的Den
3、nis Ritchie, C语言 1.C+的诞生 1983年,贝尔实验室的Bjarne Stroustrup, C+ 类、继承、多态、模板、异常处理面向对象 1998年C+成为国际标准 2.C+的特点 C+全面兼容C、C+是面向对象的语言,4,1.2 第一个C+程序,“Hello world” 1972年贝尔实验室,布莱恩柯林汉 Introduction to the Language B Hello World程序的意义 1.2.1 在屏幕上显示“Hello World” 【例1-1】编写程序,在屏幕上显示“Hello World!”。 编写程序 显示一句话,5,操作演示,在记事本或C+编程
4、环境中输入如下的程序: /*Example1-1 hello world! */ /程序注释 #include /包含基本输入输出库头文件 using namespace std; /使用名字空间 int main() /主函数 cout“Hello world!“; /在屏幕显示Hello World!coutendl; /换行return 0; /程序结束, 编译、链接、运行。,6,1.2.2 C+的程序结构和C+程序的执行顺序 注释,/, /*/ 编译预处理 名字空间 主函数,有且唯一,C+程序执行的起点 函数名、函数体、返回类型、返回值 显示、输出字符串 语句,分号 一行多句,一句多行
5、 从main函数开始,从上到下逐条语句执行 ,7,【思考题】 编写程序,在屏幕上显示: *Xian Jiaotong UniversityNo.28, West Xianning RoadXian, China *,8,【例1-2】 编写程序,从键盘输入两个整数,计算它们的和,在屏幕上输出这两个数的和。 【问题分析】 C+中,输入使用cin ; 若a,b表示两个整数,则a+b就表示它们的和。如果想用c表示和,可以写成c=a+b。,9,【源程序】,/*example1-2 calculate c=a+b */ /程序注释 #include /包含基本输入输出库头文件 using namespac
6、e std; /使用名字空间 int main() /主函数 int a,b; /说明用a,b表示整数int c; /说明用c表示整数cinab; /输入a,bc=a+b; /计算a,b的和,结果用c表示coutcendl; /输出结果creturn 0; /程序结束, ,10,【程序分析】 变量、运算符、表达式、赋值运算符 常用算术运算符 加+ 减- 乘* 除/ 求余% 运算顺序、优先级 小括号改变优先级 思考题 修改程序,是结果显示如下的算式 输入: 10 19 显示: 10+19=29,11,1.2.2 C+程序的基本要素 标识符 关键词、自定义表示符(变量、函数等) 标识符的命名规则
7、字母、下划线开头,大小写敏感,有意义 常量、变量 运算符、表达式 输入、输出 cinv1v2v3vn; coute1e2e3en;,12,1.3 C+的编程步骤,数学建模 编写算法 编写、编辑源程序 编译、链接 测试、调试 试运行、运行 学会使用帮助 MSDN,F1,网络 编译错误(查字典),13,例题,【例1-3】用三种描述方法,描述求n个数中最大数的算法。 【算法】 自然语言描述 用max表示当前最大数,a表述输入的数,i表示输入的数的个数,开始i=1。 输入n,输入第一个数a1,当前最大数为max=a1,i=2。 输入下一个数ai。 如果aimax,则max=ai。 如果i=n,转;否则
8、i=i+1,转。 打印max。 停止。,14,流程图,15,伪代码 输入n,a max=a 循环i从2到n输入a若 amaxmax=a 输出max,16,源程序,/*example1-3 max(ai) */ /程序注释 #include /包含基本输入输出库头文件 using namespace std; /使用名字空间 int main() /主函数 int a,max,i,n; /说明a,max,i,n均用来表示整数cinn; /输入ncina; /输入amax=a; /当前最大数为afor(i=2;i=n;i+) /对i从2到n循环,17,源程序(续),cina; /再输入一个数 if
9、(amax) /如果新输入的数比当前最大数还大max=a; /当前最大数改为新输入的数cout“The maximum number of them is “maxendl; /打印结果return 0; /程序结束, /被大括号扩起来的若干行程序程序称为程序块或分程序,18,1.4 编程实例,1.4.1打印中秋贺卡 【例1-5】编写程序,打印如下形式的中秋贺卡: # zhangHappy Mid-autumn Festival!sincerely yours wang # 其中,“zhang”、“wang”是收卡人和发卡人的名字,由用户从键盘输入。,19,问题分析 字符串 字符串的声明、字符
10、数组 字符串的输入 字符串的输出,20,源程序,/example1-5 happy mid-autumn day /程序注释 #include /包含基本输入输出库头文件 using namespace std; /使用名字空间 int main() /主函数 char name130; /说明name1代表最长为30的字符串char name230; /说明name2代表最长为30的字符串cinname1; /输入name1cinname2; /输入name2/输出字符串常量cout“#“endl;,21,coutname1endl; /输出name1 coutendl; /换行 cout“
11、 Happy Mid-autumn Festival!”endl;/输出字符串常量 coutendl; /换行 cout“ sincerely yours ”name2endl; /输出name2(落款) cout“#“endl;/输出字符串常量 return 0; /结束 ,22,【程序分析】 姓名中间有空格如何? cin.getline(v1,length); 修改例1-5的程序,使输入的名字中间可以有空格,23,1.4.2计算存款利息 【例1-6】计算银行存款本息。用户输入存款金额money,存款期years和年利率rate,根据公式,计算到期存款本息。 【问题分析】 指数运算 y=po
12、w(x,k); 头文件,24,【源程序】 /example1-6 principal and interest /程序注释 #include /包含基本输入输出库头文件 #include /包含数学库函数头文件 using namespace std; /使用名字空间 int main() /主函数 double money,rate; /声明能表示实数的变量int years; /存期是整数double sum; /本息是实数cinmoneyyearsrate; /输入本金、存期和年利率sum=money*pow(1.0+rate),years); /计算本金,注意pow的用法coutsumendl; /输出结果return 0; /结束 ,25,小结,(1)程序设计语言的发展,低级语言、高级语言、C+语言。 (2)C+程序的基本结构是头文件、名字空间、主函数、其他自定义函数。main函数有且只有一个。main函数的返回类型是int时,main函数体中一定至少有一行return 。 (3)C+的基本要素有标识符、变量、常量、运算符、表达式、语句、控制结构。 (4)数学库函数的使用,包含头文件。 (5)输入、输出。 (6)编程步骤:数学建模,写出算法,编辑源程序,编译、连接,测试、调试等。,26,实验和作业,实验 习题12、4、9,27,谢谢,28,