几句话编程入门(已完结)

0009 语句

人类语言组成的基本单位是一句话,一句话就是一个完整的意思,并不意味着包含多少内容,但它是完整的。

我们写代码的基本单位也是语句,一句一句的去表达我们想要表达的意思,它的重点也是表达完整的意思。

一般我们会用特定的标记来表示一个语句的完结,比如在有些语言里使用分号,也有的语言通过换行来表达语句的分割。

用特定符号的好处是,我们可以把两个语句写在一行里,而并不会混乱。

用换行,就需要注意理解到一个点:并不是所有语句都只占用一行,所以换行并全都意味着一个语句的完结。这句话不是很理解没有关系,你知道有这件事情,在实际使用中会非常容易理解的。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

8 个赞

0010 代码块

有些事情并不是用一个语句就可以完成的。或者说这是几个动作,然后这些动作连成一个完整的整体。就比如说我们要出门,这是一个事情,但它是由:换衣服、拿手机、拿钥匙、开门、出门、锁门这一系列动作组成的。

我们可能会把这样一系列的动作当做一个整体去看待。那么这样的几个语句就组成了一个代码块,或者叫代码段。在实际书写中可能用一些符号把它们标记起来,比如把他们放在一个大括号之内,表示这是一个整体。当然在不同的语言下会有不同的语法表现,不过理解这个基本的概念,对于理解后面一些稍微复杂一点的语法是非常有帮助的。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

10 个赞

0011 缩进

我们说代码,其实是指导计算机去工作的说明书,那么作为说明书一定要结构清晰明了,这时候格式就变得非常重要了。

我们想一下,如果列一个提纲应该如何书写呢:

  • 一级标题顶格写
  • 所有的二级标题前面空两个格(一层缩进)
  • 所有的三级标题前面空四个格(二层缩进)
  • ……

这样就可以变得非常清晰,易读。写代码也是这个样子,用不同的缩进长度来说明当前语句所属的层级。这个缩进用 Tab 按键来输入,它具体代表的长度可以在编辑器中进行设置。需要注意的是同一层级内代码的开头是对齐的。

这样就可以变得非常干净,好读。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

5 个赞

0012 代码的注释

通过简单的学习,大家会感受到代码其实写出来是给翻译们(编译器)去看的。虽然大家都知道现在代码基本上是用英文书写,而且前面也了解到它有固定的套路,所以并不复杂。

但终究它的目标不(完全)是适合于我们的阅读,所以我们可以看懂,但可能效率并不够高,或者有些深层的逻辑不能够很好的在代码中直接读出来。还有即便是有了缩进换行等格式的加持,但是整体结构仍然不够清晰。

所以为了便于我们的阅读和理解,会给代码加上一定的注释来说明这里是什么,我们怎么想的。

反正编译器翻译代码的时候,是会忽略掉这些注释的,所以我们可以在里面随便去写什么。当然为了其他人阅读的方便,注释也有一定的格式规范。不过规范这种东西并不是要求严格去遵守的,所以如果你觉得开心,完全可以按照自己的方式去进行。只是到了特定场景下,你会发现这些规范的设定都是有它存在的意义的,然后自然而然的你的习惯会向这些规范靠拢。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

7 个赞

0013 代码的压缩

如果去掉代码中所有可以去掉的空白,去掉所有的注释,这样并不影响代码的执行效果,但却可以有效的减少文件的体积。这就是代码的压缩。

显然那些需要编译之后生成可执行文件的代码并没有多少压缩的必要。因为反正最终成果是那个可执行文件,而上述那些多余的内容并不会影响到最终生成的可执行文件。

但如果是无需编译的脚本,我们传递给他人的就是这个脚本文件本身了,那么文件体积的大小可能就会产生明显的影响。比如像我这种注释写的比代码还多的家伙,如果不对代码进行压缩,那么文件体积至少要翻倍了。

当然压缩之后代码变得不适合阅读,所以压缩的代码是应用在生产环境中的脚本上的。生产环境就是指脚本实际运行工作的时候,而开发环境是说我们对这个代码进行编写和测试的时候。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

