计算机和编程语言---程序设计入门.pptx
《计算机和编程语言---程序设计入门.pptx》由会员分享,可在线阅读,更多相关《计算机和编程语言---程序设计入门.pptx(609页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机和编程语言计算机是生活必需品如果想要自己设计一些功能和行为,让计算机按照你的意图做事情,就需要写程序了 本课程的主要的目的是通过学习编程,来理解计算机是如何解决问题的,理解计算机的能与不能,擅长与非擅长计算机如何解决问题“请给我一杯水”1.转身走到厨房;2.找到一个杯子;3.找到一个水壶;4.在杯子中倒入一些水;5.拿着杯子走回桌子。人:What to do计算机:How to do计算机语言程序是用特殊的编程语言写出来表达如何解决问题的 不是用编程语言来和计算机交谈,而是描述要求它如何做事情的过程或方法计算机的语言int u=32;int v=26;while(v!=0)int tem
2、p=u%v;u=v;v=temp;printf(%d,u);辗转相除法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.回到第一步。计算机-程序-算法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、个余数;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编译语言语言本无编译/解释之
4、分 常用的执行方式而已 解释型语言有特殊的计算能力 编译型语言有确定的运算性能C语言翁恺为什么是C?http:/ 几乎都是C-like语言 语言的能力/适用领域主要是由 库和 传统所决定的“it was the summer of 69”PDP-7 图片来源http:/www.soetrom.orgPDP-11 图片来源http:/ FORTRAN发展而来的BCPL和B都支持指针间接方式,所以C也支持了C语言还受到了PL/1的影响,还和PDP-11的机器语言有很大的关系1973年3月,第三版的Unix上出现了C语言的编译器1973年11月,第四版的Unix(System Four)发布了,这个
5、版本是完全用C语言重新写的C的发展与版本-K&R经典 C又被叫做“K&R the C”The C Programming Language,by Brian Kernighan and Dennis Ritchie,2nd Edition,Prentice Hall图片来源:http:/en.wikipedia.orgC的发展与版本-标准1989年ANSI发布了一个标准ANSI C1990年ISO接受了ANSI的标准C89C的标准在1995年和1999年两次更新C95和C99所有的当代编译器都支持C99了C语言用在哪里?操作系统嵌入式系统驱动程序底层驱动图形引擎、图像处理、声音效果C是一种工业
6、语言操作系统嵌入式系统驱动程序底层驱动图形引擎、图像处理、声音效果开发效率学习过程开发效率开发乐趣日常应用很少直接用C语言编写学习C的过程主要是写练习代码而非真实软件编译运行C需要被编译才能运行,所以你需要编辑器编译器或者,IDE(集成开发环境)推荐的编程软件Dev C+(4.9 for Win7,5.0 for Win8)免费安装简单不用建工程其他选择MS Visual Studio Express(Windows)Xcode(Mac OS X)Eclipse-CDTGeany(和MinGW一起)Sublime(和MinGW一起)vim/emacs(和MinGW一起)第一个C程序翁恺初学C的
7、困惑用什么软件好?选择太多有时候是个麻烦 当代语言往往只有一个编程软件可用 那就Dev C+5.6.3吧!第一个C程序#include !int main()printf(Hello World!n);!return 0;在Dev C+里程序框架本课程中所有的程序都需要这一段直到学函数之前,我们的代码都只是在这个框架中间输出printf(Hello World!n);!里面的内容叫做“字符串”,printf会把其中的内容原封不动地输出n表示需要在输出的结果后面换一行暂停如果你在使用Dev C+4.9.9.2system(pause);让程序运行完成后,窗口还能留下不是Dev C+4.9.9.2
8、就不需要这个了程序中的错误编译的时候发现的错误所在的地方会以红色的底表示出来具体的错误原因列在下方的窗口里(是英文的)C的编译器给出的错误提示往往不那么好“猜”不要用中文!中国学生还有一个极其常见的低级错误,就是用了中文输入法来输入程序。那些标点符号,在中文和英文可能看上去相似,但是对于计算机是完全不同的符号,如果你还开了全角标点的话,问题就更严重了做计算printf(%dn,23+43);%d说明后面有一个整数要输出在这个位置上!printf(23+43=%dn,23+43);四则运算%表示取两个数相除以后的余数四则运算C符号意义+加-减*乘/除%取余()()括号第一周的练习在自己的计算机上
9、安装好编程的软件依次下载/拷贝课程网站上的四个程序编译并运行结果如何有没有问题来讨论区讨论吧!尝试理解变量翁恺做计算算找零如何能在程序运行时输入那个数字23,然后计算输出结果?算找零如何能在程序运行时输入那个数字23,然后计算输出结果?需要:!1.有地方放输入的数字;!2.有办法输入数字;!3.输入的数字能参与计算。change.c今后课件上的程序都只有main的里面的部分如何输入输入也在终端窗口中输入是以行为单位进行的,行的结束标志就是你按下了回车键。在你按下回车之前,你的程序不会读到任何东西变量int price=0;这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0
10、。变量是一个保存数据的地方,当我们需要在程序里保存数据时,比如上面的例子中要记录用户输入的价格,就需要一个变量来保存它。用一个变量保存了数据,它才能参加到后面的计算中,比如计算找零。变量定义变量定义的一般形式就是:;int price;int amount;int price,amount;变量的名字变量需要一个名字,变量的名字是一种“标识符”,意思是它是用来识别这个和那个的不同的名字。标识符有标识符的构造规则。基本的原则是:标识符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,C语言的关键字(有的地方叫它们保留字)不可以用做标识符。C语言的保留字auto,break,case,c
11、har,const,continue,default,do,double,else,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while,inline,restrict不需要背诵!赋值和初始化int price=0;这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。price=0是一个式子,这里的“”是一个赋值运算符,表示将“”右边的值赋给左边的变量
12、。赋值和数学不同,a=b在数学中表示关系,即a和b的值一样;而在程序设计中,a=b表示要求计算机做一个动作:将b的值赋给a。关系是静态的,而动作是动态的。在数学中,a=b和b=a是等价的,而在程序设计中,两者的意思完全相反初始化当赋值发生在定义变量的时候,就像程序1中的第7行那样,就是变量的初始化。虽然C语言并没有强制要求所有的变量都在定义的地方做初始化,但是所有的变量在第一次被使用(出现在赋值运算符的右边)之前被应该赋值一次如果没有初始化?变量初始化 =;int price=0;int amount=100;组合变量定义的时候,也可以在这个定义中单独给单个变量赋初值,如:int price=
13、0,amount=100;读整数scanf(%d,&price);!要求scnaf这个函数读入下一个整数,读到的结果赋值给变量price小心price前面的&如果输入的不是整数会怎样?表达式“”是赋值运算符,有运算符的式子就叫做表达式。price=0;change=100-price;变量类型int price=0;这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。C是一种有类型的语言,所有的变量在使用之前必须定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。第二个变
14、量int change=100-price;定义了第二个变量change并且做了计算C99!ANSI C只能在代码开头的地方定义变量C99ANSI C常量int change=100-price;固定不变的数,是常数。直接写在程序里,我们称作直接量(literal)。更好的方式,是定义一个常量:const int AMOUNT=100;C99!常量int change=100-price;100这个固定不变的数,叫做常数。直接写在程序里,我们称作直接量(literal,字面量)。更好的方式,是定义一个常量变量:const int AMOUNT=100;C99!constconst是一个修饰符,
15、加在int的前面,用来给这个变量加上一个const(不变的)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了。int change=AMOUNT-price;如果你试图对常量做修改,把它放在赋值运算符的左边,就会被编译器发现,指出为一个错误。C99!try让用户输入变量AMOUNT的值,而不是使用固定的初始值这个变量在哪里定义合适呢?tips程序要求读入多个数字时,可以在一行输入,中间用空格分开,也可以在多行输入在scanf的格式字符串中有几个%d,它就等待用户输入一个整数,当然,字符串后面也需要对应有那么多个整数plus.c身高5尺7寸?美国人固执地使用英制计量单位,他
16、们习惯用几尺几寸(英尺英寸)来报自己的身高。如果遇到一个美国人告诉你他是5英尺7,他的身高应该是一米几呢?(5+7 12)0.3048=1.7018米计算身高的程序运行一下为什么总是1.524米?因为.因为两个整数的运算的结果只能是整数10/3*3=?10和10.0在C中是完全不同的数10.0是浮点数浮点数带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在C语言中你不会遇到定点数。人们借用浮点数这个词来表达所有的带小数点的数。改进(foot+inch/12)*0.3048;!(foot+inch/12.0)*
17、0.3048;!当浮点数和整数放到一起运算时,C会将整数转换成浮点数,然后进行浮点数的运算。doubleinch是定义为int类型的变量,如果把int换成double,我们就把它改为double类型的浮点数变量了。double的意思是“双”,它本来是“双精度浮点数”的第一个单词,人们用来表示浮点数类型。除了double,还有float(意思就是浮点!)表示单精度浮点数。另一个版本数据类型整数intprintf(%d,)scanf(%d,)带小数点的数doubleprintf(%f,)scanf(%lf,)还有更多的,以后再仔细研究!整数整数类型不能表达有小数部分的数,整数和整数的运算结果还是整
18、数。计算机里会有纯粹的整数这种奇怪的东西,是因为整数的运算比较快,而且占地方也小。其实人们日常生活中大量做的还是纯粹整数的计算,所以整数的用处还是很大的。表达式计算翁恺表达式一个表达式是一系列运算符和算子的组合,用来计算一个值amount=x*(1+0.033)*(1+0.033)*(1+0.033);total=57;count=count+1;value=(min/2)*lastValue;运算符运算符(operator)是指进行运算的动作,比如加法运算符“+”,减法运算符“-”。算子(operand)是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值运算符int
19、sides=4;sides=7;sides=sides+5;计算result=12+6/2;result=(12+6)/2;result=4*(12 4)/2);四则运算%表示取两个数相除以后的余数四则运算C符号意义+加-减*乘/除%取余()()括号计算时间差输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也以几小时几分表示如果直接分别减,会出现分钟借位的情况:1点40分和2点10分的差?计算时间差hour1*60+minute1转换为分钟为单位t/60小时部分;t%60分钟求平均值写一个程序,输入两个整数,输出它们的平均值运算符优先级优先级运算符运算结合关系举例1+单
20、目不变自右向左a*+b1单目取负自右向左a*-b2*乘自左向右a*b2除自左向右a/b2%取余自左向右a%b3+加自左向右a+b3-减自左向右a-b4=赋值自右向左a=b单目运算符只有一个算子的运算符:+、-int a=10;int b=-20;printf(%d,a*-b);赋值运算符赋值也是运算,也有结果a=6的结果是a被赋予的值,也就是6a=b=6 a=(b=6)“嵌入式赋值”不利于阅读容易产生错误结合关系一般自左向右单目+-和赋值=自右向左result=a=b=3+c;result=2;result=(result=result*2)*6*(result=3+result);这样的表达
21、式太复杂,不容易阅读和理解,容易造成读程序时的误解。所以,要避免写出这样的复杂表达式来的。这个表达式应该被拆成若干个表达式,然后以明显的正确的顺序来进行计算。计算复利在银行存定期的时候,可以选择到期后自动转存,并将到期的利息计入本金合并转存。如果1年期的定期利率是3.3%,那么连续自动转存3年后,最初存入的x元定期会得到多少本息余额?本息合计 x(1+3.3%)3计算复利int x;scanf(%d,&x);double amount=x*(1+0.033)*(1+0.033)*(1+0.033);printf(%f,amount);要计算任意年以后的本息金额,就需要做(1+0.033)n的计
22、算交换两个变量如果已经有:int a=6;int b=5;如何交换a、b两个变量的值?程序是按步执行的程序表达的是顺序执行的动作,而不是关系a=b;b=a;是依次执行的,结果使得a和b都得到b原来的值交换int t=a;a=b;b=t;复合赋值5个算术运算符,+-*/%,可以和赋值运算符“=”结合起来,形成复合赋值运算符:“+=”、“-=”、“*=”、“/=”和“%=”total+=5;total=total+5;注意两个运算符中间不要有空格复合赋值total+=(sum+100)/2;total=total+(sum+100)/2;total*=sum+12;total=total*(sum
23、+12);total/=12+6;total=total/(12+6);递增递减运算符“+”和“-”是两个很特殊的运算符,它们是单目运算符,这个算子还必须是变量。这两个运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者-1。count+;count+=1;count=count+1;前缀后缀+和-可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。a+的值是a加1以前的值,而+a的值是加了1以后的值,无论哪个,a自己的值都加了1了。前缀后缀3-3SA$%$count+counta1countmA+countcounta1count+1)Acount-countS
24、1countmA-countcountS1count-1)A+-/?i+?a=b+=c+-d+-e/-f判断翁恺做判断计算时间差输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也以几小时几分表示如果直接分别减,会出现分钟借位的情况:1点40分和2点10分的差?如果就用分别减的方案,然后判断有没有出现借位行不行?借位的表现是,分钟减的结果小于0int im=minute2-minute1;if(im 大于=大于或等于小于3);printf(%dn,5=3+4int r=a0;优先级判断是否相等的=和!的优先级比其他的低,而连续的关系运算是从左到右进行的5 3=6 46 5
25、 4a=b=6a=b 0找零计算器找零计算找零计算器找零计算器需要用户做两个操作:输入购买的金额,输入支付的票面,而找零计算器则根据用户的输入做出相应的动作:计算并打印找零,或告知用户余额不足以购买。从计算机程序的角度看,这就是意味着程序需要读用户的两个输入,然后进行一些计算和判断,最后输出结果。找零计算器注释以两个斜杠“/”开头的语句把程序分成了三个部分:1.初始化2.读入金额和票面3.计算并打印找零注释(comment)插入在程序代码中,用来向读者提供解释信息。它们对于程序的功能没有任何影响,但是往往能使得程序更容易被人类读者理解。/*/注释延续数行的注释,要用多行注释的格式来写。多行注释
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 编程 语言 程序设计 入门
限制150内