图中的【思维】,就是我们需要的各种需求,也就是想要计算机帮我们做什么事。
图中的【表达】,就是计算机能够看懂的指令 0和1。
而如何将思维表达出来,让计算机执行,就需要我们(程序员)来完成了。
这也就是丫姐要谈的第二个问题,编程的宏观定义。
1.2 编程的概念
用一句话来解释【编程】就是:编写出让计算机能够执行某件事的代码。
再详细一点描述,就是为了完成某项需求,将解决问题的步骤,用计算机能够理解的语言写成指令, 这就是【编程】。
所以,我们可以看出编程共有这么几个部分:
1)需求--想要解决的问题或想要完成的任务;
2)把这个需求变现成计算机能够读懂的代码;
3)计算机执行代码,实现需求。
那接下来请你思考:编程中最重要的【核心】是什么呢?
对,就是上述我们提到的第2个部分,解决了这个问题,也就成功了80%。
至于怎么解决嘛,嘿嘿,不要着急,我们先来稍作休息,喝喝水,放松一下精神,进入下一关。
第二关 从生活视角理解编程欢迎来到第二关,本关我们继续来聊聊上一关卡末尾留下的悬念。
那就是,如何将【需求】一步一步编写成计算机能够读懂的代码,也就是【逻辑】。
其实,在我们对编程领域的东西知之甚少的时候,大可不必去看一些专业性强的科普文章,因为里面的专业术语会让你觉得晦涩难读,产生畏难情绪。
所以,贴心的丫姐选择使用我们生活中最常见的场景带你去体会一下,什么是【逻辑】?什么是【步骤】?什么是【流程】?
2.1 计算机中的【步骤】与【逻辑】
场景1:假如,今天早上我想吃煎鸡蛋,但是我并不知道怎么做。于是我找了一份菜谱,如下:
从菜谱中,可以看出,只要我们按照操作菜谱的【步骤】完成,最后就应该可以得到一份煎鸡蛋。
这个菜谱也可以理解为, 只需要按照这个12345来, 最终就会完成相应的任务。
但此时肯定会有小盆友有疑问:不对啊,我照着做了也没做好这个煎鸡蛋啊,反而成了黑暗料理...为什么呢?
哈哈,这个疑问是正确的。因为我们光有【步骤】还不行,还需要有【逻辑】。
那什么是【逻辑】呢?我们一起来看场景2。
场景2:记录我的一天都做了什么。日记如下:
从日记中,我们可以看出有三种逻辑,分别是顺序,分支和循环。
顺序结构:先做什么,再做什么。
比如,早晨起床,先刷牙,再洗脸。
比如,日常上班先打卡,到工位,再打开电脑,写代码。
分支结构:判断条件,选择条件。
比如,没有雨就不带雨伞,下雨了就带伞。
比如,碰到上司,就说领导早上好(谄媚表情);碰到同事,就说吃早饭了没(微笑)。
循环结构:反复做一系列的操作。
比如,代码出了问题,要调试,修改,再调试,再修改,再调试,再修改......直到问题解决。
那么当【逻辑 步骤】时,就组成了一个新的名词,叫【流程】。
所以,在煎鸡蛋的场景中,有小盆友疑惑鸡蛋做不成是对的。
因为我们还需要【逻辑判断】,比如,煎鸡蛋是中小火还是多大火?多少算是适量酱油?如果每一个步骤上都加上该有的逻辑,最后程序就不会出错。
2.2 计算机中的【流程】
好,下面就是如果让计算机帮你煎鸡蛋,会是什么样的流程。
你会发现流程十分严谨,它并不像我们看的菜谱一样随意。
严谨是好的吗?当然是,如果不严谨,你银行账户里就可能随便丢钱,到时候,你可是要哭鼻子的哦~~
好,以上就是丫姐用两个生活场景给你解释了-- 编程都是做些什么。
我们再来总结一下:编程,其实就是将我们的需求化为一个个【流程】,写到计算机中,让计算机帮我们执行。
怎么样?是不是很通俗?想不想继续挑战一下?
在程序员的眼中,什么是编程呢?请看下一关卡。
第三关 从专业角度认识编程欢迎来到第三关,本关丫姐会再说一说程序员眼中的编程,也就从专业角度看编程是什么。
温馨提示:本关卡涉及到的专业名词较多,不过不要担心,丫姐都会给你一一解释清楚...
3.1 数据结构
言归正传,有一本书的名字叫《Algorithms Data Structures = Programs》,书名其实就是专业角度的编程定义。
翻译成中文就是《算法 数据结构=程序》,这里提到了两个专业名词,【算法】和【数据结构】。
首先,我们先来说说什么是【数据结构】。
数据结构其实就是数据存储的方式。所谓 存储 就是将数据保存下来,以防丢失。
下面我们不妨用几个生活中的例子来理解一下:
火车站售票口排队的人群
旅客站成一队等待买票,排最前面的,先能买到票。站在最后面的,最后能买到。
如果我们把旅客看作是数据,这种数据结构就是【队列】。
特点是:先进先出。
小时候玩的玩具枪
玩具枪可以上一颗颗圆圆的子弹,向弹夹里装子弹的时候,是一颗一颗压下去的。但是射击的时候,最后压进去的子弹最先出来,最先压进去的子弹最后才出来。这种结构就是【栈】。
特点是:先进后出。
电脑的文件夹
文件夹可以包含有多个子文件夹和文件,子文件夹又可以再包含下一层的子文件夹和文件。
这个结构可以理解为【树型结构】。文件是树的“叶子“节点,子文件夹可以是树的分支,也可以是”叶子“。
特点是:分支和层级关系。
这时候,肯定有小伙伴又有疑问了,要这么多数据结构干什么?有什么用吗?
答案是肯定的,因为数据结构的存储方式不同,就决定了要执行任务的顺序以及速度不同。如果使用合适的数据结构会让你的程序性能达到最优。
3.2 算法
现在,我们再来说说【算法】。
算法,就是能够解决问题的方法。
这样说似乎有些抽象,我们举个例子来说,比如,我们要去人群里面找“穿蓝衣服、白裤子的男人“,人群人数很多,一眼找不到。那么要怎样找到呢?
有很多种方法,这里丫姐简单来说两种: