程序设计方法学复习

第一章

 程序设计方法学(Programming Methodology)有两种含义:

一种是以程序设计方法为研究对象的学科,它不仅研究各种具体的方法,而且着重研究各种具体方法的共性,涉及规范的全局性方法,以及这些方法的显示背景和理论基础;

另外一种含义是针对某一领域或某一领域的一类特定问题,所用的一整套特定程序设计方法所构成的体系  程序设计的基本特征

结构化、模块化、对象化 (OOP,Object Oriented Programming)、智能化 (AOP, Agent Oriented Programming)  怎么做出优秀的程序

(1) 系统分析、系统设计、设计风格、编码、调试、测试(2)数据结构和

算法(3)维护性、通用性、灵活性、性能均衡性 优秀程序的要素:

(1)正确性;结构化;模块化;可重用(2)可维护;可变化;可管理;可测试 (3)性能均衡  程序设计方法:就是使用在计算机上可执行的程序代码来有效地描述解决特定问题算法的过程。

 程序设计方法的发展:面向计算机的程序设计(注重机器,逐一执行)——面向过程的程序设计(自顶向下,逐步求精)——面向对象的程序设计(注重对象,抽象成类)——面向组件的程序设计(注重重用)——面向Agent的程序设计(注重自治) 其他程序设计方法(递归、嵌入式)

 程序设计语言:过程设计语言(PDL)PDL具有以下特点:关键字的固定语法、自然语言的自由语法、数据说明的手段、模块定义和调用的技术  程序设计的基本方法要素:程序分析和综合程序设计、算法设计与数据结构设计、程序设计方法。

 基本的程序结构:顺序结构、选择结构、循环结构、跳转结构  程序分析与综合程序设计

(1) 抽象程序 (2)观察客观事物(3)程序的灵活性  算法设计 所谓算法,是指为解决给定问题而需要执行者一步一步施行的有穷操作过程的描述。

一个算法,必须具有有穷性、确定性、数据输入、信息输出和可执行五种基本特征。

 程序设计的表示方法分为:

(1) 图形(程序流程图) (2)表格(判定表,它有四部分组成:所有条件、所有动作、条件组合及其对应动作) (3)语言(过程设计语言)  判定树的优点是形式简单、较直观、易于掌握和使用;  判定树的缺点是简洁性不如判定表、重复多。

第二章 程序算法及图灵机模型

 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。

定理:gcd(a,b) = gcd(b,a mod b)

 图灵:计算机理论之父。 计算机界最高荣誉奖:ACM图灵奖  什么是计算?

广义上讲,一个函数变化如把x变成了f(x)就是一个计算!如果我们把一切都看作是信息,那么更精确的讲,计算就是对信息的变换!

 图灵机是一个理论计算机模型,主要用于计算。 图灵机是一个计算的装置,因为图灵机也是一个会对输入信息进行变换给出输出信息的系统。(图灵机用于计算的例子:构造一个图灵机,完成对一个自然数加1的运算。)  在证明了不存在决定图灵机停机问题的算法的基础上,图灵指出,不存在决定数学问题的一般算法。希尔伯特的判决问题没有解答。

第三章 结构化程序设计方法

 结构化程序设计,就是采用以逐步降低算法抽象级为中心的一套程序设计方法而得到的具有良好结构的程序。  面向过程的缺点

 缺乏数据和代码保护机制,缺乏代码重用机制  优点:(1)程序便于分工编制(2)有利于提高软件的生产效率(3)结构清晰,易于阅读理解和保证其可靠性(4)易于修改,便于维护和验证其正确性(5)易于移植

 一个比较好的结构程序在结构方面应具有以下两个特点: (1)大型程序按照其功能进行模块化分

(2)每一个基本程序单元具有的特征:① 单入口、单出口 ② 由三种基本结构组成,控制使用goto语句 ③ 无死语句,即程序中不存在永远执行不到的语句 ④ 无死循环 ⑤ 书写格式清晰

 基本程序(不可再分解的正规程序)

(1) (2)序列

(3)If then (4)while do

(5)do while (6)do while do

(7)if then else

 在一个强连通图G中,线性无关的环路数最大值V(G)=e-n+1。其中,e为图G的弧数,n为结点数

 一个结构化程序可退化成最大环路数为1的程序。这种退化过程是消除程序结构中只有一个入口结点和一个出口结点的子图过程。 正则子图是仅含顺序、选择、循环的子图。ev=V(G)-m  一个结构化程序的本质复杂性ev为1。

 判别一个软件是否满足结构化程序设计标准的要求:

① 每个程序单元是否有单一入口和单一出口结点;② 是否有转入(出)循环或判定的情形;③ 计算程序的本质复杂性;④ 检验结构化程序设计标准的其他要求。

