程序设计与算法基础

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15.2 程序设计方法
15.3 算法 计算机的发展靠两个方面,一个是硬件, 一个是软件,但二者的发展速度很不协调。计算 机诞生后的60多年里,硬件速度已提高了约10亿 倍,成本也降低了约10亿倍,但软件的发展却相 对迟缓,其重要原因就是对算法的研究不足。算 法是计算学科中最具方法论性质的核心概念,也 被誉为计算学科的灵魂。程序最核心的两个方面: (1)对数据的描述,包括要使用数据的类型和组织 方式,即数据结构。(2)对操作的描述,即操作步 骤,也就是算法。瑞士著名计算机科学家沃思在 1976年曾提出 一个公式:程序=数据结构+算法。 其中,算法是程序的灵魂。
15.1 程序设计概述
15.1.2 程序设计语言
• 计算机语言按照其发展阶段可以分成三大类 • 低级语言
– 机器语言是指一台计算机全部的指令集合,指令是由“0” 和“1”组成的二进制,难记忆、易出错
• 汇编语言
– 用一些简洁的英文字母、符号串来替代一个特定的指 令的二进制串
• 高级语言
– 高级语言是比汇编语言更易于使用的一类语言 – 目前,高级语言主要包括有:BASIC、C、C++、PASCAL、
15.2 程序设计方法
15.2.2 面向对象程序设计方法
–类
• 是对具有相同属性和相同行为的具体对象进行抽象 得到的模板。一个类所包含的行为和数据描述一组 对象的共同属性和行为。类是对象的抽象,对象则 是类的实例。类可有其子类,也可有其它类,形成 类层次结构
– 消息
• 是对象之间进行通信的一种规则说明。对象之间可 以通过消息机制进行通信,消息一般由三个要素: 接收消息的对象名、消息名(接收对象的方法名称) 和参数(方法所需的数据信息)
• 产生背景 • 基本概念
– 面向对象程序设计
• 是一种建立在“对象”概念基础上的方法学,把面 向对象的思想应用于软件开发过程中,指导开发活 动的系统方法
– 对象
• 是要研究的任何事物。它不仅能表示有形的实体, 也能表示无形的(抽象பைடு நூலகம்)规则、计划或事件。对 象由数据(事物的属性)和方法(事物的行为)构 成一个相对独立的整体
提高篇
第15章 程序设计与算法基础
高等教育出版社
目录 Contents
15.1 程序设计概述 15.2 程序设计方法 15.3 算法 15.4 RAPTOR编程基础
15.1 程序设计概述
当今,计算机在各个领域的广泛应用已 经是众所周知的事实了,作为20世纪最重要 的发明之一,计算机对人类的社会生活产生 的影响越来越深刻,一方面原因是计算机硬 件本身越来越廉价,更重要的原因是人们为 计算机开发出了大量的、方便的、能指挥计 算机完成各种简单或复杂工作的程序,正是 这些奇妙的程序让计算机越来越智能化,越 来越具有“生命力”。
15.3 算法
15.3.1 算法的概念
• 什么是算法
– 我们把解决问题的若干步骤的有序描述称为算法。
• 算法的特征
– 确定性 – 有限性 – 可行性 – 有零个或多个输入 – 有一个或多个输出 – 健壮性 – 可读性 – 经济性
15.3 算法
15.3.2 算法的表示
• 用自然语言描述算法
– 自然语言是人们日常所用的语言,可以使汉语,英语货其他 国家的语言。使用该方法不用专门训练,通俗易懂。但语句 冗长,不够简洁,容易出现歧义性,导致算法的不确定性。
• 用伪代码描述算法
– 伪代码是用介于自然语言和程序设计语言之间的用文字和符 号来描述算法的工具。可以用各种符号和汉字的混合法来描 述算法的基本步骤,使用灵活,书写方便,格式紧凑,同时 也便于将算法转成相应的程序代码实现。但不容易规范,有 时候会产生理解上的不一致
• 用流程图描述算法
– 流程图是描述算法的常用工具,它采用美国国家标准化协会 ANSI(American National Standard Institute)规定的一组图形符 号来表示算法。它是一种用程序框、流程线及文字说明来准 确、直观地表示算法的图形工具
15.2 程序设计方法
15.2.1 结构化程序设计方法
• 基本思想
– 结构化程序设计的核心思想是:以模块化设计 为中心,将待解决的问题划分为若干个相互独 立的模块,采用自顶向下、逐步求精的方法设 计程序
• 设计原则
– 自顶向下 – 逐步细化 – 模块化设计 – 限制使用GOTO语句
15.2 程序设计方法
FORTRAN、智能化语言(LISP、Prolog、CLIPS、OpenCyc、 Fazzy)、动态语言(Python、PHP、Ruby、Lua)等等
15.1 程序设计概述
15.2 程序设计方法
程序编写,是软件开发工程中的一个关 键阶段。软件的质量主要通过程序的质量来 体现的,因此,程序设计在软件开发过程中 占有十分重要的地位。为了有效进行程序设 计,除了精心设计算法与数据结构外,程序 设计方法也很重要。目前,最常用的是结构 化程序设计方法和面向对象的程序设计方法。
15.3 算法
15.3.3 典型算法
• 排序算法
– 将一组无序的数据(或依记录的关键字)按递增或递减的顺 序排列起来
– 和选择排序
• 查找算法
– 在计算机许多应用领域中,查找操作都是十分重要的一项研 究技术。查找算法效率的好坏直接影响应用软件的性能
– 顺序查找、折半查找
• 穷举搜索算法
15.1 程序设计概述
15.1.1 程序与程序设计
• 程序
– 程序是指完成某项任务的一系列动作执行过程 的描述。计算机程序是人们为解决某种问题用 计算机可以识别的语言编排的一系列基本步骤 的组合
• 程序设计
– 程序设计又称编程(Programming)是给出解决 特定问题程序的过程,是软件开发中的重要组 成部分。通常,程序设计过程包括四个主要步 骤:分析问题、设计算法、编写程序、程序测 试和调试
15.2.1 结构化程序设计方法
• 三种基本结构
– 顺序结构
• 各个操作步骤都是按照它们出现的先后顺序依次执 行的
– 分支结构
• 各个操作步骤都是按照它们出现的先后顺序依次执 行的
– 循环结构
• 各个操作步骤都是按照它们出现的先后顺序依次执 行的
15.2 程序设计方法
15.2.2 面向对象程序设计方法
相关文档
最新文档