Skip to content

Commit

Permalink
系统拾遗1优化
Browse files Browse the repository at this point in the history
  • Loading branch information
bowling233 committed Oct 11, 2023
1 parent f832ce2 commit 6e41d86
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 17 deletions.
6 changes: 0 additions & 6 deletions docs/programming_lecture/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,6 @@

课程安排如下:

<!-- prettier-ignore-start -->
!!! tip "第 0 课"


<!-- prettier-ignore-end -->

| 节次 | 内容 | 主讲 | 时间 | 地点 | 课前资料 | PPT 与讲义 |
| :--- | :--------------------- | :----------- | :--- | :--- | :------------------------------------------ | :--------------------------- |
| 1 | 程序编译过程与调试技术 | 朱宝林 | 10.14 下午 2:30-4:30 | | [准备开发与调试环境](lecture1/pre_class.md) | [讲义](lecture1/lecture1.md) |
Expand Down
12 changes: 9 additions & 3 deletions docs/programming_lecture/lecture1/lecture1.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 程序编译过程与调试技术
# 讲义:程序编译过程与调试技术

<!-- prettier-ignore-start -->
!!! abstract "内容提要"
Expand All @@ -10,14 +10,14 @@

## 课程导言

Hi,欢迎各位同学来到竺院程设辅学线下授课的第一节课
Hi,欢迎各位同学来到竺院程设辅学「系统知识拾遗」的第一节课

在前几周的程序设计课程中,老师们应该已经为同学们讲解了 C 语言的基础语法等知识。但是同学们或许会有下面这些疑问:

- 计算机是如何读懂我写的代码的?
- 我的程序总是出问题,我该如何快速找到错误的根源?

辅学课程的目的就是帮助同学们解决这些“为什么”的问题。实质上 C 语言是一门很难的编程语言,不懂编译原理、操作系统和计算机体系结构无法获得深入的理解。我们希望通过线下授课,为同学们提供语言之外的进一步的知识扩展和技能训练。让同学们在计算机(而非算法题)的语境下理解 C 语言,理解程序设计。
辅学课程的目的就是帮助同学们解决这些进一步的问题。实质上 C 语言是一门很难的编程语言,不懂编译原理、操作系统和计算机体系结构无法获得深入的理解。我们希望通过线下授课,为同学们提供语言之外的进一步的知识扩展和技能训练。让同学们在计算机(而非算法题)的语境下理解 C 语言,理解程序设计。

那么在本节课,我们将为大家系统讲解程序编译过程与调试技术,为后续的课程做铺垫。接下来,让我们一起进入计算机的世界吧!

Expand Down Expand Up @@ -145,6 +145,12 @@ CPU 还有自己的小工作区——由若干寄存器(Register)组成的
[这里](https://eng.libretexts.org/Bookshelves/Computer_Science/Programming_Languages/Introduction_To_MIPS_Assembly_Language_Programming_(Kann)/04%3A_Translating_Assembly_Language_into_Machine_Code)提供了一些将汇编语言转换为 MIPS 指令集机器语言的基础例子,有兴趣可以了解一下。
<!-- prettier-ignore-end -->

## 计算机程序的基本结构

本节再带大家对自己写的程序的基本结构做一些认识,帮助大家理清思路。

## Lap:关于题目

## 程序的编译过程

接下来,我们将了解编译器和汇编器是如何一步步把你的程序编译成机器码的。我们以最经典的 C 语言编译系统 GCC 为例。
Expand Down
51 changes: 43 additions & 8 deletions docs/programming_lecture/lecture1/pre_class.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,53 @@
# 准备开发与调试环境
# 课前:准备开发与调试环境

<!-- prettier-ignore-start -->
!!! danger "施工中"
!!! info

本页面正在编辑中。
<!-- prettier-ignore-end -->
本文档更改自周健均学长为图灵程算课程准备的[资料](https://zhoutimemachine.github.io/2023_FPA/),感谢周健均学长的付出。

在参与线下授课前,同学们最好能够安装好相关的开发环境,以便能够更好的跟随老师的讲解。我们在这里提供了一些安装指南和 Windows 上 Shell 基础的讲解,希望能够帮助到大家。
!!! abstract "内容提要"

> 本文档更改自周健均学长为图灵程算课程准备的[资料](https://zhoutimemachine.github.io/2023_FPA/),感谢周健均学长的付出
在参与线下授课前,同学们最好能够安装好相关的开发环境,以便能够更好的跟随老师的讲解

## Shell 使用拾遗
- 命令行简介
- WSL 安装引导
- 在 Windows 上安装 C 语言编译器
- VSCode 安装与配置

同学们可以从右侧(电脑端)或左侧(手机端)目录跳转到自己需要的章节。

!!! tip "非计算机专业同学,使用 Dev-C++ 等 IDE 或在线 IDE 即可。"

本篇文章描述的内容适用于计算机专业的同学。非计算机专业的同学,不需要掌握命令行的使用,使用 IDE 即可。并且更加推荐在线 IDE,因为本地 IDE 有时也会出错。最常见的一个例子是:运行了一次程序,没有以恰当的方式结束进程,再次点击编译时编译器 `ld` 就会因为 `.exe` 被占用无法写入而报错,但报错信息并不会表明是上一个程序没关,搞不懂是怎么回事。我还见过有同学,每次编译完运行程序,都要被 360 先扫描一遍,等个半分钟才能显示窗口。在线 IDE 不受你电脑的影响,不会产生这些问题。

下面的块以 Online GDB 为例,展示在线 IDE 的用法。配好环境的同学也可以看一看,因为你可能偶尔临时用到一个没有配置环境的电脑,这时使用在线 IDE 最为便捷。

!!! note "Online GDB 的使用"

- 打开这个网址:[www.onlinegdb.com](https://www.onlinegdb.com/)
- 它已经为你写好 C 语言的 Hello World 程序源码。
- 在右上角选择 C 语言,然后点击左上角的 `Run`
- 在下方,你就可以看见程序的输出。
- 按下 ++enter++ 键离开终端。下方会显示几个选项:
- Command Line Arguments:命令行参数,你们应该不会学到?
- Standard Input:标准输入。你可以选择 Interactive Console(就是正常地用键盘和程序交互)或者 Text(预先准备一些文本自动输入,通常用于测试 PTA 的样例数据)。

!!! info "Mac 用户和已经对 Windows Terminal 和 WSL 比较熟练的同学可以跳过这一节"
!!! tip "可以跳过本篇文章的同学"

符合以下描述的同学可以跳过本篇文章:

- Mac 和 Linux 用户
- 安装好了 WSL 的 Windows 用户
- 安装好了 MinGW、MSVC、Cygwin、tdm-gcc 等编译器的 Windows 用户

使用集成开发环境的同学,也请看一下 Shell 部分。

!!! tip "温馨提示"

点击页面中的图片可以放大查看。
<!-- prettier-ignore-end -->

## Shell 使用拾遗

本节我们要认识一个即将成为你的老朋友的东西——Shell。下面是同学们接下来会经常见到的几个名词:

Expand Down

0 comments on commit 6e41d86

Please sign in to comment.