大学计算机基础—程序设计基础(理工类)_第1页
大学计算机基础—程序设计基础(理工类)_第2页
大学计算机基础—程序设计基础(理工类)_第3页
大学计算机基础—程序设计基础(理工类)_第4页
大学计算机基础—程序设计基础(理工类)_第5页
已阅读5页,还剩135页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 2第十章 程序设计基础 310.1 程序与程序设计 410.1.1 10.1.1 程序与程序设计程序与程序设计 计算机是依靠硬件和软件的配合进行工作的,硬件是计算机是依靠硬件和软件的配合进行工作的,硬件是计算机系统的基础,软件附着在硬件上,指挥和控制计算机系统的基础,软件附着在硬件上,指挥和控制硬件工作。硬件工作。 那么,那么,? 计算机程序计算机程序(核心)(核心)文档资料文档资料软件软件软件安装说明书软件安装说明书 用户使用手册用户使用手册 有关技术资料、服务信息等有关技术资料、服务信息等 10.1 程序与程序设计 510.1 程序与程序设计 10.1.1 10.1.1 程序与程序设计

2、程序与程序设计 那么什么是那么什么是呢?呢? 事实上,为了能让计算机解决实际问题并完成预定功事实上,为了能让计算机解决实际问题并完成预定功能,人们需要按照解题步骤和功能要求,从计算机的能,人们需要按照解题步骤和功能要求,从计算机的指令系统中选出相关的指令并进行编排指令系统中选出相关的指令并进行编排( (称为编程称为编程) ),形成一组有序的指令集合。形成一组有序的指令集合。 所以,计算机程序就是计算机为完成某一任务所必须所以,计算机程序就是计算机为完成某一任务所必须执行的一系列指令的集合。执行的一系列指令的集合。 而用程序设计语言而用程序设计语言( (也称计算机语言也称计算机语言) )来编写计

3、算机程来编写计算机程序的过程就叫程序设计。序的过程就叫程序设计。 610.1.2 10.1.2 程序设计语言的发展程序设计语言的发展 计算机程序设计语言经历了从计算机程序设计语言经历了从机器语言、汇编语言机器语言、汇编语言到到高高级语言级语言的发展历程。的发展历程。1GL2GL3GL 4GL 10.1 程序与程序设计 710.1.2 10.1.2 程序设计语言的发展程序设计语言的发展1. 1.机器语言机器语言 机器语言是计算机诞生和发展初期使用的语言。机器机器语言是计算机诞生和发展初期使用的语言。机器语言程序是语言程序是由和的二进制代码由和的二进制代码按一定规则按一定规则组成组成的,的,并能被

4、机器直接理解和执行的指令集合。并能被机器直接理解和执行的指令集合。例如,计算例如,计算A=8+12A=8+12的机器语言程序如下:的机器语言程序如下: 10110000 00001000 10110000 00001000 : :把把8 8放入累加器放入累加器A A中中 00101100 00001100 00101100 00001100 :12:12与累加器与累加器A A中的值相加,结果中的值相加,结果 仍放入仍放入A A中中 11110100 11110100 : :结束,停机结束,停机10.1 程序与程序设计 810.1.2 10.1.2 程序设计语言的发展程序设计语言的发展1. 1.

5、机器语言机器语言 机器语言编写的程序不仅难读、难懂、难修改,而且机器语言编写的程序不仅难读、难懂、难修改,而且不同机器使用的指令系统也不尽相同,所以现在已经不同机器使用的指令系统也不尽相同,所以现在已经没有人使用没有人使用机器语言直接编程了。机器语言直接编程了。 当然,机器语言也有其优点,编写的程序代码不需要当然,机器语言也有其优点,编写的程序代码不需要翻译,因此占用空间少,翻译,因此占用空间少,执行速度快执行速度快。 10.1 程序与程序设计 910.1.2 10.1.2 程序设计语言的发展程序设计语言的发展2. 2.汇编语言汇编语言 汇编语言开始于汇编语言开始于2020世纪世纪5050年代

6、初。为了克服机器语言的年代初。为了克服机器语言的缺点,人们将缺点,人们将机器指令的代码用英文助记符来表示机器指令的代码用英文助记符来表示,例,例如用如用ADDADD表示加、表示加、JMPJMP表示程序跳转等。表示程序跳转等。 例如,计算例如,计算A=8+12A=8+12的汇编语言程序如下:的汇编语言程序如下: MOV MOV A , 8A , 8 : : 把把8 8放入累加器放入累加器A A中中 ADD ADD A , 12A , 12 : : 1212与累加器与累加器A A中的值相加,结果仍放入中的值相加,结果仍放入A A中中 HLT HLT : : 结束,停机结束,停机 10.1 程序与程

