9. 程序设计语言 笔记

1 程序设计语言分类

  • 机器语言
    • 特点:直接、高效但可读性差,可移植性差
    • 应用:计算机直接识别执行,无需翻译
    • 例子:使用二进制指令,如 0000 1000 0001 00000 表示从内存取数等操作
  • 汇编语言(符号语言)
    • 特点:使用助记符号代替二进制,一定程度提高了可读性
    • 汇编:使用汇编器将汇编语言程序转换为机器语言的过程
    • 例子:程序实现两个整数相加,如 LOAD X 表示从内存单元 X 中取数并置于寄存器中
  • 高级语言
    • 特点:可读性好,通用性强,独立于特定硬件
    • 编译:通过编译器或解释器转换为机器语言或字节码的过程
    • 例子与应用领域
      • FORTRAN:主要用于科学计算
      • COBOL:主要用于商业领域
      • C/C++、Python、Java:适应不同应用领域
      • 例子:sum = x + y
  • 发展历程
    • 从机器语言到汇编语言,再到高级语言
    • 不同阶段语言的发展适应了计算机技术的进步和应用需求的多样化
  • 总结
    • 程序设计语言的发展反映了人们对计算机程序可读性、可移植性、以及开发效率需求的提高
    • 高级语言的出现极大地促进了软件开发的普及和效率,适应了不同应用领域的需要

2 程序设计过程

  • 编程基本步骤
    • 编辑源程序
      • 使用高级语言
      • 文本文件形式,方便阅读和修改
    • 翻译源程序
      • 目的:转换为机器语言表示的可执行程序
      • 方法:解释方式和编译方式
  • 解释方式
    • 流程
      • 编辑源代码,形成源程序文件
      • 解释器逐条解释并执行语句
    • 特点
      • 速度慢,便于观察调试
  • 编译方式
    • 流程
      • 编辑源代码,生成源程序文件
      • 编译程序将源程序转换为二进制代码
      • 生成的目标程序可直接执行
    • 特点
      • 一次性完成翻译
      • 执行速度快,无需源代码和编辑器
    • 扩展功能
      • 高级语言具有不同的扩展功能(如 C++ 为CPP,C 语言为 .c)
  • 翻译工具
    • 解释器:针对解释方式
    • 编译器:针对编译方式
    • 连接器:用于连接编译得到的目标程序和系统库文件
  • 两种方式主要区别
    • 编译方式
      • 直接执行目标程序,速度快,不需源代码和编辑器
    • 解释方式
      • 需要源代码和解释器,可跨操作系统执行,可移植性好

3 程序设计方法

  • 结构化程序设计
    • 定义: 按照层次化、模块化的方法设计程序,提高可读性和可维护性
    • 主要思想
      • 程序模块化: 将复杂程序分解成独立功能的模块
      • 语句结构化: 使用顺序结构、选择(分支)结构、循环结构
      • 自顶向下、逐步求精的设计过程: 将复杂问题分解为简单问题,逐步细化
      • 限制转向语句: 比如 goto 语句,应避免滥用,保持程序流程规律
    • 优点
      • 易于理解和维护。
      • 提高编程效率,降低开发成本。
    • 支持语言
      • 结构化语言: Python、C 语言等。
  • 面向对象程序设计
    • 定义: 侧重于通过建立对象及对象间联系来完成计算任务
    • 基本概念
      • 对象: 由属性和方法构成
      • 消息: 通过向对象发送消息来触发动作
      • 类: 具有相同属性和方法的对象的抽象
      • 封装: 隐藏实现细节,提供简单接口
      • 继承: 用于描述类之间的共同性质,实现代码重用
      • 多态: 相同操作作用于不同对象产生不同结果
    • 优点
      • 具有良好的可读性和可维护性。
      • 实现代码重用,提高编程效率。
    • 支持语言
      • 面向对象语言: Java、C++,Python 等

