第一部分 结构化程序设计2013

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1翁惠玉email:hyweng@sjtu.edu.cnweng-hy@cs.sjtu.edu.cn2在学习了《计算机导论》的基础上,进一步提高程序设计的能力内容:熟练掌握C++语言掌握结构化程序设计和面向对象的程序设计掌握常用的数据结构了解通用算法的设计程序=算法+数据结构3两种程序设计的方法:如何处理一个大问题结构化的程序设计面向对象的程序设计数据结构如何保存和处理各种数据之间的关系数据之间的关系:线性、树形、集合和图形通用算法设计4C++程序设计:思想与方法(第二版)人民邮电出版社翁惠玉数据结构:思想与实现翁惠玉俞勇高等教育出版社5C++Primer(第4版)人民邮电出版社C++编程思想程序设计基础(第2版)吴文虎清华大学出版社数据结构与算法分析–C++描述(第3版)MarkAllenWeiss著人民邮电出版社算法导论数据结构:题解与拓展翁惠玉俞勇高等教育出版社6cc.sjtu.edu.cn用户码/密码:hyweng/public7期末考试50%平时作业30%机考15%其他5%8结构化程序设计9结构化的设计将算法表达为一系列较小问题为每个小问题设计一个(函数)接口用各小问题的接口细化算法对各小问题重复此过程结构化的实现每个分解出来的功能封装成为一个函数一个入口、一个出口的程序中只允许三种结构:顺序、分支和循环10C++的程序结构顺序程序设计分支程序设计循环程序设计高级类型模块化的设计与实现11//File:hello.cpp//thisprogramprintsthemessage//“helloeveryone”onthescreen#includeiostreamintmain(){std::cout“helloeveryone”std::endl;return0;}程序注释预处理命令主程序12C++的注释是从//开始到本行结束,也可以采用C风格的注释,即从/*与*/之间所有的文字都是注释,可以是连续的几行。注释是写给人看的,而不是写给计算机的。程序注释程序头上的注释(战略性的注释):从整体描述程序操作过程程序中的注释(战术性的注释):解释主程序中一些比较难理解的部分。给程序添加注释是良好的程序设计风格13//File:hello.cpp//thisprogramprintsthemessage//“helloeveryone”onthescreen#includeiostreamintmain(){std::cout“helloeveryone”std::endl;return0;}程序注释预处理命令主程序14C++的编译分成两个阶段:预编译和编译预编译处理程序中的预编译命令,即那些以#开头的指令编译预处理主要有:库包含:用#include实现,表示程序使用了某个库宏定义:用#define实现。宏通常用来定义符号常量。15库是预先做好的一些工具程序。每个库要提供一个接口,告诉库的用户如何使用库提供的功能。库包含就是把库的接口文件放入源文件,以便编译器检查程序中对库的调用是否正确。库包含格式:#includefilename:包含了一个系统库#include“filename”:包含了一个用户自定义的库16不带参数的宏定义通常用于为程序中的常量取一个名字,称为符号常量。格式:#define标识符替换文本如:#defineRADIUS5#definePI3.14159#defineAREAPI*RADIUS*RADIUS用define定义宏是C语言的习惯,在C++中有更好的解决方案17含义清楚,提高了程序的可读性。在需要改变一个常量时能做到“一改全改”18//File:hello.cpp//thisprogramprintsthemessage//“helloeveryone”onthescreen#includeiostreamintmain(){std::cout“helloeveryone”std::endl;return0;}程序注释预处理命令主程序19主程序由一个或多个函数组成函数是一系列独立的程序步骤,这些程序步骤集合在一起完成某一特定的任务,函数有一个名字,可以通过函数名执行这些语句。每个程序都必须有一个名为main的函数,它是程序的入口。20intmain()函数头{std::cout“helloeveryone”std::endl;return0;}函数体21“流”指的是设备之间传递的数据流输出流是传给输出设备的数据流cout代表显示器格式将hello显示在屏幕上:std::cout“hello”std::cout“hello,everyone”std::endl用双引号引起来的,如“hello,everyone”称为字符串std::endl表示换行22在大型的程序时,每个源文件可能由不同的开发者开发。不同的源文件中可能有同样的名字。当这些源文件连接起来形成一个可执行文件时,就会造成重名。名字空间是把一组程序实体组合在一起,构成的一个作用域。一个名字空间中不能有重名,不同的名字空间中可以定义相同的实体名。当引用某个实体时,需要加上名字空间的限定程序中的std是C++中所有标准库的名字空间名。23格式:usingnamespace名字空间名;一旦用了使用名字空间的指令,该名字空间中的所有的实体在引用时就不需要再加名字空间的限定了。第一个程序可以改写为:24//file:hello.cpp//Thisprogramprintsthemessage“Helloworld.”//Onthescreen#includeiostreamusingnamespacestd;intmain(){cout“Helloworld.”endl;return0;}25C++的程序结构顺序程序设计分支程序设计循环程序设计高级类型模块化的设计与实现26变量表达式表达式语句输入输出一个一个语句依次执行,直到程序的出口。最基本的语句是变量定义、表达式语句和输入输出语句。27变量定义数据类型符号常量28变量,也称为对象,是编程时值尚未确定的数据的存放之处变量有三个重要属性:名称、值、类型。变量定义就是告诉编译器变量的名字及该变量中可以存放哪一类数据类型的值C++中变量定义的格式:类型名变量名1,变量名2,…,变量名n;如:intnum1,num2;doublearea;在C++中,每个变量在使用前必须被定义,以便编译器检查变量使用的合法性。29名字必须以字母或下划线开头。C++语言中,名字中出现的大写和小写字母被看作是不同的字符,因此ABC,Abc,abc是三个独立的变量名。名字中的其它字符必须是字母、数字或下划线,不得使用空格和其它特殊符号名字不可以是系统的保留词,如:int,double,for,return等,它们在C++语言中有特殊用途C++没有规定过名字的长度,各个编译系统都有自己规定。名字应使读者易于明白其存储值的含义,做到“见名知意”30在C++中,变量定义只是给变量分配相应的空间C++允许在定义变量的同时给变量赋初值格式:类型名变量名=初值;类型名变量名(初值);如:intcount=0;或intcount(0);都是定义整型变量count,并为它赋初值0。可以给被定义的变量中的一部分变量赋初值,如:intsum=0,count=0,num;定义变量时没有赋初值,然后直接引用该变量是危险的!!!31变量定义数据类型符号常量32基本数据类型:整型、浮点型、字符型和布尔型构造数据类型:数组、结构、联合和枚举33整型实型字符型布尔型枚举类型整型数的表示范围:由各个编译器指定。整型数有三种存储方式,在VC中占用的空间如下所示基本型int:4byte(PC)–231~(231-1)长整型long:long/longint4byte(PC)–231~(231-1)短整型short:2byte(PC)-215~(215-1)允许的操作:算术运算、比较大小等35讨论如何将符号位数字化。用一位表示数字的符号,通常选择最高位。0表示正数,1表示负数。数字的三种编码方式为:原码反码补码36用符号位和数值表示带符号数。正数的符号位为0,负数的符号位为1。数值部分用二进制表示。如用一个字节表示数值:[62]原=00111110[-62]原=1011111037正数的反码与原码相同,负数的反码为该数的绝对值的原码取反。如:[62]反=00111110[-62]反=1100000138正数的补码与原码相同,负数的补码为该数的反码加1。如:[62]补=00111110[-62]补=11000010大多数计算机系统都用补码表示整数39整数在计算机内部通常用补码表示,在VC中也是如此。整数溢出:如整数用两个字节表示时,正整数32767加1的结果为-32768。系统不检查这样的错误,程序员必须自己保证程序中不出现这样的错误。40整型常量可用十进制、八进制和十六进制表示十进制:123,-234八进制:0123十六进制:0x123,0x3a2f一旦定义了一个整型变量,可以将一个整型常量赋给该整型变量。如inta;a=123;或a=0x123;都是正确的41整型实型字符型布尔型枚举类型42定点表示:小数点的位置固定不变浮点表示:小数点位置不固定。一个浮点数分成尾数和阶码两部分。阶码表示小数点在该数中的位数,尾数表示数的有效数值。如十进制数N=246.135,其浮点表示可为:N=246135*10-3=2461350*10-4=0.246135*103=0.0246135*10443VC中,实型数以浮点形式表示浮点类型的分类单精度float:占用4字节,3字节尾数,1字节指数,精确度7位,范围10-38~1038双精度double:占用8字节,5字节尾数,3字节指数,精确度15~16位,范围10-307~10308浮点数无法精确表示44由于尾数部位数不够,使数值部分丢失,有时一个十进制转化成二进制数时小数点后会无限循环,因此尾数无法精确表示,这称为截断误差实型数在计算机中不能精确表示,只是一个近似值。因此,最好不要判两个实型数相等45浮点数常量有两种表示法:十进制表示:1.233.14-5.988科学计数法:尾数*10指数尾数e指数123e2=123002.25e-3=0.00225注意:尾数不能为空e31e3指数必须为整数2.5e2.3是非法的思考:为什么e3是不合法的?46整型实型字符型布尔型枚举类型47字符类型:存放一个字母或符号,占一个字节,存放的是字符的内码。字符类型名:char48字符的机内表示用字符编码表示。常用的有ASCII,BCD,EBCDIC等。PC机中都用ASCII.ASCII码的重要特性数字‘0’到‘9’是顺序存放的字母被分成二段:大写的和小写的。大写字母是连续的,小写字母也是连续的49可打印字符:小写字母、大写字母、数字、标点符号、空格等非打印字符:换行和报警字符或响铃等控制字符50字符常量‘a’,‘S’,‘2’等用一对单引号括起来的数据称为字符常量注意与PYTHON的区别!!!51赋值charc1,c2;c1=’a’;c2=’b’;c1=97;c2=98;比较c=9和c=’9’?运算:支持加法和减法如:c1=’a’;c1=c1+2;c1的值应为?如c中存放的是小写字母,则c-‘a’+1表示什么?如c中存放的是数字(‘0’~‘9’),则c-‘0’表示什么?如c1,c2存放的是小写字母,则c2-c1表示什么?52非打印字符需要用转义序列表示换行符写为’\n’,虽然它由两个字符\和n来描述,但它表示

1 / 306
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功