5 个赞

0014 十分简单

a = 1+2
b = 3
c = a+b

现在请问 c 是多少。我觉得无论你怎样认为自己的数学成绩差,这道题应该也都能够得出正确的答案。好的,有这样的知识储备就够用了。

我们常常要储存一些内容,或者说用符号去代表一些内容。这就像我们初中所学习的代数,也就很类似于上面题目中所用到的方法。用字母来代表数嘛。

当然只是一个字母,如果情况变得复杂一点,我们就很难快速的理解这个字母所代表的内容是什么,所以我们扩展一下,粗略的认为是用一个单词去代表一些内容。注意我说的是一些内容,并不单指数字。不过原理还是一样的。

然后如果它的值可以发生变化,它就是变量;值不能够发生变化,就是常量。这还是初中代数里的概念,我们就是复习一下。

放心,虽然我们聊到数学,但不会让你去做题。既然有电脑了,我们肯定不会自己去做计算的。毕竟一般来说你算的没他算的快。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

3 个赞

补充说明一下:

缩进分为2种情况,1)编程语言强制要求的,即缩进是语法的一部分,不正确缩进就会导致运行错误的(例如python);2)语法未强制要求,但是为了方便阅读,建议良好的缩进(js)

关于缩进用Tab键,但这不是一定,用偶数个空格表示也是常见的(虽然不少代码编辑器都可以自动把输入的Tab键转换成指定的缩进格式)

4 个赞

补充的很正确。

我知道这些内容之中有许多的疏漏,而且放在不同语言下也会产生许多不同的情况。有一些问题是故意没有讲,有一些是确实忘记了。

不过回到这篇内容的定位,就是在学习编程之前串一下理论知识,避免小白在阅读编程教程时,初期遇到大量未知的概念导致懵逼。所以肯定要选择简洁快速的走主线,丢失细节的问题无法避免,毕竟如果真的写得很详尽,必然会导致大量的读者读不下去。

不过十分欢迎大家进行补充,共同完善,以供朋友们在阅读主线之余,根据自己的情况进行扩展。

4 个赞

0015 隐藏的问题

在小学我们学习书写计算式的格式是:1+2 = 3。前面是计算式,后面是结果。那么等号就表示对前面算式的计算。

到了初中学习代数的时候,我们书写的方式是:a = 1+2。这时候再按照上面的思维去理解,就解释不通了。这里的意思是把等号后面的内容进行计算,然后把结果放到 a 里面。

我们在程序中,使用的是后面的这种格式。那么等号(在不同语言中有可能是不同的符号表达,但道理一致)并不是我们传统意义上的等号。那么你先忘掉过去所学过的东西,然后记住现在这个符号叫做赋值符。赋值符的含义是把后面的计算结果(值)赋给前面的变量或者常量。

在我的印象中,初中对于这个赋值的概念并没有讲的特别明确。因为在当时的知识体系下,等号还用作了许多其他的用途。而在代码中我们对这些内容进行了更加细致和清晰的设定。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

8 个赞

0016 关于数字

有整数,也有小数,我们称小数为浮点数,就是它具有一个浮动的小数点嘛。

这就是两种数据类型,整型和浮点型。为什么它们的类型不同呢?因为它们在计算机中进行储存的方法不一样,虽然存储起来都是 0 和 1 的组合,但读取出来可能是不同的内容,这就是类型的区别。这里就不具体展开了。

对于一个数据,计算机会分配一个内存空间进行存储,那么分配多大的空间,这是一个问题。为了确保空间不被浪费,所以一般分配一个较小的空间。但某些情况下这个数据比较大,可能小的空间就不够用了,所以要分配一个较大的空间。于是就又有了一种数据类型,长整型。而浮点型所对应的就是更高的精度,你可以理解为更大的内存空间允许书写更多的小数位数。

以上就是一个大概的理解。现在流行的语言很多都不会刻意的去区分数据类型了。只是你了解这些概念,对理解代码的运行还是非常有帮助的。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

