第二章           算法——程序设计的灵魂

目录

第二章           算法——程序设计的灵魂

2.1        程序=算法+数据结构

2.2        什么是算法

2.3        简单的算法举例

2.4        算法特性

2.5        怎样表示一个算法

2.6        结构化程序设计的方法


2.1        程序=算法+数据结构

程序=算法(算法:对操作的描述)+数据结构(数据结构:对操作的描述)

程序主要包括以下两方面的信息:

(1)对数据的描述:在程序中要指定用到哪些数据,以及这些数据的类型和数据的组织形式。这就是数据结构。

(2)对操作的描述:要求计算机进行操作的步骤,也就是算法。

一个程序除了以上的“算法”“数据结构”两个主要要素以外,还应当采用结构化程序设计的方法进行程序设计,并且用某一种计算机语言表示。也就是说:算法(灵魂)、数据结构(加工对象)、程序设计(方法)和语言(工具)4个方面是一个程序设计人员应该具备的知识。

2.2        什么是算法

广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”

计算机算法分为两大类别:数值运算算法、非数值运算算法

1、数值运算法:主要的应用途径:求数值解。往往有现成的模型,可以运用数值分析方法,有比较成熟的算法可供选用,供用户调用。例如:求方程的根、求函数的定积分

2、非数值运算算法:主要的应用途径:事务管理领域。非数值运算的种类繁多,要求各异,没有现成的答案可供参考,往往需要使用者参考已有的类似算法的思路,重新设计解决特定问题的专门算法。例如:职工排序、图书检索、人事管理、行车调度管理......

2.3        简单的算法举例

(本章的程序实例是为了帮助大家理解什么是算法、算法的思考逻辑。对于其他的程序知识点不做硬性要求。出于帮助大家尽快理解实例的基础上,下方贴出代码和运行照片。)

例2.1:求1X2X3X4X5.

例2.2:有50个学生,要求输出成绩>=80分同学的学号和成绩

 

 例2.3:判定2000——2500年中的每一年是否为闰年,并将结果输出。

例2.4:求1-1/2+1/3-1/4+···+1/99-1/100 

例2.5:给出一个大于或等于3的正常数,判断它是不是一个素数

2.4        算法特性

对于程序设计人员来说,必须学会设计常用的算法,并且根据算法编写程序。

(1)有穷性:一个算法应包含有限的操作步骤,而不能是无限的。

(2)确定性:算法中的每一个步骤都应当是确定的,而不是模糊不清、模棱两可的。算法的含义应当是唯一的,而不应该产生“歧义性”,所谓的歧义性是指可以被理解为两种或多种可能的含义。

(3)有零个或多个输入:所谓输入是指执行算法时需要从外界取得必要的信息。

(4)有一个或多个输出:算法的目的是为了求解,“解”就是输出。没有输出的算法是没有意义的。

(5)有效性:算法中的每一个步骤都应当有效地执行,并得到确定的结果。

2.5        怎样表示一个算法

常用的方法有:自然语言、传统流程图、结构化流程图和伪代码等。

(1)自然语言:自然语言就是人们日常使用的语言,通俗易懂,但文字冗长,容易出现歧义,表示的意思不严格,往往需要根据上下文才能判断其正确含义。除了很简单的问题,一般不用自然语言表示算法。

(2)流程图:用一些图框来表示各种操作,用图形表示算法,直观形象,易于理解。

流程图包括三种基本结构:顺序结构、选择结构、循环结构(“当型”&“直到型”)

基本结构的特点:1、只有一个入口;2、只有一个出口;3、结构内每一部分都有机会被执行到;4、结构内不存在“死循环”。基本结构不局限于上面这三种,只有具备这四个特点的都可以作为基本结构。

传统流程图弊端(缺点):传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制。因此使用者可以不受限制使流程随意地转来转去,使流程图变得毫无规律,阅读时要花很多精力去追踪流程,使人难以理解算法的逻辑。

(3)结构化流程图:又叫N-S结构化流程图、盒图

(4)伪代码:不用图形符号,书写方便,格式紧凑,修改方便,容易看懂,也便于向计算机语言算法过渡。

2.6        结构化程序设计的方法

结构化程序设计方法的基本思路是:把一个复杂的问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围內。

(1)自顶向下

(2)逐步细化

(3)模块化设计

(4)结构化编码

在程序设计中常常采用模块设计的方法,根据程序的模块的功能将它划分为若干个子模块。这个过程采用了自顶向下的方法来实现。划分子模块的时候应注意模块的独立性,即用一个模块完成一项功能,耦合性愈少越好。

在设计好一个结构化的算法之后,还要善于进行结构化的编码。

本章只是初步介绍了有关算法的基本知识,并没有深入介绍如何设计各种类型的算法。在以后各章中将结合程序实例陆续介绍有关的算法。

谭浩强《C语言程序设计第五版》第二章学习笔记相关推荐

  1. 谭浩强c语言程序设计第五版---第一章

    5.编写程序,输出平行四边形**** (1) #include<cstdio> int main(){int i,j,k;for(i=0;i<4;i++){//确定形状的关键代码 f ...

  2. 谭浩强C语言程序设计代码示例第5章(笔记)

    谭浩强C语音程序设计代码示例第四章(新手入门笔记) 第一章包含参考书,在线编译工具,代码,注释等. 遵循共享互助原则 谭浩强C语言程序设计代码示例(1-3章) 谭浩强C语言程序设计代码示例第4章(笔记 ...

  3. 谭浩强C语言程序设计代码示例第6章(笔记)

    谭浩强C语音程序设计代码示例第六章(新手入门笔记) 第一章包含参考书,在线编译工具,代码,注释等. 遵循共享互助原则 谭浩强C语言程序设计代码示例(1-3章) 谭浩强C语言程序设计代码示例第4章(笔记 ...

  4. 谭浩强《C程序设计第五版》笔记㈠

    Ch1.程序设计和C语言 1.1 什么是计算机程序 1.2 什么是计算机语言 发展阶段 低级语言 机器语言 计算机能够识别和接受的二进制代码称为机器指令,而机器指令的集合就是机器语言. 符号语言 高级 ...

  5. 谭浩强c语言程序设计第四版课后习题:求Sn=a+aa+aaa+aaaa+...n个a ,a是数字 ,n表示a的位数

    题目: 计算 a+aa+aaa+aaaa+aaaaa+-+a-a(n个a)的值,n和a由键盘输入. 思路: 解决这种问题一般是找规律,找出通项.假设a=2 n=3那么就是2+22+222,其中22=2 ...

  6. 谭浩强《C程序设计第五版》笔记⑵

    Ch2 算法----程序的灵魂 2.1程序=算法+数据结构 数据结构:对数据的描述,在程序中要指定用到哪些数据,以及这些数据的类型和数据的组织形式,就是数据结构 对操作的描述,要求计算机进行操作的步骤 ...

  7. 谭浩强c 语言程序设计

    谭浩强c 语言程序设计  1 C语言概述  1.1  C语言的发展过程  1.2  当代最优秀的程序设计语言  1.3  C语言版本  1.4  C语言的特点  1.5  面向对象的程序设计语言  1 ...

  8. 谭浩强C语言程序设计 学习辅导练习题

    谭浩强C语言程序设计 学习辅导练习 第七章 函数 T14 输入N个学生M门课成绩,分别用函数实现下列功能: 1.计算每个学生的平均分 2.计算每门课的平均分 3.找出分数中最高分数所对应的学生和课程 ...

  9. 谭浩强C语言程序设计(1-3章代码学习)

    谭浩强C语言程序设计 参考书 C语言学习笔记记录,学习为主,新手小白入门 我所用的C语言在线编译器:lightly在线编译工具 可新建工程 谭浩强C语言程序设计书籍所包含的代码示例加注释说明如下: / ...

  10. c语言程序设计曾怡课件,谭浩强 C语言程序设计教程(由曾怡视频修改) 第8章 函数课件...

    谭浩强 C语言程序设计教程(由曾怡视频修改) 第8章 函数课件 一般搬家时转盘与大梁间是固定的,开钻前应根据转盘对井架进行校正,如果中途换转盘,则要在空负荷下根据井架对转盘进行校正 一般搬家时转盘与大 ...

最新文章

  1. 微信正在用的深度学习框架开源!支持稀疏张量,基于C++开发
  2. Linux 网卡驱动相关——03
  3. python【数据结构与算法】Floyd算法模拟
  4. android 自定义皮肤,Android Studio 自定义皮肤主题和背景
  5. IE6-7-8 JS关闭窗口不提示的方法
  6. oracle:delete和truncate
  7. mac mysql php_Mac搭建php开发环境:Apache+php+MySql
  8. Java8 Stream详解~筛选:filter
  9. 秦汉考场科目三路线图_海淀驾校科目三校内考场总结
  10. Spring AOP之公共的切入点配置
  11. python下载前获取文件大小
  12. 阅读分享——李开复老师《开工愉快:如何保持每天精力充沛》
  13. 华为云×奇点云 | 828 B2B企业节,一起成就好生意
  14. w7计算机显卡,win7系统怎么更新电脑显卡驱动
  15. 经验分享:SecureCRT远程登录树莓派开发板
  16. 推箱子C++实现 实训认识小游戏
  17. 在asp中实现由动态网页转变为静态网页
  18. Android签名 - APK签名系统SignApk.jar
  19. 机器人讯息合集:3D打印“元机器人”、水陆两用微机器人、会游泳的机械狗、“香蕉”软体机器人、无线两栖机器人
  20. ISO 32000-2 国际标准7.7

热门文章

  1. Python编程实践之Choose
  2. conda cudnn版本升级_Ubuntu16.04深度学习环境+个人桌面配置(CUDA10.1 + cudnn8.0.4 + pytorch1.7)...
  3. 计算机图形学学习记录(一) —— DDA画线算法
  4. 科学计算机算度数,计算器问题科学计算器有分角度制和弧度制,身 – 手机爱问...
  5. 基于Vue和Spring Boot的在线视频播放系统 (模仿咪咕视频)
  6. java必背代码_java必背代码入门有哪些?如何写出优质代码?
  7. Wifite批量破解WEP/WPA/WPS
  8. 张宇八套卷(一)复盘
  9. MFC BMP设置Bitmap的分辨率DPI为600点 gdiplus 生成标签
  10. SoapUI接口测试——添加断言(检查点)——Assertion