7、序设计 1010.1.2 10.1.2 程序设计语言的发展程序设计语言的发展2. 2.汇编语言汇编语言 汇编语言克服了机器语言难读、难懂的缺点,同时又汇编语言克服了机器语言难读、难懂的缺点,同时又保持了其编程质量高,占存储空间少,执行速度快的保持了其编程质量高,占存储空间少,执行速度快的优点。故在编写优点。故在编写系统软件和过程控制软件系统软件和过程控制软件时,时,仍经常仍经常采用采用汇编语言。汇编语言。 但汇编语言仍然是但汇编语言仍然是面向机器面向机器的语言。使用汇编语言编的语言。使用汇编语言编程需要直接安排存储,规定寄存器和运算器的动作次程需要直接安排存储,规定寄存器和运算器的动作次序等。

8、此外,不同计算机的指令长度、寻址方式、寄序等。此外,不同计算机的指令长度、寻址方式、寄存器数目等都不一样,所以汇编语言程序的通用性较存器数目等都不一样,所以汇编语言程序的通用性较差。差。 10.1 程序与程序设计 1110.1.2 10.1.2 程序设计语言的发展程序设计语言的发展2. 2.汇编语言汇编语言 汇编语言编写的程序汇编语言编写的程序,必须经过,必须经过汇编程序汇编程序翻译成计算机所能识别的机器语翻译成计算机所能识别的机器语言后,才能被计算机执行言后,才能被计算机执行 。 10.1 程序与程序设计 汇编程序汇编程序 汇编语言汇编语言 源程序源程序 机器语言机器语言 程序程序 翻译翻译

9、 1210.1.2 10.1.2 程序设计语言的发展程序设计语言的发展3.3.高级语言高级语言 从最初与计算机交流的痛苦经历中,人们意识到,应从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,它接近于数学语言或自然语该设计一种这样的语言,它接近于数学语言或自然语言,同时又不依赖于计算机硬件,编出的程序能在所言,同时又不依赖于计算机硬件,编出的程序能在所有计算机上通用。经过努力,有计算机上通用。经过努力,19541954年年,第一个完全脱,第一个完全脱离机器硬件的高级语言离机器硬件的高级语言FORTRANFORTRAN语言问世语言问世了。了。 高级语言的表示高级语言的表示形式近

10、似于自然语言形式近似于自然语言,对各种公式的,对各种公式的表示近似于数学公式。而且,一条高级语言语句的功表示近似于数学公式。而且,一条高级语言语句的功能往往相当于十几条甚至几十条汇编语言的指令,程能往往相当于十几条甚至几十条汇编语言的指令,程序编写相对比较简单。因此,在序编写相对比较简单。因此,在工程计算、数据处理工程计算、数据处理等方面,人们等方面,人们常用常用高级语言来编写程序。高级语言来编写程序。 10.1 程序与程序设计 1310.1.2 10.1.2 程序设计语言的发展程序设计语言的发展3.3.高级语言高级语言 用高级语言编写的程序称为高级语言源程序,也不能用高级语言编写的程序称为高

11、级语言源程序,也不能直接执行,必须经过语言处理程序的直接执行,必须经过语言处理程序的后才后才能执行。能执行。 语言处理程序语言处理程序 高级语言高级语言 源程序源程序 机器语言机器语言 程序程序 6.2 高级高级语言语言源源程序程序的的执行过程执行过程 解释解释/编译编译 10.1 程序与程序设计 1410.1.2 10.1.2 程序设计语言的发展程序设计语言的发展4. 4.非过程化的程序语言非过程化的程序语言 人们称高级语言是人们称高级语言是第代语言第代语言,其特点是,其特点是面向过程。面向过程。面向过程是指用户在程序中不但要说明解决什么问题,面向过程是指用户在程序中不但要说明解决什么问题,

12、还要告诉计算机如何去解决。还要告诉计算机如何去解决。 计算机技术的发展要求新一代的计算机语言能够根据计算机技术的发展要求新一代的计算机语言能够根据用户说明的问题,用户说明的问题,智能化智能化的去自动寻找解决方案,具的去自动寻找解决方案,具有这种功能的语言称为有这种功能的语言称为第第4 4代语言代语言(Fourth(FourthGeneratioGeneration Languagen Language,4GL)4GL)。目前目前4GL4GL尚未发展成熟尚未发展成熟,主要,主要面向面向基于数据库应用的领域(基于数据库应用的领域(SQL)SQL),还不适用于科学计算、,还不适用于科学计算、高速实时

13、系统和系统软件等的开发。高速实时系统和系统软件等的开发。10.1 程序与程序设计 1510.1.3 10.1.3 常见的程序设计语言常见的程序设计语言第一个高级程序设计语言是第一个高级程序设计语言是FORTRANFORTRAN语言语言, ,它是由美国它是由美国IBMIBM公司在公司在2020世纪世纪5050年代开发出来的。之后年代开发出来的。之后, ,随着计算机应随着计算机应用的发展用的发展, ,先后出现了先后出现了COBOLCOBOL、BASICBASIC、PASCALPASCAL、C C、C+C+、JavaJava等高级语言。等高级语言。由美国著名的计算机先驱人物约翰由美国著名的计算机先驱

