《程序设计方法学》教学大纲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计方法学
一、说明
(一)课程性质
程序设计方法学是一门选修课,要求学生已经学习了pascal或c语言、离散数学、数据结构课程并具备了一定的编程能力。
程序设计方法学是讨论程序性质以及程序设计的理论和方法的一门学科。
程序性质设计程序的可靠性和可维护性,程序的效率等许多方面;程序设计的理论和设计主要涉及结构程序设计、程序设计的主要控制结构、设计程序的各种方法、程序的正确性证明、数据抽象、程序的推导和综合、程序变换和程序自动化等方面。
(二)教学目的
程序设计并不纯粹是一种技术活动,于任何学科一样它有自身的一套原理和方法。
通过学习程序设计方法学,使学生能掌握基本的程序设计理论和方法,使学生在程序设计过程中采用科学化、规范化的方法和理论,进而使设计的程序不仅正确、结构清晰、易读、易写、易于修改和维护,而且程序更有效。
所以,从计算机教育的角度来看,程序设计方法学是培养程序设计专门人才必不可少的一门课程。
(三)教学内容
教学内容涉及结构程序的概念、程序设计的主要控制结构、程序正确性证明、数据类型抽象、递归方法、逐步求精法、模块设计和推导技术以及程序变换技术。
(四)教学时数
该课程授课时数36学时,上机36学时,总学时36+36/2=54。
(五)教学方式
讲授。
二、本文
理论部分
第一章引论
教学要点:
本章主要讨论了程序设计方法学的发展过程,程序设计的一般途径以及结构程序设计的概念。
本章的重点和难点设结构程序设计的概念。
教学时数:
2学时
教学内容:
第一节程序设计发展与程序设计方法学0.5学时
本节主要了解程序设计发展的历程以及程序设计方法学的一般定义、相关概念。
第二节程序设计的一般途径0.5学时
本节主要了解程序设计中程序的效率与正确性之间的关系以及采用的设计方法等观点。
第三节结构程序设计概念。
1学时
本节主要掌握结构程序设计的概念以及非结构化程序向结构化程序转化方法。
考核要求:本章要求学生领会结构程序设计中的基本概念以及熟练掌握并熟练应用将非结构程序转化为结构化程序的方法。
第二章程序的结构
教学要点:
程序是由数据说明及控制语句组成的。
本章结合pascal 语言讨论了其中的主要控制结构.本章重点为:语句、过程与函数。
本章的难点为:过程与函数。
教学时数:
4学时
教学内容:
第一节基本控制结构1学时
本节主要掌握pascal语言中的控制语句,包括顺序结构、选择结构、重复结构。
并通过例子了解程序中采用不同的结构,导致的程序效率的不同。
第二节goto语句1学时
本节包括三部分:goto语句的实用限制、关于goto语句的争论以及goto语句的消去方法。
在本节主要掌握在结构程序设计中对goto语句的使用观点。
第三节过程与函数2学时
本节主要掌握pascal语言中过程与函数这两种控制结构,具体包括三部分:过程、函数以及过程与函数的选用。
考核要求:
要求学生能够掌握结构程序设计中对使用goto语句的观点并在需要时能将goto语句取消;掌握pascal中过程与函数的说明、参数的传递、过程与函数的调用方法;能够熟练使用pascal 语言编写程序。
第三章程序的正确性证明
教学要点:
本章主要讨论了采用Floyd-Hoare形式化方法证明程序部分正确性的规则公理方法和证明程序完全正确性的Dijkstra最弱前置条件方法。
本章的重点在于理解形式化方法证明程序正确性的思想和方法。
本章的难点是两种形式化证明方法的理解及使用。
教学时数:
8学时
教学内容:
第一节程序的测试2学时
本节了解检查程序正确的一种方法---测试的方法。
测试的目的是为了发现程序错误,而测试的方法总是按照习惯挑选各种数据,设计测试用例。
了解测试中常用的方法即黑盒子方法和白盒子方法。
第二节Floyd-Hoare规则公理方法3学时
本节要求掌握Floyd-Hoare规则公理方法,具体包括:基本规则、简单语句的证明、循环语句及可终止证明、函数与过程的证明。
第三节Dijkstra最弱前置条件方法3学时
本节要求掌握Dijkstra最弱前置条件方法,具体包括:谓词转换器与语言的语义定义、skip 语句、abort语句和复合语句、赋值语句、条件语句、循环语句,了解过程调用语句的语义定义。
考核要点:
理解检查程序正确性的非形式方法---测试方法,会使用该方法设计测试用例;会用Floyd-Hoare规则公理方法和Dijkstra最弱前置条件方法分析程序的部分正确性和完全正确性。
第四章数据类型与抽象
教学要点:
本章讨论了类型的概念、对pascal中的数据类型进行了详细的说明以及数据抽象的定义、性质及其描述数据抽象的代数规范。
教学时数:
8学时
教学内容:
第一节类型概念1学时
在该节了解类型在程序设计中的重要地位以及类型具有的特性。
第二节数据类型1学时
要求掌握pascal语言中的类型,具体内容包括:基本类型、结构类型。
第四节数据抽象及其代数规范6学时
了解数据抽象的定义以及描述数据抽象的代数方法,掌握抽象数据类型的代数规范、抽象数据类型的实现、抽象数据类型实现的正确性。
考核要求:
熟练掌握并熟练应用pascal语言中的数据类型;领会数据抽象的概念,会用代数的方法描述抽象数据类型,能识记抽象数据类型的实现、抽象数据类型实现的正确性。
第五章递归程序设计
教学要点:
递归程序设计时程序设计方法学中重要技术之一。
本章讨论了递归的基本概念,递归与迭代程序之间的关系,递归数据结构以及递归程序的验证。
教学时数:
8学时
教学内容:
第一节递归的概念1学时
本节要求掌握递归的概念并通过例题说明递归的设计方法的优点和缺陷。
第二节递归与迭代程序4学时
熟练掌握几个典型例题如八皇后问题、骑士游历问题说明的递归程序设计,了解递归与递推之间的转换方法具体包括:for语句的转化、while语句的转化、repeat语句的转化。
第三节递归数据结构2学时
掌握对递归数据结构包括序列、文件、链表、树的定义、性质并能熟练使用它们编写程序。
第四节递归程序及其验证1学时
本节了解证明递归程序性质的方法,并加以讨论。
具体内容包括:函数与泛函、归程序及其计算规则、验证方法:计算归纳法与结构归纳法。
掌握结构归纳法。
考核要点:
能够综合应用有关的内容设计出递归程序,识记递归程序的计算规则,领会结构归纳法,会应用结构归纳法证明递归程序的性质。
第六章程序设计方法
教学要点:
本章介绍了程序设计的各种方法:逐步求精方法、模块化程序设计方法、程序的形式推导方法和程序的求逆。
本章的重点是逐步求精方法和模块化程序设计方法,难点是程序的形式推导方法。
教学时数:
4学时
教学内容:
第一节逐步求精方法1学时
本节要求掌握逐步求精方法、相关技术,具体包括:分割技术、递推技术、分析技术。
第二节模块化程序设计方法1学时
掌握模块化程序设计方法以及方法中涉及到的原则并区别模块设计与抽象数据类型之间的异同。
第三节程序的形式推导方法2学时
本节了解形式化推导的思想以及如何使用最弱前置谓词的方法形式化的推导出程序和相关的变异原则和策略,具体包括:由不变式及界函数生成循环、生成不变式、界函数。
第四节程序求逆
本节了解程序求逆的基本思想。
考核要求:
掌握逐步求精和模块化设计方法,并能在编写程序时熟练应用;识记程序的形式推导方法的思想并可做简单应用。
第七章程序变换
教学要点:
本章主要讨论了程序变换的思想及方法和FP函数程序的代数变换。
本章的重点时程序变换的思想,难点是程序变换的方法及FP函数型程序的代数变换。
教学时数:
2学时
教学内容:
第一节程序变换的基本思想0.5学时
了解程序变换的基本思想。
第二节程序变换方法0.5学时
了解程序变换的具体方法,包括:程序规范变换成递归程序、递归函数的B&D变换、递归的消去、迭代程序的变换、程序变换系统。
第三节FP函数程序的代数变换1学时
了解FP函数程序的代数变换
考核要求:
识记程序变换的基本思想、程序变换的方法和FP函数程序的代数变换。
实验部分
(一)基本要求
掌握程序设计方法学中的各种设计方法,养成良好的编程习惯,并可使用学到的方法编写结构清晰、正确的符合要求的计算机程序,通过上机实验提高学生的编程能力。
(二)项目总表
序号实验项目名称学时数项目类别项目类型
1 使用直接递归的1到n的全排列问题 4 设计必做
2 Pascal中数据类型 2 设计必做
3 递归程序的编写8 设计必做
4 回溯法8 设计必做
5 逐步求精方法
6 设计必做
6 模块化设计方法8 设计必做
(三)实验内容
所有实验中均需要pascal系统、pc机。
实验一、用结构程序设计的思想方法编写程序;通过习题2-5掌握过程、函数中参数的传递规律。
通过该实验学生学会用结构化程序设计的思想编写程序;熟练掌握过程、函数。
实验二、要求采用不同的数据类型编制程序,通过该实验学生熟练掌握Pascal中各种数据类型。
实验三、编写递归程序如迷宫问题,通过该实验掌握递归程序设计的方法。
实验四、设计出八皇后问题的图式解的程序、设计背包问题、地图填色问题的程序,通过该实验学会使用回溯法设计程序。
实验五、编写程序习题6-1,6-3,6-4,通过编写程序掌握逐步求精的设计方法。
实验六、编制较大系统的程序,题目自选,通过该实验掌握模块化程序设计方法。
(四)考核要求
主要考核学生的编程能力。
设计出骑士游历问题的图式解的程序。
要求上机考核,在2学时中设计并运行程序。
三、参考书目
1.仲萃豪、冯玉琳、陈友君编著程序设计方法学北京科学技术出版社,1985年第一版。
2.胡正国、蔡经球编著程序设计方法学西北工业大学出版社,1987年第一版。
3.达尔,O.-J.,DIJKSTRA,E.W.,HOARE 结构程序设计(陈火旺等译)科学出版社,1980年第一版.。