计算机科学导论

课程链接 https://www.bilibili.com/video/BV1Hr421F7VC/

0-Scratch

事件通常是指在计算机程序中发生的图形化或交互式的操作

好快乐的课

1-C

creepy 毛骨悚然的

“终端窗口实际上就是你访问云端服务器的命令行界面。专业术语叫做”容器“,你们每个人在云端都有自己的容器,就像你们自己的电脑一样,运行在互联网上的某个地方,你有你自己的用户名和密码,可以访问你自己的“硬盘”(也就是你的主文件夹),里面存放着你上课的所有文件。除非你开启实时共享,否则只有你能访问。”

ls 命令是 list 的缩写。

mv 代表 move,可以用来重命名。

cd, change into?

2-Arrays

clang -o hello hello.c

clang -o hello hello.c -lcs50

C 语言中,以 # 开头的部分称为预处理指令(pre processor directive)

spooky /ˈspuːki/,诡异的,阴森的,瘆人的

preprocessing

compiling

assembling

linking

整个过程被叫做 compiling

debugging

debugger 调试器

使用 VScode 的调试器可能需要创建配置文件?

被打了断点的那一行不会执行

🍮 一个变量仅存在于你最近打开的大括号内(作用域)

rubber duck 橡皮鸭

和一只橡皮鸭交流你的思路,也许你就会发现问题所在

当有一个浮点数存在,整个式子的结果就是浮点数

魔法数字,魔法字符串:写死在程序里的数字和字符串。(那个相同的数字神奇地出现在两个地方)

原来 main() 的参数是这么用的

image-20251108013248882

退出状态

每当你的主函数退出时,它都会返回一个秘密的整数,你可以作为程序员或高级用户来确定它是什么。

这些退出代码通常用于指示错误。

在运行程序后,输入 echo $? 可以查看这个隐藏的返回值

cryptography /krɪpˈtɒɡrəfi/ 密码学

Algorithms

Ω 表示算法时间的下限,即最佳情况

如果碰巧某个算法上界和下界相同,可以用 Θ 表示

数据结构

创建你自己的数据类型,并为其命名

image-20251108235601143

CSV 文件,逗号分隔值文件

写递归前先找到基本情况,base case

image-20251109013536362

Memory

& 运算符允许我们获取内存中一段数据的地址

* 被称为解引用运算符,可以去到指定的地址

指针

int *p = &n

等号左侧的星号只是一个提示,表示 p 将是一个指针。

ampersand /ˈæmpəsænd/ “和号” “&”

<stdlib.h>

malloc:用于内存分配,你可以使用它向操作系统请求任意数量的字节。它将返回它为你找到的第一个字节的地址。

free:当你使用完某个内存块时,可以通过传入相同的地址来释放它,将其交还给操作系统。

realloc:帮你重新申请内存,并可以帮你自动完成复制,然后自动释放之前的内存

image-20251115154636258

NUL, \0 是一个字符

NULL,是一个指针,指向 0 地址

valgrind,“一个相当高级的程序”,比如可以在你的代码执行时检查内存错误,并尝试帮助你理解这些错误在哪

valgrind ./myprogram

内存中有一个区域叫做”堆“,heap,它就像一堆内存一样,你可以根据需要使用它,malloc 就是从堆中获取内存的。

另一个区域叫做栈,是函数临时储存变量和参数的地方

image-20251111014235637

Data Structures

抽象数据类型 abstract data types

链表,栈,队列,树,字典,

trie(retrieval,检索)一系列数组依次“保存”各个字母

Python

python 的 print 可以打印多个参数,自动加空格

1
print("hello,",answer)

但更常见的是

1
print(f"hello, {answer}")

f 表示后面是格式字符串

🍭 python 不需要管理内存

新的数据类型

range list tuple dict set …

字典:

image-20251121212233705

“python 和发明它的人非常聪明,他们的代码会尽力让你以常数时间搜索字典”

字符串一旦存在,自身就不能再被改变

常用的操作字符串的函数

s.rstrip()

默认情况下,rstrip() 会删除 右边的空白字符,包括:

  • 空格 ' '
  • 制表符 \t
  • 换行符 \n
  • 回车 \r
方法 功能
lstrip() 删除左侧字符
rstrip() 删除右侧字符
strip() 删除两侧字符

python 没有作用域限制,允许你在赋值后的任何时候使用变量

python 代码规范

函数之间空两行

image-20251121202713153 image-20251121202731537

python 的 print 会自动换行,实际上你可以设置每行的结尾方式,默认是 \n

image-20251121203150828

python 中使用命令行参数:

image-20251121210130906