14、人物约翰巴克斯巴克斯( John ( John Wamer)Wamer)于于19541954年提出。年提出。FOUTRANFOUTRAN是是FORmula TRANslatorFORmula TRANslator的的缩写,意思是缩写,意思是“公式翻译机公式翻译机”。顾名思义,该语言。顾名思义,该语言主要用主要用于科学计算于科学计算。FORTRANFORTRAN自推出之日起,版本不断更新,功自推出之日起,版本不断更新,功能不断增强,目前在工程应用领域,能不断增强,目前在工程应用领域,FORTRANFORTRAN仍然被广泛仍然被广泛使用使用。 10.1 程序与程序设计 1610.1.3 10.1.

15、3 常见的程序设计语言常见的程序设计语言 COBOLCOBOL(COmmon Business Oriented Language, 通用事务处理语言)是在美国国防部推动下,由政府机构和工是在美国国防部推动下,由政府机构和工业界联合开发的一种语言,于业界联合开发的一种语言,于19601960年正式推出,主要年正式推出,主要用于用于商业数据处理。商业数据处理。 COBOLCOBOL语言曾经使用非常广泛,语言曾经使用非常广泛,2020世纪世纪7070年代近一年代近一半的程序是用半的程序是用COBOLCOBOL语言编写的。当前,语言编写的。当前,在商业领域,在商业领域, C COBOLOBOL语言仍

16、然占有重要席位语言仍然占有重要席位。10.1 程序与程序设计 1710.1.3 10.1.3 常见的程序设计语言常见的程序设计语言 BASICBASIC(Beginners All-purpose Symbolic Instruction Code, 初学者的通用符号指令代码)是是19641964年由美国的年由美国的JoJohn G. Kemenyhn G. Kemeny和和 Thomas E. Kurtz Thomas E. Kurtz 在在FORTRANFORTRAN语言的基础上语言的基础上开发的。由于开发的。由于简单易学简单易学,BASICBASIC语言得到了广泛普及。语言得到了广泛普及

17、。 Microsoft Microsoft公司对公司对BASICBASIC可谓是一往情深,从早期微型可谓是一往情深,从早期微型机上内置的机上内置的BASICBASIC,到,到8080年代产生的第一个编译版本年代产生的第一个编译版本Quick BQuick BASICASIC,直到目前,直到目前非常流行的非常流行的Visual BasicVisual Basic,一直没有中断过,一直没有中断过对对BASICBASIC语言的的改进。语言的的改进。 最新出现的最新出现的Visual Basic. NETVisual Basic. NET,是采用,是采用MicrosoftMicrosoft的的. .

18、NETNET技术的技术的Visual BasicVisual Basic语言。语言。 10.1 程序与程序设计 1810.1.3 10.1.3 常见的程序设计语言常见的程序设计语言PASCALPASCAL是由瑞士计算机科学家是由瑞士计算机科学家Niklaus Wirth Niklaus Wirth 设计的一设计的一种语言,种语言,19681968年提出后被全世界广泛接受。这个语言的名字年提出后被全世界广泛接受。这个语言的名字是为了纪念著名的法国数学家,也是计算科学的先驱是为了纪念著名的法国数学家,也是计算科学的先驱Blaise Blaise PascalPascal而起的。由于结构小巧、语法严

19、谨、数据类型丰富,而起的。由于结构小巧、语法严谨、数据类型丰富,从从2020世纪世纪7070年代末往后的很长一段时间里,年代末往后的很长一段时间里, PASCALPASCAL成为世成为世界范围的界范围的计算机专业教学语言计算机专业教学语言。 2020世纪世纪8080年代,随着年代,随着C C语言的流行,语言的流行,PASCALPASCAL走向了走向了衰落衰落。目前,在商业上仅有目前,在商业上仅有BorlandBorland公司仍在开发基于公司仍在开发基于PASCALPASCAL语言语言系统的系统的DelphiDelphi,它使用了面向对象与软件组件的概念,主要,它使用了面向对象与软件组件的概念

20、,主要用于开发商用软件。用于开发商用软件。 10.1 程序与程序设计 1910.1.3 10.1.3 常见的程序设计语言常见的程序设计语言是由美国贝尔实验室的是由美国贝尔实验室的Kennet L. ThompsonKennet L. Thompson和和Dennis Dennis M. RitchieM. Ritchie于于19721972年设计开发的,当时主要用于编写年设计开发的,当时主要用于编写UNIXUNIX操操作系统。后来由于其功能丰富、使用灵活、执行速度快、可作系统。后来由于其功能丰富、使用灵活、执行速度快、可移植性强,迅速成为最广泛使用的程序设计语言之一。移植性强,迅速成为最广泛使

21、用的程序设计语言之一。 C C语言既可以用来语言既可以用来开发系统软件开发系统软件,也可以用来开发应用,也可以用来开发应用软件,应用领域很广泛。例如,在中国广泛使用的计算机辅软件,应用领域很广泛。例如,在中国广泛使用的计算机辅助设计软件助设计软件AutoCADAutoCAD、数学软件系统、数学软件系统MathematicaMathematica等,以及许等,以及许多语言编译系统本身,其软件系统的全部或部分都是用多语言编译系统本身,其软件系统的全部或部分都是用C C语言语言开发的。开发的。C C语言已经语言已经成为最重要的软件系统开发语言之一成为最重要的软件系统开发语言之一。10.1 程序与程序

