计算机是生活必需品
如果想要自己设计一些功能和行为,让计算机按照你的意图做事情,就需要写程序了
我们通过学习编程,来理解计算机是如何解决问题的,理解计算机的能与不能,擅长与非擅长的事情。
计算机如何解决问题
·“请给我一杯水”(让机器人给我一杯水这件事,需要机器人怎么做。)
人: What to do
人:做什么
而机器人确实与人类相反的,只能How to do
计算机:How to do
计算机:怎么做
1.转身走到厨房;
2.找到一个杯子;
3.找到一个水壶;
4.在杯子中倒入一些水;
5.拿着杯子走回桌子.
想要实现这些,传感器和智脑必不可少的。
计算机语言
·程序是用特殊的编程语言写出来表达如何解决问题的·
不是用编程语言来和计算机交谈,而是描述要求它如何做事情的过程或方法
计算机能直接识别执行的语言是机器语言,其他计算机语言都需要被翻译成机器语言后,才能被直接执行。
机器语言是机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直接理解和接受的程序语言或指令代码。机器语言使用绝对地址和绝对操作码。不同的计算机都有各自的机器语言,即指令系统。从使用的角度看,机器语言是最低级的语言。
辗转相除法
算法:
1.如果v等于0,计算结束,u就是最大公约数;
2.如果v不等于0,那么计算u除以v的余数,让u等于v,而v等于那个余数;
3.回到第一步。
欧几里得算法
欧几里得算法是用来求两个正整数最大公约数的算法。古希腊数学家欧几里得在其著作《The Elements》中最早描述了这种算法,所以被命名为欧几里得算法。
扩展欧几里得算法可用于RSA加密等领域。
假如需要求 1997 和 615 两个正整数的最大公约数,用欧几里得算法,是这样进行的:
1997 ÷ 615 = 3 (余 152)
615 ÷ 152 = 4(余7)
152 ÷ 7 = 21(余5)
7 ÷ 5 = 1 (余2)
5 ÷ 2 = 2 (余1)
2 ÷ 1 = 2 (余0)
至此,最大公约数为1
以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 1997 和 615 的最大公约数 1。
C语言代码实现
int u = 32;
int v = 26;
while ( v!=O )
{
int temp = u%v;u = v;
v = temp;
}
printf("%d",u);
算法
·我们要让计算机做计算,就需要像这样找出计算的步骤,然后用编程语言写出来
·计算机做的所有的事情都叫做计算
计算机的思维
2x+6=20
·解方程
(求方程全部的解或判断方程无解的过程叫做解方程。)
·枚举
(在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。 [1] 是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。)
.二分搜索
(二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。)
程序的执行
·解释:
借助一个程序,那个程序能试图理解你的程序,然后按照你的要求执行
·编译:
借助一个程序,就像一个翻译,把你的程序翻译成计算机真正能懂的语言——机器语言——写的程序,然后,这个机器语言写的程序就能直接执行了
解释语言vs编译语言
·语言本无编译/解释之分
·常用的执行方式而已
·解释型语言有特殊的计算能力
·编译型语言有确定的运算性能