01 - CS50 Introduction & Computer Basics
01 - CS50 介绍 & 计算机基础概介
二分法的实例介绍。
scratch:古老的 GUI 编程工具。
哈佛的学习环境是真的好啊...一门课 300 多人学习环境,搭配 20 几位 TA...比国内好些大学的学习氛围好多了...我觉得主要还是老师的激情!比较有 Fire~
1. 算法引入 & 数据存储
1.1. Google 贝叶斯检测算法
Google Mail 的垃圾邮件筛选算法。很有启发性...原来国外真的是有学生主动举手提问的...老师也会耐心解决学生的问题...
1.2. 数据存储
01 的 二进制计算机内部存储方式。比较基础但是够用。甚至还有 ASCII 码...可以说涉猎的很广。
磁盘中的存储:一旦写入就不会被轻易修改和破坏。
1.3. 计算机存储区
text
binary file 二进制存储文件
initialized data
uninitialiized data
heap
👇
👆
stack
堆内存:临时内存...会造成堆栈内存灾难
actually:segmentation fault!
2. 程序设计 & C 语言 与 源代码
基础中的基础,相信没人会睡觉,
2.1. 程序设计
讲解了伪代码的设计。没有直接引入判断结构...循环结构...而是写成一段话...想必埋下了兴趣的种子。
最后是一些简单的程序设计介绍。Printf 了 Hello World!
2.2. C语言源代码
程序块结构...
关于程序缩进...一些尽量要避免的,和一些影响微小的要求。
如何解决程序的精度问题?
2.2.1. 算法结构
变量定义和初始化,命名规则介绍。...以及...强制类型转换
循环结构 loops
while
for
do...while
判断结构
if
switch
main
函数的介绍
2.2.2. C 语言 Strandard Library
printf 输出函数库
math 数学库
很多基本的库都有覆盖讲解。
2.2.3. 哈佛的 CS 50 云主机...
连接远程主机终端。
先进而不乏经典,这是目前看下来最大的感受。
甚至花了 20min 讲解了云主机相关的操作...
ssh
之类的。我入门的时候完全没人教...
2.3. 编译器
命令行下直接带着编程。
使用的
nano
工具...后面还会讲到vim
...简直遥遥领先啊gcc
编译指令gcc hello.c
默认会生成a.out
./a.out
运行这个文件冷知识:上面这些操作我这个大二寒假才学会...
make
穿插讲解了一键编译的make
工具,这个我至今还没学...(25/2/19),虽然听说过,我也还没到要用的地步,后面慢慢学吧
Command-line arguments
int main(int agrc, char *argv[])
3. 函数
典型的黑盒子比喻。简单而不失风趣。
3.1. 参数 与 返回值
输入 & 输出
input 和 return
return 0 通常会代表成功
初步讲解了提升代码的健壮性的思想...
3.2. 函数原型、函数声明、函数定义
函数原型:主要用来进行类型检查,确保函数调用时参数类型和数量的正确性。
函数原型一般写在主函数前/后。
函数声明:告诉编译器函数的接口信息,以便在编译时进行链接。
在复杂的程序中,一般写在文件
.h
文件中,并会在main
或其他.c
函数中被引用
函数定义:是函数的具体实现,包含函数体,告诉编译器函数的具体行为。
在复杂的程序中,一般写在文件
.c
文件中
3.3. 函数的局部变量 和 全局变量
Scope:Each variant has own scope. It depends on how you define it.
经典的例子:swap 函数要传入变量的指针,而不是传入值参副本,这样不会引起任何变化。
3.3.1. 谨慎的使用全局变量
如果你使用其他的 Library,比如谷歌的STL...如果不凑巧谷歌使用了同名的全局变量,那你的程序将会产生不可估量的错误。
4. Array
数组,注意几个问题:
数组的越界访问问题
数组 与 * star 的关系
字符串 和 字符数组、普通数组、数组数组(二维)
字符串的结尾必须是\0
5. 穿插
这门课还会涉及其他的简单代码
Java 和 PHP、C++
讲解了一些基本文件的内容...现在看来有点吊,是逐步演示的,这门课老师真的有用心在备课。讲解真的胸有成足。
5.1. 练习
找了几个简单程序复习上节课讲的循环结构等等,还介绍了人类检查代码的步骤...俗称 debug。
5.2. 学习方法
人们总是浪费很多时间在他们不熟悉的事情上,他们喜欢单打独斗...而不是合作...
专业的事情留给专业的人做就好
同时也要培养自己称为某一领域的专业人才,而不是全才...
Last updated