第1章 C程序设计概述_第1页
第1章 C程序设计概述_第2页
第1章 C程序设计概述_第3页
第1章 C程序设计概述_第4页
第1章 C程序设计概述_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

计算机科学与技术系基础教学部83592314

(o)86207807(h.y.jiang@163.com

姜恒远1学习、使用C语言的理由C是一种最重要最流行的计算机高级程序设计语言。和FORTRAN一样,用C同样能够容易编写出简洁、易读、高效的科学计算问题的应用程序。现今的文献资料中的算法一般都采用C来描述,这说明C在各种领域中已被公认为一种通用语言。C语言是各种计算机基础知识和应用能力等级考试指定的程序设计语言之一,学习这门课后,你可以去应付诸如此类的各种考试。2学习C语言的方法

C程序设计是一门实践性很强的课程,既要掌握概念又要动手编程,还要上机调试程序。

一定要重视上机实践环节上机会帮你巩固概念,掌握语法。C编译程序是最好的老师,它会详细的给你解释程序中所有的问题。包括出错的原因,位置等等。一定要认真阅读C编译程序给出的信息,按提示纠正所有的错误。像学习游泳那样来学习C语言程序设计。3学习C语言的参考资料《CPrimerPlus》中文版第五版人民邮电出版社2002.7《C高级实用程序设计》

清华大学出版社1996.1《二级C语言考试考点与题解》

金版电子出版公司2004.9《江苏省二级C语言等级考试试题汇编》

苏州大学出版社4第1章C程序设计概述51.1程序设计语言、程序与程序设计1.1.1程序设计语言

程序设计语言是用以书写程序的语言程序设计语言分类按应用范围通用程序语言(C、Pascal、FORTRAN)

专用程序语言按处理事物的描述要求面向过程程序语言面向对象程序语言(C++、VB)

6按使用方式交互式程序设计语言(如BASIC)

非交互式程序设计语言(如C)

按对机器依赖性、接近自然语言的程度、语言的发展过程

机器语言汇编语言

高级语言1.1.1

程序设计语言7

10110000

00001100

00000101

11110100计算12-5的机器语言代码CPU能理解且能直接执行的指令集合

用机器语言编写的程序形式:

机器语言8用机器语言编写的程序优点:质量高占存储空间小执行速度快能由计算机直接执行用机器语言编写的程序缺点:

依赖于具体计算机难记忆易出错阅读理解困难编程者需了解特定计算机的硬件及指令系统机器语言9汇编语言

MOVAL,12DSUBAL,5DHLT

计算12-5的汇编语言代码汇编语言是一种符号化的机器语言,用助记符号代替指令操作码、操作数。用汇编语言编写的程序形式:汇编语言与机器语言有相同的特点,但要翻译成等价的指令序列后才能由计算机执行。

10

int

main(void){printf(“%d\n”,12-5);}

计算12-5的高级语言代码接近于自然语言和数学语言,在一定程度上与具体计算机无关的符号化语言。用高级语言编写的程序形式(以C语言为例):高级语言11用高级语言编写程序的优点:易学易用、代码易理解易调试、修改和移植与机器无关用高级语言编写程序的缺点:不支持对硬件的直接操作代码需要翻译成指令序列后才能执行高级语言12高级语言的处理方式

□解释方式(Interpreter解释程序)

逐句扫描,逐句处理,逐句执行,直接获得结果。不产生等价的机器语言程序高级语言解释程序高级语言源代码

结果13编译方式(compiler

编译程序或称编译器)

高级语言库文件编译程序连接程序执行源代码目标程序可执行程序数据结果141.1.1程序设计语言数据成分刻画程序所处理的数据对象的值、存储运算成分算术、逻辑、集合等运算控制成分控制程序的执行流程传输成分数据的输入输出程序设计语言的基本语言成分

151.1.2程序日常生活中的程序概念

“程序”是完成事情的先后次序计算机中的程序概念

按特定的算法,用某种计算机语言描述的完成指定任务的处理过程

程序概念161.1.2程序从外部表示形式看位(bit)代码化的指令序列符号化的指令序列语句序列就程序本质而言刻画计算(数值计算与非数值计算,与处理同义)过程的处理对象(数据)与处理规则(算法)。从不同角度观察到的计算机程序的含义

171.1.2

程序从内容上看包含算法描述和数据描述两个方面,是数据与算法的结合。程序=算法+数据结构从存储的角度看写在纸上或存储在外部存储介质上的静态实体从作用与执行的效果角度看是一个具有抽象性和动态性的逻辑实体,只有被装入主存启动执行后才起作用181.1.3

程序设计程序设计的内容与内涵设计程序编制程序调试程序测试程序验证程序设计风格┅┅设计、编制、测试程序的方法和过程191.1.3程序设计

一种传统的程序设计方法。本质:功能设计设计基本原则:自顶向下,逐步细化,由抽象到具体的功能分解过程结构化程序设计方法

求二次方程ax2+bx+c=0的根结构化程序设计过程例201.1.3

程序设计S1:输入系数a,b,cS1-1:输入系数a,b,cS1-2:判别输入的a是否为0,若为0,转S1-1步重新输入系数a,b,cS2:求根计算S2-1:计算判别式

b2-4ac→discS2-2:计算

(-b)/(2a)→uS2-3:计算→vS3:输出根S3-1:如果disc=0,计算并输出两个相同的根

x1=x2=uS3-2:如果disc>0,计算并输出两个实根

x1=u+v,x2=u-vS3-3:如果disc<0,计算并输出一对共扼复根

x1=u+vi,x2=u-vi211.1.3

程序设计

联系:目的都是为了产生没有错误的程序区别:含义不同编译程序与连接程序发现的错误排错、测试与验证程序排错(debugging)通常是指由程序设计者自己查找和改正程序中错误的过程,也称纠错或排错,目的是确定错误的性质、原因和位置且改正错误。按开发程序的过程程序中的错误分为:编译期错误连接期错误运行期错误221.1.3程序设计测试程序的目的是除了发现程序存在的错误外,还证实程序是否达到规定的功能,具有检验质量及性能评价等含义。

测试(testing)验证程序正确性的理想方法是理论证明。目前验证程序的方法主要还是依靠有局限性的测试技术。验证(verification)231.1.3程序设计⑴

规范化的程序书写格式⑵注释程序⑶选用顾名思义的标识符⑷用简明的方法表达算法⑸提供友善的输入输出界面程序设计风格程序设计风格指的是编码风格(codingstyle)。即程序设计者表达程序的习惯方式。良好的程序设计风格基本指导原则:241.2C语言概述1.2.1C语言的发展1.2.2C语言的特性1.2.3C语言程序的结构与执行1.2.4C语言程序例1.2.5C语言程序的书写1.2.6上机调试运行C语言程序的过程

251.2.1C语言的发展C语言是在BCPL和B语言的基础上发展起来的与著名的UNIX操作系统的产生相辅相成的最初C语言以B.W.Kernighan和D.M.Ritchie所著的《TheCProgrammingLanguage》为标准,谓之K&RC美国国家标准化协会(AmericanNationalStandardInstitute,ANSI)于1983年开始为C语言制定统一标准,该标准颁布于1987年,称之为87ANSIC。1989年,ISO为C语言制定了国际标准C89。最新的C语言国际标准是1999年颁布的C99。本书按C99标准叙述。261.2.2C语言的特性C语言是一种能把高级语言的表示能力与低级语言能直接处理与硬件有关的操作能力结合起来的语言。面向用户:方便高效地书写、修改、移植、维护应用程序面向机器:可以实现一般只能用汇编语言才能处理的功能C语言不依赖于任何具体机器,便于在不同的计算机系统之间移植软件;C语言编译程序本身小而紧凑,便于在不同的机器上实现。271.2.2C语言的特性C语言中有相当丰富的数据类型字符数据、不同长度的整型数和浮点数、以及指针、数组、结构、联合等派生出的具有结构特性的数据类型。C语言不作严格类型检查。虽然在数据转换方面相对自动但不具数据转换的任意性。C语言编译程序对数组下标的越界、函数参数类型的一致性等不提供运行期的检查。C语言是一种单线程控制流结构C语言是一种结构化程序设计语言281.2.2C语言的特性C语言是一种便于模块化程序设计的语言C语言中的函数是构成一个C语言程序的基本构件C语言没有提供像字符串、集合、表等之类的数据运算功能,也没有定义任何像存储分配、输入输出及文件存取之类的语句。这些操作都必须通过调用函数来实现。C语言不是块结构语言函数不能被嵌套定义291.2.2C语言的特性运算优先次序与结合性复杂化,代码难于理解某些表达方面语法不严格,可能会造成难以发现的程序错误一些符号具有多义性,只能在上下文中才能确定其含义,初学者难于掌握。C语言的弱点301.2.3C语言程序的结构与执行一个C语言程序由一系列的外部声明组成。外部声明:函数定义性声明外部数据定义性声明函数引用性声明外部数据引用性声明C语言程序的结构311.2.3C语言程序的结构与执行存储类别数据类型函数名(形式参数表){

局部数据声明 语句列}函数体函数首部函数定义性声明函数定义性声明指的是宣布(announce)函数的存在。函数的一般定义形式为:321.2.3C语言程序的结构与执行int

max(inta,intb,intc

){

intm;

m=a>b?a:b;

return(m>c?m:c);}函数定义例形式参数表函数名数据类型局部数据声明语句列331.2.3C语言程序的结构与执行外部数据定义性声明顾名思义即在函数外部定义数据对象。intmax(inta,intb,intc){

intm;

m=a>b?a:b;

return(m>c?m:c);}intn;34函数及外部数据引用性声明即声明要引用本程序中已经定义的函数或外部数据对象在函数外定义的数据对象可被程序中的诸函数公用,因此这类数据对象也称为“全局”数据对象。intn;intmax(inta,intb,intc){

externn;

intm;

m=a>b?a:b;

return(m>c?m:c);}1.2.3C语言程序的结构与执行35“定义性声明”与“引用性声明”的区别:1.2.3C语言程序的结构与执行“定义性声明”建立函数与外部数据,需要对定义的外部数据分配存储空间;引用性声明”则指出要引用程序中其他地方定义的函数或外部数据,并不为欲引用的外部数据分配存储空间。361.2.3C语言程序的结构与执行一个C语言程序必须有且仅有一个名为main的函数一个C语言程序通常存放在一个程序文件中(单文件程序),也可以分别存放在多个程序文件中(多文件程序),但一个函数必须完整地包含在一个文件中,不允许跨文件存放程序中所有函数(包括main函数)在程序文件中安排的位置和顺序是任意的不同的C编译系统对程序文件的扩展名要求不同,例如TC2.0的程序文件必须以“.C”作为后缀。一个C程序文件是C程序的一个程序模块,C编译程序总是以程序文件为单位编译。371.2.3C语言程序的结构与执行C程序总是从main函数的第一条语句开始执行C程序中所有其他函数都可以相互调用一个函数也允许自己调用自己可以调用由C编译系统定义的库函数及用户自己定义的库函数。程序的结束执行在正常情况下,main函数执行完毕执行过程中发生各种错误,提前结束程序运行C语言程序的执行381.2.4C语言程序例例1.1一个简单的C程序

该程序只由一个函数组成。该例的程序代码存储在prog1.c程序文件中,文件内容如下:

#include<stdio.h>

int

main(void){

intnumber;

printf(“books=”);

scanf(“%d”,&number);

printf(“Ihave%dbooks.\n”,number);}/*C语言的预处理命令*/391.2.4C语言程序例程序中每一个变量都有一个名字以供识别,并用它引用该变量。变量名的定义规则:字母、数字、下划线组成,首字符必须是字母或下划线。字母区分大小写。

C标准没有规定变量名的长度,各编译系统自行规定。TurboC允许32个字符。401.2.4C语言程序例例1.2输入3个正整数,求它们的最小值(设该最小值为n),并计算1+2+…+n之和。该程序由两个函数组成。程序代码存储在prog2.c程序文件中文件内容如下:411.2.4C语言程序例/*Thisisanexample*/#include<stdio.h>int

min(inta,intb,intc);intmain(void){unsignedn1,n2,n3,n,i,sum=0;

printf(“Input3positiveinteger:”);

scanf(“%u%u%u”,&n1,&n2,&n3);n=min(n1,n2,n3);

for(i=1;i<=n;i++)sum=sum+i;

printf(“Minimum=%u\n1+2+....+%u=%u\n”,n,n,sum);}

声明要引用自定义函数min声明程序中要使用用于存放6个正整数的变量

输入3个正整数,分别存入n1,n2,n3

调用函数min,求3个正整数的最小值/*Thisisanexample*/421.2.4C语言程序例/*求3个整数的最小值的函数定义*/intmin(inta,intb,intc){

if(a<=b&&a<=c)returna;elseif(b<=a&&b<=c)returnb;elsereturnc;}/*求3个整数的最小值的函数定义*/n1n2n3><>=<===!=||&&!431.2.4C语言程序例C语言程序中注释的一般表示形式是:

/*……注释内容……*/以“/*”开头、用“*/”结束;注释内容可以占用若干书写行;C规定C语言的注释不能嵌套;

/*voidfunc(void){

printf(“Thisisafunction\n”);

/*nestedcomment,嵌套的注释是错误的!*/}

*/441.2.4C语言程序例

C99中还允许使用以连续两个斜杠字符(//)开头的注释形式,即:

//……注释内容……

注意:这种注释被限制在一行内。可在程序中任何需要的地方以/*……*/形式插入注解。注解的位置(除“有独立含义的地方”)、与多少对程序没有影响,编译时它们将被忽略。请思考:除注解程序外,注解还有其他用处吗?451.2.5C语言程序的书写⑴C语言程序一般也都按小写字母书写。⑵用#define定义的宏名通常用大写字母表示(当然也可以用小写字母表示)。⑶每个语句占用一书写行。⑷用缩进对齐的写法反映程序的不同的结构层次。⑸编译预处理命令行、外部数据定义、函数定义之间、函数体内的“数据声明”部分和“语句列”部分空一行书

温馨提示

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

评论

0/150

提交评论