编程起步:(一)告诉机器一个功能

编程起步:(一)告诉机器一个功能

本文约1900字,初学者建议阅读时间30min。某群群友专用

如果已经会用键盘和鼠标,加上中文、英语或数学还不错,初中生已经够格“用”编程。

他们已经对程序有所了解:鼠标左键对应不少程序,A键代表输入“A”,Ctrl+C对应“复制”的功能……

程序有些像给机器的文章,像让电脑执行的“解答过程”。主三科之一有一定基础,加上有学习编程的动力,“用”编程的目标还是很容易达到的。别说太复杂了,鼠标也很复杂,可多少人会用鼠标,但不懂鼠标内部构造呢?就算不懂编程的很多东西,也不影响用编程。

说到用编程的动力,或说你认为用编程有多重要。大家都觉得钱很重要,因为那是资产,是人躺着也能发挥作用的东西。程序也是,程序甚至能做到“一人成军”。

当然,现状还是要面对的,先实现一个小目标,告诉机器一个功能吧。

准备

接下来最好有一台电脑,打开浏览器,调出开发者工具(Windows机按F12),点击左上角“控制台”标签页。

如果有一堆红色的英文,忽视即可;也可调用“清除”功能处理:点输入框,输入`clear()(扩号是英文小括号),按回车键。

clear()功能展示

写第一个功能

接着告诉控制台第一个功能x => x * x,按回车。就是一个简单的求平方功能。

控制台展示

可以看到,控制台会返回一个值,这个值就刚好与刚才你告诉浏览器的一致。

x是这段功能的输入x * x输出,箭头=>用来分隔,可以方便阅读,x => x * x

练习编程,要严格注意每一个新的概念、注意细节,不然后面欠债会越来越多。

这里的概念有“输入”、“输出”,“值”,都贯穿本文;细节主要是方便阅读,除了分割符,=>*两边都有空格,主要是为了好看。虽然看起来不太重要,但是这是个挺好的指标,看初学者对练习编程够不够细心,受到的指导够不够规范。而且这种看似不重要的细节有很多,积累起来就不是细节了,这点都缺漏忽视的话,后面忽视的地方会更多,以至于难以挽回。

如果你比较细心,可能会注意到打完函数后、按回车键之前,控制台返回值那一行有个 f f f​若隐若现:

控制台的f

f f f就是“function”,英语有“功能”、“函数”等意思。

那么,怎么用这个“功能”呢?(x => x * x)(2),函数两边的括号是为了避免歧义。这回在让控制台求值之前,先自己一步步求出

  1. (x => x * x)(2)调用函数,输入为2
  2. (2 => x * x),把2代入输入;
  3. (2 * 2),把该函数输出中的x全换为2
  4. 4求值完毕。

一步步求值的练习可以帮助初学者快速熟悉程序语言,也为后续彻底理解“功能”这个概念搭好基础。

练习:

  • 输入4的时候,输出值是什么?请一步步求值;
  • 输入16的时候,输出值是什么?请一步步求值;
  • 功能(y => y * y)的输入为4的时候,输出值是什么?

名字

功能的名字

做上述练习的时候,老是要写多一次功能主体,如(x => x * x),有什么方法避免这种重复动作呢?

打个比方,假设你偷懒没做上面的练习,总不能一直用“村里最靓的但不做练习那个”叫你吧?会显得啰里啰唆。

假设你名字叫小强,用程序来表示:let 小强 = "村里最靓的但不做练习那个",以后就能用小强叫你了。

回到功能x => x * x,在控制台输入let square = x => x * x——let开头,是为了告诉控制台这句话是用来命名的;square就是名字,可以换成很多其他符号,比如f=是分隔符,可以读作”被赋值为“。这句命令就是”让square被赋值x => x * x“,也就是square是这个函数了。

控制台返回了什么undefined。因为这款编程语言要求每句命令都要值,但let这种”命名“命令实在是没有值,只好发明一个undefined来填空,记住就好。

如何调用square呢?跟调用它代表的函数一样,如:(square)(2),但之前为何要加括号来着?这里括号去掉可以么?

名字的选择其实可以很随意,你可以用square也可以用f,正如就算你不叫小强了,也是”村里最靓的……“。如果命名对你太难,难到学习进度那种,初学的时候可以先忽略,但要注意使用合理的名字是细节的一部分。

如果你喜欢中文,可以把名字换成”平方“,如let 平方 = x => x * x,调用要相应地改为平方(2)之类;

如果你喜欢数字,你可以试一试。对结果的解释不在本文范围。

如果你认真地阅读并练习本节,控制台可能有如下记录:

控制台记录

输入值的名字

同为求平方,(x => x * x)(y => y * y)有什么不同?如果你做了前面对应的练习,可能会说没什么区别,为什么?

提示:”就算你不叫小强……“

与函数名类似,x可以换为可读性更高的名字,如input_number,输出部分的名字也要相应替换。

今日小结

  • 编程就是跟机器沟通,要调用或”告诉“功能;
  • 概念
    • 编程的功能,function,一般被叫做”函数
      • 功能构成:输入、输出
      • 调用、求值与返回值
    • 名字
      • 命名
      • 重新命名
      • 使用名字
  • 代码
x => x * x
(x => x * x)(2)
let square = x => x * x
let 平方 = x => x * x
平方(2)

后面你还要应对更复杂的输入和输出,好好消化跟休息吧。

思考题:

  1. 本文的”功能“一般被叫做”函数“,高中数学的函数一般这样赋值 f ( x ) = x 2 f(x) = x^2 f(x)=x2​,这样调用 f ( 2 ) f(2) f(2),你认为这样有什么好处,有什么坏处?​
  2. 多试试在别的网站,按个F12打开控制台。不要关掉,一段时间后来看,可能会多出一些东西。忽略看不懂的地方,找你看得懂的。比如这篇文章写作的网站:
    某网站控制台输出

如果你足够细心,会注意到let 小强 = "村里最靓的但不做练习那个"不属于输入值,也不属于函数。那是这个系列尾声会讲的东西。现在不懂没有关系。

本文多次用的“就算你不叫小强”,其实有更文雅的表达:“玫瑰不叫玫瑰,依然芳香”,莎士比亚说的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值