《C语言的学习方法第一讲》由会员分享,可在线阅读,更多相关《C语言的学习方法第一讲(47页珍藏版)》请在金锄头文库上搜索。
1、课程目标课程目标了解C语言概述与发展 熟悉C语言程序结构与开发环境 熟练掌握C语言数据类型 熟练掌握运算符与表达式算术运算符 增量运算符逻辑运算符关系运算符 按位运算符 C的特殊运算符 -“?” “&”和“*”, “,” 运算符的优先级 第一页C语言的产生与发展 在上个世纪七十年代以前,系统软件主要是用汇编语言编写的。但是汇编语言程序过分依赖于计算机硬件,其可读性和可移植性都很差;而一般的高级语言又难以实现对计算机硬件的直接操作,于是人们希望有一种兼有汇编语言和高级语言特性的中间语言。机器语言汇编语言高级语言面向过程面向对象C语言C语言概述与发展第二页C语言的历史过程C语言的最初形成时间:19
2、721973地点:美国贝尔实验室目的:UNIX操作系统设计人: Ken.Thompson和Dennis.M.RitchieC语言的多种版本历史上出现过多种C 语言版本标准C: K&R合著The C Programming LanguageANSI C: 1983年87 ANSI C: 1987年1990年国际标准的ANSI C第三页标准C的形成过程语言在产生以后,由于存在很多缺陷,C语言爱好者了对它进行了多次改进,但是在上个世纪七十年代,这些改进并没有形成大家共同遵守的规范。直到上世纪80年代初,美国国家标准化协会(ANSI),根据语言问世以来各种版本对语言的发展和扩充,制定了ANSI C标准
3、(1989-1990年再次做了修订)。本书以ANSI C新标准来介绍。第四页C语言的特点 C语言同时具有汇编语言和高级语言的优势(1)语言简洁、紧凑,使用方便、灵活。(2)运算符极其丰富。(3)程序设计结构化、模块化(4)生成的目标代码质量高,程序执行效率高。(5)可以直接操纵硬件。(6)可移植性好(较之汇编语言)。第五页程序设计语言概述 程序设计语言是用户用来编写程序操作计算机的语言系统,其发展经历三个阶段:(1)机器语言用二进制表示的,是计算机能直接识别和执行的语言。(2)汇编语言采用助记符号来表示机器语言中的指令和数据,即用助记符号代替了用二进制表示的机器语言。 汇编程序翻译汇编语言程序
4、机器语言程序第六页(3)高级语言 机器语言和汇编语言都是面向机器的,所谓面向机器是指CPU不同,机器语言和汇编语言都有可能不一样。 从20世纪50年代中期开始,出现了接近于自然语言和数学表达式、易于被人们接受和理解的高级语言,并从此得到了广泛的使用。如Fortran语言、Basic语言、C语言、Java语言等。 由于计算机只能识别机器语言,因此,用高级语言编写的程序(也源程序)都要通过专用的程序将高级语言翻译成机器语言程序(或称目标程序)后才能被计算机执行。第七页C语言源程序、目标程序、可执行程序比较C源程序是C程序员在C开发环境里书写的程序,程序后缀常是.c或者.cpp。C目标程序是编译器将
5、C源程序编译成机器语言形成的程序,程序后缀常是.obj。C可执行程序是将C目标程序经过一系列处理后形成的机器可以直接执行的程序。第八页C语言程序结构与开发环境C程序的基本结构 C语言程序的基本结构是对C语言程序构件进行合理布署时应该遵循的规范。一个较完整的程序大致包括:包含文件(一组#include语句)、用户函数说明部分、全局变量定义、主函数和若干子函数组成。在主函数和子函数中又包括局部变量定义、若干个C库函数、控制流程语句、用户函数的调用语句等。 下面一段C程序演示了C程序的基本结构 。第九页/*this is for the beginners to learn c */#include
6、 void welcome() printf(welcome);int n; void main() welcome(); printf(“我是主函数”); 这是注释行包含文件说明自定义函数定义全局变量主函数定义自定义函数调用以下程序格式,是大多数程序员采用的书写格式第十页C语言程序书写时的注意事项程序大小写是有区别的,或者说大小写是相关的,一般用小写字母书写;注释部分包含在“/*”和“*/”之间,在编译时它被C编译器忽略;每个程序必须有一个而且只能有一个称做主函数的main()函数;主函数、每个子函数必须用一对花括号“”和“”括起来;大多数语句结尾必须要用“;”作为语句结束符,否则C编译器不
7、认为该语句结束;第十一页C语言程序的其他特点C语言程序还有以下特点:格式特点:不使用行号,无程序行概念可使用空行和空格常用锯齿形书写格式注释 /* */为注释,不能嵌套 不产生编译代码优秀C程序员的必备格式: 使用TAB缩进 对齐 有足够的注释 有合理的空行void main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j程序-MicroSoft Visual Studio 6.0- MicroSoft Visual C+ 6.0”菜单项,如图所示: 第十四页(2) 在图1-2中单击鼠标左键,即打开图所示的Visual C+ 6.0开
8、发工具的主窗口: 第十五页(3)在上图所示的菜单栏中点击“文件新建”菜单项,弹出如图所示的“新建”对话框,由于我们要新建一个程序文件,而不是创建一个工程,因此,我们需要通过“文件”选项卡来创建一个程序文件;第十六页(4)在上图中点击“文件”选项卡,如图所示,在列表框中选择“C+ Source File”选项,在“文件”下面的文本框中为程序命名,本例文件的名字为:“FirstPro”,在“C目录:”中选择程序文件所在的位置,本例采用默认的位置;第十七页(5)在上图所示的对话框中点击“确定”按钮,我们就成功新建了一个名为“FirstPro.cpp”的C程序文件,即出现如图所示的“程序编辑器”窗口,
9、这就是我们要编辑程序代码的可视化窗口,我们需要在窗口中输入程序代码:第十八页(6)在编辑器中输入下面的一段代码,输入情况如图所示;#include void main()printf(“世界,您好! n”); 第十九页(7)程序编写完成后,我们要编译运行这个程序,以查看程序的运行结果,点击“编译”菜单下的“全部重建”菜单项(或直接点击键盘上的“F7”键),即弹出图1-8所示的对话框,该对话框询问:“当前的命令需要一个活动的工程工作区,你想建立一个缺省的工作区吗?”,选择“是(Y)”按钮;第二十页此后出现如图1-9所示的对话框,该对话框询问:“是否将改动保存到(创建文件时所设置的路径)”,选择“
10、是(Y)”按钮;此时重建完成,可以执行程序了;选择“是(Y)”第二十一页(8)选择“编译”菜单下的“!执行FirstPro.exe”菜单项执行程序,如图所示,或同时点击键盘上的“CTRL+F5”键来执行程序;“!执行FirstPro.exe第二十二页 程序的运行结果如图所示,可以按键盘上的任意键返回VC+编辑器;第二十三页C语言运算符概述 运算符:是用来表示各种运算的符号。 表达式:用运算符将运算对象连接起来形成的运 算式。 C语言运算符:是一种向编译程序说明一个特定的数学或逻辑运算的符号。运算符必须有运算对象。 C语言运算符的分类算术运算符 关系运算符与逻辑运算符 按位运算符 第二十四页算术
11、运算符算术运算符的运算规则如下表所示:对象数名称运算符运算规则运算对象运算结果结合性单目正+取原值整型或实型整型或实型自右向左负-取负值双目加+加法自左向右减-减法乘*乘法除/除法模%整除取余数整型、字符型第二十五页注意事项正、负运算是单目运算符,结合性是自右向左的。除法运算与运算对象的数据类型有关。若两个对象都是整型数据,则运算结果是整数(舍弃小数部分);若两个中有一个或两个都是实型,则运算结果为实型。但是若除数或被除数中有一个为负值,则舍入的方向是不固定的。模运算(%)要求两个运算对象必须均为整型数据。算术运算符优先级别单目算术运算符优于双目算术运算符“ *,/,% ”优于“,”;同级单目
12、算术运算符的结合性满足右结合,同级双目算术运算符满足左结合。第二十六页C语言算术表达式 C语言算术表达式: 由算术运算符和括号将运算对象连接起来的、符合C语法规则的式子称为。运算对象包括常量、变量和函数等。 注意事项: 在表达式求值时,先按运算符的优先级别高低顺序执行。若在一个运算对象两侧的运算符的优先级别相同,则按规定的结合性处理。 C语言中允许种类数值型数据之间进行混合运算,在进行混合运算时,不同类型的数据要先转换成同一类型,然后再进行运算。 字符型常量、字符型变量可以在算术表达式中使用。第二十七页增量运算符 增量运算符1、自增运算符:+ x=x+1 可写成x+, 或+x i+与+i的区别
13、:x= i + 表示将i的值赋给x后, i加1。x=+ i 表示i先加1后,再将新值赋给x。 2、自减运算符:- - x=x-1 可写成x-, 或-x i - - 与- - i的区别:x= i - 表示将i的值赋给x后, I减1。x= - i 表示i先减1后,再将新值赋给x。 自增自减运算符都是单目运算符,是对单目整型、字符型、指针型以及数组的下标等数据进行算术运算的,运算的结果仍是原数据类型。第二十八页自增自减运算符的运算规则如下表所示:对象数名称运算符运算规则运算对象运算结果结合性单目前自增+先加1,后使用整型字符型指针型数组下标同运算对象的类型自右向左后自增+先使用,后加1前自减-先减1
14、,后使用后自减-先使用,后减1举例说明:若i为3,则执行后:(1)+i/*运算式的值为4,i的值为4 */(2)i+ /*运算式的值为3,i的值为4 */(3)-i /*运算式的值为2,i的值为2*/(4)i- /*运算式的值为3,i的值为2 */第二十九页注意事项1、自增自减运算符的运算对象只能是变量,不能用于常量或表达式。 2、自增自减运算符既可以放在运算对象的前 面(前缀),也可以放在运算对象的后面(后缀),两者功能上略有不同。3、在表达式中包含自增、自减运算时,要能正确分析,否则很容易出错。若i=5,请分析下面语句执行后j、i的值: j=i+; /*j的值为5,i的值为6*/ j=+i
15、; /*j的值为6,i的值为6*/第三十页赋值运算符用于将表达式的值赋给变量。是一个双目运算符,运算符的左边必须是变量,右边是表达式,赋值运算符(用=表示),用于将表达式的值赋给变量,结合性是自右向左的。例如:int i=5;是将常量值5赋给变量x.赋值运算符=右侧可以是变量或表达式. 例如:int i=5,j=i;将变量i的值赋给变量j. 第三十一页赋值语句中的数据类型转换在赋值语句中,类型转换规则是:等号右边的值转换为等号左边变量所属的类型。 做除法运算时应特别注意 ,例如:int i=15;float f =i/2; 运行后,f=7而并不等于准确值7.5 正确的做法应该是:int i=1
16、5;float f =i/2.0; 也可直接将i定义为浮点数。 第三十二页逻辑运算符和表达式逻辑运算符种类: ! & |逻辑运算真值表: C语言中,运算量: 0表示“假”, 非0表示“真”, 运算结果: 0表示“假”, 1表示“真”,第三十三页l优先级:! & | 高低l结合方向:! :从右向左& :从左向右| :从左向右例 a=x & x=b / (a=x) & (xb&xy /(ab)&(xy) a=b|x=y /(a=b)|(x=y) !a|ab /(!a)|(ab)初学者如果不熟悉逻辑运算符时,就可以写成上面的注释中带括号的形式,这样就很容易区分和理解其中的各个表达式。第三十四页关系运算符关系运算符是比较两个操作数大小的符号 C的关系运算符作用对照表 :操作符作用大于=大于等于小于右移”和“移位的位数 左移:变量名移位的位数 经过移位后,一端的位被“挤掉”,而另一端空出的位以0填补,所以,C中的移位不是循环移动的。 第三十七页移位的使用技巧 可以代替乘法和除法运算,但速度远远快于乘法和除法。 左移等效于乘法: 左移1位,即箭头向左,右侧补0,等于乘21, 左移两位等于乘22,左