吉林大学c语言 第一章 C语言概述new.ppt
语言程序设计基础语言程序设计基础教师:刘威教师:刘威2012-20132012-20132012-20132012-2013学年第学年第学年第学年第1 1 1 1学期学期学期学期课程要求课程要求u 课前请做好预习课前请做好预习u 保持课堂安静,头脑清醒,思维活跃保持课堂安静,头脑清醒,思维活跃u 做好课堂笔记做好课堂笔记u 认真、独立、按时完成并提交作业认真、独立、按时完成并提交作业u 重视上机实践,有效利用宝贵的上机时间重视上机实践,有效利用宝贵的上机时间第一第一章 C语言概述u 程序设计语言u C语言的历史与特点u C程序初体验u 算法概述计算机语言是指用于人与计算机之间通讯的语言。计算机语言是指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。计算机语言是人与计算机之间传递信息的媒介。1.1 程序设计语言程序设计语言 1.1.1 计算机语言计算机语言 TIOBETIOBE(世界程序排行榜)(世界程序排行榜)(世界程序排行榜)(世界程序排行榜)Java在Web服务器端的地位一直相当牢固。C,C+则是套装软件,基础软件和大量硬件设备研发的主流开发语言。1.1 程序设计语言程序设计语言 1.1.1 计算机语言计算机语言 1.机器语言机器语言 机器语言是直接用二进制代码指令表达的机器语言是直接用二进制代码指令表达的计算机计算机语语言,指令是用言,指令是用0和和1组成的一串代码。组成的一串代码。2.汇编语言汇编语言 在汇编语言中,用助记符代替操作码,用地址符号在汇编语言中,用助记符代替操作码,用地址符号(或标或标号号)代替地址码,通过用符号代替机器语言中的二进制码,就代替地址码,通过用符号代替机器语言中的二进制码,就把机器语言变成了汇编语言。把机器语言变成了汇编语言。如:如:ADD AL,5 机器语言和汇编语言都是面向机器的语言,由于它们机器语言和汇编语言都是面向机器的语言,由于它们“贴近贴近”计算机,所以称为低级语言。计算机,所以称为低级语言。1.1 程序设计语言程序设计语言 1.1.2 计算机语言的发展计算机语言的发展3.高级语言高级语言为了克服低级语言的缺点为了克服低级语言的缺点(移植性弱等),出现了高移植性弱等),出现了高级语言。高级语言主要是相对于机器语言和汇编语言而言,级语言。高级语言主要是相对于机器语言和汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的言,如目前流行的FORTAN、BASIC、COBOL、Pascal、C等。等。4.基于面向对象思想的非过程化语言基于面向对象思想的非过程化语言 从现实世界中客观存在的事物(即对象)出发来构造从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。为系统中的对象,作为系统的基本构成单位。1.1 程序设计语言程序设计语言 1.1.2 计算机语言的发展计算机语言的发展1C语言的诞生语言的诞生2C语言的发展语言的发展1.1 程序设计语言程序设计语言 1.1.2 计算机语言的发展计算机语言的发展1简洁紧凑、灵活方便简洁紧凑、灵活方便 C语言一共只有语言一共只有32个关键字,个关键字,9种控制语句,程序书种控制语句,程序书写自由,主要用小写字母表示。写自由,主要用小写字母表示。2运算符丰富运算符丰富 C的运算符包含的范围很广泛,共有的运算符包含的范围很广泛,共有34个运算符。个运算符。3数据类型丰富数据类型丰富 C的数据类型有:整型、实型、字符型、数组类型、的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各指针类型、结构体类型、共用体类型等,能用来实现各种复杂数据类型的运算,种复杂数据类型的运算,C语言也引入了指针概念,使语言也引入了指针概念,使程序效率更高。程序效率更高。1.2 C1.2 C语言概述语言概述 1.2.2 C语言的特点语言的特点4C是结构化程序设计语言是结构化程序设计语言 C语言具有结构化程序语言所要求的三大基本结构,层次语言具有结构化程序语言所要求的三大基本结构,层次清晰,逻辑性强,便于维护、调试。清晰,逻辑性强,便于维护、调试。5C语法限制不太严格、程序设计自由度大。语法限制不太严格、程序设计自由度大。6C语言允许直接访问物理地址,可以直接对硬件进行操作语言允许直接访问物理地址,可以直接对硬件进行操作 7C语言程序生成代码质量高,程序执行效率高语言程序生成代码质量高,程序执行效率高 C语言一般只比汇编程序生成的目标代码效率低语言一般只比汇编程序生成的目标代码效率低1020%。8C语言适用范围大,可移植性好语言适用范围大,可移植性好 C语言适合于多种操作系统,如语言适合于多种操作系统,如DOS、UNIX,也适用于多,也适用于多种机型。种机型。1.2 C1.2 C语言概述语言概述 1.2.2 C语言的特点语言的特点例例1.1 1.1 第一个程序:输出字符串第一个程序:输出字符串“这是我的第一个这是我的第一个C语言程序语言程序”/*#C程序初体验#*/#include /包含标准输入输出头文件void main()printf(这是我的第一个C语言程序n);1.3 C1.3 C1.3 C1.3 C程序程序程序程序初体验初体验初体验初体验关于关于C语言源程序的说明:语言源程序的说明:1)编写)编写C语言程序时通常都用小写字母语言程序时通常都用小写字母 2)C程序的执行部分是由语句组成的,每个程序的执行部分是由语句组成的,每个C语言语句都以语言语句都以分号结束。分号结束。3)C语言中的注释分两种,单行注释和块注释。单行注释用语言中的注释分两种,单行注释和块注释。单行注释用双斜杠双斜杠/引导,一直到本行末。块注释用引导,一直到本行末。块注释用/*/表示。表示。4)以)以#号开头的称为预编译处理。号开头的称为预编译处理。5)main表示表示“主函数主函数”,每一个程序都必须有且只能有,每一个程序都必须有且只能有一个一个main函数。函数。1.3 C1.3 C1.3 C1.3 C程序程序程序程序初体验初体验初体验初体验运行一个语言程序的一般过程是:运行一个语言程序的一般过程是:(1)启动)启动VC,进入,进入VC集成环境。集成环境。(2)编辑(或修改)源程序。)编辑(或修改)源程序。(3)编译:如果编译成功,则可进行下一步操作;否则,)编译:如果编译成功,则可进行下一步操作;否则,返回(返回(2)修改源程序,再重新编译,直至编译成功。)修改源程序,再重新编译,直至编译成功。(4)连接:如果连接成功,则可进行下一步操作;否则,)连接:如果连接成功,则可进行下一步操作;否则,根据系统的错误提示,进行相应修改,再重新连接,直至连根据系统的错误提示,进行相应修改,再重新连接,直至连接成功。接成功。(5)运行:通过观察程序运行结果,验证程序的正确性,)运行:通过观察程序运行结果,验证程序的正确性,如果出现逻辑错误,则必须返回(如果出现逻辑错误,则必须返回(2)修改源程序,再重新)修改源程序,再重新编译、连接和运行,直至程序正确。编译、连接和运行,直至程序正确。(6)退出)退出VC集成环境,结束本次程序运行。集成环境,结束本次程序运行。1.3 C1.3 C1.3 C1.3 C程序程序程序程序初体验初体验初体验初体验例例1.2 求两个给定的整数的和并输出到屏幕上。求两个给定的整数的和并输出到屏幕上。#includevoid main()int a,b,sum;/定义定义3个整型变量个整型变量 a=123;b=456;/分别给变量分别给变量a,b赋初值赋初值 sum=a+b;/求求a,b之和并送给变量之和并送给变量sum printf(“Sum of a plus b is%dn”,sum);/输出输出 sum程序运行结果程序运行结果:Sum of a plus b is 579 1.3 C1.3 C1.3 C1.3 C程序程序程序程序初体验初体验初体验初体验例例1.3 通过函数调用实现例通过函数调用实现例1.1。#includevoid printstr()printf(这是我的第一个这是我的第一个C语言程序语言程序n);void main()printf(*n);printstr();printf(*n);1.3 C1.3 C1.3 C1.3 C程序程序程序程序初体验初体验初体验初体验C程序的结构特点:程序的结构特点:1)程序是由函数构成的。)程序是由函数构成的。2)一个程序总是从)一个程序总是从main函数开始,在函数开始,在main函数中函数中 结束,而不论结束,而不论main函数在整个程序中的位置如何。函数在整个程序中的位置如何。3)C语言的变量名、语言的变量名、函数函数名、标号等标识符通常用名、标号等标识符通常用小写字母来表示,小写字母来表示,C语言对大小写敏感。语言对大小写敏感。1.3 C1.3 C1.3 C1.3 C程序程序程序程序初体验初体验初体验初体验 解决任何问题都需要有一定的步骤和方法,解决任何问题都需要有一定的步骤和方法,解决某个问题的方法和步骤就是算法。解决某个问题的方法和步骤就是算法。1.4 算法概述算法概述 1.4.1 算法的概念算法的概念(1)有穷性)有穷性 算法必须能在执行有限个步骤之后终止。算法必须能在执行有限个步骤之后终止。(2)确定性)确定性 算法的每一步骤必须有确切的定义,不能模棱两可。算法的每一步骤必须有确切的定义,不能模棱两可。(3)输入)输入 一个算法有一个算法有0个或多个输入。个或多个输入。(4)输出)输出 一个算法有一个或多个输出。一个算法有一个或多个输出。1.4 算法概述算法概述 1.4.2 算法的特性算法的特性(5)有效性)有效性 算法中的每一个步骤都应当能有效地执行算法中的每一个步骤都应当能有效地执行(6)高效性)高效性 执行速度相对快,占用资源相对少。执行速度相对快,占用资源相对少。(7)健壮性)健壮性 算法除了能对合法的输入数据得到正确的结果外,还应算法除了能对合法的输入数据得到正确的结果外,还应对非法的输入数据做出正确合理的处理。对非法的输入数据做出正确合理的处理。1.4 算法概述算法概述 1.4.2 算法的特性算法的特性1用自然语言表示算法用自然语言表示算法自然语言就是我们日常使用的语言,可以是汉语、自然语言就是我们日常使用的语言,可以是汉语、英语或者其他语言,其特点是通俗易懂。英语或者其他语言,其特点是通俗易懂。下面是用自然语言表示求下面是用自然语言表示求5!的算法:!的算法:Step1:求:求12,得到结果,得到结果2;Step2:将:将Step1中的结果乘以中的结果乘以3,得到结果,得到结果6;Step3:将:将Step2中的结果乘以中的结果乘以4,得到结果,得到结果24;Step4:将:将Step3中的结果乘以中的结果乘以5得到最后的结果得到最后的结果120。1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法可以设两个变量:一个变量代表被乘数,一个变量代表乘可以设两个变量:一个变量代表被乘数,一个变量代表乘数。不另设变量存放乘积结果,而是直接将每一步骤的乘数。不另设变量存放乘积结果,而是直接将每一步骤的乘积放在被乘数变量中。设变量积放在被乘数变量中。设变量t为被乘数,变量为被乘数,变量i为乘数,为乘数,用循环方法来求结果。用循环方法来求结果。改进后的算法:改进后的算法:Step1:1=t;Step2:2=i;Step3:t i=t;Step4:i+1=i;Step5:如果:如果i不大于不大于5,则返回到,则返回到step3处,重新执行处,重新执行Step3以及其后的以及其后的Step4和和Step5;否则,算法结束。;否则,算法结束。1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法2用传统流程图表示算法用传统流程图表示算法 起止框起止框判断框判断框处理框处理框输入输入/输出框输出框注释框注释框流向线流向线连接点连接点1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法求求5!的流程图!的流程图1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法3用用NS图表示算法图表示算法 结构化程序中的三种基本结构:结构化程序中的三种基本结构:顺序结构顺序结构选择结构选择结构1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法当型当型(While型型)循环结构循环结构 直到型直到型(Until型型)循环循环 1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法可用可用N-S图表示这三种基本结构:图表示这三种基本结构:(1)顺序结构顺序结构(2)选择结构选择结构(3)循环结构循环结构1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法用用N-S图表示的图表示的5!算法!算法1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法4.用伪代码表示用伪代码表示5!的算法!的算法开始开始 置置t的初值为的初值为1 置置i的初值为的初值为2 当当i=5,执行下面操作:,执行下面操作:使使t=ti 使使i=i+1 循环体到此结束循环体到此结束 输出输出t的值的值 结束结束1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法#include void main()int i,t;t=1;i=2;while(i=5)t=t*i;i=i+1;printf(“%dn”,t);5.用计算机语言表示的用计算机语言表示的5!算法!算法1.4 算法概述算法概述 1.4.3 算法的表示方法算法的表示方法