22、设计 2010.1.3 10.1.3 常见的程序设计语言常见的程序设计语言 19801980年,贝尔实验室的年,贝尔实验室的Bjarne StroustrupBjarne Stroustrup对对C C语言语言进行了扩充,进行了扩充,加入了面向对象加入了面向对象的概念,并于的概念,并于19831983年改名为年改名为 C+C+。目前,。目前,C+C+已经成为应用最广的面向对象程序设计语已经成为应用最广的面向对象程序设计语言。言。MicrosoftMicrosoft公司的公司的Visual C+Visual C+和和BorlandBorland公司的公司的 C+ BC+ Builderuilde

23、r是是C+C+语言最常用的开发工具,利用这些开发工具,语言最常用的开发工具,利用这些开发工具,可以高效率的开发出复杂的可以高效率的开发出复杂的WindowsWindows应用程序。应用程序。 最新出现的最新出现的C#C#语言语言使用了使用了C+C+的语法和语义,是基的语法和语义,是基于于MicrosoftMicrosoft公司推出的新一代软件开发环境公司推出的新一代软件开发环境.NET.NET平台的平台的高级程序设计语言。高级程序设计语言。10.1 程序与程序设计 2110.1.3 10.1.3 常见的程序设计语言常见的程序设计语言 JavaJava是是SunSun公司开发的一种跨平台的网络编

24、程语言,公司开发的一种跨平台的网络编程语言,于于19951995年正式发布。其语言风格年正式发布。其语言风格与与C+C+接近接近,但舍弃了,但舍弃了C+C+中一些不常用或容易被误用的成分,如指针等。中一些不常用或容易被误用的成分,如指针等。 JavaJava语言最主要的特点是,同一个语言最主要的特点是,同一个JavaJava程序不用重程序不用重新编译就可以在不同平台的计算机上运行。新编译就可以在不同平台的计算机上运行。JavaJava在网络上在网络上的独特优势以及其跨平台的特点,使得它已经的独特优势以及其跨平台的特点,使得它已经成为成为InternInternetet上最受欢迎的编程语言之一。

25、上最受欢迎的编程语言之一。 10.1 程序与程序设计 2210.1.3 10.1.3 常见的程序设计语言常见的程序设计语言 目前,最常用的目前,最常用的3 3种动态网页设计语言有种动态网页设计语言有ASPASP(Active Server PageActive Server Pages s)、)、JSPJSP(Java Server PagesJava Server Pages)、)、PHPPHP(Hypertext PreprocessorHypertext Preprocessor)。)。三者都提供在三者都提供在 HTMLHTML代码中混合某种程序代码、由语言引擎解释执行程代码中混合某种程

26、序代码、由语言引擎解释执行程序代码的能力。序代码的能力。 ASPASP是一个是一个WebWeb服务器端的开发环境,利用它可以产生和服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的执行动态的、互动的、高性能的WebWeb服务应用程序。服务应用程序。ASPASP支持支持VBScriptVBScript、JScriptJScript等脚本语言。等脚本语言。 JSP JSP是用是用JavaJava语言作为脚本语言的,并可以在语言作为脚本语言的,并可以在ServletServlet和和J JavaBeanavaBean的支持下,完成功能强大的站点程序。的支持下,完成功能强大的站点程序。

27、PHPPHP是一种跨平台的服务器端的嵌入式脚本语言。它大量是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用地借用C C、JavaJava和和PerlPerl语言的语法,并融合语言的语法,并融合PHPPHP自己的特性,自己的特性,使使WebWeb开发者能够快速地写出动态生成页面。开发者能够快速地写出动态生成页面。 10.1 程序与程序设计 2310.2 算法 算法的基本概念算法的基本概念算法的特征算法的特征算法的表示方法算法的表示方法算法的评价算法的评价常用算法常用算法 2410.2 算法 10.2.1 10.2.1 算法的基本概念算法的基本概念广义的说,为解决一个问题而采取的方法和步骤,就

28、称为广义的说,为解决一个问题而采取的方法和步骤,就称为“算法算法”。本书所关心的当然只限于。本书所关心的当然只限于“计算机算法计算机算法”。所。所谓的计算机算法就是使用计算机来解决一个问题时所采取谓的计算机算法就是使用计算机来解决一个问题时所采取的特定的特定方法和步骤。方法和步骤。 2510.2 算法 10.2.1 10.2.1 算法的基本概念算法的基本概念例如例如,要求出要求出1+2+3+1001+2+3+100的和,可设计如下的计算机的和,可设计如下的计算机算法。算法。设两个变量:一个设两个变量:一个变量变量sumsum用来存放求和的结果,另一用来存放求和的结果,另一个个变量变量i i用来

