Skip to content

Latest commit

 

History

History
451 lines (340 loc) · 10.3 KB

File metadata and controls

451 lines (340 loc) · 10.3 KB

学习路径 / Learning Path

本文档提供系统化的 C/C++ 语言学习路径,帮助不同阶段的学习者规划学习计划。

📊 学习路径概览

零基础 → C 语言基础 → C 语言进阶 → 项目实践 → C++ 入门 → C++ 进阶
  (0)      (1-2月)      (1-2月)       (持续)      (1-2月)      (1-2月)

🎯 路径一:零基础入门 (0 → C语言基础)

前置条件

  • 无需编程基础
  • 了解计算机基本操作

学习目标

  • 掌握 C 语言基本语法
  • 能够编写简单的控制台程序
  • 理解程序的执行流程

学习计划 (8-10 周)

第 1-2 周:入门准备

学习内容

  • 阅读 tutorials/c-basics/1. C语言概览.txt
  • 安装开发环境(Visual Studio 或 Code::Blocks)
  • 编写第一个 Hello World 程序

练习目标

  • 成功编译运行第一个程序
  • 理解 main 函数的作用
  • 熟悉 printf 和 scanf

第 3-4 周:基础语法

学习内容

  • 学习 tutorials/c-basics/2. 操作符.txt
  • 掌握数据类型和变量
  • 理解运算符优先级

练习目标

  • 编写简单的计算器程序
  • 实现温度转换
  • 练习类型转换

第 5-6 周:控制流

学习内容

  • 学习 tutorials/c-basics/3. 分支和循环.txt
  • 掌握 if-else, switch
  • 掌握 for, while, do-while

练习目标

  • 编写九九乘法表
  • 实现菜单选择程序
  • 编写猜数字游戏

里程碑项目:简单的控制台菜单系统

第 7-8 周:函数与数组

学习内容

  • 学习 tutorials/c-basics/4. 函数.txt
  • 学习 tutorials/c-basics/5. 数组.txt
  • 理解函数参数传递
  • 掌握一维数组操作

练习目标

  • 编写常用工具函数(求和、求最大值)
  • 实现数组排序
  • 字符串基本操作

里程碑项目:学生成绩管理系统(数组版)


🚀 路径二:C 语言进阶 (基础 → 进阶)

前置条件

  • 完成零基础入门路径
  • 能够独立编写包含函数和数组的程序

学习目标

  • 掌握指针和动态内存
  • 理解结构体和文件操作
  • 能够进行调试

学习计划 (8-10 周)

第 9-12 周:指针专题

学习内容

  • 精读 tutorials/c-basics/6. 初识指针.txt
  • 理解指针的本质
  • 掌握指针与数组的关系
  • 学习指针作为函数参数

练习目标

  • 使用指针交换两个变量
  • 用指针实现字符串函数(strcpy, strcmp)
  • 理解二维数组的指针表示

重点难点

  • 指针的声明和解引用
  • 指针运算
  • 多级指针

配套代码

  • 查看 course-code/archive-original/2024_11_*_course_*/ 中的指针示例

第 13-14 周:结构体与文件

学习内容

  • 学习 tutorials/c-basics/7. 初识结构体.txt
  • 掌握结构体定义和使用
  • 学习文件操作(fopen, fread, fwrite)

练习目标

  • 定义学生/图书结构体
  • 实现结构体数组排序
  • 将数据保存到文件
  • 从文件读取数据

配套代码

  • 查看 course-code/archive-original/2024_12_*_course_12/ 文件操作示例

第 15-16 周:数据结构入门

学习内容

  • 链表的概念和实现
  • 学习 course-code/archive-original/2024_12_18_course_12/ 中的链表代码

练习目标

  • 实现单链表的创建
  • 实现链表的插入和删除
  • 实现链表的反转

里程碑项目

  • 完整的学生信息管理系统(链表 + 文件存储)
  • 通讯录程序

🎮 路径三:项目实践 (持续进行)

入门级项目

1. 三子棋游戏

位置tutorials/projects/tic-tac-toe/

技能要求

  • 数组(棋盘表示)
  • 函数(模块化)
  • 控制流(游戏逻辑)

学习收获

  • 理解模块化设计
  • 学习头文件分离
  • 掌握二维数组应用

预计时间:1-2 周

2. 扫雷游戏

位置tutorials/projects/minesweeper/

技能要求

  • 二维数组
  • 递归算法
  • 随机数生成

学习收获

  • 递归的实际应用
  • 复杂数据结构
  • 游戏逻辑设计

预计时间:2-3 周

进阶级项目

3. 学生管理系统

技能要求

  • 结构体
  • 链表/数组
  • 文件操作
  • 菜单系统

功能需求

  • 添加/删除/修改学生信息
  • 按不同条件查询
  • 数据持久化(文件存储)
  • 统计功能(平均分、排名)

预计时间:2-4 周

4. 简单文本编辑器

技能要求

  • 字符串处理
  • 文件操作
  • 指针操作

功能需求

  • 打开/保存文件
  • 查找/替换
  • 行编号显示

预计时间:3-4 周


🔵 路径四:C++ 入门 (C → C++)

前置条件

  • 完成 C 语言基础和进阶学习
  • 熟练使用指针和结构体

学习目标

  • 理解面向对象编程思想
  • 掌握类和对象
  • 了解 C++ 标准库

学习计划 (8-10 周)

第 1-2 周:C++ 基础特性

学习内容

  • 阅读 cpp-materials/reference/C++速成.md
  • C++ vs C 的区别
  • 命名空间、引用、函数重载

