简介:面向NOC全国中小学信息技术创新与实践大赛指导教师认证的真题文档,适合备赛教师、机器人及编程课程教研人员用于自测与查漏补缺。内容围绕认证笔试常见考点组织,覆盖for与while循环、二分查找、乐高EV3连接方式、灰度传感器组成、Python二维列表索引、递归关系式与递归出口、枚举与递推算法、Scratch列表应用,以及文字识别、语音合成、计算机视觉、自然语言处理和人工智能核心要素等基础知识,并穿插机器人组成、Arduino无源蜂鸣器与串口输出等实操判断。资源包共1个doc文件,大小约34KB,轻量便携,便于打印或逐题核对。已有6710人学习,说明其题目范围与解析思路具有一定参考价值。读者可借助逐题答案与简要说明梳理知识盲区,理解概念辨析和代码判断类题目的作答依据,适合考前集中刷题与错题复盘。
1. 一份真题能省下多少弯路:NOC 指导教师认证到底在筛什么
某导师在机构带信息技术兴趣班,学生说想报名参赛,他先去翻了几套 NOC 指导教师认证真题。第一反应是"杂":一会儿问 while 循环能不能不写条件,一会儿问乐高设备支持哪种连接,转头又跳到语音合成和 CMYK。他一度以为这是把七八门课的期末卷拼在了一起。
把知识点归拢一遍,其实并不散。这些题只围着三条线走:算法思维(递归、枚举、递推、二分查找)、硬件与编程基础(循环、列表、传感器、主控板)、人工智能常识(视觉、语音、语言)。三条线各占三分之一篇幅,正好对应一位指导教师要带孩子做的三件事——讲清思路、把东西搭起来、解释现象。这篇就沿这三条线走一遍,顺带把最容易记混的地方挑出来。
2. 递归、枚举、递推:三种"笨办法"差在哪
学科编程的人早晚会撞上这三个词。它们听着都像"解题套路",实际上各管一段:一个负责把大问题拆小,一个负责挨个试,一个负责顺着前一步推后一步。分不清它们,做题时容易把递归写成死循环,把枚举写成跑不完的长循环。
2.1 递归:先答应下来,再拆成更小的自己
查一个不认识的词,词典的解释里又有生词,只能接着查,直到查到一个你本来就认识的字为止。递归就是这个过程:把问题交给"规模更小的同一个问题",一直交到某个不用再交为止。
所以一道题想用递归解决,必须凑齐两样东西:递归关系式和递归出口。以前面真题里那道求和为例,f(n)=f(n-1)+n 是关系式,f(1)=1 是出口。写成代码就是:
def f(n): if n == 1: # 递归出口:最小规模直接给答案 return 1 return f(n - 1) + n # 递归关系式:把 f(n) 交给 f(n-1) 去办if那一支是出口,缺了它,函数会一直往下调用自己,直到报RecursionError。参数n每次减 1,规模一定在缩小,这是递归能停下来的另一个前提。
递归被反复考,是因为它有一个别的写法替代不了的优点:符合人的思维方式,程序也简洁。想表达"一棵树的所有节点",循环要写一堆栈操作,递归两行就完了。代价同样明显——层数一多就吃内存,遇到像斐波那契这种会重复展开的结构,不加缓存能把电脑算到风扇狂转,这算是初学者最常踩的坑之一。
2.2 枚举:把所有可能性排队点名
抽屉里找钥匙,最笨也最可靠的办法是一件件拿出来试。枚举就是这种思路:把候选对象排成一队,逐个检查是否符合条件。
它有三个要素,缺一不可——
| 要素 | 作用 | 举例(找 1 到 100 内同时被 3 和 5 整除的数) |
|---|---|---|
| 枚举对象 | 要挨个检查的东西 | 1 到 100 之间的整数 |
| 枚举范围 | 对象的取值范围 | range(1, 101) |
| 判定条件 | 什么算合格 | i % 3 == 0 and i % 5 == 0 |
for i in range(1, 101): # 枚举范围:把候选一个个取出来 if i % 3 == 0 and i % 5 == 0: # 判定条件:合格的才输出 print(i)循环负责"取",if负责"筛"。真题里把判定条件归到循环结构上,说的其实是枚举离不开循环这副骨架——没有循环,候选就取不完。
枚举的软肋在成本。范围一大,候选数量爆炸,再快的机器也跑不完。所以枚举范围怎么定、判定条件写多严,直接决定这道题是几秒钟出结果还是跑到天亮。这也是真题里那句"枚举对象、枚举范围、判定条件的选择影响解题思路"的由来。
2.3 递推:找到前后两步的那根线
上楼梯,你知道第一级怎么迈,之后每一级都是"上一级再迈一步"。递推不关心问题怎么分解,只关心相邻两项之间的那根线——也就是递推式。
同一个 f(n)=f(n-1)+n,用递推写出来是另一种样子:
n = 10 result = 1 # 起点,相当于 f(1)=1 for i in range(2, n + 1): # 从第 2 项一路推到第 n 项 result = result + i print(result) # 55递归是"从上往下问",一直问到最小规模再往回带答案;递推是"从下往上填",从起点一步步算到终点。前者程序短但压栈,后者代码长一点但只占一个变量。
递推的方向也不是死的。已知条件在起点、答案在终点,叫顺推;从结果倒着往回推,叫逆推。真题里那句"无论顺推还是逆推,关键是要找到递推式",说的正是这件事。它真正的价值在于把复杂运算化成若干步重复的简单运算——计算机最擅长的就是重复。
2.4 三种思路放在一起考的原因
因为它们共享同一个内核:把大问题变小。递归靠分解,递推靠连接,枚举靠穷尽。这三样刚好覆盖了中小学阶段能讲清楚、又不需要高等数学铺底的算法思想,再往上就是动态规划、图论那些得先有数据结构基础的内容了。
对比着看更清楚:
| 思路 | 一句话概括 | 典型写法 | 适合的场景 | 主要代价 |
|---|---|---|---|---|
| 递归 | 自己调用自己 | 函数内部调用本函数 | 结构自相似:树、分治、嵌套 | 栈深限制、可能重复计算 |
| 枚举 | 挨个试一遍 | 循环 + 条件判断 | 范围有限、答案可验证 | 范围一大就跑不动 |
| 递推 | 用前一项算后一项 | 单层循环 + 变量或数组 | 前后有明显数量关系 | 得先找出递推式 |
另一个常被忽略的考点是二分查找。它和上面三个不是一类,但常一起出现:二分查找要求被查内容必须有序,否则"取中间值比较、决定往哪半边找"这个前提就不成立。有序是它的入场券,不是可选配置。
3. 循环、索引、二维列表:编程基础题到底在筛什么
这一块的题目最像"送分题",也最容易翻车。原因不复杂:它们考的不是会不会写,而是你对细节有没有数——循环跑几次、下标从几开始、嵌套列表长什么样。这些细节,恰恰是带学生时被问得最多的地方。
3.1 for 与 while:数着走和看着走
for是数着走:事先知道要走几步,或者手上有一串东西要挨个过一遍。while是看着走:不知道走几步,只知道"满足条件就继续"。
这个差别直接引出了真题里那道判断:while 循环可以不设置循环条件——错。条件就是它的刹车,不装刹车,循环就变成死循环,程序卡在那儿不动,界面上什么都不出来,初学者最容易以为"电脑坏了"。
t = 1 for i in range(1, 11): # i 依次取 1 到 10,共 10 次 t = t * i # 每次把当前结果再乘上 i print(t) # 3628800,也就是 10 的阶乘range(1, 11)左闭右开,含 1 不含 11,所以循环体执行 10 次。这个"差一"是无数血泪经验的来源:想跑 10 次却写成range(1, 10),结果少算一次,答案怎么都对不上。
另一类题考的是自增写法。i++是 C 家族的习惯,意思和i += 1一样,每循环一次让 i 加 1。Python 里没有i++这种写法,得写i += 1——语言之间的这点差异,出题人很喜欢拿来设陷阱。
3.2 二维列表:行下标和列下标的门牌号规则
一维列表像一排信箱,二维列表像一张表格,每个格子得用"第几行、第几列"两个号才能定位。Python 里这张表格是嵌套写出来的:
lst = [ [1, 2, 3], # 第 0 行 [4, 5, 6], # 第 1 行 [7, 8, 9], # 第 2 行 ] print(lst[1][2]) # 6,人话里的"第二行第三列"索引从 0 开始,这是硬规矩。所以口语说的"第二行第三列",代码里要写成lst[1][2]:行号列号各减 1。记不住就在心里默念一遍"门牌号从 0 起"。
还有一个格式坑:[1,2,3][4,5,6][7,8,9]这种连写不是三行三列,它会被理解成"对列表[1,2,3]取下标[4,5,6]",直接报类型错误。想表达表格,外层必须再套一对方括号。
什么样的数据该用二维列表?看它有没有"行"和"列"两个维度。存一个班 10 个同学的名单,一维列表足够;存 10 个同学 3 门课的成绩,才需要二维。选错结构,后面取值、遍历全跟着别扭。
3.3 从 print 到 Python 的性格
在屏幕上打出一句话,代码是print("你好!")。引号不能少,少了 Python 会把这几个字当成变量名去查,查不到就报NameError。中文引号也不行,得用英文半角——这类报错在初学阶段出现频率高得离谱。
Python 的性格可以用几个词概括:语法接近自然语言、靠缩进划分代码块、标准库和第三方库都多、跨平台。真题里"代码比较复杂"不是它的特点,恰恰相反,它是靠"读起来像伪代码"起家的。
顺带说清一个常被问到的概念:编程语言可以简单理解为一种计算机和人都能识别的语言。人写出来的是源码,机器跑的是指令,中间靠解释器或编译器做翻译。这一点和图形化编程的定位正好接上——Scratch 那种拖积木的方式,本质上也是在一个"人更容易表达"的层面上工作,只不过把语法换成了拼图。
4. 机器人那部分:传感器、巡线和图形化编程的取舍
机器人题在整张卷子里占比不小,但它考的东西特别实在:一个传感器怎么工作、一辆车为什么会画龙、一块板子上哪个引脚该接哪。这些不是背书能解决的,得在桌面上真的摆过一次才踏实。
4.1 灰度传感器:一颗发光二极管加一颗光敏电阻
拿手电筒照墙面:白墙反光刺眼,黑布照上去几乎没反应。灰度传感器干的就是这件事——发光二极管负责照,光敏电阻负责接反射回来的光。
白色反光多,光敏电阻阻值变小,读数变大;黑色反光少,阻值变大,读数变小。所以在一辆巡线小车上,读数大意味着"脚下是白的",读数小意味着"脚下是黑的"。就这两个元件,构成了机器人感知世界的第一只眼。
机器人的整体结构可以拆成四块:控制系统(大脑)、感知系统(传感器)、驱动系统(电机和驱动电路)、执行系统(轮子、机械臂)。真题里对机器人的定义也落在"可编程、能执行某些操作或移动动作的自动控制机械"上——两个关键词,一个是"可编程",一个是"自动"。
硬件连接里有几个容易记岔的点:EV3 支持 USB、蓝牙、Wi-Fi,但不支持红外连接;有些主控板反过来,红外遥控是标配。这类"哪家支持哪家不支持"的细节没法推,只能记,建议按设备画一张对照表贴在手边。
4.2 巡线调参:光值差为什么会翻车
巡线小车最常见的配置是左右各一个灰度传感器。左白右黑的时候,左边读数大,两者一减,差值是正的,说明车头往白的那边偏了。这时候的处理很直接:左马达加速、右马达减速,把车头掰回线上。
麻烦在于掰多少。真题给了一组连续测量的光值差(5、3、1),理论上收敛得很漂亮,但下一个周期完全可能反弹回 5。这说明什么?说明这一脚油门给大了——速度调整的幅度超过了实际需要的修正量,车子会在线的两侧来回摆动,画出蛇形轨迹。
解决办法是把"光值差的变化量"也纳入计算,乘以一个系数一起算进速度调整里。翻译成代码大概是这样:
Kp = 0.8 # 比例系数:偏得越多,修正越猛 Kd = 0.3 # 变化量系数:抑制来回摆动 last_error = 0 error = left_value - right_value # 左右光值差,正数表示偏白 delta = error - last_error # 本次与上次的差值,反映摆动趋势 turn = Kp * error + Kd * delta # 差值参与修正,压住震荡 last_error = error left_speed = base_speed + turn # 左轮加速 right_speed = base_speed - turn # 右轮减速Kp管反应速度,调大反应快但容易画龙;调小车子迟钝,弯道上直接冲出去。Kd管"刹车感",专门对付那种来回摆的振荡。这段逻辑就是常说的 PD 控制,比完整版少了个积分项,对巡线这种场景够用了。
调参这件事没法一次到位。灯光明暗、地面材质、电池电量都会影响读数,同一套参数在教室好使,到走廊地毯上就得重调。带学生的经验是:先把Kd归零,只调Kp调到勉强能跑,再慢慢加Kd把摆幅压下去。
4.3 图形化编程的短板与硬件细节
Scratch 和 EV3 的积木式编程降低了入门门槛,孩子拖几下就能让车动起来。但短板也很明确:功能没有字符编程全。想做复杂的数据处理、接入外部设备、调用现成的算法库,积木就力不从心了,最终还是得回到文本代码。
有个说法要纠正:图形化编程环境一般都不支持自定义模块——错。主流的环境基本都允许把一段积木打包成"自制积木",重复使用的逻辑一样能复用。这是常被误解的一条。
其他零碎的硬件细节,考点密度很高:
- EV3 里给程序命名,不能用汉字或特殊字符,得用字母数字下划线那一套。
- Arduino 驱动无源蜂鸣器,两个引脚分别接主板的 5V 和 GND。无源蜂鸣器给电不响,必须给频率才响,这是它和有源蜂鸣器的根本区别。
- 发声用
tone(pin, frequency, duration),三个参数分别是引脚、频率(赫兹)、持续时间(毫秒)。duration是响多久,不是频率本身,这个位置最容易记混。 - 串口输出初始化写
Serial.begin(9600),括号里是波特率,电脑端也得设成同一个数,不然收到的是乱码。 - 数码管分共阴共阳。公共端为阴极时,段引脚给高电平(真值为 1)点亮。
int buzzer = 8; // 蜂鸣器接数字引脚 8 void setup() { Serial.begin(9600); // 串口速率 9600,电脑端要一致 tone(buzzer, 1000, 500); // 1000Hz 响 500 毫秒 } void loop() { Serial.println("alarm"); // 串口打印,方便观察程序是否跑到这里 }代码里的tone只调一次就结束,因为setup只执行一遍;想让它反复响,得把调用挪到loop里,或者加个延时做节奏。这类"代码放哪儿"的问题,比语法本身更容易出错。
5. 人工智能考点里的易混区别:视觉、语音、语言不是一回事
AI 这块的题目全是选择题,看着最省事,实际是失分重灾区。原因只有一个:这些名词长得太像了。都是"识别",都是"智能",一字之差,答案就反了。
5.1 易混一:计算机视觉和语音识别
易混在哪:两个都叫"识别",中文翻译一模一样。
为什么混:日常生活里说"识别一下",可能是扫脸,也可能是说话,语境没区分。
怎么区分:看输入是什么。输入是图像或视频,属于计算机视觉;输入是声音波形,属于语音识别。微信里把语音转成文字,用的是语音识别,跟图像识别没有半点关系。反过来,要让计算机"看文识字",得走文字特征提取、文字定位与分割、文字识别这三步,全程处理的是图像,归计算机视觉管。
记住一个锚点:计算机视觉的所有应用,起点都是一张图或者一帧画面。
5.2 易混二:语音识别、语音合成、自然语言处理
这三个是最容易连环出错的一组。可以把机器想象成一个人:
| 技术 | 干的活 | 类比 | 典型应用 |
|---|---|---|---|
| 语音识别 | 声音变文字 | 耳朵 | 语音输入、语音转写 |
| 语音合成 | 文字变声音 | 嘴巴 | 导航播报、有声阅读 |
| 自然语言处理 | 文字变意思 | 大脑 | 机器翻译、智能音箱听懂指令、口语机考评分 |
智能语音技术包括语音识别和语音合成两部分,一个进一个出。人脸识别再准,也没法让计算机开口说话——那得靠语音合成。
语音合成里有个方法叫波形拼接法,思路类似活字印刷:把录好的音块存起来,需要哪句就挑哪块拼上去。这个类比真题里考过,记住"活字"两个字,波形拼接的原理就顺下来了。
自然语言处理处理的不是声音也不是图像,而是文字背后的语义。机器翻译把一种语言的意思搬到另一种语言,智能音箱听懂"把灯关掉"并执行,英语口语机考给发音打分,全都落在这个范畴。
5.3 易混三:位图和矢量图、RGB 和 CMYK
图像这块有两组对照,考试出现频率极高,但逻辑其实很朴素。
位图是像素点阵拼出来的,放大到一定程度就出现马赛克;矢量图用数学公式描述形状,放大多少倍都清晰。判断标准就一条:缩放后糊不糊。
RGB 是加色法,用红绿蓝三束光叠加,全叠满变白,显示器、手机屏都用它。CMYK 是减色法,青、品红、黄、黑四种油墨叠印,叠得越多越黑,印刷行业用它。题目里出现"色光减色法"这种说法,指的就是 CMYK。顺带一句,红色属于暖色调,蓝色属于冷色调,这条几乎每年都有人记反。
5.4 易混四:专家系统不是"专家联合开发的软件"
看到"专家系统"四个字,很多人脑子里浮现的是一群专家坐在会议室里写代码。这个联想是错的。
专家系统真正的结构是:把某个领域专家的知识和判断经验,提炼成一条条规则存进知识库,再配一个推理机,遇到问题时按规则推导出结论。它模拟的是专家的判断过程,不是把专家本人请进程序里。判断一道题对不对,看它有没有提到知识库、推理机、规则这些词。
5.5 易混五:图灵测试测的是"像不像人"
图灵测试的设计很巧妙:一个人隔着屏幕跟对面聊天,如果分不清对面是人还是机器,就认为这台机器具备智能。它测的是外在表现,不问内部原理。
争议也在这儿——会聊天不等于会思考,会模仿人的语气也不代表真的理解。这个争论从提出到现在就没停过,但作为概念题,只要抓住"以对话判断是否像人"这个核心,选项就好排除了。
还有一个小坑顺手记一下:声音的高低(音调,由频率决定)和整体音量(响度,由振幅决定)是两回事。说"声音高"指音调,"声音大"指音量,混着用就会判断错。
最后补一个常考的迭代方向:人工智能的核心要素是数据、算法、算力;新一代人工智能的核心要素迭代成了大数据、超级算法和云计算。三对三,顺序和用词都别调换。
6. 什么时候该刷真题,什么时候别死磕
真题的价值在"照镜子",不在"背答案"。判断自己该不该花时间,可以看三种情形。
第一种,完全没接触过硬件。桌面上没摆过主控板,没插过传感器,看到"灰度传感器由发光二极管和光敏电阻组成"只能死记。这种情况下刷真题效率很低,先动手搭一辆能跑直线的车,把电机、电池、轮子、主控板连一遍,再看题会顺畅得多。
第二种,已经在带学生,但知识点是零散捡来的。这类人最适合拿真题做一次系统体检:一口气做完,把错题按三条线归类,哪条线错得多就去补哪条。错在算法,回去把递归、枚举、递推各写一遍;错在硬件,翻出设备手册对一遍引脚;错在 AI 概念,把第 5 章那几组对比表抄一遍。
第三种,只想应付考证。那就别指望真题能省掉理解过程。题目会换,2019 年考 EV3 的连接方式,明年可能换成另一块板子;但"传感器怎么工作""递归为什么需要出口"这些底层逻辑不会变。
| 你的状态 | 建议做法 | 时间投入参考 |
|---|---|---|
| 零硬件基础 | 先搭一次实物,再刷题 | 动手 2 到 3 天,刷题半天 |
| 有教学经验、知识零散 | 整卷做一遍,按三条线归类错题 | 整卷 2 小时,补漏 3 到 5 天 |
| 只为通过认证 | 重点看概念辨析和易混点,别背答案 | 集中 2 到 3 天 |
有两件事别做。一是把真题当唯一材料——它只有题干和答案,没有推导过程,遇到不会的题还是得回头查原理。二是跳过动手环节直接背参数,比如tone的三个参数、Serial.begin的波特率,背下来很容易,用的时候照样接错线。
我自己的习惯是:每做完一套,把错题按"这是概念不清还是手生"标一遍。标成概念不清的,当天必须找到对应的原理段落读完;标成手生的,隔三天再做一遍同类题。这个动作看着笨,但比反复刷同一套卷子管用得多。从那以后我每次碰到新题,都强制先问一句"这考的是哪条线上的东西",再动笔选答案,正确率反而稳了。
希望这些能帮到你,少走几段弯路。
本文还有配套的精品资源,点击获取