资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第1章 程序设计与C+语言入门,C+语言程序设计,中山大学信息科学与技术学院,1,主要内容,程序及相关概念,程序设计,程序设计语言,C+程序的结构,C+程序的实现过程,2,1、程序及相关概念,计算机的基本组成部件,主机,CPU,输入设备,控制器,输出设备,运算器,存储器,3,1、程序及相关概念,程序、计算机与用户,使用,控制,程序:,指令序列。,告诉计算机如何解决某个问题或完成某个任务,用户,:计算机的使用者,4,1、程序及相关概念,算法,对解决问题的过程(方法和步骤)的描述,例:,步骤1:令d=2,步骤2:令r=(n除以d的余数),步骤3:如果r等于0 且d不等于n,,则断定n 不是素数并终止;,否则,转步骤4,步骤4:令d值加1并转步骤5,步骤5:如果d大于n的平方根,,则断定n是素数并终止;,否则,转步骤2,(其中,d表示除数;r表示余数),判断任意给定自然数n是否为素数的算法,5,1、程序及相关概念,算法的特征,以数据为主要操作对象,确定性,有穷性,有效性,0个或多个输入,一个或多个输出,6,1、程序及相关概念,算法的表示,流程图、N-S图、PAD图、UML活动图、伪代码、自然语言,程序,是对算法最精确的表示,通常称为算法的,实现,7,2、程序设计,程序设计,(,programming,),是指编制程序的活动,也就是用计算机能够理解的形式表达算法的过程,进行程序设计必须具备四个方面的知识,应用领域的知识,程序设计方法,程序设计语言,程序设计环境与工具,8,2、程序设计,程序设计过程,分析阶段,设计阶段,实现阶段,测试阶段,9,2、程序设计,程序设计方法,早期程序设计(无成型方法,“艺术”),结构化程序设计(SP)方法,自顶向下、逐步求精、模块化编程,采用单入口/单出口的控制结构构造程序,面向对象程序设计(OOP)方法,对象,(object):客观存在的单个事物(又称,实体,(entity),属性,行为,类,(class):描述同类对象(同类实体)的共性,对象称为类的实例(instance),10,2、程序设计,程序设计方法,早期程序设计(无成型方法,“艺术”),结构化程序设计(SP)方法,自顶向下、逐步求精、模块化编程,采用单入口/单出口的控制结构构造程序,面向对象程序设计(OOP)方法,对象,(object):客观存在的单个事物(又称,实体,(entity),属性,行为,类,(class):描述同类对象(同类实体)的共性,对象称为类的实例(instance),11,2、程序设计,OOP方法的基本特征,封装(encapsulation),把对象的属性和行为结合成不可分割的独立单位,实现信息隐藏,对象更容易使用,更容易变更内部实现,C+语言用类(class)支持封装,12,2、程序设计,OOP方法的基本特征(续),继承(inheritance),表达“,是一种(is a),”关系,支持软件重用,通过对现有的类进行扩充而定义新的类,基类,(base class):被继承的类,派生类,(derived class):用继承方式新定义的类,C+语言直接支持继承机制,13,2、程序设计,OOP方法的基本特征(续),多态性(polymorphism),同一名字,多种含义,同一接口,多种实现,通常指函数和方法(即对象的行为)具有相同的名字,但有不同的行为特征,C+语言中,通过函数重载、模板、虚函数结合继承等机制来实现多态性,14,3、程序设计语言,编制程序时使用的语言,机器语言(machine language),汇编语言(assembly language),高级语言(high-level language),编译型语言(compiled language),C+,解释型语言(interpreted language),15,4、C+程序的结构,C+程序的构成成分,函数,主函数(main函数),类,空白,注释,预处理指示(预编译命令),16,4、C+程序的结构,以函数为单位的程序结构,一个主函数,+,若干个其他函数,例:判断用户从键盘输入的一个自然数是否为素数 的程序,17,程序代码(1/3),/*,/prime.cpp,/功能:判断用户从键盘输入的一个自然数是否为素数,/*,#include/使用其中的cout和cin,#include/使用其中的平方根函数sqrt,using namespace std;/使用名字空间std,bool primeNumber(unsigned);/函数原型,18,程序代码(2/3),/主函数,int main(),unsigned value;/value记录用户输入的自然数,cout Enter a natural number:value;,if(primeNumber(value),cout value is a prime number.,endl;,else,cout value is not a prime number.,sqrt(n)/除数大于n的平方根,return true;,20,4、C+程序的结构,以类为单位的程序结构,一个主函数,+,若干个类,例:求用户从键盘输入的一个日期对应的是星期几,21,程序代码(1/7),/*,/dateToWeek.cpp,/功能:求用户从键盘输入的一个日期对应的是星期几,/*,#include/使用其中的cout和cin,#include/使用类string,using namespace std;/使用名字空间std,class Date,public:,Date(int y,int m,int d),/创建Date对象,year=y;,month=m;,day=d;,22,程序代码(2/7),int toWeek(),/计算日期所对应的星期数,int w,c,y,m,d;,/确定C、M、D的取值,c=year/100;,y=year%100;,m=month;,d=day;,if(month=1|month=2)/月份为1或2,c=(year-1)/100;,y=(year-1)%100;,m=month+12;,23,程序代码(3/7),/计算W,w=(c/4)-2*c+y+(y/4)+(13*(m+1)/5)+d-1;,/对W为负数的情况进行特殊处理:,/对其不断加7直至W为正数。,/以便W%7的结果符合数论中余数的定义,while(w 0),w+=7;,return(w%7);/返回W除以7的余数,24,程序代码(4/7),void display(),/显示日期,cout year -month -day;,private:,int year;/年份,int month;/月份,int day;/日期,;,25,程序代码(5/7),/主函数,int main(),int year,month,day;/年,月,日,int week;/星期数,string weekName;/星期数对应的单词,cout Enter a date after the day of 1582-10-15,and use a blank as spliter:year month day;/输入年、月、日,Date date(year,month,day);/创建Date对象date,week=date.toWeek();/计算对应的星期数,/将整数0-6转换为星期数对应的单词,switch(week),case 0:,weekName=Sunday;,break;,26,程序代码(6/7),case 1:,weekName=Monday;,break;,case 2:,weekName=Tuesday;,break;,case 3:,weekName=Wednesday;,break;,case 4:,weekName=Thursday;,break;,case 5:,weekName=Friday;,break;,27,程序代码(7/7),case 6:,weekName=Saturday;,break;,/输出结果,cout The day of;,date.display();,cout is weekName endl;,return 0;,28,5、C+程序的实现过程,编辑,编辑,链接,编译,编译,.,.,目标文件1,.obj,目标文件n,.obj,库代码,源文件n,.cpp,可执行文件,.exe,源文件1,.cpp,29,
展开阅读全文