浙江大学《程序设计入门-c语言》第一周笔记
第一周 程序设计与c语言
1.计算机与编程语言
计算机是⽣生活必需品
• 如果想要⾃自⼰己设计⼀一些功能和⾏行为,让计算机按照你的意图做事情,就需要写程序了
• 本课程的主要的目的是通过学习编程,来理解计算机是如何解决问题的,理解计算机的能与不能,擅⻓与⾮擅⻓
计算机如何解决问题
• “请给我⼀一杯⽔水”
1. 转⾝身⾛走到厨房;
2. 找到⼀一个杯⼦子;
3. 找到⼀一个⽔水壶;
4. 在杯⼦子中倒⼊入⼀一些⽔水;
5. 拿着杯⼦子⾛走回桌⼦子。
⼈人:What to do
计算机:How to do
计算机语⾔
• 程序是⽤用特殊的编程语⾔言写出来表达如何解决问题的
• 不是⽤用编程语⾔言来和计算机交谈,⽽而是描述要求它如何做事情的过程或⽅方法
辗转相除法
int u = 32;
int v = 26;
while ( v!= 0 ) {
int temp = u%v;
u = v;
v = temp;
}
printf("%d",u);
1. 如果v等于0,计算结束,u就是最⼤大公约数;
2. 如果v不等于0,那么计算u除以v的余数,让u
等于v,⽽而v等于那个余数;
3. 回到第⼀一步。
算法
• 我们要让计算机做计算,就需要像这样找出计算的步骤,然后⽤用编程语⾔言写出来
• 计算机做的所有的事情都叫做计算
• 2x+6=20
• 解⽅方程
• 枚举
• 二分搜索
枚举求最⼤大公约数
1. 设t为2;
2. 如果u和v都能被t整除,则记下这个t
3. t加1后重复第2步,直到t等于u或v;
4. 那么,曾经记下的最⼤的可以同时整除u和v的t就是gcd
程序的执⾏
• 解释:借助⼀一个程序,那个程序能试图理解你的程序,然后按照你的要求执⾏行
• 编译:借助⼀一个程序,就像⼀一个翻译,把你的程序翻译成计算机真正能懂的语⾔言——机器语⾔言——写的程序,然后,这个机器语⾔言写的程序就能直接执⾏行了
解释语⾔言vs编译语⾔言
• 语⾔言本⽆无编译/解释之分
• 常⽤用的执⾏行⽅方式⽽而已
• 解释型语⾔言有特殊的计算能⼒力
• 编译型语⾔言有确定的运算性能
2.c语言
C语⾔
为什么是C?
- http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
- 在工业占据份额最大
其他语⾔言?
• 现代的编程语⾔言在语法上的差异很⼩小
• ⼏几乎都是C-like语⾔言
• 语⾔言的能⼒力/适⽤用领域主要是由
• 库和
• 传统所决定的
C语⾔历史
• C语⾔是从B语⾔发展⽽而来的,B语⾔言是从BCPL发展⽽而来的,BCPL是从 FORTRAN发展⽽而来的
• BCPL和B都⽀支持指针间接⽅方式,所以C也⽀支持了
• C语⾔言还受到了PL/1的影响,还和PDP-11的机器语⾔有很⼤大的关系
• 1973年3⽉,第三版的Unix上出现了C语⾔言的编译器
• 1973年11⽉,第四版的Unix(System Four)发布了,这个版本是完全⽤用C语⾔言重新写的
C的发展与版本-K&R
• 经典 C
• ⼜又被叫做 “K&R the C”
• The C Programming Language, by Brian Kernighan and Dennis Ritchie, 2nd Edition,Prentice Hall
C的发展与版准本-标准
• 1989年ANSI发布了⼀一个标准——ANSI C
• 1990年ISO接受了ANSI的标准——C89
• C的标准在1995年和1999年两次更新——C95和C99
• 所有的当代编译器都⽀支持C99了
C语⾔言⽤用在哪里?
• 操作系统
• 嵌⼊入式系统
• 驱动程序
• 底层驱动
• 图形引擎、图像处理、声⾳音效果
C是⼀一种工业语⾔
• 开发效率>>学习过程
• 开发效率>>开发乐趣
• ⽇日常应⽤用很少直接⽤用C语⾔言编写
• 学习C的过程主要是写练习代码
• ⽽而⾮非真实软件
编译—>运⾏
• C需要被编译才能运⾏行,所以你需要编辑器或者,IDE(集成开发环境)
推荐的编程软件
• Dev C++(4.9 for Win7, 5.0 for Win8)
• 免费
• 安装简单
• 不⽤用建⼯工程
其他选择
• MS Visual Studio Express(Windows)
• Xcode(Mac OS X)
• Eclipse-CDT
• Geany(和MinGW⼀一起)
• Sublime(和MinGW⼀一起)
• vim/emacs(和MinGW⼀一起)
3.第一个c程序
第⼀一个C程序
初学C的困惑
• ⽤用什么软件好?
• 选择太多有时候是个⿇麻烦
• 当代语⾔言往往只有⼀一个编程软件可⽤用
• 那就Dev C++ 5.6.3吧!
第⼀一个C程序
#include <stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
程序框架
#include <stdio.h>
int main()
{
return 0;
}
• 本课程中所有的程序都需要这⼀一段
• 直到学函数之前,我们的代码都只是在这个框架中间
输出
printf("Hello World!\n");
• ""⾥里⾯面的内容叫做“字符串”,printf会把其中的内容原封不动地输出
• \n表⽰示需要在输出的结果后面换⼀⾏
暂停
• 如果你在使⽤用Dev C++ 4.9.9.2
• system("pause");
• 让程序运⾏行完成后,窗⼝口还能留下
• 不是Dev C++ 4.9.9.2就不需要这个了
程序中的错误
• 编译的时候发现的错误所在的地⽅会以红⾊的底表⽰示出来
• 具体的错误原因列在下方的窗⼝⾥(是英⽂的)
• C的编译器给出的错误提示往往不那么好“猜”
不要用中文!!!
• 中国学⽣生还printf("%d\n", 23+43);
有⼀个极其常见的低级错误,就是用了中文输入法来输入程序。那些标点符号,在中文和英文可能看上去相似,但是对于计算机是完全不同的符号,如果你还开了全角标点的话,问题就更严重了
做计算
printf("%d\n", 23+43);
• %d说明后⾯面有⼀一个整数要输出在这个位置上
四则运算
• %表⽰示取两个数相除以后的余数
- +加 -减 *乘 /除 %取余 ()括号
第⼀周的练习
• 在⾃自⼰己的计算机上安装好编程的软件
• 依次下载/拷贝课程网站上的四个程序
• 编译并运⾏行
• 结果如何
• 有没有问题—>来讨论区讨论吧!
• 尝试理解