Skip to content
难度基础(★)
建议时长45分钟

17.1.4 程序设计语言的基本成分

程序语言至少要回答三个问题:数据是什么,能对数据做什么,执行顺序如何组织。对应到考试,就是数据类型、运算表达式、控制结构和函数/过程。

数据类型:给值划边界

数据类型规定了值的集合、存储方式以及允许的运算。比如整型可做整数算术,布尔型用于逻辑判断,字符型表示字符,指针保存地址。类型系统的意义不是“给变量贴标签”这么简单,而是让编译器能在程序运行前发现一部分错误。

类型含义常见误区
整型表示整数,如 intshortlong范围有限,可能溢出
浮点型表示近似实数不适合直接做精确相等比较
布尔型表示真/假常用于条件表达式
字符型表示单个字符与字符串不是一回事
枚举型在有限命名值中取一个本质是受限取值集合
指针/引用指向对象或地址修改目标对象可能影响外部数据

类型转换

表达式中不同类型混合运算时,语言通常会进行隐式转换。例如 int + float 往往先把整数提升为浮点数再计算。赋值时还要看左侧变量类型,可能发生截断或精度损失。

text
int a = 3;
float b = 2.5;
a + b  ->  3.0 + 2.5  ->  5.5

考试问“表达式结果类型”时,不要只看第一个操作数,要看运算规则和赋值目标。

控制结构:程序流程的三种骨架

控制结构作用例子
顺序按语句出现顺序执行先输入,再计算,再输出
选择根据条件选择分支ifswitch
循环满足条件时重复执行forwhile

递归不是基本控制结构,它是函数调用的一种组织方式;函数也不是控制结构,它是把一段可复用逻辑封装为可调用单元。

为什么只强调三种基本控制结构

结构化程序设计认为,顺序、选择、循环足以表达常规算法流程。它减少了随意跳转带来的混乱,让程序更容易验证和维护。后来的面向对象、函数式、响应式等范式继续提高抽象层次,但底层执行流仍离不开这些基本组织方式。

小练习

题:顺序、选择、循环、递归中,哪一个不是结构化程序设计的基本控制结构?

答:递归。递归依赖函数调用栈,是一种算法组织方式,不是三种基本控制结构之一。

自查

  1. 数据类型为什么能帮助编译器发现错误?
  2. int + float 的结果为什么通常是浮点类型?
  3. 函数、递归和控制结构的边界分别在哪里?