29、存放每次被加的数值;用来存放每次被加的数值; S1S1:使:使0=sum;0=sum; S2 S2:使:使1=i ;1=i ;S3S3:使:使i i的值的值到到sumsum中,即中,即sum+i=sum sum+i=sum ;S4S4:使:使i i的值加的值加1 1,i+1=i ;i+1=i ;S5S5:如果:如果i=100,i=n)。 4810.2 算法 10.2.5 10.2.5 常用算法常用算法4. 4.递推法递推法( (迭代法迭代法) ) 从初值出发,归纳出新值与旧值间的关系,利用循环来从初值出发,归纳出新值与旧值间的关系,利用循环来完成迭代,每次循环时都从旧值的基础上递推出新值,完成

30、迭代,每次循环时都从旧值的基础上递推出新值,并由新值代替旧值。并由新值代替旧值。例:例:猴子吃桃子问题。小猴有桃若干,每天吃猴子吃桃子问题。小猴有桃若干,每天吃掉现有数的一半多一个,到第掉现有数的一半多一个,到第7天要吃时只剩下天要吃时只剩下一个了,问小猴原有桃子多少个?一个了,问小猴原有桃子多少个?设第设第n天的桃子为天的桃子为xn,它是前一天的桃子数的一,它是前一天的桃子数的一半少半少1个,个,递推公式递推公式 xn-1=(xn+1)2 4910.2 算法 10.2.5 10.2.5 常用算法常用算法4. 4.递推法递推法( (迭代法迭代法) ) 5010.2 算法 10.2.5 10.2

31、.5 常用算法常用算法5. 5.求最值求最值 如果要求最大值,在如果要求最大值,在n n个数中先假设第个数中先假设第1 1个数为最大值并个数为最大值并存入变量存入变量maxmax,用变量,用变量maxmax依次同第依次同第2 2、3 3、n n个数个数据逐一比较,一旦某个数比据逐一比较,一旦某个数比maxmax大,则用这个数来替换大,则用这个数来替换maxmax中原有的值,所有数比较完,最大值也就获得(打中原有的值,所有数比较完,最大值也就获得(打擂法擂法) )。 5110.2 算法 10.2.5 10.2.5 常用算法常用算法5. 5.求最值求最值 例:例:输入三个数,输入三个数,输出其中的

32、最大输出其中的最大值。值。 5210.2 算法 10.2.5 10.2.5 常用算法常用算法5. 5.求最值求最值 例:例:输入输入n个数,个数,输出其中的最小输出其中的最小值。值。 5310.3 C程序入门 C C语言概述语言概述C C程序结构程序结构C C程序的上机步骤程序的上机步骤 54 产生背景ALGOL 60CPL语言BCPLB语言,写UNIX系统 产生过程时间:19721973地点:美国贝尔实验室目的:UNIX操作系统设计人: Ken.Thompson和Dennis.M.Ritchie C标准标准C: 1978年 K&R合著The C Programming LanguageANS

33、I C: 1983年87 ANSI C: 1987年1990年国际标准的ANSI C ,1994年再次修订。 C版本Turbo C 或称 TCTCVisual C+ VC VC10.3.1 C10.3.1 C语言概述语言概述 55 C语言的特点:C语言具有完善的功能和非常高的效率。 C语言可以对硬件操作,是介于汇编语言和高级语言之间的一种语言。C语言是结构化的程序设计语言。C语言具有丰富的数据类型和运算类型。C语言具有良好的移植性。C语言书写灵活,表达简洁。10.3.1 C10.3.1 C语言概述语言概述 56表1 C语言与Pascal语言比较通过表1 我们可以得出结论:C比 Pascal简练

34、,因此源程序更短,编程效率高。C C语言语言PASCALPASCAL语言语言含义含义 if(e) S;if(e) S;int i;int i;int a10;int a10;int f();int f();int int * *p;p;i+=2;i+=2;i+, +i;i+, +i;BEGIN BEGIN ENDENDIF (e) THEN S;IF (e) THEN S;VAR i :INTEGER;VAR i :INTEGER;VAR a:ARRAY1.10 OF INTVAR a:ARRAY1.10 OF INTEGER;EGER;FUNCTION f():INTEGER;FUNCTIO

35、N f():INTEGER;VAR P: INTEGER; VAR P: INTEGER; i=i+2;i=i+2;i=i+1;i=i+1;函数体、分程序、复合语句函数体、分程序、复合语句条件语句条件语句 定义定义i i为整形变量为整形变量定义定义a a为一维数组为一维数组定义定义f f为返回整形值函数为返回整形值函数; ;p p为指向整形变量的指针变量为指向整形变量的指针变量; ; 赋值语句,使赋值语句,使i+2i+2赋给赋给I Ii i自增值自增值1 1,i i加加1 1赋给赋给I I 57/* example1.1 The first C Program*/#include main()

36、 printf(“This is a c program.n”);注释编译预处理主函数语句输出:This is a c program.例例. . 第一个程序第一个程序This is a c program . printfprintf语句中的“nn”是换行换行符符 10.3.2 C10.3.2 C程序程序结构结构 58/* 例 求两个整数之和*/#include /* 主函数 */void main() int a,b,sum; /*定义变量*/ a=10; b=24; sum=add(a,b); printf(”sum= %dn,sum);/* 求两个数 x , y 之和的函数 */int

