计算机科学导论
计算机科学导论
课程链接 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() 的参数是这么用的
退出状态
每当你的主函数退出时,它都会返回一个秘密的整数,你可以作为程序员或高级用户来确定它是什么。
这些退出代码通常用于指示错误。
在运行程序后,输入 echo $? 可以查看这个隐藏的返回值
cryptography /krɪpˈtɒɡrəfi/ 密码学
Algorithms
Ω 表示算法时间的下限,即最佳情况
如果碰巧某个算法上界和下界相同,可以用 Θ 表示
数据结构
创建你自己的数据类型,并为其命名
CSV 文件,逗号分隔值文件
写递归前先找到基本情况,base case
Memory
& 运算符允许我们获取内存中一段数据的地址
* 被称为解引用运算符,可以去到指定的地址
指针
int *p = &n
等号左侧的星号只是一个提示,表示 p 将是一个指针。
ampersand /ˈæmpəsænd/ “和号” “&”
<stdlib.h>
malloc:用于内存分配,你可以使用它向操作系统请求任意数量的字节。它将返回它为你找到的第一个字节的地址。
free:当你使用完某个内存块时,可以通过传入相同的地址来释放它,将其交还给操作系统。
realloc:帮你重新申请内存,并可以帮你自动完成复制,然后自动释放之前的内存
NUL, \0 是一个字符
NULL,是一个指针,指向 0 地址
valgrind,“一个相当高级的程序”,比如可以在你的代码执行时检查内存错误,并尝试帮助你理解这些错误在哪
valgrind ./myprogram
内存中有一个区域叫做”堆“,heap,它就像一堆内存一样,你可以根据需要使用它,malloc 就是从堆中获取内存的。
另一个区域叫做栈,是函数临时储存变量和参数的地方
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 …
字典:
“python 和发明它的人非常聪明,他们的代码会尽力让你以常数时间搜索字典”
字符串一旦存在,自身就不能再被改变
常用的操作字符串的函数
s.rstrip()
默认情况下,rstrip() 会删除 右边的空白字符,包括:
- 空格
' ' - 制表符
\t - 换行符
\n - 回车
\r
| 方法 | 功能 |
|---|---|
lstrip() |
删除左侧字符 |
rstrip() |
删除右侧字符 |
strip() |
删除两侧字符 |
python 没有作用域限制,允许你在赋值后的任何时候使用变量
python 代码规范
函数之间空两行
python 的 print 会自动换行,实际上你可以设置每行的结尾方式,默认是 \n
python 中使用命令行参数:





