《编程珠玑》阅读小记(3) — 数据决定数据结构
来源:互联网 发布:网络用语棒子什么意思 编辑:程序博客网 时间:2024/06/07 19:58
本章简述
本章以一个庞杂的 if 判断程序段落提出主题,对于这种代码冗余量大,相似性高的程序结构应该考虑用合适的数据结构(比如数组)来达到相同的目的。
由此,引出本章标题的完整意义:恰当的数据视图实际上决定了程序的结构。
结构化数据
本章用了大量篇幅介绍复杂程序的庞杂代码量的不合理性,使得读者可以深入的理解并牢记,在以后写程序时能够避免再次写出类似代码。
作者在第四小节,提出结构化数据的概念。结构化数据就是指一组结构清晰的数据,早些时候,仅仅可以说选择恰当的变量名,但是后期,编程语言加入了记录或者结构以及指向它们的指针。我们就学会了使用名为insert和search的函数来代替处理数据的代码,这有助于在改变数据的表达方式时不损坏程序的其他部分。
总结,对系统待处理数据进行研究可以深入认识到优秀的模块化结构。
对于处理特殊数据的强大工具,有很多:
- 超文本
- 名字-值对
- 电子表格
- 数据库
- 特定领域的编程语言
原理
本章主要是给读者灌输一种结构化数据的思想,以小故事的形式,告诉读者:“能用小程序实现的,就不要编写大程序”。数据结构设计还有许多其他正面影响,包括节省时间和空间、提高可移植性和可维护性。
下面是关于特殊数据处理的几个原则:
- 使用数组重新编写重复代码,冗长的相似代码通常可以使用最简单的数据结构—数组来更好的描述;
- 封装复杂结构,当需要非常复杂的数据结构时,使用抽象术语定义,并将操作表示成类;
- 尽可能使用高级工具,超文本、名字—值对、电子表格、数据库、编程语言等;
- 从数据得出程序的结构,这也是本章的主题。
总的来说,本章就是告诉我们,通过使用恰当的数据结构代替复杂代码,从数据中得出程序结构。在动手编码之前,优秀的程序员会彻底理解输入、输出和中间数据结构。
习题分析解答
1 . 通过学习了以上的知识,面对此题,我们很容易的想到数组存储相应数据的方式;在该题目中需要三个存储数组,基本税收、等级下届以及税率,采用这种方式可以避免庞杂的条件判断,减少代码量。
2 . k阶常系数线性递归定义的级数,同样采用两个数组,一个存储参数c[1]至c[k+1],另一个存储结果a[1]至a[n],代码简洁,健壮性好。具体实现如下:
/************************************************************************//* 《编程珠玑》第三章 数据决定数据结构 * 3.7习题 2,计算k阶常系数线性递归定义的级数 * 舍弃庞杂的大量判断,采用数组存储数据,代码简介,健壮性高 *//************************************************************************/#include <iostream>#include <cstdlib>using namespace std;const int N = 100;int main(){ //输入k,m int k, m; int c[N + 1] = { 0 }, a[N] = {0}; cin >> k >> m; //输入c[1]至c[k+1]一共k+1个数据,而且遵从方程组约束,下标从1开始计算 for (int i = 1; i <= k + 1; i++) cin >> c[i]; for (int j = 1; j <= k; j++) a[j] = c[j - 1] * a[j - 1] + c[j]; for (int j = 1; j <= k; j++) cout << "a[" << j << "] = " << a[j] << "\t"; cout << endl << "a[" << m << "] = " << a[m] << endl; system("pause"); return 0;}
3 . 印刷大写字母,提示见书本附录答案。
4 . 编写处理如下日期问题的函数:(1)给定两个日期,计算两者之间的天数;(2)给定一个日期,返回值为周几; (3)给定月和年,使用字符数组生成该月的日历。
这里写代码片
5 . 处理英语中一小部分连字符问题。
这里写代码片
6 . 此题要求给出格式化输出模板,使得数据库中的记录生成定制文档,与书中实例相似。在实际应用中,可用脚本语言实现。
- 《编程珠玑》阅读小记(3) — 数据决定数据结构
- 《编程珠玑》阅读小记(5) — 编程小事
- 《编程珠玑》阅读小记(1)— 开篇
- 《编程珠玑》阅读小记(6) — 算法设计技术
- 《编程珠玑》阅读小记(9) — 取样问题
- 《编程珠玑》阅读小记(10) — 搜索
- 《编程珠玑》阅读小记(11) — 堆
- 《编程珠玑》阅读小记(8) — 排序
- 《编程珠玑》阅读小记(4) — 编写正确的程序
- 《编程珠玑》阅读小记(7) — 代码调优与节省空间
- 3、编程珠玑笔记三数据决定程序结构
- 【编程珠玑】第三章 数据决定程序结构
- 《编程珠玑》--第三章 数据决定程序结构
- 【编程珠玑】第三章:数据决定程序结构
- 数据结构——编程珠玑
- 《编程珠玑》习题练习In Python——第三章 数据决定程序结构
- 编程珠玑:第三章 数据决定程序结构 习题解答
- 编程珠玑---第一章 阅读笔记
- 聚类算法实践(1)——层次、K-means聚类
- JOGL测试
- bind query.c
- text
- 项目
- 《编程珠玑》阅读小记(3) — 数据决定数据结构
- C Primer Plus 第三章
- seo优化如何写出高质量的文章
- poj2255Tree Recovery
- Android Fragment嵌套使用问题总结
- letter-spacing 文字之间 间距 行距 line-height
- 树莓派--Raspbian安装与设置
- 链表的小结
- warning: control reaches end of non-void function [-Wreturn-type]