版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
12/24/202211C++程序设计主讲中南大学软件学院谭长庚cgtan@163.com2015.912/16/202211C++程序设计112/24/20222Chapter1Introduction12/16/20222Chapter1Introduc212/24/20223SomeQuestions1用过计算机?2都用过什么软件(程序)?3了解计算机信息的表示(补码),数制?4程序是?学过编程?程序设计有多难?12/16/20223SomeQuestions1用过312/24/20224第一个程序:HelloC++#include”stdafx.h”#include<iostream>intmain(){std::cout<<"HelloC++";system("pause");return0;}如何学习程序设计语言1.模仿2.多读、写3.提高自主学习的能力*主动性*发现问题*解决问题:*方法:网、讨论、试*表达(程序,算法描述)模仿输出“WelcometoCSU”输出结果:HelloC++12/16/20224第一个程序:HelloC++#inc412/24/20225扩展程序:求圆的面积,会求吗?#include<iostream>usingnamespacestd;intmain(){doubleradius;doublearea;
//Step1:Readinradius-输入
cin>>radius;
//Step2:Computearea-处理area=radius*radius*3.14;
//Step3:Displaythearea-输出
cout<<"Theareais";
cout<<area<<endl;} 输入处理输出结果12/16/20225扩展程序:求圆的面积,会求吗?#inc512/24/20226求长方形的面积:输入两条边到a,b,面积送s#include<iostream>usingnamespacestd;intmain(){doublea,b;double
;
cin>>a;//Step1:Readina
;//
:Readinb
;//Step2:Computeareacout<<"Theareais";//Step3:Displaythearea
;}编程难吗12/16/20226求长方形的面积:输入两条边到a,b,面612/24/20227一些有用的论坛///12/16/20227一些有用的论坛http://bbs.b712/24/20228ObjectivesToreviewcomputerbasics,programs,andoperatingsystems(¡ì1.2-1.4).(Optional)Torepresentnumbersinbinary,decimal,andhexadecimal(¡ì1.5Optional).ToknowthehistoryofC++(¡ì1.6).TowriteasimpleC++program(¡ì1.7).TounderstandtheC++programdevelopmentcycle(¡ì1.8).TodevelopC++usingVisualC++(¡ì112/16/20228ObjectivesToreview812/24/202291.1计算机概述1946年出现第一台数字电子计算机ENIAC
/wiki/ENIAC一台计算机由两部分构成:硬件:计算机的物理构成,即构成计算机的元器件和设备。软件:计算机程序以及相关的文档。TheEDVACasinstalledinBuilding328attheBallisticsResearchLaboratory.GlenBeck(background)andBettySnyder(foreground)programtheENIACinBRLbuilding328.12/16/202291.1计算机概述1946年出现第一912/24/2022101.1.1冯•诺依曼体系结构传统的冯•诺依曼(JohnVonNeumann)体系结构,即存储程序式结构。由五个单元构成:存储单元算术/逻辑运算单元控制单元输入单元输出单元上述计算过程的本质是通过不断地改变程序的状态来实现计算,程序的状态由存储单元中的数据构成,状态的转换是由指令来实现。1903-195712/16/2022101.1.1冯•诺依曼体系结构传统的1012/24/202211CPU-微处理器飞速发展Intel创始人之一GordonMoore65年提出摩尔定律:集成电路可容纳的晶体管数,约每隔18个月便会增加一倍,性能也将提升一倍,而价格则保持不变.
4004-8086-80286-80386-80486-80586(奔腾)等/index.php/article/index/id/10199197980888538627万个晶体管20M,25M,33M32位2010i7Corei7980X100万晶体管3.3G6核1971第一个微处理器2300个晶体管Intel400412/16/202211CPU-微处理器飞速发展Intel创1112/24/202212CPU-微处理器飞速发展-续80386(85)80486奔腾(93)奔腾2代奔腾4代80286(82)8086(78)奔腾3代IA-64(安腾)4004(71)不是我不明白,这世界变化太快。扎扎实实掌握知识,以不变应万变!12/16/202212CPU-微处理器飞速发展-续80381212/24/202213外存外设(Devices)内存(Memory)中央处理器(CPU)1.1.2计算机的硬件构成总线执行计算机指令。包含控制器、运算器以及寄存器存储运行中的计算机程序和正在使用的数据,由存储单元构成输入/输出和外部存储永久性存储程序和数据输入/输出12/16/202213外存外设内存中央处理器1.1.2计1312/24/202214微处理器寄存器组(Registers)算术逻辑部件ALU(ArithmeticLogicUnit)控制部件(ControlUnit)又称中央处理器(CPU)微型计算机系统概述微处理器微型计算机微型计算机系统12/16/202214微处理器寄存器组(Registers1412/24/202215微型计算机:以CPU为核心,并配以存储器(ROM和RAM)、输入/输出接口电路、系统总线及相应的外部设备而构成的完整的、可独立工作的计算机。把这些组成部分集成在一个超大规模芯片上-单片机。微型计算机系统:以微型计算机为核心,再配以相应的外围设备、电源、辅助电路和控制微型计算机工作的软件而构成的完整的计算机系统。因此一个完整的微型计算机系统应包括硬件和软件两大部分。12/16/202215微型计算机:以CPU为核心,并配以存1512/24/202216硬件:三个主要组成部分,用系统总线连接。中央处理机CPU总线控制逻辑接口接口存储器大容量存储器I/O设备I/O子系统系统总线总线(BUS):计算机中连接多个功能部件的信号线,分为数据总线(DB)、地址总线(AB)和控制总线CB)12/16/202216硬件:三个主要组成部分,用系统总线连1612/24/202217软件:系统软件(核心是操作系统OS)
MASM.EXE
TASM.EXE
LINK.EXE
TLINK.EXE
DEBUG.EXE
应用软件:word,游戏软件
12/16/2022171712/24/2022181.1.3计算机的工作过程待执行的程序从外存装入到内存中;CPU从内存中逐条地取程序中的指令执行;程序执行中所需要的数据从外设中获得;程序执行中产生的临时结果保存在内存中;程序的执行结果通过外设输出。计算机的工作是用程序来控制的程序是指令的集合指令是计算机可以识别的命令12/16/2022181.1.3计算机的工作过程待执行的1812/24/2022191.2软件概述计算机硬件只是提供了执行存储在内存中指令的能力,而执行的指令(软件)是需要人来提供的。计算机软件是计算机系统中的程序以及有关的文档。程序:计算任务的处理对象(数据)与处理规则(算法)的描述,由计算机执行。指令的集合文档:便于人理解程序所需的资料说明,供程序开发与维护使用。12/16/2022191.2软件概述计算机硬件只是提供了1912/24/2022201、软件的分类系统软件居于计算机系统中最靠近硬件的一级,它与具体的应用领域无关,其它软件一般要通过系统软件发挥作用,如操作系统就属于系统软件。支撑软件支持软件开发与维护的软件,一般由软件开发人员使用,如软件开发环境VC++6.0就是典型的支撑软件。应用软件用于特定领域的专用软件,如:人口普查软件、财务软件等。12/16/2022201、软件的分类系统软件2012/24/2022212、各类软件及硬件之间的关系硬件系统软件支撑软件应用软件系统软件12/16/2022212、各类软件及硬件之间的关系硬2112/24/2022221.3信息的表示与存储 ┌指令 ┌控制信息 ┤ │ └控制字信息 ┤ │ ┌定点数 │ ┌数值信息 ┤ └数据信息 ┤ └浮点数 │ ┌字符数据 └非数值信息 ┤ └逻辑数据12/16/2022221.3信息的表示与存储2212/24/2022231.3.1计算机的数字系统计算机采用的是二进制数字系统。基本符号:0、1进位原则:逢二进一优点:易于物理实现二进制数运算简单机器可靠性高通用性强缺点:对人来说可读性差12/16/2022231.3.1计算机的数字系统计算机采用2312/24/2022241.3.2程序设计中常用的数制12/16/2022241.3.2程序设计中常用的数制2412/24/2022251.3.3不同进位计数制间的转换
1、R进制→十进制各位数字与它的权(Rn)相乘,其积相加。例如:(11111111.11)2=1*27+1*26+1*25+1*24
+1*23+1*22+1*21+1*20+1*2-1+1*2-2
=(255.75)10(3506.2)8=3*83+5*82+0*81+6*80+2*8-1
=(1862.25)10(0.2A)16=2*16-1+10*16-2=(0.1640625)10不同进制的数转成十进制。如29(11101)2=1×24+1×23+1×22+0×21+1×20=29(35)8=3×81+5×80=29(1D)16=1×161+13×160=2912/16/2022251.3.3不同进位计数制间的转换
2512/24/2022262、十进制→R进制十进制整数转换成R进制的整数“除R取余”法,例如:10进制→2进制268余数234┄┄┄┄┄┄┄┄┄┄┄┄0低位217┄┄┄┄┄┄┄┄┄┄┄┄028┄┄┄┄┄┄┄┄┄┄┄┄124┄┄┄┄┄┄┄┄┄┄┄┄022┄┄┄┄┄┄┄┄┄┄┄┄021┄┄┄┄┄┄┄┄┄┄┄┄00┄┄┄┄┄┄┄┄┄┄┄┄1高位所以6810=1000100212/16/2022262、十进制→R进制十进制整数转换2612/24/202227将十进制(29)转成2进制、8进制、16进制数2141207231211290218358302916113(D)161029(2进制)(8进制)(16进制)12/16/202227将十进制(29)转成2进制、8进制、2712/24/202228十进制小数转换成R进制小数“乘R取整”法,例如:高位0.3125×2=0.6250.625×2=1.250.25×2=0.50.5×2=1.0所以0.312510=0.01012
12/16/202228十进制小数转换成R进制小数2812/24/202229十进制与二进制之间的转换-小数¡Á1.6251.250.5¡Á¡Á0.8125¡Á1.0二进制转成十进制(0.1101)2=1×2-1+1×2-2+0×2-3+1×2-4=0.8125十进制转成二进制乘以2取整数位,直到乘积为整,例如,(0.8125)10转成二进制:0.1101(0.1)10转成二进制是多少?(0.1)10≈(0.00011001100)212/16/202229十进制与二进制之间的转换-小数¡Á12912/24/202230
3、二、八、十六进制的相互转换每位八进制数相当于三位二进制数每位十六进制数相当于四位二进制数(1011010.10)2=(001
011
010.100)2
=(132.4)8(1011010.10)2=(0101
1010.1000)2
=(5A.8)16(F7)16=(1111
0111)2=(11110111)2不够划分时整数最左边补0,小数最右边补012/16/202230
3、二、八、十六进制的相互转换每位3012/24/2022311.3.4信息的存储单位在计算机中,任何信息都是用“0”和“1”来表示的位(bit):度量数据的最小单位,表示一位二进制信息字节(byte):由八位二进制数字组成(1byte=8bit)。K字节1K=1024byte(KiloByte,KB)M字节1M=1024K(MegaByte,MB)G字节1G=1024M(GigaByte,GB)T字节1T=1024G
(TeraByte,TB)12/16/2022311.3.4信息的存储单位在计算机中3112/24/2022321.计算机中正负数的表示假设机器字长为16位:符号位=0正数
数值位
=
1负数1514131211109876543210H-ByteL-Byte
76543210符号位
数值位假设机器字长为8位:H-NibbleL-Nibble1.3.5计算机中数的编码表示在计算机中表示正负号的最简单方法是用0表示“+”,用1表示“-”+101——0101,-101——1101机器字长:指参与运算的数的基本位数,标志着计算精度,一般是字节的整数倍(8位、16位、32位等)12/16/2022321.计算机中正负数的表示假设机器字长3212/24/2022332.机器数与真值真值:适合于计算机表示的带有“+”、“-”号的二进制数;机器数:真值的“+”、“-”号数值化后所得到的计算机实际能表示的数。机器数有三种码:原码、反码、补码12/16/2022332.机器数与真值真值:适合于计算机3312/24/202234"符号+绝对值表示"的编码例如:X=+0101011[X]原=00101011X=-0101011[X]原=1
0101011
符号位缺点:零的表示不唯一:[+0]原=000...0[-0]原=100...0进行四则运算时,符号位需单独处
理,且运算规则复杂。3、原码12/16/202234"符号+绝对值表示"的编码3、原码3412/24/2022354、反码正数的反码与原码表示相同。负数的反码与原码有如下关系:符号位相同(仍用1表示),其余各位取反(0变1,1变0)。例如:
X=-1100110[X]原=11100110[X]反=10011001
X=+0000000[X]原=00000000[X]反=00000000反码中零的表示也不唯一X=-0000000[X]原=10000000[X]反=11111111反码只是求补码的中间码12/16/2022354、反码正数的反码与原码表示相同。3512/24/2022365、补码(Complement)(重点)计算机中数的补码表示法正数的补码:
同原码负数的补码:(1)写出与该负数相对应的正数的原码(2)按位求反(包括符号位)(3)末位加112/16/2022365、补码(Complement)(3612/24/202237
机器字长16位,[-46]补码=FFD2H
[46]补码=00101110
第二步:按位求反第三步:末位加一
[+0]补码=000000001111111100000000=[-0]补码
0的表示惟一按位求反末位加一第一步:求46的原码例:机器字长8位,[-46]补码=?
11010001
[-46]补码=
11010010=D2H
+1
12/16/202237机器字长16位,[-463712/24/202238为何用补码表示?符号位可作为数值参加运算减法运算可转换为加法运算:减去一个数相当于加上一个负数可以简化硬件设计:只要设计加法器,不用减法器IBMpc计算机中的数值是以补码来表示的补码运算的结果仍为补码运算结果溢出:负数之和得正数,或正数之和得负数12/16/202238为何用补码表示?可以简化硬件设计:只3812/24/202239补码的加法和减法加法规则:[X+Y]补码=[X]补码+[Y]补码减法规则:[X-Y]补码=[X]补码+[-Y]补
补码减法可转换为补码加法符号位直接参加运算,能自动得到正确结果。求补运算:连同符号位一起,按位求反、末位加一
[[-X]补码]求补=[X]原码
[[X]补码]求补=[-X]原码12/16/202239补码的加法和减法3912/24/202240已知:[X]=6,[y]=9,用补码求x-y
[X]=+0000110[-Y]=-00001001[X]补码=
00000110[-Y]补码=11110111[x-y]补码=[x]补码+[-y]补码=00000110
+11110111=11111101[[x-y]补码]求补=[-(x-y)]原码
[11111101]求补=00000011
-(x-y)=00000011=>x-y=-00000011X-Y=-3求补运算:将一个补码连同符号位一起,按位求反、末位加一求真值:
一个负数的补码再求补=该数正数的原码(补上负号就得负数的真值)结果为补码12/16/202240已知:[X]=6,4012/24/2022411.3.6非数值信息的表示西文字符:ASCII码:用7位二进制数表示一个字符,最多可以表示27=128个字符EBCDIC码:用8位二进制数表示一个字符,最多可以表示28=256个字符汉字:应用较为广泛的是"国家标准信息交换用汉字编码"(GB2312-80标准),简称国标码。是二字节码,用二个七位二进制数编码表示一个汉字。Unicode:2字节字符编码,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。12/16/2022411.3.6非数值信息的表示西文字符4112/24/2022421.3.7十进制数的BCD码表示BCD(BinaryCodedDecimal)码是十进制数的另一种二进制编码形式。它有利于用二进制来精确表示十进制数。BCD码有多种形式,常用的是8421码,每一位十进数码用四位二进数码表示,不允许出现1010~1111四种组合。0 0000 5 0101 10 000100001 0001 6 0110 11 000100012 0010 7 0111 12 000100103 0011 8 1000 123 0001001000114 0100 9 1001 1234 0001001000110100BCD码常采用压缩形式存贮:一个字节存放二位BCD码。12/16/2022421.3.7十进制数的BCD码表示B4212/24/2022431.4程序设计语言程序设计的结果必然要用一种能被计算机接受的语言表示出来,即编程实现(Coding)。根据计算机指令系统和人们解决问题所采用的描述语言(如:数学语言)的接近程度,常常把程序语言分为:低级语言高级语言通常所讲的程序设计语言往往指的是高级语言。12/16/2022431.4程序设计语言程序设计的结果4312/24/2022441.低级语言和高级语言低级语言:是指特定计算机能够直接理解的语言(或与之直接对应的语言):机器语言:采用指令编码和数据的存储位置来表示操作以及操作数;汇编语言:是用符号名来表示操作和操作数位置,以增加程序的易读性。需要翻译(汇编)成机器语言才能执行。高级语言:是指人容易理解和有利于人对解题过程进行描述的程序语言。典型的高级语言有:FORTRAN、COBOL、Basic、Pascal、C、Ada、Modula-2、Lisp、Prolog、Simula、Smalltalk、C++、Java等12/16/2022441.低级语言和高级语言低级语言:是指4412/24/2022452.低级语言与高级语言程序的比较计算a+b*c-d的值,用汇编语言可写成: movax,b mulax,c addax,a subax,d movr,ax用高级语言可写成: r=a+b*c-d12/16/2022452.低级语言与高级语言程序的比较4512/24/202246低级语言优点:写出的程序效率比较高,包括执行速度快和占用空间少。缺点:程序难以设计、理解与维护,难以保证程序的正确性。另外,可移植性差。高级语言优点:程序容易设计、理解与维护,容易保证程序正确性。可移植性好缺点:用其编写的程序相对于用低级语言编写的程序效率要低,翻译成的目标代码量较大。12/16/202246低级语言4612/24/2022473.高级语言的翻译用高级语言书写的程序须翻译成机器语言程序才能在计算机上运行。翻译方式有两种:编译把高级语言程序(称为源程序)首先翻译成功能上等价的机器语言程序(称为目标代码程序)或汇编语言程序(再通过汇编程序把它翻译成目标代码程序),然后执行目标代码程序。在目标代码程序的执行中不再需要源程序。解释对源程序中的语句进行逐条翻译并执行,翻译完了程序也就执行完了。这种翻译方式不产生目标程序,程序的每次执行都需要源程序。12/16/2022473.高级语言的翻译用高级语言书写的程4712/24/202248把高级语言程序翻译成机器语言程序的工作一般由程序来实现,根据翻译方式可把翻译程序分为:编译程序解释程序
一般来说,编译执行比解释执行效率高解释执行容易实现平台无关 12/16/202248把高级语言程序翻译成机器语言程序的工4812/24/2022491.5C++语言的产生C++是贝尔实验室的BjarneStroustrup为支持面向对象程序设计而设计的一种系统程序语言/wiki/Bjarne_Stroustrup从C语言发展演变而来的,首先是一个更好的C引入了类的机制,最初的C++被称为“带类的C”1983年正式取名为C++从1989年开始C++语言的标准化工作于1994年制定了ANSIC++标准草案于1998年11月被国际标准化组织(ISO)批准为国际标准,成为目前的C++12/16/2022491.5C++语言的产生C++是贝尔4912/24/2022501.6C++程序的组成逻辑上,一个C++程序由一些函数(子程序)、类、全局变量/对象的定义构成,其中必须有且仅有一个名字为main的函数。函数由函数名、参数和返回类型、局部变量/对象的定义以及语句序列构成;类由数据成员和成员函数构成。变量或对象的定义可以出现在函数的外部和内部,而语句只能出现在函数内部。C++程序从函数main开始执行。12/16/2022501.6C++程序的组成逻辑上,一个5012/24/202251//ThisisasimpleC++program#include<iostream>//对C++标准库中的程序实体进行声明usingnamespacestd;//指定使用标准库的名空间main()//主函数{ doublex,y,z;//定义局部变量x、y和z cout<<"Entertwonumbers:";//输出提示信息到显示器 cin>>x>>y;//从键盘输入数据给变量x和y z=x+y;//将x+y送z cout<<x<<"+"<<y<<"="<<z<<endl;
//输出结果zsystem("pause");
return0;//程序结束。}
上述程序的运行结果为:Entertwonumbers:7.29.3↙7.2+9.3=16.512/16/202251//Thi5112/24/202252物理上,一个C++程序可以放在一个或多个源文件(模块)中每个源文件包含一些函数、类和外部变量/对象的定义,其中有且仅有一个文件中包含一个函数main。(一个工程中只能有一个main函数)每个源文件可以分别编译。12/16/202252物理上,一个C++程序5212/24/2022531.C++的字符集构成语言的基本符号称为语言的字符集。C++的字符集由下列符号构成:大小写英文字母:a~z,A~Z数字:0~9特殊字符:!#%^&*_-+=~<>/\|.,:;?‘
“()[]{}空格横向制表纵向制表换页换行12/16/2022531.C++的字符集构成语言的基本符号5312/24/2022542.标识符(Identifier,ID)标识符由字母或下划线开始,由字母、数字、下划线组成。student、student_name、x_1、_name1合法8bc、123不合法标识符通常用来给程序中的实体命名,程序实体包括:常量、变量、函数、对象、类型(包括类)、标号等。其有效长度为1-31个字符,长度超过31个字符者只识别前31个字符,VC++标识符长度为1-247个字符。12/16/2022542.标识符(Identifier,I5412/24/202255在使用标识符时应注意以下几点:大小写字母有区别,如:abc、Abc与ABC不同。关键词不能作为用户自定义的标识符,它们有特殊的作用。具体编译程序可能会限制标识符的长度。以两个下划线开头或以一个下划线后跟一个大写字母开头的标识符往往在C++语言内部实现中用到,程序中不要用这些标识符作为程序的全局标识符。对不同种类的程序实体最好采用不同风格的标识符,以提高程序的易读性。例如:PI(常量)、StudentType(类型)、student(变量、对象或函数等)
12/16/202255在使用标识符时应注意以下几点:5512/24/202256例:判断下面哪些是合法的标识符:
MyFileSalary94amountvoid94SalarySalary94$amountf3.5Num_of_Student12/16/202256例:判断下面哪些是合法的标识符:5612/24/202257关键字是指语言预定义的标识符,它们有固定的作用和含义,在程序中不能用作其它目的。例如:if、for、switch等关键字全部由小写字母组成。标准C++(ISO14882)定义了74个关键字,具体的C++编译器会做一些增删。常用关键字参见教材的表1-13.关键字(keyword)12/16/202257关键字是指语言预定义的标识符,它们有5712/24/202258数据类型说明符与修饰符boolcharwchar_tclassconstdoubleenumfloatintlongshortsignedstructunionunsignedvoidvolatile存储类型说明符autoexterninlineregisterstatic访问说明符friendprivateprotectedpublic其它说明符asmexplicitnamespaceoperatortemplatethistypedeftypenameusingvirtual
语句与标号breakcasecatchcontinuedefaultdoelseforgotoifreturnswitchthrowtrywhile
运算符及逻辑值deletefalsenewsizeoftrue表1-1C++常用关键字及分类
ok12/16/202258数据类型说明符与修饰符bool5812/24/202259字面常量用于表示在程序中直接书写的常量,又称直接量(literal)。如:128、3.14、‘A’、“abcd”等。操作符用于描述运算。如:+,-,*,/,=,>,<,==,!=,>=,<=,||,&&等。标点符号起到某些语法、语义上的作用。如:逗号、分号、冒号、括号等。空白符:空格符、制表符、回车符、注释符4.其它成分12/16/202259字面常量用于表示在程序中直接书写的5912/24/202260注释是为了方便对程序的理解而加在程序中的说明性文字信息。注释分为:单行注释:从符号‘//’开始到本行结束。多行注释:以符号‘/*’开始到符号‘*/’结束。续行符一个单词如果在一行中写不下(如一个很长的字符串),则可以把它分几行来写,这时,需要在每一行(最后一行除外)的后面加上一个续行符。续行符由一个反斜杠(\)后面紧跟一个换行符构成。12/16/202260注释是为了方便对程序的理解而加在程6012/24/2022615.基本术语源程序:用源语言写的,有待翻译的程序,如example.cpp目标程序:也称为"结果程序",是源程序通过翻译程序加工以后所生成的程序。如example.obj翻译程序:是指一个把源程序翻译成等价的目标程序的程序。12/16/2022615.基本术语源程序:6112/24/202262汇编程序:其任务是把用汇编语言写成的源程序,翻译成机器语言形式的目标程序。编译程序:若源程序是用高级程序设计语言所写,经翻译程序加工生成目标程序,那么,该翻译程序就称为"编译程序"。12/16/202262汇编程序:6212/24/202263解释程序:这也是一种翻译程序,同样是将高级语言源程序翻译成机器指令。它与编译程序不同点就在于:它是边翻译边执行的,即输入一句、翻译一句、执行一句,直至将整个源程序翻译并执行完毕。12/16/202263解释程序:6312/24/2022641.7程序设计(Programming)要使得计算机能完成各种任务,就必须为它编写相应的程序。简单地说,程序设计就是为计算机编制程序的过程,它涉及:程序设计方法程序设计步骤程序设计语言等程序设计本质上可归结为:数据描述数据操作(加工)描述过程式(面向功能)、对象式(面向数据)、函数式等12/16/2022641.7程序设计(Programmi6412/24/2022651.过程式程序设计一种以功能为中心、基于功能分解的程序设计范型。一个过程式程序由一些子程序构成,每个子程序对应一个子功能。子程序描述了一系列的操作,它实现了功能抽象。过程式程序的执行过程体现为一系列的子程序调用。数据处于附属地位,它独立于子程序,在子程序调用时通过参数或全局变量传给子程序使用。下面的公式描述了过程式程序设计的本质: 程序=算法+数据结构12/16/2022651.过程式程序设计一种以功能为中心、6512/24/2022662.程序设计过程明确问题搞清楚要解决的问题并给出问题的明确定义,即:做什么?系统设计 给出问题的解决方案,即:如何做?主要包括:数据结构的设计算法的设计如何组织上述两者,属于不同的程序设计范型。12/16/2022662.程序设计过程明确问题6612/24/202267编程选择用某种语言进行编程。良好的程序设计风格可以通过学习和训练来获得。测试与调试程序写好之后,其中可能含有错误。程序的逻辑错误和运行异常错误一般可以通过测试(test)来发现。发现错误给错误定位的过程称为调试(debug)。运行维护所有的测试手段只能发现程序中的错误,而不能证明程序没有错误。在使用中发现错误并改错称为维护。程序设计步骤(续)12/16/202267编程程序设计步骤(续)6712/24/2022683.C++程序的编辑、编译、调试与运行步骤
编辑利用某个编辑程序(如:Windows平台上的写字板、记事本、Word等)把C++源程序输入到计算机中,并作为文本文件(称为源文件)保存到外存(如硬盘等)中。C++源文件的文件名通常为:*.cpp。编译利用某个C++编译程序对保存在外存中的C++源程序进行编译,编译结果作为目标文件保存到外存。目标文件的文件名通常为:*.obj。编译预处理程序:执行编译预处理命令。12/16/2022683.C++程序的编辑、编译、调试与运6812/24/202269链接通过一个链接程序把所有目标文件以及程序中用到的一些系统功能所在的目标文件(通常称为库文件)连接起来,作为一个可执行文件保存到外存。可执行文件的文件名通常为:*.exe。运行通过操作系统提供的应用程序运行机制,把某个可执行文件装入内存,运行其中的可执行程序。
在上述的编译、链接和运行过程中都有可能发现程序有错。整个过程可能会重复多次,直到程序得出正确的运行结果。编辑(.cpp)编译(.obj)链接(.exe)运行输出结果12/16/202269链接编辑(.cpp)编译(.obj6912/24/202270Creating,Compiling,andRunningPrograms12/16/202270Creating,Compilin7012/24/2022714.C++集成开发环境出现了很多C++集成程序开发环境,如:VisualC++TurboC++C++BuilderDevC++,等在这些集成环境中,往往使用一条命令(菜单项)就能完成所有的步骤,并且,一些开发环境还提供了可视化的程序设计支持和功能强大的程序动态调试等工具。(VisualC++6.0演示)12/16/2022714.C++集成开发环境出现了很多C7112/24/202272在VC环境下的编程步骤step1启动VC6.0step2建立项目文件1.点文件2.点新建3.选控制台应用4.输入项目名称12/16/202272在VC环境下的编程步骤step17212/24/202273step3编辑源程序点文件菜单的新建,选定源文件类型,输入文件名,点确定2.输入源文件名1.选c++源文件3.在此输入程序语句12/16/202273step3编辑源程序2.输入源文件7312/24/202274step4点文件菜单的存盘 (另存为可以修改路径与文件名)step5编译源程序step6组建step7运行1.点组建菜单或点工具栏快捷图标2.观察下面的信息提示,0errors,成功12/16/202274step4点文件菜单的存盘1.点组7412/24/202275常见的语法错误缺少语句结束符“;”C++语句以;结尾,在缺;号的语句后补上。语句中出现有未知字符。C2018是未知字符错误编号。‘0xa3’、’0xbb’是使用了全角分号(中文);改为英文的即可。12/16/202275常见的语法错误缺少语句结束符“;”语7512/24/202276常见的语法错误未定义的标识符C++标识符要先定义后使用,变量c没有定义,因之前有分号。该错有时是拼写错误导致一个项目中出现有多个main函数。一个项目只能有一个main函数当要编一个新的程序时必须新建一个项目12/16/202276常见的语法错误未定义的标识符一个项目7612/24/202277TraceaProgramExecution#include<iostream>usingnamespacestd;intmain(){doubleradius;doublearea;//Step1:Readinradiusradius=20;//Step2:Computeareaarea=radius*radius*3.14;//Step3:Displaytheareacout<<"Theareais";cout<<area<<endl;}novalueradiusallocatememoryforradius12/16/202277TraceaProgramEx7712/24/202278TraceaProgramExecutionnovalueradiusmemory#include<iostream>usingnamespacestd;intmain(){doubleradius;doublearea;//Step1:Readinradiusradius=20;//Step2:Computeareaarea=radius*radius*3.14;//Step3:Displaytheareacout<<"Theareais";cout<<area<<endl;}novalueareaallocatememoryforarea12/16/202278TraceaProgramEx7812/24/202279TraceaProgramExecution20radiusnovalueareaassign20toradius#include<iostream>usingnamespacestd;intmain(){doubleradius;doublearea;//Step1:Readinradiusradius=20;//Step2:Computeareaarea=radius*radius*3.14;//Step3:Displaytheareacout<<"Theareais";cout<<area<<endl;}12/16/202279TraceaProgramEx7912/24/202280TraceaProgramExecution20radiusmemory1256.636areacomputeareaandassignittovariablearea#include<iostream>usingnamespacestd;intmain(){doubleradius;doublearea;//Step1:Readinradiusradius=20;//Step2:Computeareaarea=radius*radius*3.14;//Step3:Displaytheareacout<<"Theareais";cout<<area<<endl;}12/16/202280TraceaProgramEx8012/24/202281TraceaProgramExecution20radiusmemory1256.636areaprintamessagetotheconsole#include<iostream>usingnamespacestd;intmain(){doubleradius;doublearea;//Step1:Readinradiusradius=20;//Step2:Computeareaarea=radius*radius*3.14159;//Step3:Displaytheareacout<<"Theareais";cout<<area<<endl;}12/16/202281TraceaProgramEx8112/24/202282Thanks!12/16/202282Thanks!8212/24/20228305C3H3D25H
+3D25H05C3H-1-1例:十六进制数:逢十六进一借一为十六42E8H3762H12/16/20228305C3H+3D258312/24/20228484C++程序设计主讲中南大学软件学院谭长庚cgtan@163.com2015.912/16/202211C++程序设计8412/24/202285Chapter1Introduction12/16/20222Chapter1Introduc8512/24/202286SomeQuestions1用过计算机?2都用过什么软件(程序)?3了解计算机信息的表示(补码),数制?4程序是?学过编程?程序设计有多难?12/16/20223SomeQuestions1用过8612/24/202287第一个程序:HelloC++#include”stdafx.h”#include<iostream>intmain(){std::cout<<"HelloC++";system("pause");return0;}如何学习程序设计语言1.模仿2.多读、写3.提高自主学习的能力*主动性*发现问题*解决问题:*方法:网、讨论、试*表达(程序,算法描述)模仿输出“WelcometoCSU”输出结果:HelloC++12/16/20224第一个程序:HelloC++#inc8712/24/202288扩展程序:求圆的面积,会求吗?#include<iostream>usingnamespacestd;intmain(){doubleradius;doublearea;
//Step1:Readinradius-输入
cin>>radius;
//Step2:Computearea-处理area=radius*radius*3.14;
//Step3:Displaythearea-输出
cout<<"Theareais";
cout<<area<<endl;} 输入处理输出结果12/16/20225扩展程序:求圆的面积,会求吗?#inc8812/24/202289求长方形的面积:输入两条边到a,b,面积送s#include<iostream>usingnamespacestd;intmain(){doublea,b;double
;
cin>>a;//Step1:Readina
;//
:Readinb
;//Step2:Computeareacout<<"Theareais";//Step3:Displaythearea
;}编程难吗12/16/20226求长方形的面积:输入两条边到a,b,面8912/24/202290一些有用的论坛///12/16/20227一些有用的论坛http://bbs.b9012/24/202291ObjectivesToreviewcomputerbasics,programs,andoperatingsystems(¡ì1.2-1.4).(Optional)Torepresentnumbersinbinary,decimal,andhexadecimal(¡ì1.5Optional).ToknowthehistoryofC++(¡ì1.6).TowriteasimpleC++program(¡ì1.7).TounderstandtheC++programdevelopmentcycle(¡ì1.8).TodevelopC++usingVisualC++(¡ì112/16/20228ObjectivesToreview9112/24/2022921.1计算机概述1946年出现第一台数字电子计算机ENIAC
/wiki/ENIAC一台计算机由两部分构成:硬件:计算机的物理构成,即构成计算机的元器件和设备。软件:计算机程序以及相关的文档。TheEDVACasinstalledinBuilding328attheBallisticsResearchLaboratory.GlenBeck(background)andBettySnyder(foreground)programtheENIACinBRLbuilding328.12/16/202291.1计算机概述1946年出现第一9212/24/2022931.1.1冯•诺依曼体系结构传统的冯•诺依曼(JohnVonNeumann)体系结构,即存储程序式结构。由五个单元构成:存储单元算术/逻辑运算单元控制单元输入单元输出单元上述计算过程的本质是通过不断地改变程序的状态来实现计算,程序的状态由存储单元中的数据构成,状态的转换是由指令来实现。1903-195712/16/2022101.1.1冯•诺依曼体系结构传统的9312/24/202294CPU-微处理器飞速发展Intel创始人之一GordonMoore65年提出摩尔定律:集成电路可容纳的晶体管数,约每隔18个月便会增加一倍,性能也将提升一倍,而价格则保持不变.
4004-8086-80286-80386-80486-80586(奔腾)等/index.php/article/index/id/10199197980888538627万个晶体管20M,25M,33M32位2010i7Corei7980X100万晶体管3.3G6核1971第一个微处理器2300个晶体管Intel400412/16/202211CPU-微处理器飞速发展Intel创9412/24/202295CPU-微处理器飞速发展-续80386(85)80486奔腾(93)奔腾2代奔腾4代80286(82)8086(78)奔腾3代IA-64(安腾)4004(71)不是我不明白,这世界变化太快。扎扎实实掌握知识,以不变应万变!12/16/202212CPU-微处理器飞速发展-续80389512/24/202296外存外设(Devices)内存(Memory)中央处理器(CPU)1.1.2计算机的硬件构成总线执行计算机指令。包含控制器、运算器以及寄存器存储运行中的计算机程序和正在使用的数据,由存储单元构成输入/输出和外部存储永久性存储程序和数据输入/输出12/16/202213外存外设内存中央处理器1.1.2计9612/24/202297微处理器寄存器组(Registers)算术逻辑部件ALU(ArithmeticLogicUnit)控制部件(ControlUnit)又称中央处理器(CPU)微型计算机系统概述微处理器微型计算机微型计算机系统12/16/202214微处理器寄存器组(Registers9712/24/202298微型计算机:以CPU为核心,并配以存储器(ROM和RAM)、输入/输出接口电路、系统总线及相应的外部设备而构成的完整的、可独立工作的计算机。把这些组成部分集成在一个超大规模芯片上-单片机。微型计算机系统:以微型计算机为核心,再配以相应的外围设备、电源、辅助电路和控制微型计算机工作的软件而构成的完整的计算机系统。因此一个完整的微型计算机系统应包括硬件和软件两大部分。12/16/202215微型计算机:以CPU为核心,并配以存9812/24/202299硬件:三个主要组成部分,用系统总线连接。中央处理机CPU总线控制逻辑接口接口存储器大容量存储器I/O设备I/O子系统系统总线总线(BUS):计算机中连接多个功能部件的信号线,分为数据总线(DB)、地址总线(AB)和控制总线CB)12/16/202216硬件:三个主要组成部分,用系统总线连9912/24/2022100软件:系统软件(核心是操作系统OS)
MASM.EXE
TASM.EXE
LINK.EXE
TLINK.EXE
DEBUG.EXE
应用软件:word,游戏软件
12/16/20221710012/24/20221011.1.3计算机的工作过程待执行的程序从外存装入到内存中;CPU从内存中逐条地取程序中的指令执行;程序执行中所需要的数据从外设中获得;程序执行中产生的临时结果保存在内存中;程序的执行结果通过外设输出。计算机的工作是用程序来控制的程序是指令的集合指令是计算机可以识别的命令12/16/2022181.1.3计算机的工作过程待执行的10112/24/20221021.2软件概述计算机硬件只是提供了执行存储在内存中指令的能力,而执行的指令(软件)是需要人来提供的。计算机软件是计算机系统中的程序以及有关的文档。程序:计算任务的处理对象(数据)与处理规则(算法)的描述,由计算机执行。指令的集合文档:便于人理解程序所需的资料说明,供程序开发与维护使用。12/16/2022191.2软件概述计算机硬件只是提供了10212/24/20221031、软件的分类系统软件居于计算机系统中最靠近硬件的一级,它与具体的应用领域无关,其它软件一般要通过系统软件发挥作用,如操作系统就属于系统软件。支撑软件支持软件开发与维护的软件,一般由软件开发人员使用,如软件开发环境VC++6.0就是典型的支撑软件。应用软件用于特定领域的专用软件,如:人口普查软件、财务软件等。12/16/2022201、软件的分类系统软件10312/24/20221042、各类软件及硬件之间的关系硬件系统软件支撑软件应用软件系统软件12/16/2022212、各类软件及硬件之间的关系硬10412/24/20221051.3信息的表示与存储 ┌指令 ┌控制信息 ┤ │ └控制字信息 ┤ │ ┌定点数 │ ┌数值信息 ┤ └数据信息 ┤ └浮点数 │ ┌字符数据 └非数值信息 ┤ └逻辑数据12/16/2022221.3信息的表示与存储10512/24/20221061.3.1计算机的数字系统计算机采用的是二进制数字系统。基本符号:0、1进位原则:逢二进一优点:易于物理实现二进制数运算简单机器可靠性高通用性强缺点:对人来说可读性差12/16/2022231.3.1计算机的数字系统计算机采用10612/24/20221071.3.2程序设计中常用的数制12/16/2022241.3.2程序设计中常用的数制10712/24/20221081.3.3不同进位计数制间的转换
1、R进制→十进制各位数字与它的权(Rn)相乘,其积相加。例如:(11111111.11)2=1*27+1*26+1*25+1*24
+1*23+1*22+1*21+1*20+1*2-1+1*2-2
=(255.75)10(3506.2)8=3*83+5*82+0*81+6*80+2*8-1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人伤害赔偿协议书
- 学校食品安全风险评估方案
- 2024年契约:融资租赁合同的权益
- 2024年分期付款销售合同范本
- 2024年SEO服务精准外包合同
- 学校火灾安全疏散应急方案
- 新兴产业投资项目结算审核服务方案
- 2024年住宅小区屋面盖瓦施工合同
- 现代商业广告的版式设计
- 2024年船用舾装件项目提案报告模范
- 30道油气储运工程师岗位常见面试问题含HR问题考察点及参考回答
- 酒店楼梯间和疏散通道的消防安全控制
- 犹太律法613条具体条款
- 《HSK标准教程3》第10课
- 体育教育与中小学生身心健康的关系研究
- 商场电缆施工方案
- 2023中国职业教育行业发展趋势报告-多鲸教育研究院
- 《中国老年骨质疏松症诊疗指南(2023)》解读-
- “双减”背景下小学英语课后作业设计实践探究 论文
- 广东省佛山市顺德区部分学校2023-2024学年四年级上学期期中语文试卷
- 南方航空空乘招聘报名表
评论
0/150
提交评论