为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C语言(第一章)

2014-03-22 46页 ppt 1MB 28阅读

用户头像

is_704320

暂无简介

举报
C语言(第一章)null高级语言(C语言) 程序设计信息学院自动化仪表研究所 主讲人:杨钢高级语言(C语言) 程序设计C程序设计语言教材和参考书C程序设计语言教材和参考书教 材:《C程序设计》(第三版) 清华大学出版社 谭浩强编 参考书 《C程序设计题解与上机指导》 清华大学出版社 谭浩强编 《 C 程序设计语言》(第2版,新版) (美)Brian W.Kernigham, Dennis M. Ritch...
C语言(第一章)
null高级语言(C语言) 程序设计信息学院自动化仪研究所 主讲人:杨钢高级语言(C语言) 程序设计C程序设计语言教材和参考书C程序设计语言教材和参考书教 材:《C程序设计》(第三版) 清华大学出版社 谭浩强编 参考书 《C程序设计题解与上机指导》 清华大学出版社 谭浩强编 《 C 程序设计语言》(第2版,新版) (美)Brian W.Kernigham, Dennis M. Ritchie著 徐宝文等译 机械工业出版社出版 null上机环境: DOS环境下的 Turbo C 2.0 Turbo C 3.0 Windows环境下的 WinTC Dev C++ Visual C++ null课程安排第一章 C语言概述 (教材第1章) 第二章 数据类型、运算符与表达式 (教材第3 、4章) 第三章 算法基础与程序控制结构 (教材第2、5、6章) 第四章 模块化程序设计(函数) (教材第8、9章) 第五章 数组 (教材第7章) 第六章 指针 (教材第10章) 第七章 结构体与共用体 (教材第11章) 第八章 位运算 (教材第12章) 第九章 文件 (教材第13章) ★期末考试null 学习编程好比学习写作 学习数据类型、控制结构、语法规则等——打基础 掌握程序分析、算法与编程——写文章 循次渐近 阅读/分析程序→摹仿编程→掌握常见程序模块→简单程序→复杂编程 多看参考书和现有程序 重视上机,切实掌握程序调试技术学习方法null课程教学目标 掌握C语言的基本语法和规定 掌握程序设计基本算法和思路 提高上机操作能力 培养自学能力,开拓思路 养成良好的程序设计习惯null考核方式采取平时、实验和期末考试综合评定成绩平时成绩不低于总成绩的10%实验成绩不低于总成绩的20% null程序设计语言的发展CPU指令系统,由0、1序列构成的指令码组成 如:10000000 加 10010000 减用助记符号描述的指令系统 如 ADD A, B程序设计是数据被加工的过程客观世界可以分类,对象是类的实例 对象是数据和方法的封装 对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象>>C语言兼有高级和低级语言的功能 适合写系统软件和应用软件 又称中级语言nullC语言是国际上广泛流行的高级语言。 C语言是在B语言的基础上发展起来的。 B (BCPL)语言是1970年由美国贝尔实验室设计的, 并用于编写了第一个UNIX操作系统,在PDP 7上实现。优点:精练,接近硬件,缺点:过于简单,数据无类型。 1973年贝尔实验室的D.M.Ritchie 在B语言的基础上设计出了C语言,对B取长补短,并用之改写了原来用汇编编写的UNIX,(即UNIX第5版),但仅在贝尔实验室使用。一、C语言发展简述P1-2null1975年UNIX第6版发布,C优点突出引起关注。 1977年出现了《可移植C语言编译程序》 ,推动了UNIX在各种机器上实现 ,C语言也得到推广,其发展相辅相成。 1978年影响深远的名著《The C Programming Language》由 Brian W.Kernighan和Dennis M.Ritchie 合著,被称为标准C。 之后,C语言先后移植到大、中、小、微型计算机上,已独立于UNIX和PDP,风靡世界,成为最广泛的几种计算机语言之一。一、C语言发展简述P1-2 null1983年,美国国家标准化协会(ANSI)根据C语言各种版本对C的发展和扩充,制定了新的标准ANSI C ,比标准C有了很大的发展。 1988年K & R按照 ANSI C修改了他们的《The C Programming Language》。 1987年,ANSI公布了新标准——87 ANSI C。 1990年,国际标准化组织接受了87 ANSI C为ISO C 的标准(ISO9899—1990)。 1994年,ISO又修订了C语言标准。 目前流行的C语言编译系统大多是以ANSI C为基础进行开发的。一、C语言发展简述P1-2 null说明: 不同版本的C编译系统所实现的语言功能和语法规则又略有差别,因此读者应了解所用的C语言编译系统的特点(可以参阅有关手册)。本书的叙述基本上以ANSI C 为基础。一、C语言发展简述P1-2 从软件类型来看—— ◆面向过程 常用—Turbo C(PC机版) ◆面向对象 常用—C++/Visual C++(可视化) 最新:为Windows和Web应用程序提供动态开发环境的Visual C++.NET(C#)null解释1:C++是由于开发大型应用软件的需要而产生的,并不是所有的人都要去编写大型软件; 解释2:面向对象的基础是面向过程。C++是面向对象的语言,C是面向过程的,学起来比C语言困难得多,所以不太适合程序设计的初学者。问题:既然有了面向对象的C++语言,为什么还要学习C语言?null 二、 C语言的特点 语言简洁、紧凑、灵活 运算符丰富 数据结构、数据类型丰富 链表、树、栈 程序设计结构化、模块化 结构化控制语句:if…else、while、switch、for 函数作为模块单位 语法不严格、程序设计自由度大 可以访问内存地址、进行位运算 生成目标代码质量高 可移植性好>>>>null32个关键字:(由系统定义,不能重作其它定义) auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigned union void volatile while 注意:在C语言中,关键字都是小写的。 >= != 逻辑运算符:! && || 位运算符 :<< >> ~ | ^ & 赋值运算符:= 及其扩展 条件运算符:?: 逗号运算符:, 指针运算符:* & 求字节数 :sizeof 强制类型转换:(类型) 分量运算符:. -> 下标运算符:[] 其它 :( ) - 注意:各种运算符混合使用,其优先级与结 合方法是难点,可先预习。 /*编译预处理——文件包含*/ #include /*编译预处理——文件包含*/ main( ) /*主函数*/ { float r,s; /*定义变量r、s类型为单精度实型*/ r =1.0; /*变量r赋初值*/ s=PI * pow(r,2); /*计算圆面积s*/ printf (“半径R=%f 时,面积S=%f \n”,r,s); /*输出结果*/ }三、C程序的基本结构? 如何编辑和执行这个程序Let’s try……例一 求圆面积程序 area.cnull程序设计语言处理流程名词: 【源程序】用汇编语言或高级语言编写的程序 【翻译程序】将源程序译成目标程序或可执行指令的程序 【目标程序】经翻译程序翻译生成的程序 【可执行程序】经连接程序处理过的程序 互相关系MOV A , 3 ADD A , 6A=5, B=4; C=B+A*2/B;0110010 0011011目标程序 abc.obj高级语言源程序 abc.c汇编语言源程序汇编程序编译程序解释程序可执行程序 abc.exe连接程序翻译一句 执行一句nullC程序的上机执行过程执 行编 辑编 译连 接编辑 程序C源 程序 .C编译 程序连接 程序目标 程序 .obj可执行 程序 .exe用 户结 果C编译 集成环境其它目 标文件C语言 函数库null /*给定半径,求圆的面积*/ #define PI 3.14159 /*编译预处理——宏替换*/ #include /*编译预处理——文件包含*/ #include /*编译预处理——文件包含*/ main( ) /*主函数*/ { float r,s; /*定义变量r、s类型为单精度实型*/ r =1.0; /*变量r赋初值*/ s=PI*pow(r,2); /*计算圆面积s*/ printf(“半径R=%f 时,面积S=%f \n”,r,s); /*输出结果*/ } 例一(求圆面积程序 area.c)分析注释部份 P5 这部分内容不会 被编译,也不被执行 编译预处理 程序编译、执行前系统 自动进行的特殊处理 特点: 以#开头 结束处无分号null关于编译预处理(宏定义) P39和P187#define PI 3.14159 #define — 宏定义命令 PI — 符号常量(宏名,最好用大写,以区别一般变量) 3.14159 —宏体(可以是一个表达式,如3+4) 作用:用简单符号代表宏体部份内容(编译时会先自动替换) 意义:直观/多次使用/便于修改 注意: #define 可出现在程序的任一位置(作用范围:由此行到程序末尾) 宏定义不是C语句,不必在行末加分号,否则会连分号一起置换。 例二 #define A 1 #define B 2 #define C 2*A+B main() { printf(“C=%d”,C); /*输出结果:C=……*/ }例三 #define WIDTH 80 #define LENGTH WIDTH+40 s=LENGTH*20 /*s=80+40*20=880*/ 注意:s= WIDTH+40*20null关于编译预处理(文件包含) P194#include stdio.h——“头文件”(标准前导文件) C语言是一种“装配式”语言,许多常规的工作如输入、输出、数学函数等,往往事先由人做成各种“程序模块”(库函数),存放在各种所谓“头文件”(.h)中。使用时只需进行以下处理—— ◆#include “头文件名” 或 #include <头文件名> ◆在程序的执行部分调用该库函数:函数名(参数) 文件包含的作用,就是根据需要把相应的某个“头文件”的内容在编译时先整体嵌入所编的程序中。 用户也可以将自己设计的程序模块等做成“头文件”,供其他程序“包含”。null文件包含示意图文件包含示意图#include #include …… 源程序area.c (用户编写)头文件stdio.h (系统提供)头文件math.h (系统提供) area.exe (可执行程序) stdio.h math.h编译/ 连接 例一中,area.c文件本身只有12行,stdio.h有187行, math.h有107行, 实际上stdio.h本身还包括 一个24行的头文件stdarg.h。 “文件包含”是在编译后连接时“包含”进可执行程序的。 比较:area.c 1kb area.obj 1kb area.exe 26kbstdarg.hstdio.h stdarg.h math.hnull使用“文件包含”功能的优点提高程序设计效率和程序可靠性 减少程序员重复劳动量 Turbo C提供了三百多个标准库函数,存放在若干个头文件中(常用库函数见P381-387) 本章中:stdio.h 标准输入/输出函数 math.h 数学函数 stdlib.h 常用函数 一个优秀的程序员不应是事无巨细都要从头做起的“工匠”,而应是一个“策划师”+“组装师”。 所以 ,逐步熟悉并掌握常用函数等现有功能模块,是学习C程序设计的一个重要内容。null /*给定半径,求圆的面积*/ #define PI 3.14159 /*编译预处理——宏定义*/ #include /*编译预处理——文件包含*/ #include /*编译预处理——文件包含*/ main( ) /*主函数*/ { float r,s; /*定义变量r、s类型为单精度实型*/ r = 1.0; /*变量r赋初值*/ s=PI * pow(r,2); /*计算圆面积s*/ printf(“半径R=%f 时,面积S=%f \n”,r,s); /*输出结果*/ } 例一(求圆面积程序 area.c)分析(续,主函数) 主函数的基本形式 main() { …… (函数体) }主函数null 关于主函数 main( ) {……}C语言是一种函数式语言,它的一个函数实际上就是一个功能模块——C程序的基本组成是函数。 一个C程序是由一个固定名称为main的主函数和若干个其他函数(可没有)组成。 一个C程序必须有一个、也只能有一个主函数。 主函数在程序中的位置可以任意,但程序执行时总是从主函数开始,在主函数内结束。 主函数可以调用其他各种函数(包括用户自己编写的),但其他函数不能调用主函数。null主函数的一般形式:main( ) { 说明部分程序段(定义数据类型) 执行部分程序段(给出操作指令) } 函数体 说明部分(简单程序可能没有此部分,如P4例1.1): float r,s; /*定义变量r、s类型为单精度实型*/ int a,b; /*定义变量a、b类型为整型*/ 执行部份:输入、赋值、计算、控制、输出等: r=1.0; /*变量r赋初值*/ s=PI*pow(r,2); /*计算圆面积s*/ printf(“半径R=%f 时,面积S=%f \n”,r,s); /*输出结果*/null其他函数标准库函数——只能调用 。使用方法:   ⒈先“包含”,即将该函数所在头文件包含在程序中。  ⒉后调用。调用方式:函数名(参数)例: #include #include main( ) { …… s=PI*pow(r,2); …… printf(“半径R=%f 时,面积S=%f\n”,r,s); } 说明:pow(x,y) 求xy (math.h中的标准数学函数)P382 printf(……); (stdio.h中的标准输出函数) P386 null其他函数自编(定义)函数: (详见教材第8章) ⒈先定义(规定函数类型、函数名和函数功能)    ⒉后调用(使用所定义的函数实现其功能) 定义函数: 函数类型 函数名(形式参数) { 函数体} 调用函数:函数名(参数) 【示例】求三个数的平均值 null自定义函数示例float average ( float x, float y, float z) /*定义函数average( )*/ { float aver; aver=(x+y+z)/3; return(aver); } main( ) /*主函数*/ { float a,b,c,ave; a=3.5;b =4.6;c =7.9; ave=average(a,b,c); /*调用自定义函数average( )*/ printf(“average=%f ”,ave); } 自定义函数一般形式 函数类型 函数名(形式参数) { …… (函数体) }null/*给定半径,求圆的面积*/ #define PI 3.14159 /*编译预处理——宏替换*/ #include /*编译预处理——文件包含*/ #include /*编译预处理——文件包含*/ main( ) /*主函数*/ { float r,s; /*定义变量 r、s类型为单精度实型*/ r =1.0; /*变量r赋初值*/ s=PI*pow(r,2); /*计算圆面积s*/ printf (“半径R=%f 时,面积S=%f \n”,r,s); /*输出结果*/ }求圆面积程序 area.c分析(续,语句) 关于语句 特点: 均以分号结束; 一个程序行可以有多个语句。 语句组成了函数体。 强烈建议: 按缩进格式书写语句。 本示例程序中使用了: ①数据类型定义语句 ②赋值语句 ③输出语句null关于语句: ①数据类型定义语句语句形式 变量类型关键字 变量名; float r,s; 定义r、s为单精度实型变量 int r,s; 定义r、s为整型变量 【注意】在C语言程序中,所有变量都要先定义后使用,否则就会出现编译错误提示,如: Error: Undefined symbol ‘ a’ in function main Let’s try…变量类型关键字 字符型(描述文字性的数据) char 数值型: ■整型(在机内是准确表示的) int ■实型(在机内一般是近似表示的) float (有效数字6位)                 double(有效数字16位)变量名 P40 C语言标识符(变量名、符号常量名、函数名等)命名: ■组成:字母、数字、下划线 ■开头:字母、下划线 ■长度:≤32字符(Turbo C) 【注意】大小写为不同字符(变量名一般小写,符号常量 名一般大写),还要注意不得与关键字(P375)同名。null关于语句: ②赋值语句作用:使变量获得具体的运算值。 语句形式 变量名=表达式(常量、变量、函数、算式及其混合); r =1.0; /*变量r赋初值*/ s=PI*pow(r,2); /*计算圆面积s*/ 注意:函数pow( )在头文件math.h中定义(见P382)。 所以程序开头处必须加上一行所谓“文件包含”: #include 变量赋初值亦可在数据类型定义时进行: float r =1.0, s; 把变量声明语句与赋值结合在一起的语句,术语上称为 “初始化语句”。null关于语句: ③输出语句作用:将运算结果送到显示器屏幕显示出来 语句形式 (详见P72-80) printf (…… ) ; printf (“半径R=%f 时,面积S=%f\n”,r,s); printf (“Hello,everyone!”); 【注意】C语言本身没有输入、输出语句,其功能要借用有关函数来实现。 %f — 格式字符串(见后) \n — 控制字符(转义字符) \n表示回车换行 按定义输出动作或特殊字符(见P48 表3.3) 引号中的其他部分照原样输出 null关于格式字符串表示该处将用printf语句引号外对应表达式的值替换后输出 例:若 r =1,s=3.14 printf (“半径R=%f 时,面积S=%f\n”,r,s); 输出结果: 半径R=1 时,面积S=3.140000 常用格式字符串: 字符型:%c 单字符 %s 字符串 数值型:%d 整数(十进制) %f 实数(小数形式,默认为6位小数) 例一 int x = 5; f loat y =3; printf (“a=%d,b=%f,c=%s”,x,y,”abcdefg”);输出结果: a=5,b=3.000000,c=abcdefg 例二 int x = 5; f loat y =3; printf (“a=%d,b=%f,c=%s”,x+2,y*3,”123defg”);输出结果: a=7,b=9.000000,c=123defgnull 小 结 1、C语言程序的基本结构一个C程序是由一个固定名称为main的主函数和若干个其他函数(可缺省)组成。 其基本结构一般形式如右图所示。 注:TC环境下C源程序的扩展名一般为.c(如area.c) null 小 结 2、C语言程序的基本特点C语言是一种函数式语言,其程序基本组成是函数 每个C程序必须有一个、也只能有一个主函数main 不管主函数在程序中的位置如何,程序执行总是从主函数开始 所有变量必须先定义(规定数据类型)后使用 每个语句必须用分号“;”结束(注意是“每个语句”而不“每行语句”) 编译预处理命令不是语句(行末不能用分号结束) C语言本身没有输入/输出语句,其输入/输出功能须通过调用标准函数来实现 使用系统提供的标准库函数或其他文件提供的现成函数时,必须使用“文件包含”(除了printf和scanf语句)。 null三、示例程序的完善 左铡的示例程序(求圆面积)有四个不足: 每次运行后屏幕残留的显示内容和运行结果混在一起。 如果要求多个半径r值时的面积s,每次都必须修改源程序并重新编译处理; 如果半径r为负值,也会有正常的s值输出。 输出结果的小数位数为6位,与习惯不符。 为此,可将程序进行如下修改:#define PI 3.14159 #include #include #include main( ) { float r,s; clrscr( ); /*清屏*/ printf(“请输入半径 R=”); scanf(“%f ”,&r); if (r<0) { printf(“半径不能为负值!”) ; exit(0); /*中止程序运行*/ } s=PI*pow(r,2); printf(“R=%.3f,S=%.3f \n”,r,s); } #define PI 3.14159 #include #include main( ) { float r,s; r =1.0; s=PI*pow(r,2); printf(“R=%f,S=%f \n”,r,s); } 示例程序area.c : null/*改进后的求圆面积程序AREA.C */ #define PI 3.14159 #include #include #include #include main() { float r,s; clrscr( ); /*清屏,在conio.h中定义*/ printf("请输入半径R="); /*人机对话提示语*/ scanf ("%f",& r); /*将键盘输入值存放在变量r对应的存储单元中*/ if (r<0) /*如果输入的半径值为负值*/ { printf (“输入出错,半径不能为负值!"); /*显示出错提示*/ exit(0); /*停止程序执行,返回操作系统*/ } s=PI*pow(r,2); printf(“半径R=%.3f时,面积S=%.3f\n”, r , s); /*限制R,S小数位数*/ } Let’s try……null改进程序有关语句分析键盘输入函数 scanf(“%f”,&r); 功能:将键盘输入的值存放到变量r所对应的存储单元中。 &r 变量r的存储单元地址 注意:scanf()函数本身不能带作为提示语的字符串,如 scanf(“请输入半径r=%f”,&r ); (结果将使 r 等于某个随机值) 通常与printf()函数组合使用,实现“人机对话”功能。Example: …… printf(“Input R=”); scanf(“%f ”,&r); ……null改进程序有关语句分析(续)选择语句 if (条件表达式)语句或复合语句(用花括号括起); 功能:如果条件表达式的值为真,就执行指定语句或复合语句。 扩展形式: if … else 语句 (详见P91) if (条件表达式) 语句或复合语句; else 语句或复合语句; 注意:条件表达式必须用()括起,且不能跟分号。Example: 参见P5 例1.3 #include #include main( ){ int a,b,c; clrscr( ); /*清屏*/ printf(“Input a、b=“); scanf(“%d,%d”,&a,&b); c=max(a,b); printf(“max=%d”,c); }int max(int x, int y) { int z; if (x>y) z=x; else z=y; return z; } null改进程序有关语句分析(续)停止函数 exit(0) 使程序正常停止,返回操作系统状态。 括号中为整型数值,0—正常结束 其他数值—出错类型(某些系统上在原程序结束后可将此值传给另一程序) 输出格式 P72 r = %-m.nf m 总位数(数值总长度小于m时左端补空格, -m则为右端补空格), n 小数位数 上例中—— r=%10.3f,s=%10.3f 输出 r= 1.500,s= 7.069 r=%-10.3f,s=%-10.3f 输出 r=1.500 ,s=7.069 r=%.1f,s=%.2f 输出r=1.5,s=7.07 (下一位小数四舍五入) null第一章 作业 一、上机编程:调试执行例二(改进后的求圆面积)程序AREA.C。 二、用八条printf语句打印如下的图案,再用尽可能少的printf语句打印出同样的图案。 ******** ******** ******** ******** ******** ******** ******** ******** 三、上机编程:求3x2+5x-12=0方程的根。 null四、熟记下列TC编译软件常用英语词汇: function 函数 statement 语句 missing 丢失 error 出错 parameter 参数 illegal 非法的 invalid 无效的 pointer 指针 character 字符 array 数组 string 字符串 constant 常量 syntax 语法 argument 参数 type 类型 definition 定义 compile 编译 call 调用 symbol 标识符(变量名等) declaration 说明、声明 并将以下屏幕提示译为中文: Compiling E:\tc\abc.c Error E:\tc\abc.c 4: statement missing ; in function main Error E:\tc\abc.c 3: Undefined symbol 's' in function aa 第一章作业
/
本文档为【C语言(第一章)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索