6 个赞

摘录来自我最近学习的、十分优秀的js教程中关于“小数的数值计算不精确”的解释,毕竟不少语言里都有这样的情况。
示例为0.1+0.2在程序计算后不等于0.3(这的确是完全与数学不符)

一个数字以其二进制的形式存储在内存中,一个 1 和 0 的序列。但是在十进制数字系统中看起来很简单的 0.10.2 这样的小数,实际上在二进制形式中是无限循环小数。

换句话说,什么是 0.10.1 就是 1 除以 101/10,即十分之一。在十进制数字系统中,这样的数字表示起来很容易。将其与三分之一进行比较:1/3。三分之一变成了无限循环小数 0.33333(3)

在十进制数字系统中,可以保证以 10 的整数次幂作为除数能够正常工作,但是以 3 作为除数则不能。也是同样的原因,在二进制数字系统中,可以保证以 2 的整数次幂作为除数时能够正常工作,但 1/10 就变成了一个无限循环的二进制小数。

使用二进制数字系统无法 精确 存储 0.10.2,就像没有办法将三分之一存储为十进制小数一样。
IEEE-754 数字格式通过将数字舍入到最接近的可能数字来解决此问题。这些舍入规则通常不允许我们看到“极小的精度损失”,但是它确实存在。

我们可以看到:

alert( 0.1.toFixed(20) ); // 将0.1舍入到小数点后20位,得到0.10000000000000000555

当我们对两个数字进行求和时,它们的“精度损失”会叠加起来。

这就是为什么 0.1 + 0.2 不等于 0.3
不仅仅是 JavaScript

许多其他编程语言也存在同样的问题。

PHP,Java,C,Perl,Ruby,Python 给出的也是完全相同的结果,因为它们基于的是相同的数字格式。

源地址 数字类型 (学js强烈推荐这个教程)

5 个赞

补充的十分赞!

如果希望获得精确的计算,可以引入一些相关的功能库,插件,组件什么的。各种语言都有这方面的增强,或者说补丁。我没探究过具体的原理,但猜测大概是用性能换精确度。

1 个赞

0017 字符串

变量或者常量(以后我可能只说变量,但是常量基本同理,只是一起称呼的话比较拗口)不止可以用来代表数字,也可以用来代表一串文字。那么这样一串文字就被称呼为字符串。

"这样就是一个字符串"
str = "也可以把这个字符串赋值给一个变量"

那么为了表明这是一串文字,它不是代码,也不是代码中的变量或者其他什么的,所以我们要使用引号对它进行一下标记。一般来说使用双引号是通用的方法,在有一些语言中也可以使用单引号,然后两种引号可以交替使用。

这里要指出两个特例:

如果这串字符里没有内容,可以吗?这是可以的,它仍然是一个字符串,只不过字符串里面没有任何内容,这被称作为空字符串。写出来当然就是一对引号(""),里面没有任何东西。

如果引号里面是数字呢("1234")?这仍然是字符型,而不是数字类型,因为我们标记了这是字符串,所以我们应该把它当做文字看待,而不能因为里面写的是 1234 就把它当做数字。

复杂吗?不复杂,只是对概念的咬文嚼字而已


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

3 个赞

0018 简单的计算

a = 1+2*3/4-5

就很直观的四则混合运算,只不过乘号和除号和我们在纸上书写的方法有点区别,毕竟键盘上没有直接的乘号和除号。

计算的话也会先算乘除法,再算加减法,上面的计算结果是 -2.5。这里引出了一个概念,就是运算符的优先级,不同的运算符有不同的优先级。先运算优先级高的,如果优先级相同,就从左往右计算。这都是小学的概念啦。

然后也可以加小括号,来提升这部分运算的优先级。也可以多层小括号嵌套,对,没有小学里面那种中括号和大括号的设定,全都是小括号,但你可以随意套多少层。

然后需要注意的是,这些符号必须在英文状态下输入,就是英文半角符号。要不然是会出错的。

