
北大程序设计与算法专项课程笔记
yudonglin506311858
我是无知的傻瓜,想要见识更广阔的世界。
展开
-
轻叩面向对象的大门
面向对象的编程其实是一种数学的思想,其实程序设计中变量/函数数据结构等等的各种定义也是参考数学的公理化体系的构建过程,我们通过在计算机中建立一定的抽象对象,然后在这个层次进行处理,然后可以通过一定的转换关系来映射到现实世界,从而能够对现实世界产生一定的指导。我们通过对对象的定义ABCDEFG,然后通过一定的语句来构建不同对象之间的关系(函数形成,如同哈密顿体系的形成,通过对存在的解进行各种边界原创 2017-01-03 19:24:32 · 354 阅读 · 0 评论 -
计算机的基本原理
《论可计算数在判定问题中的应用》一文中提出了一种理想的计算机器的数学模型——图灵机,其由一条双向无限延长存储带和一个可以存储当前自身的状态控制器,该控制器并且包含一个读写头,可以读、写、更改存储带上每一格的数字/字母,可以根据读到的字母/数字变换自身的状态,可以沿着存储带一格一格地左移/右移。其规则的确立就对应于各种运算。如果对于特定的问题其是可计算的,即给定符号序列A,如果能找到一个图灵机,得出原创 2016-12-26 20:23:31 · 883 阅读 · 0 评论 -
程序运行的基本原理
程序是一种相对于计算电路的一种升维或者说抽象,不需要在具体的运算中重新组合各种基本的电路,而是通过以电信号表示的命令来控制电脑来运行,通过更改命令的执行顺序来改变计算机的具体功能。这就是冯诺依曼存储程序式体系:控制器,运算器,存储器,输入设备,输出设备。具体的工作流程是1在控制器指挥下,从存储器上取出指令;2分析指令,得到计算命令和待操作的数;3从存储器上取出待计算的数放入运算器;4运算器计算结果原创 2016-12-26 20:29:46 · 6566 阅读 · 0 评论 -
结构体
结构体(新的数据类型),使用一组变量来描述同一事物,将一个高维的事物分解为低维的不同事物,类似于使用不同属性来描述一个对象。如学生找过对象可以以其ID号,姓名,性别,分数,住址等等变量来描述,理论上这些属性越多,可以确定的对象就越精确。将结构体视为普通数据类型的一种升维,那么基本数据类型的各种性质如叠套,如作为参数用于传递到函数等等都是可以的。首先是构造一个新的数据类型即结构体:struct原创 2017-01-05 18:53:30 · 253 阅读 · 0 评论 -
程序以及程序设计语言是什么?
计算机本身不能完成任何运算,需要我们告诉计算机如何运算,这就是程序。需要一定的格式才能使得计算机识别我们要干的事,任何通过计算机大规模的快速的运算得出结果,为我所用。因此,我们只有解决一个问题之后(提出算法)才能依靠计算机来帮忙解答问题,这一步就完全是靠计算力的堆积。一般来说具体的解决步骤是开辟一片存储空间如数组,然后就是相关变量的定义和存储空间的分配(记得初始化),然后就是具体的算法即解决步原创 2016-12-26 20:59:17 · 2737 阅读 · 0 评论 -
数据结构初步
数据结构的要素包括数据的逻辑结构(呈现在用户面前的数据形式),存储结构和数据运算,其中逻辑结构可以分为线性结构,有线性表、栈、队列、串和数组,非线性结构有树结构和图结构;存储结构分为顺序结构、链式结构、索引结构和散列结构;数据运算有插入、修改、查找和排序运算。数据是能够输入并且能够被计算机处理的符号的集合,是信息的符号表示形式。其元素是数据的基本单位及数据项。数据结构是带结构的数据元素的集合。原创 2017-01-06 19:08:18 · 305 阅读 · 0 评论 -
程序设计语言的基本成分
算法的实现是我们的理想实现的基础:分析实际问题—解析实现过程—描述程序算法—选择编译环境—编写源代码指令—调试运行程序—给出结果构建计算环境—构建计算对象—构建计算方法(面向过程—面向对象)—验证算法实现程序=数据结构+算法+设计方法+编程工具+语言环境C语言设计特点:1简洁紧凑2运算符丰富(便于表达复杂算法)3数据类型丰富(数据处理)4结构化设计5语法限制有较大的自由度6能够直接访问原创 2016-12-31 00:52:29 · 5377 阅读 · 0 评论 -
函数的递归--解决问题的底层思路
函数的递归是一种代码的重用,直到满足一定的条件从而停止这个递归过程。可以参考数学归纳法对数学命题的证明来理解这个过程,数学的证明就对应于具体问题的求解。事实上,先定义再运算本来就是一般数学命题的基本方式。函数可以嵌套调用,但不可以嵌套定义。函数之间可以形成复杂的嵌套结构,当函数之内形成嵌套结构,就如同罗素的理发师悖论(类似于调用自身函数产生矛盾),看似是一个矛盾,但哥德尔定理指出没有一种公理系原创 2016-12-31 13:52:03 · 611 阅读 · 2 评论 -
指针
指针本质上就是存储数据的地址,是指向特定资源的指针,可以视为寻址的高维实现,因为内存空间有其十六进制的地址名如0x0012FF78.计算机能够通过变量的地址即指针来操作变量,这是通过指针运算符*实现的。&c是求变量c的地址如如0x0012FF78,而*&c则等价于之间调用变量c。指针变量*pointer(只能存放地址),存放变量的地址(即指针)的变量,这是一种叠套的结构。pointer++原创 2017-01-01 02:16:40 · 261 阅读 · 0 评论