计算机程序设计基础与Visual.ppt
计算机程序设计基础与计算机程序设计基础与Visual C+授课教师:张丽梅授课教师:张丽梅授课教师:张丽梅授课教师:张丽梅西南交通大学西南交通大学软件学院软件学院电话:电话:计算机程序设计基础与计算机程序设计基础与VisualC+面向面向先修先修计算机应用基础计算机应用基础以以MicrosoftVisualC+6.0语言为载体语言为载体介绍软件技术:面向过程、面向对象等介绍软件技术:面向过程、面向对象等程序设计的方法程序设计的方法课程设计的背景课程设计的背景掌握程序设计的基本原理、概念和方法;掌握程序设计的基本原理、概念和方法;掌握算法的概念、设计及表述;掌握算法的概念、设计及表述;掌握掌握C+C+语言的基本知识;语言的基本知识;熟悉熟悉VC+6.0VC+6.0环境环境能够利用计算机处理问题的思维方式能够利用计算机处理问题的思维方式 和程序设计的基本方法;和程序设计的基本方法;能主动将计算机引入到其它课程应用能主动将计算机引入到其它课程应用本课要求和目的本课要求和目的课内:课内:3学时学时上机:上机:2学时学时平时成绩平时成绩作业:平时成绩作业:平时成绩本课程安排本课程安排计算机只是工具;计算机只是工具;如果没有某一方面的专业知识,这工具无用武如果没有某一方面的专业知识,这工具无用武之地。例如,不懂财务的软件设计人员永远也之地。例如,不懂财务的软件设计人员永远也设计不出好的财务软件,不懂化工的软件设计设计不出好的财务软件,不懂化工的软件设计人员永远也设计不出好的化学分析软件,没有人员永远也设计不出好的化学分析软件,没有美术基础,你的绘图软件也不会好到哪里去。美术基础,你的绘图软件也不会好到哪里去。计算机专业课程交叉其他专业计算机专业课程交叉其他专业淡化专业,充分展现各自的才能和个性。淡化专业,充分展现各自的才能和个性。非计算机专业学生非计算机专业学生为什么学习程序设计为什么学习程序设计课程学习方法实验性强实验性强 对于已讲解的问题,精通对于已讲解的问题,精通对于未讲解的问题可自学对于未讲解的问题可自学 参考书:参考书:c c语言程序设计语言程序设计 清华大学出版社清华大学出版社谭浩强谭浩强 c+c+语言程序设计语言程序设计 清华大学出版社郑莉清华大学出版社郑莉第一章第一章 引论引论教学目标:教学目标:1了解编程求解问题的全过程;了解编程求解问题的全过程;2了解算法基础知识;了解算法基础知识;3掌握结构化算法的表示方法;掌握结构化算法的表示方法;4理解常用算法设计思想。理解常用算法设计思想。教学内容教学内容:1软件开发和程序设计的概念;软件开发和程序设计的概念;2算法的概念;算法的概念;3算法的表示方法;算法的表示方法;4算法设计策略算法设计策略5算法复杂性分析。算法复杂性分析。1.1 软件开发和程序设计软件开发和程序设计程序程序作为一种具有逻辑结构的信息,是计作为一种具有逻辑结构的信息,是计算任务的处理对象和处理规则的描述,这算任务的处理对象和处理规则的描述,这一描述必须通过相应的实体才能体现。一描述必须通过相应的实体才能体现。软件软件泛指程序和相关文档的集合,软件决泛指程序和相关文档的集合,软件决定着计算机做什么和如何做定着计算机做什么和如何做,是用户与硬件是用户与硬件之间的交互界面。之间的交互界面。文档文档是为方便了解程序所需要的资料说明,是为方便了解程序所需要的资料说明,这些资料并不一定要装入计算机;这些资料并不一定要装入计算机;程序与软件关系程序与软件关系当程序作为商品以有形介当程序作为商品以有形介质为载体进行交易时即为软件。质为载体进行交易时即为软件。用户自行开发自行开发具有针对性的应用软件就成为工程应用领域问题繁杂多变唯一的解决办法。软件开发过程软件开发过程从开始软件的研制到废弃该软件的整个期从开始软件的研制到废弃该软件的整个期间,称为间,称为软件生命期。软件生命期。传统的软件开发过程可划分为七个阶段传统的软件开发过程可划分为七个阶段 1.1.2 程序设计方法程序设计方法可分为可分为面向过程的程序设计面向过程的程序设计和和面向对象的面向对象的程序设计程序设计两大类。两大类。面向过程的程序设计面向过程的程序设计为了得到问题的解而执行的一步一步的操为了得到问题的解而执行的一步一步的操作,称为过程。面向过程的程序设计是一作,称为过程。面向过程的程序设计是一种基于功能分析及每个功能由计算机的一种基于功能分析及每个功能由计算机的一个操作过程实现的程序设计方法,又称为个操作过程实现的程序设计方法,又称为传统的程序设计。面向过程程序设计的关传统的程序设计。面向过程程序设计的关键是规划算法和数据结构。键是规划算法和数据结构。面向对象的程序设计面向对象的程序设计面向对象程序设计模拟自然界认识和处理面向对象程序设计模拟自然界认识和处理事物的方法,将数据和对数据的操作方法事物的方法,将数据和对数据的操作方法组织在一起,形成一个相对独立的整体,组织在一起,形成一个相对独立的整体,称为对象;对象是活动的,对象行为靠消称为对象;对象是活动的,对象行为靠消息触发而激活。面向对象程序设计的关键息触发而激活。面向对象程序设计的关键是确定对象并对其分类。是确定对象并对其分类。1.1.3 程序设计过程程序设计过程传统的程序设计过程主要包括以下几个阶段:1分析问题分析问题2设计算法与数据结构设计算法与数据结构3检查算法检查算法4编码实现编码实现5测试和调式程序测试和调式程序1.2 计算机算法计算机算法算法基本概念算法基本概念日常一般算法日常一般算法解决某类具体问题的方法和步骤。解决某类具体问题的方法和步骤。算法类似于过程、方法、规程等算法类似于过程、方法、规程等计算机算法计算机算法利用计算机解决某类问题的方法和步利用计算机解决某类问题的方法和步骤骤计算机算法算法设计初步算法设计初步计算机算法算法设计的主要原则算法设计的主要原则计算机算法算法设计的步骤算法设计的步骤计算机算法计算1+2+3+4+10输入输入处理处理输出输出被加数被加数加数加数被加数被加数=和和被加数被加数=被加数被加数+加数加数循环循环10次次被加数被加数计算1+3+5+11求:求:5!计算机算法例 计算n!计算机算法计算机算法 这些例子告诉我们:这些例子告诉我们:算法的复杂性分析算法的复杂性分析计算机算法表示算法的方法表示算法的方法计算机算法即即N-S流程图流程图即传统流程图即传统流程图用自然语言表示算法用自然语言表示算法计算机算法计算机算法伪代码伪代码计算机算法 例例 用伪代码表示求用伪代码表示求5!5!的算法的算法计算机算法 例例 伪代码表示伪代码表示“输出输出X X的绝对值的绝对值”用用N-SN-S流程图表示的算法流程图表示的算法(1)(1)顺序结构顺序结构 A B计算机算法 选择结构选择结构计算机算法 循环结构循环结构计算机算法 例例 用用N-SN-S流程图表示求流程图表示求5!5!的算法的算法用流程图表示算法用流程图表示算法计算机算法计算机算法计算机算法三种基本结构:三种基本结构:计算机算法(2)(2)选择结构选择结构(又称选取结构又称选取结构)计算机算法(3)(3)循环结构循环结构(又称重复结构又称重复结构)计算机算法三种基本结构,有以下共同点:三种基本结构,有以下共同点:计算机算法例将求5!的算法用流程图表示求解 的算法计算机算法计算机算法N-SN-S流程图流程图判定一个大于或等于判定一个大于或等于3的正整数是否是素数?的正整数是否是素数?N开始输入n2in/i的余数rr=0?Ni+1iiY打印“是素数”Y打印“不是素数”结束 图1.4例1.2.4的算法流程图选:判定判定2000-25002000-2500年中每一年是否为闰年年中每一年是否为闰年计算机算法作作 业业 练练 习习(1)作业答案(2)例 欲在按非降次序排列的n个元素 a1,a2,an(aiai+1)中查找是 否有与b相同的元素。计算机算法算法二:采用折半查找采用折半查找(二分查找二分查找)的方法,的方法,即先用位居即先用位居中点中点的元素的元素a a(n/2n/2)与与b b比较,比较,若若b=ab=a(n/2n/2),则查找成功。,则查找成功。若若baba(n/2n/2),同时,同时b ba a(n/2n/2),则在,则在a a1 1,a,a2 2,a,a(n/2-1n/2-1)中采用上述方法继续查找;中采用上述方法继续查找;否则在否则在a a(n/2+1n/2+1),a,a(n/2+2n/2+2),a,an n中采用上述方中采用上述方法继续查找。法继续查找。这种算法显然要优越于前一种算法,因为最多这种算法显然要优越于前一种算法,因为最多也只需要比较也只需要比较loglog2 2n n次。次。计算机算法【例例】计算斐波那契(Fibonacci)数列的第n项函数fib(n)。【例例】在一个按升序排列的n个元素a1,a2,an(aiai+1)中,查找是否有与b相同的元素。