其实对于代码基本上除了注释和字符串里面的内容都应该在英文状态下进行输入。(当然这件事情并不绝对,比如现在许多语言的变量名其实是可以使用中文的,但真的十分不建议,也不需要什么特别的理由,就反复切换输入法,已经很让人烦躁,而且这会导致我们不小心在错误的状态下输入符号,就更加容易犯错。)


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

4 个赞

感谢作者耐心写这么有趣的编程科普文章,我觉得很有价值,不过要看目标读者。刚才在一个技术群里分享,大家给了一些反馈建议,我贴在这里供参考哈:


pimgeek: 大家觉得这位网友写的编程入门怎么样?

pimgeek: 你给身边的人推荐编程书籍或教程时,会选择哪种教材?后来真正学会编程的人如何反馈的 [偷笑]

E: [耶] 看需求 要是想找工作的直接去培训机构 如果是自己研究学习的 可以去看看大学里面的公开课入门

E: 自学的基本都凉凉 培训机构的倒是有一部分出来工作了[旺柴]

pimgeek: 你说的这个情况和我了解的相反,很多学编程学的特别好的人都说他们主要靠自学,培训班上过都觉得不太值 :flushed:

E: [旺柴]那是因为他们都是培训班出来的

M: 因为学得好的不用去培训班[偷笑]

M: 去培训班的反之

E: 你说的不对, 培训班学不到东西的

Z: 为什么要学编程[抠鼻]

E:但是培训班会让你进入这种编程学习环境,还有提供入职的培训。

E: 学习编程是门槛最低的…

E: 而且不需要前期资本

M: 初期,理论占30% 练习占70%的教程,不要纯讲理论的教程。

pimgeek: 完全同意

1 个赞