第四章 面向对象的程序设计方法

 面向对象的设计方法与传统的面向数据/过程的方法有本质不同, 这种方

法的基本原理是:对问题领域进行自然分解, 按照人们习惯的思维方式建立问题领域的模型, 模拟客观世界, 从而设计出尽可能直接、自然地表现问题求解方法的软件。

 优点:符合认识论观点、能尽量逼真的模拟客观世界及其事物、先进的开发方法、

软件适应性广、设计观点的改变与更新

 缺点:描述的局限性、具体实现困难  面向对象程序设计的方法与步骤 OOA ( Object Oriented Analysis) 面向对象的分析

OOD(Object Oriented Design) 面向对象的设计

OOI(Object/Oriented/Implementation)面向对象的实现

P116面向对象程序设计方法的软件模式: 代码模式Coding Pattern 、架构模式(MVC)Architectural Pattern 、设计模式 Design Pattern。

简单工厂模式

#include using namespace std; #include #include class COperation{ protected:

double Operand1,Operand2,Result; public:

COperation() {

Operand1=0; Operand2=0; Result=0; }

void SetOperand1(double op1) {

Operand1=op1; }

double GetOperand1() {

return Operand1; }

void SetOperand2(double op2) {

Operand2=op2; }

double GetOperand2() {

return Operand2; }

virtual double GetResult() { return Result; } };

//加法类

class COperationAdd:public COperation{

virtual double GetResult() {

Result = Operand1+Operand2; return Result; } };

class COperationSub:public COperation{

virtual double GetResult() {

Result = Operand1-Operand2; return Result; } };

class COperationMul:public COperation{ virtual double GetResult() {

Result = Operand1*Operand2; return Result; } };