练习目标

  • 改写 C 程序为 C++ 风格
  • 使用 cin/cout 替代 printf/scanf
  • 理解引用与指针的区别

第 3-6 周:面向对象基础

学习内容

  • 类和对象的定义
  • 构造函数和析构函数
  • 访问控制(public, private, protected)
  • this 指针

练习目标

  • 设计 Student 类
  • 实现 Book 类
  • 编写 BankAccount 类

配套资料

  • 查看 cpp-materials/slides/ 中的课件

第 7-8 周:继承与多态

学习内容

  • 继承的概念和语法
  • 虚函数和多态
  • 抽象类

练习目标

  • 设计 Shape 基类和派生类
  • 实现员工管理系统(不同类型员工)

第 9-10 周:STL 入门

学习内容

  • vector 的使用
  • list 的使用
  • map 的使用
  • 迭代器基础

练习目标

  • 用 vector 重写数组程序
  • 用 map 实现词频统计
  • 用 list 实现简单队列

里程碑项目

  • 学生管理系统 (C++ 版本,使用类和 STL)

📈 路径五:C++ 进阶

第 11-12 周:运算符重载

学习内容

  • 运算符重载语法
  • 友元函数
  • 输入输出运算符重载

练习目标

  • 实现 Complex 类(复数)
  • 实现 Vector 类(向量运算)

第 13-14 周:模板编程

学习内容

  • 函数模板
  • 类模板

练习目标

  • 实现通用排序函数
  • 实现 Stack 类模板
  • 实现 Array 类模板

第 15-16 周:综合项目

项目选择

  1. 图书管理系统(完整版)
  2. 通讯录程序(支持导入导出)
  3. 简单的游戏引擎框架

🎓 考试冲刺路径

期中考试 (7-10 天)

Day 1-3: 系统复习

  • 复习 tutorials/c-basics/1-4
  • 整理知识点笔记
  • 标记不懂的地方

Day 4-6: 刷题

  • 完成 exams/c-language/midterm/ 所有试题
  • 对照答案,理解每道题
  • 总结错题

Day 7-8: 重点攻克

  • 针对薄弱环节重点练习
  • 复习运算符优先级
  • 练习循环和函数

Day 9-10: 模拟考试

  • 限时完成一套完整试卷
  • 对照答案评分
  • 最后查漏补缺

期末考试 (15-20 天)

第一周: 系统复习

  • Day 1-2: 基础语法和控制流
  • Day 3-4: 函数和数组
  • Day 5-7: 指针专项复习

第二周: 专项突破

  • Day 8-9: 指针与数组关系
  • Day 10: 结构体
  • Day 11: 文件操作
  • Day 12-13: 综合应用

第三周: 刷题与模拟

  • Day 14-17: 完成 exams/c-language/final/ 所有试题
  • Day 18-19: 模拟考试
  • Day 20: 最后复习

💡 学习建议

学习方法

  1. 主动学习

    • 不要只看代码,要自己写
    • 理解为什么这样写
    • 尝试不同的实现方式
  2. 循序渐进

    • 不要跳过基础直接学高级内容
    • 确保每个知识点都掌握再前进
    • 遇到困难是正常的,耐心学习
  3. 多练习

    • 每学一个知识点立即练习
    • 编写至少 3-5 个相关程序
    • 参考 course-code/ 中的示例
  4. 项目驱动

    • 尽早开始做项目
    • 项目是最好的学习方式
    • 从小项目开始,逐步增加难度
  5. 寻求帮助

    • 遇到问题先自己调试
    • 查看 tutorials/c-basics/8. 实用调试技巧.txt
    • 向同学或助教求助
    • 利用在线资源(Stack Overflow, CSDN)

时间管理

每周学习计划建议

  • 周一至周五:每天 1-2 小时
  • 周末:每天 3-4 小时
  • 总计:每周 10-15 小时

学习时间分配

  • 40% 看教程和视频
  • 40% 编写代码练习
  • 20% 做项目和复习

避免常见误区

错误做法

  1. 只看不练,收藏即学会
  2. 跳过基础,直接学高级特性
  3. 代码出错就放弃
  4. 直接复制粘贴代码
  5. 考前突击,平时不学

正确做法

  1. 边学边练,手写代码
  2. 打好基础,稳扎稳打
  3. 学会调试,理解错误
  4. 理解代码,自己实现
  5. 持续学习,定期复习

📚 配套资源

学习阶段 主要资源 辅助资源
C 语言基础 tutorials/c-basics/ course-code/ 前 10 课
C 语言进阶 tutorials/c-basics/6-8 course-code/ 11-14 课
项目实践 tutorials/projects/ course-code/ 各课程项目
考试复习 exams/ tutorials/ 全部
C++ 入门 cpp-materials/reference/ cpp-materials/slides/
C++ 进阶 cpp-materials/slides/ cpp-materials/review/

🎯 学习目标检验

C 语言基础检验

  • 能独立编写包含函数和数组的程序
  • 理解指针的基本概念
  • 能够使用结构体组织数据
  • 能够进行简单的文件操作
  • 能够独立完成三子棋项目

C++ 基础检验

  • 能够设计简单的类
  • 理解继承和多态的概念
  • 能够使用 vector, list, map
  • 能够重载基本运算符
  • 能够编写类模板

项目能力检验

  • 能够独立完成学生管理系统
  • 代码具有良好的模块化结构
  • 能够处理用户输入错误
  • 能够进行基本的性能优化

祝你学习顺利!坚持就是胜利!💪

返回主目录