什么是程序设计语言
什么是计算机
计算机与编程语言
为什么学习C语言
问题1:
你们觉得计算机会‘听懂人话’吗?为什么 Siri/小爱同学可以和你对话?
问题2:
指定一个数N,让计算机算 1+2+3+…+N,最快的方法是什么?
排序一组成绩/批改试卷/统计单词个数等
游戏、微信、自动驾驶背后都是程序
人类交流 → 机器交流
人类要交流需要语言(中文、英文)。
人和计算机交流也需要“语言”——程序设计语言。
对比:自然语言 vs 程序语言
自然语言灵活但有歧义;
程序语言严格、无歧义,让机器可以准确执行。
程序设计语言,就是人类和计算机沟通的工具
什么是计算机?
计算机:
由硬件和软件组成
用于接收、处理和存储数据的电子设备
硬件:输入设备、输出设备、存储设备、CPU、内存、主板等物理组件
软件:操作系统、应用程序等,执行各种任务
计算机的基本功能:
输入:各种输入设备(如键盘、鼠标、摄像头等)接收数据和指令
处理:通过中央处理器(CPU)执行指令,进行数据处理和计算。CPU为计算机核心组件,负责执行程序中的逻辑和算术运算。
输出:通过输出设备(如显示器、打印机、扬声器等)将处理结果呈现给用户。
存储:使用内存和存储设备来存储数据和程序。内存:临时存储正在处理的数据;存储设备:长期保存信息。
控制:通过操作系统和应用程序管理硬件资源,协调各组件的工作。
举例:如何制作一杯咖啡
步骤分解:
确定所需材料(咖啡粉、水、糖、牛奶等)
煮水
加入咖啡粉
混合均匀
根据需要加入糖或牛奶
将大问题分解为具体小步骤,逐步解决每个部分
举例:如何制作一杯咖啡
输入
材料准备:
咖啡粉、热水、牛奶(可选)、糖(可选)
处理
步骤:
煮水:将水加热到适合冲泡咖啡的温度。
冲泡咖啡:将热水倒入咖啡粉中,等待几分钟,让咖啡充分浸泡。
加牛奶和糖(可选):根据个人口味,加入牛奶和糖。
存储
等待时间:在冲泡咖啡的过程中,咖啡的状态和时间可以视为存储。咖啡需要在特定时间内浸泡,以确保味道。
输出
享用咖啡:完成后,将咖啡倒入杯中,准备饮用。
计算机如何工作: 计算购物总价
假设你在超市购物, 购买了以下商品:
苹果: 3个, 每个2元
香蕉: 5个, 每个1.5元
橙子: 2个, 每个3元
计算机如何工作: 计算购物总价
输入
计算机接收用户输入的信息:
苹果数量: 3, 苹果单价: 2元
香蕉数量: 5, 香蕉单价: 1.5元
橙子数量: 2, 橙子单价: 3元
处理
计算机执行以下计算:
苹果总价 = 苹果数量 × 苹果单价 = 3 × 2 = 6元
香蕉总价 = 香蕉数量 × 香蕉单价 = 5 × 1.5 = 7.5元
橙子总价 = 橙子数量 × 橙子单价 = 2 × 3 = 6元
计算总价
总价 = 苹果总价 + 香蕉总价 + 橙子总价 = 6 + 7.5 + 6 = 19.5元
输出
计算机将结果输出到屏幕上:
“购物总价为: 19.5元”
制作咖啡/计算购物总价的过程,我们可以看到计算机的工作原理:
输入: 材料和配方(用户输入的数据)。
处理: 加热、冲泡和混合(CPU 执行指令)。
存储: 等待时间和状态(内存中的数据)。
输出: 完成的咖啡(计算机的结果展示)。
编程: 使用特定的编程语言编写指令, 控制计算机执行特定任务
接收输入
处理数据
存储数据
输出数据
计算机如何工作的?

语言是人类沟通、交流的工具,交流思想、传递知识等
符号系统:语言由一系列符号(如词汇、字、音节)组成,每个符号都有特定的意义
语法规则:语言遵循特定的语法和结构规则,指导如何将符合组合成有意义的句子或表达
编程语言是用于与计算机进行交流的正式(formal)语言,提供一套规则和语法,使程序员能编写指令,以控制计算机的行为。
符号和语法:由特定符号、关键词和语法规则构成,能使用规则编写源代码
数据结构:提供用于组织和存储数据的方式,如数组、结构体等
控制结构:条件语句(如if, swtich)和循环(如for, while), 用于控制程序的执行流程
编程思维
C语言起源可追溯到1970年代中期
贝尔实验室:C语言是在美国贝尔实验室(Bell Labs)由Dennis Ritchie和同事开发
早期的开发:C语言最早是在1972年创建,最初用于编写操作系统,特别是UNIX操作系统。Ritchie和团队使用C语言重写了UNIX的核心部分。
标准化:1978年,Brian Kernighan和Dennis Ritchie合著了《C程序设计语言》,对C语言的推广起到了重要作用。1989年,C语言被正式标准化为ANSI C,这为后来的C语言版本奠定了基础。
影响力:C语言以其高效性和灵活性被广泛应用于系统编程、嵌入式系统以及应用程序开发。它的设计理念和语法影响了后续许多编程语言,如C++、Java和C#等。
K&R C
C89/C90
C99
C++包括C的所有特性, 添加了类和其他特性以支持面向对象编程
Java基于C++, 因此继承了许多C特性
C#是从C++和Java派生的新的语言
Perl吸收了C的许多特性
低层语言
提供了对机器级概念的访问(字节和地址)
小型语言
更有限的特性集合(K&R第2版参考手册仅用49页描述了整个C语言)
C语言很大程度依赖一个标准函数的库
宽松包容
提供了比其他语言更高的自由度, 不强制进行详细的错误检查
程序容易隐藏错误
程序可能难以理解
程序可能难以维护
深入理解以避免C语言的陷阱
避免过于复杂的代码
使用软件工具(lint, 调试器)使程序更可靠
利用现有的代码库
采用一套合理的编码规范
紧贴标准