37、 add(int x,int y) int z; z=x+y; return(z);运行结果:sum=34函数语句预处理命令注释printfprintf语句中的“ %d %d ”是表示“十进制整数类型十进制整数类型” 59例例 从键盘输入两个整数,输出其中较大的数从键盘输入两个整数,输出其中较大的数#include void main() int max(int x,int y) int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf( max = %d,c);int max(int x,int y) int z; if(xy) z=x; els

38、e z=y; return(z);scanfscanf语句中“&a”的含义是“取地址取地址”输入:10,20 输出:max = 20声明部分,定义变量声明部分,定义变量调用调用max函数,返回值赋给函数,返回值赋给c定义定义max子函数,函数值子函数,函数值、形参、形参x、y为整型为整型通过通过max函数将函数将z值带回调用处值带回调用处 60 多多用用小写小写字母,大小写敏感字母,大小写敏感 不使用行号,不使用行号,无程序行无程序行概念概念 可使用空行和空格可使用空行和空格 常用常用锯齿形锯齿形书写格式书写格式main( ) . . . . . . .main( ) int i , j ,

39、sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum);优秀程序员的素质之一: 使用TAB缩进 对齐 有足够的注释 有合适的空行C C语言格式特点语言格式特点 61C C语言结构特点语言结构特点 函数与主函数函数与主函数程序由一个或多个函数组成程序由一个或多个函数组成必须有且只能有一个主函数必须有且只能有一个主函数mainmain()(),可以放在程序中任一位置可以放在程序中任一位置程序执行从程序执行从mainmain开始,在开始,在mainmain中结束,其它函数通过嵌套调用中结束,其它函数通过嵌套调

40、用得以执行。得以执行。 程序语句程序语句C C程序由语句组成程序由语句组成用用“; ;”作为语句终止符作为语句终止符 注释注释/ /* * * */ /为注释为注释, ,不能嵌套不能嵌套VCVC中也可以使用中也可以使用/不产生编译代码不产生编译代码例: /*This is the main /* of example1.1*/ */ 非法v编译预处理命令编译预处理命令 62编辑链接编译执行 开 始 编 辑 编 译 连 接 执 行 有错?结果正确? 结 束有源程序 file.c目 标 程序file.obj库函数和其它目标程序可执行目标程序无正确不正确file.exe程序代码的录入,生成源程序*.

41、c语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exe10.3.3 C10.3.3 C程序的上机步骤程序的上机步骤 63VC+集成开发环境 打开VC。 单击“file/new” 选择“file”选项卡, C+ source file 输入文件名(扩展名.c), 选择保存位置(Lacation)。 单击“OK” 64VC+集成开发环境l编译、链接和运行的命令项都处在菜单Build之中。 注意,在对程序进行编译、链接和运行前,最好先保存自己的工程(使用“FileSave All”菜单项)以避免程序运行时系统发生意外而使自己之前的工作付之东流。l首先选择执行菜

42、单第一项Compile,此时将对程序进行编译。 若编译中发现错误(error)或警告(warning),将在Output窗口中显示出它们所在的行以及具体的出错或警告信息,可以通过这些信息的提示来纠正程序中的错误或警告(注意,错误是必须纠正的,否则无法进行下一步的链接;而警告则不然,它并不影响进行下一步,当然最好还是能把所有的警告也“消灭”掉)。当没有错误与警告出现时,Output窗口所显示的最后一行应该是: “Hello.obj-0 error(s), 0warning(s)”。 65VC+集成开发环境选择菜单的第二项选择菜单的第二项BuildBuild来进行链接生成可执行程序。来进行链接生成