我是纯自学的。不过前期有一些 C 语言的基础(计算机二级

我也教过许多人,见到了许多失败的案例,分析了许多原因。

初期学习理论确实很重要,但想要学会动手是非常非常必要的。所以我后来的课程干脆就改成全动手了,反正只要肯坚持动手,总会学会的;而不肯动手的,必然是学不会的。

目前这个教程是纯讲编程的基础理论,但并不与动手冲突(只是需要动手的时间点,不在此刻)。虽然是理论层面的东西,但更偏重于入门了解方向。目标是先对这些概念有一定的了解和认识,有一定的熟悉和印象。所以讲的很浅显很粗糙,并不需要刻意的去记忆,看一下,听懂了就可以。

这样做的好处是在阅读实际的编程教程时,不会出现最初的茫然期,可以大概知道为什么要先学这样的知识,它在后面可能起到怎样的作用。而不是在阅读教程的前1/3时,都是拼命的去记忆那些基础概念,而完全不知道为什么要学习它们。

换句话说,就是在为编程入门这件事情绘制一个简易的地图,这样在真正上路之后就可以明白自己大概在什么位置,应该朝什么样的方向去前进。

5 个赞

0019 进行比较

等号不再是我们小学时所学到的那个等号,虽然它还可以用来计算出结果,不过是把右面的计算结果存储到左面的变量里。而且本身表示的含义是赋值(在不同语言下具体的符号可能有区别)。

但是在我们小学学习的范围内,等号并不只有计算这一个用途,它还可以用来比较左右数字的大小。表达的是左边的计算结果和右边的计算结果在数值上相等。

1 = 1

像上面这样书写,我们认为这个关系是成立的,或者说这是对的。

好了,结束了对小学知识的复习,开始学习新的设定。为了避免混淆,所以我们用两个或者三个等号来表示这种相等的关系:

1 == 1

两个等号表示数值上的相等,就是把两边的数据转换为同种类型,然后比较它们的值。如果是三个等号,则是“全等于”,表示两边的计算结果,无论在数值上还是类型上都是完全相同的。

那么类似的,还有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。再强调一下,这些设定基本上在各种语言下都有,但是具体的书写方法可能有细节上的差别。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

3 个赞

0020 成立与否

上一节我们说到可以比较两个计算结果之间的大小关系。那么比较的结果就是这个式子成立或者不成立。或者说这个表达式对与错。说到这里,大概你已经开始回忆到了一些初中代数中的基础概念,对,就是真与假。

即便你在初中对这个概念觉得很头疼,也不用着急。我并不会把这件事情搞得很复杂,只是我说说你听听,在想当初……不对,不是《八扇屏》。我说说你听听,听懂就够了。

如果我说一等于一,那么这件事情是成立的,你没有疑问吧?

如果我说一等于二,那么这件事情是不成立的,你也没有疑问吧?

我们把条件成立,标记为真,写作 true;把条件不成立,标记为假,写作 false(不同语言下可能有大小写上的区别)。

上面这句也很好理解吧,只是换了一个说法,但只有两种情况,还不至于让我们在认知上产生混乱。

其实现在你已经学会了一个新的数据类型,叫做布尔型(Boolean)。我知道这个名字会让人很迷惑,但这个问题我们不去思考。反正这种类型只有两个值,就是上面所说的这两个。通俗地讲,它就用来表示成立与否,或者说是与不是……反正正反两种情况,放到不同的语境下,选择你喜欢的表达方式,能帮助你理解就 OK。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

2 个赞

0021 与或非

可能你听说过标题中这个说法,它说的是三种关系,对,每一个字代表一种关系。

与(And),你也可以理解为“和”,我个人更愿意把它读作“并且”,因为这样读会更有助于我理解。比如我们知道有一种太阳能灯,它在天黑的时候感应到有人经过就会亮起来。那么它亮起来的条件是什么?天黑并且有人。前后两个条件都为真(都成立)的时候,它就亮起来了。有一个条件没有达成那它就不会亮。

这挺简单的吧,甚至都不算是一个逻辑问题,只是我们日常语言表达和理解的问题,稍微体会一下就可以很准确的抓住这种关系。

或(Or),我会把它读作“或者”。买东西想要付款,你得带着现金或者手机。如果有现金,就可以直接给他钞票;有手机就可以扫码。那么这两个条件达成一个就可以完成付款;都没带就得哭唧唧的求朋友给送过来了;那如果都带了呢,当然也可以完成付款,这并没什么毛病。

我们可以看出上面这两种关系说的是两个条件之间的关系。而下面这个说的是一个条件:

非(Not),我会把它当做“不是”或者“并非”,总之就是取一个相反的结果。那么比如我爱吃糖,如果是相反的结果就是我不爱吃糖。如果我本身是爱吃糖的(事实),那么第一个描述就为真,第二个描述就为假(相反的结果)。

初中时对于这三种关系所产生的结果,我们会去背一个真值表。但事实上只要你用合适的语言去将这个关系读出来,那么它的结果就自然而然的呈现出来了。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

3 个赞

0022 关于运算符

有几个数据参加运算就叫做几元运算符。所以加号就是二元运算符,因为它是把左右两个数据给加到一起。

上一章我们所说的三种关系叫做逻辑运算,前两个是二元运算,最后一个是一元运算。

然后还有一个三元运算符,我来简单的举个例子:

d = a ? b : c

显然我们是要把后面三个数据的运算结果存入前面的变量 d。后面的运算是这样进行的,如果 a 为真,那么计算结果就是 b,否则计算结果是 c。这个问题你只要读两遍这句描述就可以理解。当然实际的使用还是会涉及到一些后面的知识,所以在这里只要求读懂。

然后还有一些其他的运算符,比如说取余数,这还是比较常用的,但我们又容易忘掉这种操作。然后各种语言一般都会提供数学方法,用来进行一些更复杂的数学计算,但是在语法上差别可能比较大,我就不做举例了。


无论你在什么平台看到这些内容,如果你读了并且读懂了,那么就拍拍小老鼠或者点个赞或者留个言,总之让小老鼠感受到你的存在,这样会给他坚持更新的动力。如果你没有读慬,那么就在评论中留言,大家一起探讨。

就这样,就这么简单。

上一篇 | 返回目录 | 下一篇

6 个赞