C语言课件第1章C语言概述.ppt_第1页
C语言课件第1章C语言概述.ppt_第2页
C语言课件第1章C语言概述.ppt_第3页
C语言课件第1章C语言概述.ppt_第4页
C语言课件第1章C语言概述.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1,C语言程序设计,2010年9月 刘梅彦 计算中心 计算机教研室,2,C语言程序设计,教学要求 掌握程序设计语言的基本知识 常用算法(用计算机解决问题时常用的算法) 初步的程序设计能力 学习方法 自主学习 重视上机实践,3,3,本课程着重培养的能力点,4,如何尽快学会用C语言进行程序设计,了解程序设计语言(C语言) 模仿、改写、编写 通过不断的编程实践,逐步领会和掌握程序设计的基本思想和方法。,5,5,关于大学的学习.,拥有一套学习方法 培养自学能力 拓宽知识面 充分利用各种资源,6,6,大学教育与中小学教育 有什么不同?,给学生以更大的发挥空间,教师仅进行基础性、引导性的教育,更深入的知识要靠学生自学。 课堂学习 可持续发展的必备知识 基本理论、思想、技术 一定的新知识 关键是学会思考 尊重权威人士、挑战权威理论 自学能力 是跨进大学校门后必备的素质之一,7,教材和参考书,C语言程序设计,李文杰等,清华大学出版社 实验指导书与自测练习集 参考书: C语言程序设计,何钦铭、颜晖主编,高等教育出版社 C语言编程(第3版),美Stephen, G.Kochan,张小潘译,电子工业出版社,2006 C语言教程(第4版),美Al Kelley, Ira Pohl,徐波译,机械工业出版社,2007 C程序设计语言,美Brian W. Kernighan, Dennis M. Ritchie,徐宝文等译,机械工业出版社,2006,8,课程情况介绍,本课学时数共64学时,其中: 上课学时数:48 上机学时数:16(共 8 次)) 课程安排: 上课时间:周二5,6节,周四5,6节(双周) 上机时间:在第4/5, 9-12,14-15,17周 电信1001班:周一 1,2节 电信1002班:周三 7,8节 电信1003班:周三 9,10节 地点:计算中心清河校区机房(二教四层401机房),9,程序、计算机,程序一词来自生活,通常指完成某些事务的一种既定方式和过程。 从表述方面看,可以将程序看成对一系列动作的执行过程的描述。日常生活中也可以找到许多“程序”实例。 例如,一个学生早上起床后的行为可以描述为:,10,起床; 刷牙; 洗脸; 吃饭; 早自习; 这是一个直线形程序,是最简单形式的程序。描述这种程序的就是给出一个包含其中各个基本步骤的序列。如果按顺序实施这些步骤,其整体效果就完成该项事务。,11,现在考虑另一个复杂些的过程:到食堂吃饭。这一常见过程可以描述为: 1.进入食堂; 2.查菜谱; 3.向服务员点菜; 4.可能由于某种原因,菜谱上的菜没有; 食客可以有两种选择: 4.1.回到第2步(进一步查找其它想吃的菜); 4.2.放弃在此吃饭,离开食堂; 5.若点的菜有,在此吃饭。 6.吃完饭离开食堂。 这个程序比前一个复杂得多。可以看到,这一程序不是一个平铺直叙的动作序列,其中步骤更多,还出现了分情况处理和可能出现的重复性动作。,12,计算机是人类发明的一种自动机器,它能完成的工作就是计算。计算机的最基本功能是可以执行一组基本操作,每个操作完成一件很简单的计算工作,例如整数的加减乘除运算等等。为使计算机能按人的指挥工作,每种计算机都提供了一套指令,其中的每一种指令对应着计算机能执行的一个基本动作。,13,预备知识:计算机的工作原理,计算机系统的组成 硬件系统 计算机基本组成 指令的执行过程 程序 软件系统,14,系统软件 应用软件,计算机系统包括:硬件+软件,硬 件,软 件,计算机系统,15,CPU,存储器,数据流,控制流,运算器,外存储器,输 出 设 备,内存储器,输 入 设 备,控制器,地址流,计算机系统的硬件组成,演示:计算机的五大部件,16,存储器是计算机存储数据和程序的记忆单元集合, 每个记忆单元由8位二进制位组成,可读写其中的数据。,存储器,存储器通常分为内存储器和外存储器,存放大量信息 的外存储器,信息交流中心 内存储器,存储器,17,CPU,控制器,运算器,控制整个计算机 所有部件的工作,执行算术运算 和逻辑运算,中央处理器(CPU),18,常用输入设备:键盘、鼠标、扫描仪、光笔、麦克风等。 常用输出设备:显示器、打印机、音箱、绘图仪等。,输入设备和输出设备:,19,指令是能被计算机识别并执行的的二进制代码,完成一种操作。,数据传送指令 数据处理指令 程序控制指令 输入输出指令 其它指令,If Goto, And Or,对计算机的硬件进行管理等,指令,操作码 要完成的操作类型或性质 操作数 操作的内容或所在的地址,计算机指令,20,通常包含以下3个步骤: 取指令 按照指令计数器中的地址,从内存储器中取出指令,并送往指令寄存器。 分析指令 对指令寄存器中存放的指令进行分析,由译码器对操作码进行译码,将指令的操作码转换成相应的控制电位信号;由地址码确定操作数地址。 执行指令 由操作控制线路发出完成该操作所需要的一系列控制信息,去完成该指令所要求的操作。 一条指令执行完成后,指令计数器加1 或将转移地址码送入程序计数器,然后回到。,指令的执行过程(了解),21,计算机软件,什么是计算机软件,软件的作用是什么? 什么是计算机语言? 如何创建一个程序? 了解程序的执行过程,22,软件,系统软件,实用程序 (诊断程序 排错程序等 ),操作系统 (Windows, Unix, Linux),语言处理程序 (例C语言编译器程序, 链接程序等),应用软件,系统软件: 控制和维护计算机的正常运行, 管理计算机的各种资源, 以满足应用软件的需要。,应用软件: 完成一个特定的任务, 在系统软件的支持下,才能运行,23,计算机语言:即程序设计语言,程序要需要用某种形式(语言)来描述。现代计算机的程序则是用计算机程序设计语言来描述的。 从计算机诞生到今天,程序设计语言也在伴着计算机技术的进步不断升级换代。 机器语言 汇编语言 高级语言,24,机器语言,一种CPU的指令系统,也称该CPU的机器语言,它是该CPU可以识别的一组由0和1序列构成的指令码。 下面是某CPU指令系统中的两条指令: 1 0 0 0 0 0 0 0 (进行一次加法运算) 1 0 0 1 0 0 0 0 (进行一次减法运算) 用机器语言编程序,就是从所使用的CPU的指令系统中挑选合适的指令,组成一个完成特定任务的指令系列。 计算机自动执行这个程序。,25,机器语言,这种程序虽然可以被机器直接理解和执行,却由于它们不直观,难记、难认、难理解、不易查错,只能被少数专业人员掌握,同时编写程序的效率很低,质量难以保证。 这种繁重的手工方式与高速、自动工作的计算机极不相称。这种方式仅使用于计算机出现的初期(使用穿孔纸带的时期)的编程(用有孔、无孔,分别代表1、0)。现在已经不再使用。,26,汇编语言,为减轻人们在编程中的劳动强度,20世纪50年代中期人们开始用一些“助记符号”来代替0,1码编程。如前面的两条机器指令可以写为 A+B A 或 ADD A,B A-B A 或 SUB A,B 这种用助记符号描述的指令系统,称为符号语言或汇编语言。,27,汇编语言,用汇编语言编程,程序的生产效率及质量都有所提高。但是汇编语言指令是机器不能直接识别、理解和执行的。 用它编写的程序经检查无误后,要先翻译成机器语言程序才能被机器理解、执行。这个翻译转换过程称为“代真”。 代真后得到的机器语言程序称为目标程序(object program) 代真以前的程序,称为源程序(source program)。,28,高级语言,汇编语言和机器语言是面向机器的,不同类型的计算机所用的汇编语言和机器语言是不同的。 1954年出现的FORTRAN语言以及随后相继出现的其它高级语言,开始使用接近人类自然语言的、但又消除了自然语言中的二义性的语言来描述程序。 这些高级语言使人们开始摆脱进行程序设计必须先熟悉机器的桎梏,把精力集中于解题思路和方法上。,高级语言源程序,目标程序 (二进制表示的),翻译,29,第 1章 C语言概述,一个C语言程序 程序与程序设计语言 C语言的发展历史与特点 实现问题求解的过程,30,本章要点,什么是程序?程序设计语言包含哪些功能? 程序设计语言在语法上包含哪些内容? 结构化程序设计有哪些基本的控制结构? C语言有哪些特点? C语言程序的基本框架如何? 形成一个可运行的C语言程序需要经过哪些步骤? 如何用流程图描述简单的算法?,31,1.1 C语言的发展历史与特点,历史 1972年:贝尔实验室的Dennis Ritchie在B语言的基础上设计并实现了C语言。 1978年:B.W.Kernighan和D.Ritchie(简称K & R)合著的The C Programming Language是各种C语言版本的基础,称之为旧标准C语言。 1983年:美国国家标准化协会(ANSI)制定了新的C语言标准,称ANSI C。,32,32,C语言的祖师爷 Dennis M. Ritchie,/who/dmr/,32,33,33,Ritchie和Thompson在开发UNIX,33,34,34,接受美国国家技术勋章,34,35,C语言的特点,1C语言是一种结构化语言 2C语言语句简洁、紧凑,使用方便、灵活 32个关键字,9种控制语句,程序书写形式自由。 3C语言程序易于移植 C语言将与硬件有关的因素从语言主体中分离出来,通过库函数或其他实用程序实现它们。 4C语言有强大的处理能力 5生成的目标代码质量高,运行效率高,36,C语言的特点,6数据类型检查不严格,表达式出现二义性,不具备数据越界自动检查功能,运算符的优先级与结合性对初学者难于掌握。 C 语言中大小写字母代表不同含义,37,1.2 认识C语言程序,例1-1求阶乘问题。输入一个正整数n,输出n!。 #include int main(void) int n, result; int factorial(int n); scanf(“%d”, ,输入 4 输出 24,C程序由函数组成 有且只有一个主函数main,/*编译预处理命令 */ /*主函数 */ /*变量定义 */ /*函数声明 */ /*输入一个整数 */ /*调用函数计算阶乘 */ /*输出计算结果 */ /*定义计算 n! 的函数 */ /*循环*/,38,1.3 程序与程序设计语言,程序 人们为解决某种问题用计算机可以识别的代码编排的一系列加工步骤。 程序的执行过程实际上是对程序所表达的数据进行处理的过程。 程序设计语言 提供了一种表达数据与处理数据的功能 要求程序员按照语言的规范编程,39,1.3 程序与程序设计语言,程序与指令 程序设计语言的功能 程序设计语言的语法 程序的编译与编程环境,40,程序与指令,指令:计算机的一个最基本的功能 如实现一次加法运算或实现一次大小的判别 计算机的指令系统:计算机所能实现的指令的集合 程序:一系列计算机指令的有序组合,41,程序与指令,例1-2 编写程序,求三数之和 先认识几个计算机指令(7条指令 ,一个虚拟的系统) 指令1:Input X 将当前输入数据存储到内存的X单元 指令2:Output X 将内存X单元的数据输出。 指令3:Add X Y Z 将内存X单元的数据与Y单元的数据相加并将结果存储到Z单元。 指令4:Sub X Y Z 将内存X单元的数据与Y单元的数据相减并将结果存储到Z单元。 指令5:BranchEq X Y P 比较X与Y,若相等则程序跳转到P处执行,否则继续执行下一条指令。 指令6:Jump P 程序跳转到P处执行。 指令7:Set X Y 将内存Y单元的值设为X。,指令的格式和含义是认为规定的。程序的编写依赖于计算机的指令系统,42,程序与指令,编写完成如下功能的程序: 输入3个数A, B和C,求A+B+C的结果。,输入第1个数据到存储单元A中 输入第2个数据到存储单元B中 输入第3个数据到存储单元C中 将A、B相加并将结果存在D中 将C、D相加并将结果存在D中 输出D的内容,Input A; Input B; Input C; Add A B D; Add C D D; Output D;,处理步骤:,程序代码:,43,程序设计语言的功能,数据表达:表达所要处理的数据 流程控制:表达数据处理的流程,44,数据表达,数据表达:一般将数据抽象为若干类型 数据类型:对某些具有共同特点的数据集合的总称 代表的数据(数据类型的定义域) 在这些数据上做些什么(即操作或称运算) 例如:整数类型 包含的数据:,-2,-1,0,1,2, 作用在整数上的运算:+ 、 - 、 * 、 /等,45,数据表达,C语言提供的数据类型 基本数据类型:程序设计语言事先定义好,供程序员直接使用,如整型、实型(浮点型)、字符型等。 构造类型:由程序员构造,如数组、结构、文件、指针等。 各种数据类型的常量与变量形式 常量(常数)与变量,46,流程控制,结构化程序设计方法 将复杂程序划分为若干个相互独立的模块 模块:一条语句(Statement)、一段程序或一个函数(子程序)等 单入口、单出口,47,流程控制,任何程序都可以将模块通过3种基本的控制结构进行组合来实现,顺序结构,循环结构,分支结构,48,流程控制,语句级控制:3种基本的控制结构 顺序控制结构:按书写顺序执行(即按自然顺序) 分支控制结构(选择结构):根据不同的条件来选择所要执行的模块 循环控制结构:重复执行某个模块 单位级控制:函数的定义与调用 处理复杂问题时, 将程序分为若干个相对独立的子程序(函数),49,程序设计语言的语法,用程序设计语言所写的程序必须符合相应语言的语法 源程序(源代码)是一个字符序列,这些字符序列按顺序组成了一系列“单词”,“单词”的组合就形成了语言有意义的语法单位,一些简单语法单位的组合又形成了更复杂的语法单位,最后一系列语法单位组合成程序。,50,程序设计语言的语法,C语言的主要“单词” (1)标识符: C语言的标识符规定由字母、数字以及下划线组成,且第一个字符必须是字母或下划线。 (2)保留字(关键字): 它们是C语言规定的、赋予它们以特定含义、有专门用途的标识符。 (3)自定义标识符: 包括在程序中定义的变量名、数据类型名、函数名以及符号常量名。有意义的英文单词 (4)常量: 常量是有数据类型的,如,123、12.34 (5)运算符。代表对各种数据类型实际数据对象的运算。如,+(加)、-(减)、*(乘)、/(除)、%(求余)、(大于),请对照一个C语言程序来理解本页中的概念,51,程序设计语言的语法,C语言的主要语法单位 (1)表达式: 运算符与运算对象组合就形成了表达式。如,2 + 3 * 4 (2)变量: 变量也有数据类型,所以在定义变量时要说明相应变量的类型。如: int i; (3)语句: 语句是程序最基本的执行单位,程序的功能就是通过对一系列语句的执行来实现的。 (4)函数:定义一个函数,调用一个函数。,请对照一个C语言程序来理解本页中的概念,52,程序设计语言的语法,其中,(3)语句: 表达式语句:表达式加分号“;” 分支语句:实现分支控制过程 if (a b) x = a; else x = b; 循环语句:实现循环控制的过程 sum = 0; /* 初始化sum和i */ i = 1; while (i = 100) /* while循环语句 */ sum = sum + i; i = i + 1; 复合语句:用一对“ ”,将若干语句顺序组合在一起就形成了一个程序段。,53,程序设计语言的语法,(4)函数定义与调用 函数是完成特定任务的独立模块,函数的使用最主要涉及到函数的定义与调用。 输入输出: C语言没有输入输出语句,用库函数printf、scanf等实现。,54,程序的编译与编程环境,程序的编译 编译器 程序 计算机直接能理解的指令序列 编译器:对源程序进行词法分析、语法与语义分析,生成可执行的代码。 直接指出程序中的语法错误 编程环境 包括编辑程序(Edit)、编译(Compile)、调试(Debug)等过程。 掌握程序设计语言:根据语言的语法,用语言表达数据、实现程序的控制,并会使用编程环境。,55,可执行代码,源程序,C 语言上机过程,编译,连接,运行,test.cpp,test.obj,test.exe,56,1.4 实现问题求解的过程,问题:求1100间所有偶数的和。 1问题分析与算法设计 求在一定范围内(1100)、满足一定条件(偶数)的若干整数的和,求累加和。 思路:设置一个变量(sum),其初值为0,然后在1100的数中(i)寻找偶数,将它们一个一个累加到sum中。 一

温馨提示

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

评论

0/150

提交评论