class COperationDiv:public COperation{ virtual double GetResult() {

if (fabs(Operand2)>0)

Result = Operand1/Operand2; else

cout

//简单类工厂模式 //运算类工厂 //

class OperationFactory {

COperation *oper; public:

OperationFactory() {

oper = NULL; }

COperation *createOperate(char operate) {

switch (operate) {

case '+': { oper = new COperationAdd(); break; } case '-': { oper = new COperationSub(); break; } case '*': { oper = new COperationMul(); break; } case '/': { oper = new COperationDiv(); break; } }

return oper; } };

void main() {

double Operand1,Operand2,Result=0; char Operator; COperation *Calc;

OperationFactory Factory;

cout>Operand1,cin.fail()) {

cout

cin.clear(); //清除std::cin的错误状态 cin.sync(); //清空输入缓冲区 }

cout>Operator;

cout>Operand2,cin.fail()) {

cout

cin.clear(); //清除std::cin的错误状态 cin.sync(); //清空输入缓冲区 }

//用简单类工厂模式创建对象

Calc = Factory.createOperate(Operator);

Calc->SetOperand1(Operand1); //动态多态性的体现 Calc->SetOperand2(Operand2); Result=Calc->GetResult();

cout

第一章

 程序设计方法学(Programming Methodology)有两种含义:

一种是以程序设计方法为研究对象的学科,它不仅研究各种具体的方法,而且着重研究各种具体方法的共性,涉及规范的全局性方法,以及这些方法的显示背景和理论基础;

另外一种含义是针对某一领域或某一领域的一类特定问题,所用的一整套特定程序设计方法所构成的体系  程序设计的基本特征

结构化、模块化、对象化 (OOP,Object Oriented Programming)、智能化 (AOP, Agent Oriented Programming)  怎么做出优秀的程序

(1) 系统分析、系统设计、设计风格、编码、调试、测试(2)数据结构和

算法(3)维护性、通用性、灵活性、性能均衡性 优秀程序的要素:

(1)正确性;结构化;模块化;可重用(2)可维护;可变化;可管理;可测试 (3)性能均衡  程序设计方法:就是使用在计算机上可执行的程序代码来有效地描述解决特定问题算法的过程。

 程序设计方法的发展:面向计算机的程序设计(注重机器,逐一执行)——面向过程的程序设计(自顶向下,逐步求精)——面向对象的程序设计(注重对象,抽象成类)——面向组件的程序设计(注重重用)——面向Agent的程序设计(注重自治) 其他程序设计方法(递归、嵌入式)

 程序设计语言:过程设计语言(PDL)PDL具有以下特点:关键字的固定语法、自然语言的自由语法、数据说明的手段、模块定义和调用的技术  程序设计的基本方法要素:程序分析和综合程序设计、算法设计与数据结构设计、程序设计方法。

 基本的程序结构:顺序结构、选择结构、循环结构、跳转结构  程序分析与综合程序设计

(1) 抽象程序 (2)观察客观事物(3)程序的灵活性  算法设计 所谓算法,是指为解决给定问题而需要执行者一步一步施行的有穷操作过程的描述。

一个算法,必须具有有穷性、确定性、数据输入、信息输出和可执行五种基本特征。

 程序设计的表示方法分为:

(1) 图形(程序流程图) (2)表格(判定表,它有四部分组成:所有条件、所有动作、条件组合及其对应动作) (3)语言(过程设计语言)  判定树的优点是形式简单、较直观、易于掌握和使用;  判定树的缺点是简洁性不如判定表、重复多。

第二章 程序算法及图灵机模型

 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。

定理:gcd(a,b) = gcd(b,a mod b)

 图灵:计算机理论之父。 计算机界最高荣誉奖:ACM图灵奖  什么是计算?

广义上讲,一个函数变化如把x变成了f(x)就是一个计算!如果我们把一切都看作是信息,那么更精确的讲,计算就是对信息的变换!

 图灵机是一个理论计算机模型,主要用于计算。 图灵机是一个计算的装置,因为图灵机也是一个会对输入信息进行变换给出输出信息的系统。(图灵机用于计算的例子:构造一个图灵机,完成对一个自然数加1的运算。)  在证明了不存在决定图灵机停机问题的算法的基础上,图灵指出,不存在决定数学问题的一般算法。希尔伯特的判决问题没有解答。

第三章 结构化程序设计方法

 结构化程序设计,就是采用以逐步降低算法抽象级为中心的一套程序设计方法而得到的具有良好结构的程序。  面向过程的缺点

 缺乏数据和代码保护机制,缺乏代码重用机制  优点:(1)程序便于分工编制(2)有利于提高软件的生产效率(3)结构清晰,易于阅读理解和保证其可靠性(4)易于修改,便于维护和验证其正确性(5)易于移植

 一个比较好的结构程序在结构方面应具有以下两个特点: (1)大型程序按照其功能进行模块化分

(2)每一个基本程序单元具有的特征:① 单入口、单出口 ② 由三种基本结构组成,控制使用goto语句 ③ 无死语句,即程序中不存在永远执行不到的语句 ④ 无死循环 ⑤ 书写格式清晰

 基本程序(不可再分解的正规程序)

(1) (2)序列

(3)If then (4)while do

(5)do while (6)do while do

(7)if then else

 在一个强连通图G中,线性无关的环路数最大值V(G)=e-n+1。其中,e为图G的弧数,n为结点数

 一个结构化程序可退化成最大环路数为1的程序。这种退化过程是消除程序结构中只有一个入口结点和一个出口结点的子图过程。 正则子图是仅含顺序、选择、循环的子图。ev=V(G)-m  一个结构化程序的本质复杂性ev为1。

 判别一个软件是否满足结构化程序设计标准的要求:

① 每个程序单元是否有单一入口和单一出口结点;② 是否有转入(出)循环或判定的情形;③ 计算程序的本质复杂性;④ 检验结构化程序设计标准的其他要求。

第四章 面向对象的程序设计方法

 面向对象的设计方法与传统的面向数据/过程的方法有本质不同, 这种方

法的基本原理是:对问题领域进行自然分解, 按照人们习惯的思维方式建立问题领域的模型, 模拟客观世界, 从而设计出尽可能直接、自然地表现问题求解方法的软件。

 优点:符合认识论观点、能尽量逼真的模拟客观世界及其事物、先进的开发方法、

软件适应性广、设计观点的改变与更新

 缺点:描述的局限性、具体实现困难  面向对象程序设计的方法与步骤 OOA ( Object Oriented Analysis) 面向对象的分析

OOD(Object Oriented Design) 面向对象的设计

OOI(Object/Oriented/Implementation)面向对象的实现

P116面向对象程序设计方法的软件模式: 代码模式Coding Pattern 、架构模式(MVC)Architectural Pattern 、设计模式 Design Pattern。

简单工厂模式

#include using namespace std; #include #include class COperation{ protected:

double Operand1,Operand2,Result; public:

COperation() {

Operand1=0; Operand2=0; Result=0; }

void SetOperand1(double op1) {

Operand1=op1; }

double GetOperand1() {

return Operand1; }

void SetOperand2(double op2) {

Operand2=op2; }

double GetOperand2() {

return Operand2; }

virtual double GetResult() { return Result; } };

//加法类

class COperationAdd:public COperation{

virtual double GetResult() {

Result = Operand1+Operand2; return Result; } };

class COperationSub:public COperation{

virtual double GetResult() {

Result = Operand1-Operand2; return Result; } };

class COperationMul:public COperation{ virtual double GetResult() {

Result = Operand1*Operand2; return Result; } };

class COperationDiv:public COperation{ virtual double GetResult() {

if (fabs(Operand2)>0)

Result = Operand1/Operand2; else

cout

//简单类工厂模式 //运算类工厂 //

class OperationFactory {

COperation *oper; public:

OperationFactory() {

oper = NULL; }

COperation *createOperate(char operate) {

switch (operate) {

case '+': { oper = new COperationAdd(); break; } case '-': { oper = new COperationSub(); break; } case '*': { oper = new COperationMul(); break; } case '/': { oper = new COperationDiv(); break; } }

return oper; } };

void main() {

double Operand1,Operand2,Result=0; char Operator; COperation *Calc;

OperationFactory Factory;

cout>Operand1,cin.fail()) {

cout

cin.clear(); //清除std::cin的错误状态 cin.sync(); //清空输入缓冲区 }

cout>Operator;

cout>Operand2,cin.fail()) {

cout

cin.clear(); //清除std::cin的错误状态 cin.sync(); //清空输入缓冲区 }

//用简单类工厂模式创建对象

Calc = Factory.createOperate(Operator);

Calc->SetOperand1(Operand1); //动态多态性的体现 Calc->SetOperand2(Operand2); Result=Calc->GetResult();

cout


相关文章

  • 铁及其化合物复习课的教学设计
  • <铁及其化合物>复习课的教学设计 王金福 1 教学内容及设计意图 1.1教学内容分析 元素及其化合物知识的复习,在高三总复习中占有很大的比重,如何提高其复习的效率与效果是每一位化学教师都应探讨的课题.铁及其化合物这一内容在元素化 ...查看


  • 对初三英语语法复习课教学设计的几点看法
  • 在教学中我们要不断地反思自己的教学行为,反思学生获取知识的价值取向.在初三复习课上尤为如此,每一个复习阶段我们一方面要积极改进复习方法,进一步提高学生学习的积极性,满足他们的心理需求:另一方面要对复习内容做积极处理,调整复习思路.如何在有效 ...查看


  • 新课标人教版小学六年级下册语文总复习教案及板书设计
  • 官仓镇小关小学教师备课教案课 题 复习拼音.生字 第 1 课时 拼音.生字 1.熟练掌握声母.韵母.拼音.声调.整体认读音节和一些拼写 课 型 新授累计 课时教学内容教 学 目 的规则,能正确地拼读.拼写音节: 2.能按顺序背诵.默写字母表 ...查看


  • 小学英语实效复习策略
  • 小学英语复习阶段的教学要站在四年英语教学内容整体的高度上去梳理基础知识.归纳基本方法.掌握答题策略,它要使平时教学已获得的各种知识积累得到更深层的理解.更熟练的掌握.更精确的运用,而且复习时间紧.内容多.小学阶段的学生情绪波动大.因此,怎样 ...查看


  • 高三历史二轮复习策略
  • 高三历史二轮复习策略 高考历史二轮专题复习,即将已学知识进行系统化.网络化,找出知识间的内在联系,并与相关的现实生活联系起来,进行知识的重组,在专题重组的过程中进行综合能力的突破.本文结合近两年全国卷文科综合试卷,对二轮专题复习策略进行探讨 ...查看


  • 制定学科教学计划的基本要求
  • 制定学科教学计划的基本要求 1.教师制定学科教学工作计划前,要认真领会<课程标准>的精神,通览全册教材,并依据学校工作计划,结合本班.本学科教学.学生实际,制定切实可行的计划. 2.学科教学工作计划主要内容包括:学生基本情况分析 ...查看


  • [平面镜成像与作图]复习课教学设计
  • <平面镜成像与作图>初三第一轮复习课教学设计 黄州区宝塔中学 宋琦 一. 教学内容分析 <平面镜成像>是初中物理光学很重要的内容,与学生生活联系紧密,在社会生产.科学技术中应用非常普遍.所以对本节内容的复习于&quo ...查看


  • 高中1轮复习方法
  • 高考理科第一轮理科复习方法总结 点击数:288 次 录入时间:2013/8/13 15:29:00 编辑:walter-75 [宣传赚点] [物理一轮复习规划] 高考物理一般要经过两轮复习,每一轮复习目的各有侧重.第一轮复习要以章节为单元进 ...查看


  • 一.基本内容
  • 浙江工业大学 2012 年 硕士研究生入学考试自命题科目考试大纲 科目代码.名称: 专业类别: 适用专业: (659)法学综合 ■学术型 法学 □专业学位 一.基本内容 第一编 法理学 第一章 法学概说 复习重点: 法学与法理学的研究对象与 ...查看


  • 2011年国家司法考试复习方法大全
  • 一.民法的复习方法 在司法考试中,民法占有很大的比重,除了卷三.卷四中的民法试题外,其他部门法的学习 也要以民法的基本理论为支撑,可见,掌握民法是通过司法考试的关键. 民法内容博大精深,学习民法要有窍门而不能死学.民法学科有其自身的体系,比 ...查看


热门内容