43、可执行程序。 在链接中出现的错误也将显示到在链接中出现的错误也将显示到OutputOutput窗口中。链接成功后,窗口中。链接成功后,OutpOutputut窗口所显示的最后一行应该是:窗口所显示的最后一行应该是: “ “hello.exe-0 error(s), 0 warning(s)”hello.exe-0 error(s), 0 warning(s)”。运行运行( (执行执行) ) 程序,选择程序,选择ExecuteExecute项项( (该选项前有一个深色该选项前有一个深色的感叹号标志的感叹号标志“!”. . VC6VC6将运行已经编好的程序,执行后将出现如图所示,其中的将运行已经编

44、好的程序,执行后将出现如图所示,其中的“prespress any key to continue”s any key to continue”是由系统产生的,使得用户可以浏览输出结是由系统产生的,使得用户可以浏览输出结果,直到按下了任一个键盘按键时为止果,直到按下了任一个键盘按键时为止( (那时又将返回到集成界面的那时又将返回到集成界面的编辑窗口处编辑窗口处) )。编译、链接和运行也可以使用工具按钮。编译、链接和运行也可以使用工具按钮。建立建立C C的源程序也可以直接在的源程序也可以直接在windowswindows新建一文本文件,新建一文本文件,然后将扩展名改为然后将扩展名改为.C.C。

45、6610.4 基本数据类型与运算符 C C的数据类型的数据类型表达式和运算符表达式和运算符 67C C语言是一种强类型的计算机语言,所有用到的数据,语言是一种强类型的计算机语言,所有用到的数据,必须被说明为某种数据类型,数据类型是程序设计必须被说明为某种数据类型,数据类型是程序设计中的重要概念。数据类型确定数据在内存中占所空中的重要概念。数据类型确定数据在内存中占所空间的大小及存储形式。在间的大小及存储形式。在C C语言中,数据类型可分为:语言中,数据类型可分为:基本类型,构造类型,指针类型,空类型四大类。基本类型,构造类型,指针类型,空类型四大类。10.4.1 C10.4.1 C的数据类型的

46、数据类型 6810.4.1 C的数据类型的数据类型C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型 void字符型字符型 char整整 型型实实 型(浮点型)型(浮点型)单精度型单精度型 float双精度型双精度型 double数组类型数组类型结构体类型结构体类型共用体类型共用体类型短整型短整型 short长整型长整型 long整型整型 int数据类型决定:1. 数据占内存字节数2. 数据取值范围3. 可以进行的操作 6910.4.1 C的数据类型的数据类型短整型整型(int)整型长整型无符号(unsigned short)有符号(short)无符号(unsi

47、gned)有符号(int)无符号(unsigned long)有符号(long) 70标识符标识符v定义:标识变量名、符号常量名、函数名、数组名、定义:标识变量名、符号常量名、函数名、数组名、文件名的字符串序列文件名的字符串序列名字名字。v命名规则:命名规则:l只能由只能由字母、数字、下划线字母、数字、下划线组成,且组成,且第一个字第一个字符必须是字母或下划线符必须是字母或下划线l大小写字母含义不同,一般用大小写字母含义不同,一般用小写小写l不能使用不能使用关键字关键字v使用:使用:先定义、后使用先定义、后使用标识符应该“见名知意见名知意”,如,如 total , maxtotal , max

48、标识符应该“不宜混淆不宜混淆”,如,如 l l与与1 , O1 , O与与0 010.4.2 常量与变量常量与变量 71常量和符号常量常量和符号常量v定义:程序运行过程中,其值不能被改变的量(常数)定义:程序运行过程中,其值不能被改变的量(常数)v分类:直接常量、分类:直接常量、符号常量符号常量类型类型示例示例直直接接常常量量整型常量整型常量12 、 0 、 -3实型常量实型常量4.6 、 -1.23、1.23e+5字符常量字符常量a 、 b 字符串常量字符串常量a、abc、10符号常量符号常量PRICE 、 PAI 72l符号常量符号常量: :用用标识符标识符代表常量代表常量u一般用大写字母

49、:一般用大写字母: PRICE 、 PIu定义格式:定义格式: #define 符号常量符号常量 常量常量u其值在作用域内不能改变和再赋值。其值在作用域内不能改变和再赋值。例例 符号常量举例符号常量举例#define PRICE 30#include void main() int num,total; num=10; total=num*PRICE; printf(total=%dn,total);total=300运行结果:符号常量的优点是:见名知意、一改全见名知意、一改全改改 73变量变量v 定义:其值可以改变的量。定义:其值可以改变的量。v 定义格式:定义格式:数据类型数据类型 变量名

50、;变量名; v 变量应该有名字,并在内存中占据一定的存储单元。变量应该有名字,并在内存中占据一定的存储单元。 v 变量名和变量值有不同的含义变量名和变量值有不同的含义l变量实际代表一块内存存贮区域变量实际代表一块内存存贮区域l变量名实为这个区域的标识变量名实为这个区域的标识 a3例例 变量的使用变量的使用main() int a; a=3; printf(“a=%d,a);变量名变量值存储区域 74 整型常量(整常数)的三种表示方法整型常量(整常数)的三种表示方法v 十进制整数:由数字十进制整数:由数字09和正负号表示和正负号表示. . 如 123,-456,0v 八进制整数:由数字八进制整数

51、:由数字0开头开头, ,后跟数字后跟数字07表示表示. . 如 0123,011v 十六进制整数:由十六进制整数:由0 x开头开头, ,后跟后跟09,af,AF表表示示. . 如 0 x123,0 xff八、十六进制数都是无符号数。八、十六进制数都是无符号数。整数整数数据数据 75 注意:注意:v 十进制数十进制数1010的二进制形式为的二进制形式为10101010,不同的编译系统为整,不同的编译系统为整型数据分配的字节数是不相同的,型数据分配的字节数是不相同的,Turbo C 2.0Turbo C 2.0和和Turbo Turbo C+ 3.0C+ 3.0为一个整型变量在内存中分配为一个整型

52、变量在内存中分配2 2个字节的存储单个字节的存储单元,元,VC+ 6.0VC+ 6.0则分配则分配4 4个字节。个字节。v 数值是以补码数值是以补码(complement) (complement) 表示的。表示的。 76整型变量的分类:整型变量的分类:共六种共六种有符号基本整型有符号短整型有符号长整型无符号基本整型无符号短整型无符号长整型(signed)int (signed)short (int )(signed) long (int)unsigned intunsigned short (int)unsigned long (int) 注意:注意:括号表示其中的内容是可选的. 77 整数

53、类型的有关数据(VC+): 78整型变量的定义整型变量的定义: :定义整型变量的一般形式:定义整型变量的一般形式: 类型说明符类型说明符 变量名变量名, ,变量名变量名,.;,.;在定义变量的同时给变量赋值称为变量初始化。在定义变量的同时给变量赋值称为变量初始化。变量初始化的格式为:变量初始化的格式为:类型说明符类型说明符 变量名变量名=,变量名变量名=,.;,.; 79【例】分析以下程序的运行结果。 #includemain() int a=1, b=2,c; long x=29,y=2147483600; c=a; a=10; printf(a+b=%d,x+y=%ld,c=%dn,a+b

54、,x+y,c); 80【例】分析以下程序的运行结果。 #includemain() short d=-1; printf(%hd,%hun,d,d); 81【例】分析以下程序的运行结果。 #includemain() int i=65535; short j=i; printf(i=%d,j=%dn,i,j);本例中,变量本例中,变量i i是整型变量,在内存中占四个字节。是整型变量,在内存中占四个字节。6553565535在内存中存放形式在内存中存放形式为:为:00000000 00000000 11111111 1111111100000000 00000000 11111111 11111

55、111变量是变量是j j 是短整型变量,在内存中只占两个字节,因此在将是短整型变量,在内存中只占两个字节,因此在将i i赋给赋给j j时,只将时,只将低端的两个字节赋给低端的两个字节赋给j j中内容为:中内容为: 11111111 11111111 11111111 11111111 (-1-1的补码)的补码)所以输出的所以输出的i i为为6553565535,j j 为为-1-1。 82浮点型常量的表示方法浮点型常量的表示方法两种表两种表示形式示形式小数小数指数指数0.1230.1233 3e-3e-3注意注意: :字母e(或E)之前必须有数字,且e后面的指数必须为整数 浮点型浮点型数据(实

56、型数据)数据(实型数据) 83浮点型变量浮点型变量: :浮点型变量分为单精度浮点型变量分为单精度(float(float型型) )、双精度、双精度(double(double型型) )。 浮点型数据在内存中的存放形式是用科学记数法(即指数的方式)存放的,在占用相同的存储空间时,浮点型数据可以存储更大范围的数据,但浮点型数据有有效位限制(精度)。类型类型说明符数的范围(绝对值)字节数有效位单精度float0和1.210-383.41038478双精度double0和2.310-3081.71030881516 84【例】分析以下程序的运行结果。 #includemain() float x=10