4 程序设计语言基本要素

  • 数据类型(以 Python 为例)
    • 基本数据类型
      • 数字类型
        • 整数类型
        • 分数类型
        • 浮点数类型
      • 字符串类型
        • 单引号、双引号表示
        • 包括单行或多行字符串
    • 构造数据类型
      • 是用户定义数据类型
      • 由基本数据元素组合而成
  • 数据处理
    • 常量和变量
      • 常量:程序执行期间不变的量
      • 变量:存储信息的部分,有名字(变量名)
    • 表达式
      • 组成:常量、变量、函数、运算符、括号
      • 功能:通过特定运算算法表达计算式
    • 运算符
      • 数值运算符
        • 加法、减法、乘法、除法
        • 计算类型为最宽的类型,数据类型转换关系:整数->浮点数->复数
      • 字符串操作
        • 连接、索引、切片
      • 关系运算符(比较运算符)
        • 比较两个操作数:相等、不等、小于、大于等
      • 逻辑运算符
        • 非(not)运算、与(and)、或(or),优先级由高到低,结果为逻辑值
  • 输入输出
    • 数据输入
      • 使用 input 函数,获取用户输入。输入默认为字符串类型,需转换为所需数据类型
      • 使用 eval 函数,以 python 表达式的方式解析并执行字符串,例如 eval(“1+2”)
    • 数据输出
      • 使用 print 函数,输出字符信息或变量值
      • 使用 format 函数,格式化输出,支持占位符
  • 流程控制语句
    • 选择结构
      • Python 中提供单分支、二分支和多分支语句
      • if、else、elif 关键字用于条件判断
      • 根据条件选择执行路径
    • 循环结构
      • 包括确定次数的循环和非确定次数的循环
      • 确定次数的循环
        • 使用 for 语句,遍历字符串、列表等
      • 非确定次数的循环
        • 使用 while 语句,条件为真时重复执行
  • 函数
    • 功能
      • 任务划分,使复杂任务分解为小任务
      • 代码重用,避免重复编写相似代码
    • 分类
      • 内置函数与标准库函数
      • 用户自定义函数
    • 定义与调用
      • 函数定义:“def 函数名(参数列表): 函数体”
      • 返回值:使用 return 语句返回计算结果
  • 注释
    • 目的
      • 提高程序可读性,方便后续修改和维护
    • 表示方法
      • 单行注释:以 # 开头
      • 多行注释:使用三引号(‘’’ 或 “”")包裹,用于较长的说明
      • 没有严格意义上的文档注释
  • 示例程序
    • 根据用户输入的百分成绩输出成绩等级
      • 判断条件:成绩大于等于 90、80、70 等
      • 根据成绩范围输出等级(A, B, C 等)
    • 统计用户输入的正数个数
      • 使用 “while” 循环,当输入大于0时计数加1
      • 输入非正数时退出循环
  • 总结
    • 掌握流程控制语句、函数和注释是编程的基础
    • 理解和运用这些基本要素可以有效提高编程效率和代码质量

5 Python 简介及编程环境配置

  • Python简介
    • 发布时间
      • 第一个公开发行版本:1991 年
    • 特性
      • 面向对象
      • 解释型语言
      • 自由软件
      • 开源代码
  • 版本信息
    • 2.0 系列:已过时
    • 3.0 及以后:推荐下载,完全面向对象,代码无法向下兼容
  • 安装与配置
    • 下载
      • 根据操作系统选择版本
      • 在官网下载后进行安装
  • 程序运行方式
    • 交互式
      • 解释器即时响应用户输入代码
      • 通过命令行工具或 IDLE 启动
    • 文件式(批量式)
      • 用户将程序写在文件中
      • 执行文件中的代码
      • 可通过文本编辑器或 IDLE 编写和执行
  • 执行程序的方法
    • 命令模式
      • 在命令行工具输入代码
    • 图形化环境
      • 使用 IDLE 启动,输入语句并执行
    • 文件执行
      • 保存为 .py 文件后在命令行执行
      • 启动 IDLE 进行编写并执行
  • 结论
    • 本节简单介绍了 Python 语言及其编程环境的配置和程序执行方式

6 程序设计应用举例

  • 最大公约数的求解
    • 算法实现:使用循环语句实现辗转相除法
  • 阶乘的计算
    • 方法一:循环语句
      • 描述:通过循环累乘 1 到 N 实现
    • 方法二:递归
      • 描述:N 的阶乘 = N*(N-1的阶乘),底案N=0时,阶乘为 1
      • 实现:定义递归函数实现阶乘计算
  • 计算阶乘和
    • 描述:求 1 到 N 各数阶乘的和
    • 实现:使用循环语句累加各数阶乘
  • 汉诺塔问题
    • 描述:将 N 个不同大小的盘片从 A 柱子移动到 C 柱子,每次只能移动一个盘片,且大盘片不能放在小盘片上面
    • 解法:使用递归函数实现