1. 进制进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制,比如 X 进制,就表示某一位置上的数运算时是逢 X 进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x 进制就是逢 x 进位。
十进制
二进制
八进制
十六进制
0
0
0
0
1
1
1
1
2
10
2
2
3
11
3
3
4
100
4
4
5
101
5
5
6
110
6
6
7
111
7
7
8
1000
10
8
9
1001
11
9
10
1010
12
A/a
11
1011
13
B/b
12
1100
14
C/c
13
1101
15
D/d
14
1110
16
E/e
15
1111
17
F/f
16
10000
20
10
1.1 二进制 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是 逢二进一,借位规则是借一当二。
当前的计算机系统使用的基本上是二进 ...
1. 常量和变量概述所谓常量就是在程序运行过程中,其值不能被改变的量,在C语言中,常量有很多种不同的类型,如下表:
常量类型
示例
整型常量
100,200,-100,0
浮点型常量
3.14 , 0.125,-3.123
字符型常量
‘a’,‘b’,‘1’,‘\n’
字符串常量
“a”,“ab”,“12356”
变量(variable)可以理解成一块内存区域的名字。通过变量名,可以引用这块内存区域,获取里面存储的值。由于值可能发生变化,所以称为变量,否则就是常量了。
接下来一节我们来学习一下如何去定义一个变量名。
2. 变量名变量名在 C 语言里面属于标识符(identifier),命名有严格的规范。
只能由字母(包括大写和小写)、数字和下划线(_)组成。
标识符中字母区分大小写。
不能以数字开头。
第一个字符必须为字母或下划线。
标识符不能是关键字。
长度不能超过63个字符。
下面是一些无效变量名的例子:
12345672bdog // 不能数字开头$American // 不能用_或者字母以外的字符开头// 标识 ...
1. C 语言概述欢迎来到程序员的世界,学习编程和学习武林秘籍其实是一个道理,在最初选择的时候需要慎之又慎,一旦选错再想回头就难了。
1.1 一些基本概念1.1.1 编程语言作为一个程序猿,想要学习程序编写,就必须搞清楚一个概念:何为编程语言?语言是人与人之间用于沟通交流的工具,由此进行推导就能知道编程语言是计算机与程序员之间进行沟通和交互的工具。它是一种用于编写计算机程序的形式化语言,可以指导计算机执行特定的操作和任务。
编程语言通过定义语法和语义规则来规定程序员如何组织、写入和表达他们的程序。程序员可以使用编程语言来编写代码,这些代码会被翻译或解释成可执行的计算机指令,从而实现特定的功能、控制计算机硬件,或处理数据。
基于编程语言的执行方式,大致可以分为以下三类:
编译型语言:需要在运行之前通过编译器转换为机器代码,例如C、C++。
解释型语言:在运行时逐行解释和执行程序代码,例如Python、Ruby、JavaScript。
半编译型语言:结合编译和解释执行的特点,例如Java、C#。
一些常见的编程语言包括:
C/C++:通用的编程语言,广泛用于系统 ...
1. 嵌套的CMake如果项目很大,或者项目中有很多的源码目录,在通过CMake管理项目的时候如果只使用一个CMakeLists.txt,那么这个文件相对会比较复杂,有一种化繁为简的方式就是给每个源码目录都添加一个CMakeLists.txt文件(头文件目录不需要),这样每个文件都不会太复杂,而且更灵活,更容易维护。
先来看一下下面的这个的目录结构:
12345678910111213141516171819202122232425$ tree.├── build├── calc│ ├── add.cpp│ ├── CMakeLists.txt│ ├── div.cpp│ ├── mult.cpp│ └── sub.cpp├── CMakeLists.txt├── include│ ├── calc.h│ └── sort.h├── sort│ ├── CMakeLists.txt│ ├── insert.cpp│ └── select.cpp├── test1│ ├── calc.cpp│ └── CMakeLists.txt└── t ...
1. CMake概述CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。
而 CMake 恰好能解决上述问题, 其允许开发者指定整个工程的编译流程,在根据编译平台,自动生成本地化的Makefile和工程文件,最后用户只需make编译即可,所以可以把CMake看成一款自动生成 Makefile的工具,其编译流程如下图:
蓝色虚线表示使用makefile构建项目的过程
红色实线表示使用cmake构建项目的过程
介绍完CMake的作用之后,再来总结一下它的优点:
跨平台
能够管理大型项目
简化编译构建过程和编译过程
可扩展:可以为 cmake 编写特定功能的模块,扩充 cmake 功能
2. CMake的使用CMake支持大写、 ...
配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:
关注公众号:爱编程的大丙,或者进入大丙课堂学习。
1. 遭遇香波地在海贼世界中,香波地群岛位于伟大航路中间的红土大陆前方。岛屿是由多颗大树构成,地面就是树根,会从地面冒出气泡。在这里,路飞的好朋友人鱼凯米被人贩子拐卖并卖给了天龙人,路飞为了救凯米狠狠地揍了天龙人。最后,草帽团被巴索罗缪·大熊的果实能力拍到了世界各地,草帽团就地解散。
对于当时的草帽团来说一共有九个人,面对这个打不过的敌人大熊,九个人都做了最后的反抗和挣扎,在这个过程中这些人的状态和行为或许相同相互不同,归纳总结一下就是无助、恐惧、愤怒。
如果我们想要通过程序复刻上面动态图片中的这个场景是有很多种处理方式的,最简单的一种就是定义一个人的基类,然后让草帽团的各成员作为这个类的子类,在各个子类中来具体描述他们面对大熊的攻击时的反应和状态。
索隆很愤怒决定要砍了大熊
山治很愤怒决定要踢死大熊
乌索普很恐惧在心里画圈圈诅咒大熊
路飞很愤怒想锤死大熊
乔巴很愤怒想拍死大熊
布鲁克很愤怒用已死的身体阻挡大熊
弗兰奇很愤怒思考怎么弄死大熊
娜美很恐 ...
设计模式
未读
配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:
关注公众号:爱编程的大丙,或者进入大丙课堂学习。
1. 和平主义者和平主义者是世界顶级科学家贝加庞克为世界政府研制的人形兵器,归海军直属,其相貌和王下七武海中的巴索罗缪·大熊一样,可以发射镭射光,杀伤力和战斗力非常强。海军利用这些和平主义者来消灭赏金上亿的海贼。
两年后,贝加庞克又推出了和平主义者2.0版本,名字叫做炽天使,身材比和平主义者小了很多,但是战斗力和自身携带的技能却上升了一个档次。
对于贝加庞克来说这两款机器人是一脉相承的,也就是说他们的架构是一样的,2.0版本的炽天使只是在原来架构基础上增强了某些功能,或者在原来预留的接口上实现了某些功能,使用这种方式无疑能够使研发效率最大化。
和领先人类科技500年的天才科学家贝加庞克设计机器人的思路类似,在编程的时候也有一种类似的设计模式叫做模板方法模式。模板方法模式就是在基类中定义一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。说的再直白一些就是先定义一个基类,在基类中把与需求相关的所有操作函数全部作为虚函数定义出来,然后在这个基类 ...
设计模式
未读
配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:
关注公众号:爱编程的大丙,或者进入大丙课堂学习。
1. 厨师山治山治是文斯莫克家族的第三子,基因改造人,由于小时候未能觉醒能力而被父亲文斯莫克·伽治放逐到东海。遇见恩师哲普后在海上餐厅巴拉蒂担任厨师。为了寻找传说之海ALL BLUE而随草帽一伙踏入伟大航路。
在海上航行的每一天里,最忙的应该就是山治了。他需要准备食材、做早饭、做午饭、做下午茶、做晚饭,一整天都在不同的状态之间忙碌。
在设计模式中有一种和山工作治状态类似的模式叫做状态模式。状态模式就是在一个类的内部会有多种状态的变化,因为状态变化从而导致其行为的改变,在类的外部看上去这个类就像是自身发生了改变一样。
在日常生活中由于内部属性的变化导致外在样貌或者行为发生改变的例子比比皆是,比如:
人在幼年、童年、少年、中年、老年各个使其的形态都是不一样的
工作期间,上午、中午、下午、傍晚、深夜的工作状态也不一样
人的心情不同时,会有喜、怒、哀、乐
手机在待机、通话、充电、游戏时的状态也不一样
文章的发表会有草稿、审阅、发布状态
状态模式和策略 ...
设计模式
未读
配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:
关注公众号:爱编程的大丙,或者进入大丙课堂学习。
1. 橡胶人路飞是要成为海贼王的男人!在小时候因为误食了红发香克斯找到的橡胶恶魔果实成了橡胶人。对于果实能力,路飞现在已经开发出了五个档位。对于路飞而言在战斗的时候,必须要根据敌人的情况来实时制定合适的策略,使用不同的档位的不同招式去应对来自对方的攻击。
路飞在战斗的时候需要制定策略,在设计模式中也有一种和策略相关的模式叫做策略模式。策略模式需要我们定义一系列的算法,并且将每种算法都放入到独立的类中,在实际操作的时候使这些算法对象可以相互替换。
在日常生活中很多时候都需要制定策略,在程序中就可用使用策略模式来处理这些场景,比如:
出行策略,可以选择不同的交通工具:自行车、公交、地铁、自驾等
战国时期秦国的外交政策:远交近攻
收复台湾的策略:武统、文统、恩威并施 。。。
电商平台的打折策略:买二赠一、满300减50、购买VIP享8折优惠。。。
2. 百变路飞作为橡胶人路飞,平时白痴但战斗时头脑异常清醒,会根据敌我双方的形式做出正确的判断:
对手 ...
设计模式
未读
配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:
关注公众号:爱编程的大丙,或者进入大丙课堂学习。
1. 新闻大亨摩根斯是海贼世界中一个比较神秘的人物,他是世界经济新闻社的社长,人称“大新闻摩根斯”。他总是能非常轻松地搞到第一手情报,将其印成报纸,并由自家的送报鸟把报纸送到世界各地。
先不去深究摩根斯是如何快速得到世界各地的动态以及得到一些秘密情报,暂且认为他是豢养了一支空中狗仔队,在全世界的上空进行24小时无死角监视。对于摩根斯的新闻社我们可以将其看作是消息的发布者,对于购买报纸的各国人民或者是海上的海贼,我们可以将他们看作是消息的观察者或者订阅者。
在设计模式中也有一种类似的描述行为的模式,叫做观察者模式。观察者模式允许我们定义一种订阅机制,可在对象事件发生时通知所有的观察者对象,使它们能够自动更新。观察者模式还有另外一个名字叫做“发布-订阅”模式。
观察者模式在日常生活中也很常见,比如:
使用的社交软件,当关注的博主更新了内容,会收到提示信息
购买的商品被送到菜鸟驿站,会收到驿站发送的提示信息
订阅了报刊,每天/每月都会收到新的报纸或者 ...