# 3.2 Decompose complex real-world problems into manageable subproblems that could integrate 把复杂的、真实世界的问题分解成可控的小问题

At any grade level, students should be able to break problems down into their component parts. In the early grade levels, students should focus on breaking down simple problems. For example, in a visual programming environment, students could break down (or decompose) the steps needed to draw a shape. As students progress, they should decompose larger problems into manageable smaller problems. For example, young students may think of an animation as multiple scenes and thus create each scene independently. Students can also break down a program into subgoals: getting input from the user, processing the data, and displaying the result to the user. Eventually, as students encounter complex real-world problems that span multiple disciplines or social systems, they should decompose complex problems into manageable subproblems that could potentially be solved with programs or procedures that already exist. For example, students could create an app to solve a community problem that connects to an online database through an application programming interface (API).

所有阶段的学生都应该能够将问题分解成小问题.

  1. 低阶段的学生应该能够分解简单的问题. 比如使用可视化编程进行绘图[1], 学生能够分解绘制图形所需的步骤
  2. 随着学生成长, 他们应该能够对更大的问题进行分解. 比如说, 学生能够将一段动画分解成多个场景, 从而分别创建这些场景. 再比如说, 学生能够将程序分解成子问题: 从用户获取输入、处理输入的数据、将处理结果展示给用户
  3. 最终, 当学生面对跨越多个学科或者社会系统的复杂现实问题时, 能够将其分解成可控的、能够被已有程序解决的子问题. 比如说, 学生面对一个现实世界的问题, 可以创建程序, 调用已有的 API 接口来解决

  1. 比如使用 Scratch 编程语言的“画图”模块进行绘图 ↩︎