1.请上网了解编码规范,说明你本学期的主要编码规范

腾讯的编码规范:

1.C++:对于C++来说,在2007年,腾讯就发布了C++编码规范,主要针对其公司的所有软件产品源代码范围的C和C++编码风格,对C和C++文件的版式、注释、标识符命名、可读性、变量、结构、函数和过程方面军做出规范,从而保障公司项目代码的易维护性和编码安全性。以下我会列出我本人觉得比较重要的点!

一、程序的版式

1.1--程序块要采用缩进风格编写,缩进的空格数为4个

1.2--相对独立的程序块之间、变量说明之后必须加空行。(能够更加容易区分各个块,使代码更加清晰明了)

1.3--较长的语句(>80字符)要分成多行书写。

1.4--不允许把多个短语句写在一行中,即一行只写一条语句。(一行代码只做意见事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。代码之间的层次更加分明,易懂!)

1.5--if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号 { }

1.6--程序块的分界符(如C/C++语言的打括号 ‘ { ’ 和 ‘ } ’ )应各独占一行并且位于同一列,通识与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。

   二、注释

2.1--源文件头部都应进行注释,列出:生成日期、作者、模块目的/功能等。

2.2--函数头部都应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值等。

2.3--注释应该和代码同时更新,不再有用的注释要删除。

2.4--注释的内容要清楚、明了,不能有二义性。

2.5--注释的版式

2.6--对重要变量的定义需编写注释,特别是全局变量,更应有较详细的注释,包括对其功能、取值范围、以及存取时注意事项等的说明。

    三、可读性

3.1--用括号明确表达式的操作顺序,避免使用默认优先级。(繁殖阅读程序时产生误解,繁殖因默认的优先级与设计思想不符二导致程序出错)

3.2--涉及物理状态或者含有物理意义的常量,避免直接使用数字,必须用有意义的枚举或者常量来代替。

3.3--禁止使用难以理解,容易产生歧义的语句。

2.请阅读《数学之美》你感兴趣的章节,写下你的感想和体会

章节:数学之美系列二十三 ----输入一个汉字需要敲多少个键----谈谈香农第一定律

大概讲一下本章内容。我们假定常用的汉字在二级国标里面,一共有 6700 个作用的汉字。如果不考虑汉字频率的分布,用键盘上的 26 个字母对汉字编码,两个字母的组合只能对 676 个汉字编码,对 6700 个汉字编码需要用三个字母的组合,即编码长度为三。当然,聪明的读者马上发现了我们可以对常见的字用较短的编码对不常见的字用较长的编码,这样平均起来每个汉字的编码长度可以缩短。

香农第一定理指出:这个编码的长度的最小值是汉字的信息熵,也就是说任何输入方面不可能突破信息熵给定的极限。当然,香农第一定理是针对所有编码的,不但是汉字输入编码的。这里需要指出的是,如果我们将输入法的字库从二级国标扩展到更大的字库 GBK,由于后面不常见的字频率较短,平均编码长度比针对国标的大不了多少。

初始:我们如果对每一个字进行统计,而且不考虑上下文相关性,大致可以估算出它的值在十比特以内,当然这取决于用什么语料库来做估计。如果我们假定输入法只能用 26 个字母输入,那么每个字母可以代表 log26=4.7 比特的信息,也就是说,输入一个汉字平均需要敲 10/4.7= 2.1 次键。

改进后:如果我们把汉字组成词,再以词为单位统计信息熵,那么,每个汉字的平均信息熵将会减少。这样,平均输入一个字可以少敲零点几次键盘。不考虑词的上下文相关性,以词为单位统计,汉字的信息熵大约是8比特作用,也就是说,以词为单位输入一个汉字平均只需要敲 8/4.7=1.7 次键。这就是现在所有输入法都是基于词输入的内在原因。当然,如果我们再考虑上下文的相关性,对汉语建立一个基于词的统计语言模型,我们可以将每个汉字的信息熵降到 6 比特作用,这时,输入一个汉字只要敲 6/4.7=1.3 次键。如果一种输入方法能做到这一点,那么汉字的输入已经比英文快的多了。

首先,要接近信息论给的这个极限,就要对汉字的词组根据其词频进行特殊编码。事实上像王码这类的输入方法就是这么做到,只不过它们第一没有对词组统一编码,第二没有有效的语言模型。这种编码方法理论上讲有效,实际上不实用。原因有两个,第一,很难学;第二,从认知科学的角度上讲,人一心无二用,人们在没有稿子边想边写的情况下不太可能在回忆每个词复杂的编码的同时又不中断思维。我们过去在研究语言识别时做过很多用户测试,发现使用各种复杂编码输入法的人在脱稿打字时的速度只有他在看稿打字时的一半到四分之一。因此,虽然每个字平均敲键次数少,但是打键盘的速度也慢了很多,总的并不快。这也就是为什么基于拼音的简单输入法占统治地位的原因。事实上,汉语全拼的平均长度为 2.98,只要基于拼音的输入法能利用上下文彻底解决一音多字的问题,平均每个汉字输入的敲键次数应该在三次左右,每分钟输入 100 个字完全有可能达到。

