版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、7/22/202211C+程序设计主讲 中南大学软件学院 谭长庚2015.97/22/20222Chapter 1 Introduction7/22/20223 Some Questions1用过计算机?2都用过什么软件(程序)?3了解计算机信息的表示(补码),数制?4程序是?学过编程?程序设计有多难?7/22/20224第一个程序:Hello C+#include ”stdafx.h”#include int main() std:coutHello C+; system( pause ); return 0;如何学习程序设计语言1.模仿2.多读、写3.提高自主学习的能力 * 主动性 * 发
2、现问题 * 解决问题: * 方法:网、讨论、试 * 表达(程序,算法描述)模仿输出“Welcome to CSU”输出结果:Hello C+7/22/20225扩展程序:求圆的面积,会求吗?#include using namespace std;int main() double radius; double area; /Step 1: Read in radius-输入 cinradius; /Step 2:Compute area-处理 area = radius*radius*3.14; /Step 3:Display the area-输出 cout The area is ; c
3、out area endl;输入处理输出结果7/22/20226求长方形的面积:输入两条边到a,b,面积送s#include using namespace std;int main() double a,b; double ; cina; /Step 1: Read in a ; / : Read in b ; /Step 2:Compute area cout x-y=-00000011X-Y=-3求补运算 :将一个补码连同符号位一起,按位求反、末位加一求真值: 一个负数的补码再求补=该数正数的原码(补上负号就得负数的真值)结果为补码7/22/2022411.3.6 非数值信息的表示西文字
4、符:ASCII码:用7位二进制数表示一个字符,最多可以表示27=128个字符EBCDIC码:用8位二进制数表示一个字符,最多可以表示28=256个字符汉字:应用较为广泛的是国家标准信息交换用汉字编码(GB2312-80标准),简称国标码。是二字节码,用二个七位二进制数编码表示一个汉字。Unicode:2字节字符编码,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。7/22/2022421.3.7 十进制数的BCD码表示BCD(Binary Coded Decimal)码是十进制数的另一种二进制编码形式
5、。它有利于用二进制来精确表示十进制数。BCD码有多种形式,常用的是8421码,每一位十进数码用四位二进数码表示,不允许出现10101111四种组合。0 000050101100001 00001 000160110 110001 00012 001070111120001 00103 001181000 1230001 0010 00114 01009100112340001 0010 0011 0100BCD码常采用压缩形式存贮:一个字节存放二位BCD码。7/22/2022431.4 程序设计语言 程序设计的结果必然要用一种能被计算机接受的语言表示出来,即编程实现(Coding)。根据计算机
6、指令系统和人们解决问题所采用的描述语言(如:数学语言)的接近程度,常常把程序语言分为: 低级语言 高级语言 通常所讲的程序设计语言往往指的是高级语言。7/22/2022441.低级语言和高级语言低级语言:是指特定计算机能够直接理解的语言(或与之直接对应的语言):机器语言:采用指令编码和数据的存储位置来表示操作以及操作数; 汇编语言:是用符号名来表示操作和操作数位置,以增加程序的易读性。需要翻译(汇编)成机器语言才能执行。 高级语言:是指人容易理解和有利于人对解题过程进行描述的程序语言。典型的高级语言有:FORTRAN、COBOL、Basic、Pascal、C、Ada、Modula-2、Lisp
7、、Prolog、Simula、Smalltalk、C+、Java等 7/22/202245 2.低级语言与高级语言程序的比较计算a+b*c-d的值,用汇编语言可写成:mov ax,bmul ax,cadd ax,asub ax,dmov r,ax用高级语言可写成:r = a+b*c-d 7/22/202246低级语言优点:写出的程序效率比较高,包括执行速度快和占用空间少。缺点:程序难以设计、理解与维护,难以保证程序的正确性。另外,可移植性差。高级语言优点:程序容易设计、理解与维护,容易保证程序正确性。可移植性好缺点:用其编写的程序相对于用低级语言编写的程序效率要低,翻译成的目标代码量较大 。7
8、/22/2022473.高级语言的翻译用高级语言书写的程序须翻译成机器语言程序才能在计算机上运行。翻译方式有两种:编译把高级语言程序(称为源程序)首先翻译成功能上等价的机器语言程序(称为目标代码程序)或汇编语言程序(再通过汇编程序把它翻译成目标代码程序),然后执行目标代码程序。在目标代码程序的执行中不再需要源程序。解释对源程序中的语句进行逐条翻译并执行,翻译完了程序也就执行完了。这种翻译方式不产生目标程序,程序的每次执行都需要源程序。 7/22/202248把高级语言程序翻译成机器语言程序的工作一般由程序来实现,根据翻译方式可把翻译程序分为:编译程序解释程序 一般来说,编译执行比解释执行效率高
9、解释执行容易实现平台无关7/22/2022491.5 C+语言的产生C+是贝尔实验室的Bjarne Stroustrup 为支持面向对象程序设计而设计的一种 系统程序语言/wiki/Bjarne_Stroustrup从C语言发展演变而来的,首先是一个更好的C引入了类的机制,最初的C+被称为“带类的C”1983年正式取名为C+从1989年开始C+语言的标准化工作于1994年制定了ANSI C+标准草案于1998年11月被国际标准化组织(ISO)批准为国际标准,成为目前的C+7/22/2022501.6 C+程序的组成逻辑上,一个C+程序由一些函数(子程序)、类、全局变量/对象的定义构成,其中必须
10、有且仅有一个名字为main的函数。函数由函数名、参数和返回类型、局部变量/对象的定义以及语句序列构成;类由数据成员和成员函数构成。变量或对象的定义可以出现在函数的外部和内部,而语句只能出现在函数内部。C+程序从函数main开始执行。7/22/202251 /This is a simple C+ program#include /对C+标准库中的程序实体进行声明using namespace std; /指定使用标准库的名空间std。int main() /主函数double x,y,z; /定义局部变量x、y和zcout x y; /从键盘输入数据给变量x和yz=x+y; /将x+y送zco
11、utx+y=zendl; /输出结果z system( pause );return 0; /程序结束。 上述程序的运行结果为:Enter two numbers: 7.2 9.37.2 + 9.3 = 16.57/22/202252物理上,一个C+程序可以放在一个或多个源文件(模块)中每个源文件包含一些函数、类和外部变量/对象的定义,其中有且仅有一个文件中包含一个函数main。(一个工程中只能有一个main函数)每个源文件可以分别编译。 7/22/2022531.C+的字符集构成语言的基本符号称为语言的字符集。C+的字符集由下列符号构成:大小写英文字母:az, AZ数字:09特殊字符:! #
12、 % & * _ - + = / | . , : ; ? “ ( ) 空格 横向制表 纵向制表 换页 换行 7/22/2022542.标识符(Identifier,ID )标识符由字母或下划线开始,由字母、数字、下划线组成。 student、student_name、x_1、_name1合法 8bc、123不合法标识符通常用来给程序中的实体命名,程序实体包括:常量、变量、函数、对象、类型(包括类)、标号等。其有效长度为131个字符,长度超过31个字符者只识别前31个字符,VC+标识符长度为1247个字符。7/22/202255在使用标识符时应注意以下几点:大小写字母有区别,如:abc、Abc与
13、ABC不同。关键词不能作为用户自定义的标识符,它们有特殊的作用。具体编译程序可能会限制标识符的长度。以两个下划线开头或以一个下划线后跟一个大写字母开头的标识符往往在C+语言内部实现中用到,程序中不要用这些标识符作为程序的全局标识符。对不同种类的程序实体最好采用不同风格的标识符,以提高程序的易读性。例如:PI(常量)、StudentType(类型)、student(变量、对象或函数等) 7/22/202256例: 判断下面哪些是合法的标识符: MyFileSalary 94amountvoid94SalarySalary94$amountf3.5Num_of_Student7/22/202257
14、关键字是指语言预定义的标识符,它们有固定的作用和含义,在程序中不能用作其它目的。 例如:if、for、switch等关键字全部由小写字母组成。标准C+(ISO14882)定义了74个关键字,具体的C+编译器会做一些增删。常用关键字参见教材的表1-13.关键字(keyword)7/22/202258数据类型说明符与修饰符bool char wchar_t class const double enum float int long short signed struct union unsigned void volatile存储类型说明符auto extern inline register
15、static访问说明符friend private protected public其它说明符asm explicit namespace operator template this typedef typename using virtual 语句与标号break case catch continue default do else for goto if return switch throw try while 运算符及逻辑值delete false new sizeof true表1-1 C+常用关键字及分类 ok7/22/202259字面常量 用于表示在程序中直接书写的常量,又称
16、直接量(literal)。如:128、3.14、A、“abcd”等 。操作符 用于描述运算。如:+,-,*,/, =, ,=,=,|,&等。标点符号 起到某些语法、语义上的作用。如:逗号、分号、冒号、括号等。空白符:空格符、制表符、回车符、注释符 4.其它成分7/22/202260注释 是为了方便对程序的理解而加在程序中的说明性文字信息。注释分为:单行注释:从符号/开始到本行结束。多行注释:以符号/*开始到符号*/结束。续行符一个单词如果在一行中写不下(如一个很长的字符串),则可以把它分几行来写,这时,需要在每一行(最后一行除外)的后面加上一个续行符。续行符由一个反斜杠()后面紧跟一个换行符构
17、成。7/22/2022615.基本术语源程序:用源语言写的,有待翻译的程序,如example.cpp目标程序:也称为结果程序,是源程序通过翻译程序加工以后所生成的程序。如example.obj翻译程序:是指一个把源程序翻译成等价的目标程序的程序。7/22/202262汇编程序:其任务是把用汇编语言写成的源程序,翻译成机器语言形式的目标程序。编译程序:若源程序是用高级程序设计语言所写,经翻译程序加工生成目标程序,那么,该翻译程序就称为编译程序。7/22/202263解释程序:这也是一种翻译程序,同样是将高级语言源程序翻译成机器指令。它与编译程序不同点就在于:它是边翻译边执行的,即输入一句、翻译一
18、句、 执行一句,直至将整个源程序翻译并执行完毕。7/22/2022641.7 程序设计(Programming)要使得计算机能完成各种任务,就必须为它编写相应的程序。 简单地说,程序设计就是为计算机编制程序的过程,它涉及:程序设计方法程序设计步骤 程序设计语言等程序设计本质上可归结为:数据描述数据操作(加工)描述过程式(面向功能)、对象式(面向数据)、函数式等7/22/2022651.过程式程序设计一种以功能为中心、基于功能分解的程序设计范型。一个过程式程序由一些子程序构成,每个子程序对应一个子功能。子程序描述了一系列的操作,它实现了功能抽象。过程式程序的执行过程体现为一系列的子程序调用。数据
19、处于附属地位,它独立于子程序,在子程序调用时通过参数或全局变量传给子程序使用。下面的公式描述了过程式程序设计的本质:程序 = 算法 + 数据结构7/22/2022662.程序设计过程明确问题 搞清楚要解决的问题并给出问题的明确定义,即:做什么?系统设计 给出问题的解决方案,即:如何做?主要包括:数据结构的设计算法的设计 如何组织上述两者,属于不同的程序设计范型。7/22/202267编程选择用某种语言进行编程。良好的程序设计风格可以通过学习和训练来获得。 测试与调试 程序写好之后,其中可能含有错误。程序的逻辑错误和运行异常错误一般可以通过测试(test)来发现。发现错误给错误定位的过程称为调试
20、(debug)。 运行维护 所有的测试手段只能发现程序中的错误,而不能证明程序没有错误。在使用中发现错误并改错称为维护。程序设计步骤(续)7/22/2022683.C+程序的编辑、编译、调试与运行步骤 编辑 利用某个编辑程序(如:Windows平台上的写字板、记事本、Word等)把C+源程序输入到计算机中,并作为文本文件(称为源文件)保存到外存(如硬盘等)中。C+源文件的文件名通常为:*.cpp。编译 利用某个C+编译程序对保存在外存中的C+源程序进行编译,编译结果作为目标文件保存到外存。目标文件的文件名通常为:*.obj。编译预处理程序:执行编译预处理命令。 7/22/202269链接通过一
21、个链接程序把所有目标文件以及程序中用到的一些系统功能所在的目标文件(通常称为库文件)连接起来,作为一个可执行文件保存到外存。可执行文件的文件名通常为:*.exe。 运行通过操作系统提供的应用程序运行机制,把某个可执行文件装入内存,运行其中的可执行程序。在上述的编译、链接和运行过程中都有可能发现程序有错。 整个过程可能会重复多次,直到程序得出正确的运行结果。 编辑(.cpp)编译(.obj)链接(.exe)运行输出结果7/22/202270Creating, Compiling, and Running Programs7/22/2022714.C+集成开发环境 出现了很多C+集成程序开发环境,
22、如:Visual C+Turbo C+C+ BuilderDev C+,等在这些集成环境中,往往使用一条命令(菜单项)就能完成所有的步骤,并且,一些开发环境还提供了可视化的程序设计支持和功能强大的程序动态调试等工具。 (Visual C+ 6.0演示)7/22/202272在VC环境下的编程步骤step 1 启动VC6.0step2 建立项目文件1.点文件2.点新建 3.选控制 台应用4.输入项目名称7/22/202273step3 编辑源程序点文件菜单的新建,选定源文件类型,输入文件名,点确定2.输入源文件名1.选c+源文件3.在此输入程序语句7/22/202274step4 点文件菜单的存
23、盘(另存为可以修改路径与文件名)step5 编译源程序step6 组建step7 运行1.点组建菜单或点工具栏快捷图标2.观察下面的信息提示,0 errors,成功7/22/202275常见的语法错误缺少语句结束符“;”C+语句以;结尾,在缺;号的语句后补上。语句中出现有未知字符。C2018是未知字符错误编号。0 xa3、0 xbb是使用了全角分号(中文);改为英文的即可。7/22/202276常见的语法错误未定义的标识符C+标识符要先定义后使用,变量c没有定义,因之前有分号。该错有时是拼写错误导致一个项目中出现有多个main函数。一个项目只能有一个main函数当要编一个新的程序时必须新建一个
24、项目7/22/202277Trace a Program Execution#include using namespace std;int main() double radius; double area; / Step 1: Read in radius radius = 20; / Step 2: Compute area area = radius * radius * 3.14; / Step 3: Display the area cout The area is ; cout area endl;no valueradiusallocate memory for radius7
25、/22/202278Trace a Program Executionno valueradiusmemory#include using namespace std;int main() double radius; double area; / Step 1: Read in radius radius = 20; / Step 2: Compute area area = radius * radius * 3.14; / Step 3: Display the area cout The area is ; cout area endl;no valueareaallocate memory for area7/22/202279Trace a Program Execution20radiusno valueareaassign 20 to radius#include using namespace std;int main() double radius; double area; / Step 1: Read in radius radius = 20; / Step 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第七章 面谈课件
- 2024年适用职工劳动协议格式文件
- 2024年专业期货交易中介服务协议
- 扬州大学封志明老师预测《导游基础知识》模拟试题参考答案
- 2024年化工业品买卖协议
- 2024阁楼房屋销售协议模板
- 大师傅岗位2024年度劳动协议示例
- 2024年建筑工程预算编制协议
- 2024商业流动资金循环贷款协议
- 2024年度全职员工聘用协议
- 2024年广东省清远市佛冈县事业单位公开招聘工作人员历年高频500题难、易错点模拟试题附带答案详解
- 2024-2030年中国危化品行业发展趋势与投资前景展望报告
- 中国企业投资缅甸光伏发电市场机会分析及战略规划报告2024-2030年
- 2024年广东省深圳市中考历史试题
- 化工(危险化学品)企业主要负责人、安管员安全生产管理专项培训考核试卷(附参考答案)
- 2024年人教版小学三年级语文(上册)期中考卷及答案
- 《信息化项目验收工作规范》
- 2024年全国软件水平考试之高级网络规划设计师考试重点黑金模拟题(详细参考解析)
- 经济学题库(200道)
- 2024年巴西私人安保服务市场机会及渠道调研报告
- 课《闻王昌龄左迁龙标遥有此寄》跨学科公开课一等奖创新教学设计
评论
0/150
提交评论