57、1235342.98345678;double y=422222222345.11223344556677889900;printf(x=%f,y=%lfn,x,y); 程序的运行结果为:程序的运行结果为:x=101235344.000000 x=101235344.000000,y=422222222345.112240y=422222222345.112240八个有效位十六个有效位 85在内存中存放字符时,所存放的是该字符的二进制代码(ASCII码)字符型字符型数据数据字符十进制代码八进制十六进制二进制换行1012A00001010回车1315D00001101空格324020000100

58、00字符094857607130390011000000111001字符AZ6590101132415A0100000101011010字符az97122141172617A0110000101111010 86字符常量字符常量(1)用单引号包含的一个字符是字符型常量(2)只能包含一个字符a a, ,A A, , 1 1abcabc、“a a”字符型字符型数据数据 87 有些以有些以“ ”开头的特殊字符称为转义字符开头的特殊字符称为转义字符转义字符转义字符的意义ASCII码(十进制)n回车换行符,将光标移到下一行开头10r回车符,将光标移到本行开头13t制表符,将光标横向跳到下一个制表位置9b

59、退格符,将光标移到前一列8f换页符,将光标移到下一页开头12反斜杠字符()92双引号字符()34单引号字符()39ddd13位八进制数所代表的字符xhh12位十六进制数所代表的字符 88【例】分析以下程序的运行结果。 main() int x=16,y=2008; printf(y=%drx=%dn,y,x); printf(%c%c%cb%.1fn,C,+,+,6.0);程序的运行结果为:程序的运行结果为:x=1608x=1608C+6.0C+6.0 89字符变量字符变量 字符型变量用来存放字符常量,注意只能放字符型变量用来存放字符常量,注意只能放一个字符。一个字符。 字符变量的定义形式如下

60、:字符变量的定义形式如下:char c1,c2;char c1,c2; 一个字符变量在内存中占一个字节。一个字符变量在内存中占一个字节。 90【例】分析以下程序的运行结果。 #includemain() char a=66; int b=A; printf(%d,%cn,a,a); printf(%d,%cn,b,b); 程序的运行结果为:程序的运行结果为:66,B66,B65,A65,A 91【例例】以下程序以下程序实现实现大小大小写写字母字母转换转换。#includemain() char a=x,b=Y; /* a,b被说明为字符变量并赋值*/ a=a-32; /*把小写字母换成大写字母

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论