感想与体会:这一章内容首先是剖析一下常用汉字,再分块加以解析。就是说以数学知识来进行对计算机进行分析,我觉得能够以数学知识来提高计算机的一些能力,提高计算机的效率,能够加强计算机的能力。工具组合使用,能够形成更强大的新工具。针对问题引用定律进行剖析,举出例子,从而分析具体问题。吴军先生引用例子,具体说明分析了输入一个汉字需要敲多少个键,也使我们了解到了香农第一定理,使我们对代码的编码过程有了具体了解。

任何一个领域,深入进去都有无数的细节。有兴趣的人不但没被这些细节吓倒,反而会兴致勃勃地研究,从而达到令人仰慕的高度。吴军先生向我们展示了数学和算法中的这些细节,也展示了他所达到的高度。值得我们学习。

算法设计与分析第一章作业相关推荐

  1. 算法设计与分析第一章递推算法

    算法设计与分析 第一章 递推算法 1.概述 在**已知条件**和**所求问题**之间总存在着某种相互联系的关系,如果可以找到前后过程之间的数量关系(即递推式),那么,从**问题出发逐步推到已知条件** ...

  2. 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

  3. 算法设计与分析第一章课后作业

    第一章 一.单选题 1 [单选题]子程序(包括函数和方法)是用来被调用的,递归指的是 A. 不同子程序之间直接或间接调用的程序设计方法 B. 同一个子程序直接或间接调用自己的程序设计方法 C. 子程序 ...

  4. 算法设计与分析第二章作业

    1. 2.时间复杂度: 划分子问题:O(1) 求解子问题:2T(2/n) 合并子问题:O(n) 时间复杂度为:T(n) = O(1) + 2T(2/n) + O(n) = O(nlogn) 3.心得与 ...

  5. 算法设计与分析(python版)-作业一

    参考教材:算法设计与分析(Python版)         作者:王秋芬 1 . 容易 (4分)2 n=O(100n ^2) 错误 2 . 容易 (3分)10=θ(log10) 正确 3 . 容易 ( ...

  6. 算法设计与分析(python版)-作业三

    参考教材:算法设计与分析(Python版)         作者:王秋芬 1 . 普通 (5分)以下问题中,哪些问题的分治算法消耗的时间与输入序列无关.() A. 二分查找 B. 合并排序 C. 快速 ...

  7. 【算法设计zxd】第一章 算法基础 4.设计工具【三角矩阵,】

    目录 1. 循环设计 (1) 设计思维 自底向上的设计(Down - Top Design) 自顶向下的设计(Top-Down Design) (2)挖掘内在规律构建计算模型 [例1-3]设计算法,输 ...

  8. 【算法设计zxd】第一章 算法基础 1.基本概念+最大公约数

    目录 一.基本概念: 例1-1:求最大公约数 问题分析: 计算模型: 1) 穷举法 2) 欧几里德算法(辗转相除法) 算法设计与描述: 算法分析-效率: 1) 穷举法: 2) 欧几里德算法分析-渐近法 ...

  9. 算法设计与分析第二章课后作业

    第二章 一.单选题 1 [单选题]给定字符集{a,b,c,d,e,f},若用定长码编码,至少需要几位二进制位() A.1位 B.2位 C.3位 D.4位 正确答案: C 我的答案:C 得分: 5.0分 ...

最新文章

  1. DNN和IBatis.Net几乎同时发布新版本
  2. 技术解析系列 阿里 PouchContainer 资源管理探秘
  3. 【数据结构笔记】B树和B+树的实现,哈希查找,STL中的hash_map和unordered_map容器用法
  4. 8、路由 router
  5. 由ORA-28001同一时候带出ORA-28000的解决的方法
  6. PHP 中获取文件名及路径
  7. 同事经常蹭我的车,我该怎么拒绝?
  8. python编程例子-Python面向对象编程 - 类和实例
  9. 详解SQL2005中的AWE
  10. sqlite3 加密版本 下载_制作Sqlcipher+SM4加密的framework包(OC)
  11. h3c交换机配置远程管理_H3C交换机配置管理VLAN和配置远程登录
  12. 零基础理财入门书籍分享
  13. centos6 yum 阿里源 配置
  14. 计算机系统的位的描述性定义,计算机系统中,“位”的描述性定义是________。
  15. Android系统各个版本发布时间
  16. 金丹期前期:1.4、python语言-python的程序的核心数据类型:字符串、列表、元组、字典
  17. usaco3.2.4 Feed Ratios
  18. 【转载】第6节: 六类Calander处理六种不同的时间场景
  19. js将网页保存成图片
  20. 网络安全人员经常使用的十大网站

热门文章

  1. input验证邮箱 css,jquery验证邮箱格式并显示提交按钮
  2. 台式计算机硬盘的安装位置,台式主机扩大存储,7步教你完美安装机械硬盘
  3. 中级软件设计师简要知识点(5):网络与多媒体基础知识
  4. 司空见惯 - 天黑请闭眼
  5. ss3ex集成Beet记录日志
  6. 各种大片任意看!真的超级好用!
  7. 地质勘查项目管理困难重重,需要专业软件来解决
  8. 汽车电子学习笔记 --- IAR
  9. 科沃斯扫地机器人电路原理图_扫地机器人的工作原理详解
  10. 入门 | 走近流行强化学习算法:最优Q-Learning