C语言的发展.ppt_第1页
C语言的发展.ppt_第2页
C语言的发展.ppt_第3页
C语言的发展.ppt_第4页
C语言的发展.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1,C语言程序教程,重庆工学院,2,课程要求,课程目标: 正确理解和使用 C语言的基本数据结构和语法 运用结构化程序的思想去阅读和设计程序 完成结构化程序的编写、调试的基本训练 课程基本要求: 学会使用C语言编译系统,学会上机调试C程序 C语言概念和方法要清楚,书上的例子要明白 掌握程序设计的一般方法和思想、常用算法 认真完成作业,3,课程特点 C是基础:接触各种数据类型及表达式、基本语句语法、常用函数 C程序设计: 基本算法和案例程序的融合 后续课程 C+程序设计、面向对象程序设计、数据结构与算法分析、操作系统(UNIX) 学什么 语言及程序设计概述 数据类型、运算符与表达式 简单程序设计(顺序、选择、循环结构程序设计 ) 数组 函数 指针 结构体与共用体 文件,4,教学方法如何教 理论课:重点讲授主要算法和程序案例 实验课:验证式实验教学,实现算法程序 习题课:分析复杂程序案例 学习方法如何学 课前预习:书中主要语句、函数、例题 课后复习:教案中重点例题 认真独立完成作业 上机前必须完成基本程序 多读、多看、多写程序,5,第一章C语言的发展及其特点和应用,本章要求: 了解C语言的特点、与其它高级语言间异同; 了解C程序在PC机上的建立、编译和运行过程; 了解C语言程序设计思想; 重点: C语言的主要特点; C语言在PC机上的运行过程及上机操作过程; 常用算法的应用,6,0. 回顾下计算机相关知识,.计算机定义:计算机是一种在事先存入程序的控制下,能够接收数据、存储数据、处理数据并提供处理结果的数字化电子设备。,2.计算机工作流程图,7,3. 计算机内所有的信息(多媒体信息)采用二进制代码表示,称为机器数。 机器数有三种不同的编码形式:原码、反码和补码。 4. 采用二进制的原因: 1)二进制只含有两个数字0和1,因此可用大量存在两种不同稳定状态的元件来表示。 2)二进制数的运算规则简单,使得计算机中的运算部件的结构变得比较简单。 5 .计算机中信息的表示 数值直接转换为二进制 字符采用ASCII编码(7位、美国标准信息交换码) 其它信息(汉字、图形、图象、声音、表格)也有相应的编码标准和规则。,8,6. 计算机系统的组成,9,程序设计语言发展,10,程序执行,11,1.1.1 C语言的发展,C语言是在研制UNIX操作系统过程中诞生,伴随着UNIX操作系统的发展而流行 ALGOL 60 B语言 C语言(UNIX) ANSI C(1983) 目前最流行的语言有以下几种: Microsoft C 或称 MS C Borland Turbo C 或称 Turbo C (本教材选用) AT&T C Turbo C2.0 1989年 Turbo C+(3.0) 1991年,12,1.1.2 C语言主要特点: 1、C语言简洁、紧凑,使用方便、灵活。ANSI C一共只有32个关键字,9种控制语句,主要用小写字母表示。 2、运算符丰富。共有34种。C把括号、赋值、逗号等都作为运算符处理。 3、数据结构类型丰富。 4、C语言是一种结构化、模块化的程序设计语言。其程序由函数组成,便于模块化的程序设计,程序结构完全由顺序结构、选择结构和循环结构组成。 5、语法限制不太严格,程序设计自由度大。一行可以写多个语句,变量类型使用灵活。 6、C语言既具有高级语言的功能,又具有汇编语言的许多功能。 7、生成目标代码质量高,程序执行效率高,与汇编语言相比,用C语言写的程序可移植性好。,13,1.2 C语言程序的基本结构,1.简单的C程序 例1.1输出指定字符串。,程序运行结果: Hello, this is a c programming language.,14,程序分析,1)C程序一般用小写字母书写; 2)每个C源程序有且只能一个main ( ) 函数,称主函数;main前的void表示此函数是“空类型”。 3)程序体必须在一对 之间; 4)每个语句的结尾,必须要有“;”作为终止符。 5)/* */ 表示注释部分,注释内容可用汉字或英文字符表示。 6)函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示. 7)printf函数是一个由系统定义的标准函数库中的输出函数,可在程序中直接调用。printf语句中双撇号中的字符串按原样输出。“n”是换行符即回车换行。 8)“#include”为预编译命令也称为文件包含命令,常在“main”主函数之前,用于将有关的“头文件”包括到用户源文件中。被包含的文件通常是由系统提供的,其扩展名为.h。“stdio.h”为标准输入输出库文件,其内定义了printf函数的原型。,15,例1.2计算指定函数关系式。,程序运行结果: input number: 9 2*sqrt(9.000000)+1=7.000000,16,程序的功能是输入一个实数x,求2倍开方x加1关系式的值,然后输出结果 1)凡是在程序中调用一个库函数时,都必须用预处理命令调用该函数原型所在的头文件。在本例中,使用了三个库函数:输入函数scanf,开平方函数sqrt,输出函数printf。sqrt函数是数学函数,其头文件为math.h文件。scanf和printf是标准输入输出函数,其头文件为stdio.h。 2)/* */注释语句可出现在一行中的最右侧,也可独成为一行。注释也可以用“/”符号标识注释内容,这种注释只在一行有效,在执行语句的前面和中间不能使用这种注释。 3)本例中主函数体分为两部分,一部分为说明部分,另一部为执行部分。说明是指变量的类型说明。语言规定,源程序中所有用到的变量都必须先定义,后使用,否则将会出错。本例中使用了两个变量x,y,用来表示输入的自变量和sqrt函数值。说明部分后的四行为执行部分或称为执行语句部分,用以完成程序的功能。执行部分的第一行是输出语句。第二行为输入语句。第三行是调用sqrt函数并把函数值送到变量y中。第四行是用printf 函数输出变量y的值。 4)运行本程序时,首先在显示器屏幕上给出提示串input number,这是由执行部分的第一行完成的。用户在提示下从键盘上键入某一数,如9,按回车键(enter),接着在屏幕上给出计算结果。,程序分析:,17,格式输入格式输出函数简介,scanf和 printf一般形式为: printf或scanf(格式控制,参数表) 格式控制是一个字符串,必须用双引号括起来,它表示了输入输出量的数据类型。各种类型的格式表示法可参阅后续章节。在printf函数中还可以在格式控制内出现非格式控制字符,这时在显示屏幕上将按原样输出。参数表中给出了输入或输出的量。当有多个量时,用逗号间隔。例如: printf(“2*sqrt(%f)+1=%fn“,x,y); 其中%f为格式字符,表示按实数处理。它在格式串中两次现,分别对应了x和y两个变量。其余字符为非格式字符则按原样输出在屏幕上。,18,程序运行结果: input two numbers:a,b 5,9 max=9,例1.3求两个数的最大值。,19,程序分析:,程序的功能是由用户输入两个整数,程序执行后输出其中较大的数。 本程序由两个函数组成,主函数和max 函数。函数之间是并列关系。可从主函数中调用其它函数。max 函数的功能是比较两个数的大小,然后把较大的数返回给主函数。max函数是一个用户自定义函数,其返回值类型是整型。因此在主函数中要给出说明。在程序的说明部分中,不仅可以有变量说明,还可以有函数说明。在程序的每行后用/*和*/括起来的内容为注释部分,程序不执行注释部分。 上例中程序的执行过程是,首先在屏幕上显示提示字符串,请用户输入两个数,回车后由scanf函数语句接收这两个数,并送入变量a,b中,然后调用max函数,把a,b 的值传送给max函数的参数x,y。在max函数中比较x,y的大小,把大者通过中间变量m返回(return m)给主函数的变量c,最后在屏幕上输出c的值。,20,2.C程序结构特点,通过上述例子,可以对源程序的结构特点归纳如下 1)一个语言源程序可以由一个或多个源文件组成。 2)每个源文件可由一个或多个函数组成。(main主函数、系统提供printf、scanf函数、用户定义max函数) 3)一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。程序总是从main()处开始执行,而不管main()在源文件中的位置。 4)源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。 5)每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“”之后不能加分号。 6)C语言用函数进行输入输出,如printf(),scanf()。 7)C语言用/*/或/作注释。注释部分便于阅读程序的人理解程序员的设计意图,这是一个良好的习惯。 8)C程序书写格式自由,一个语句可以占多行,一行也可以有多个语句。,21,3.书写C程序时应遵循的规则,从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下的规则: 1)一个说明或一个语句单独占一行。 2)用 括起来的部分,通常表示了程序的某一层次结构。一般与该结构语句的第一个字母对齐,并单独占一行。 3)低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来层次清晰、结构明了,增加程序的可读性。,22,4.语言的字符集,字符是组成语言的最基本的元素。语言字符集由字母,数字,空格,标点和特殊字符组成。在字符常量,字符串常量和注释中还可以使用汉字或其它可表示的图形符号。 1)字母 小写字母az共26个,大写字母AZ共26个, 2)数字 09共10个 3)空白符 空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其它地方出现时,只起间隔作用,编译程序对它们忽略不计。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。 4)标点和特殊字符,23,1.3 算法表示方法,1.基本概念介绍 做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。在详细展开算法内容前,先介绍几个基本概念。程序数据结构+算法。数据结构是程序中用到的数据的构造形式及其类型。对于面向对象程序设计,强调的是数据结构,而面向过程的程序设计语言如C语言,主要关注的是算法。算法是程序的核心,也是面向对象程序设计的基础。,24,结构化设计是指任何复杂的程序皆可由顺序、分支、循环三种基本结构组成。 程序设计的一般步骤是:设计算法描述算法编写程序检查程序编译调试和运行程序。 由此,对于程序的概念,我们可以这样理解: 程序算法+数据结构 +程序设计方法+语言工具和环境 程序设计的关键是解题的方法与步骤算法。算法可分为两大类:数值运算算法和非数值运算算法。数值运算算法:即求数值解,通过运算得出一个具体值,数值运算一般有现成的模型,算法较成熟。非数值运算算法:用于事务管理,如图书检索、人事管理等。具体对语言而言,其语法就是工具,是算法的一个具体实现和描述。,25,先看两个常用的简单算法:,例1.4累加,求:1+2+3+4+5+100。 第一步:1+2 S(结果) 第二步:S+3 S(结果) 第三步:S+4 S(结果) 第九十九步:S+100 S(结果) 这样的算法虽然正确,但太繁琐。 改进的算法: 第一步:令x1; 第二步:令i2; 第三步:使x+i,和仍放在x中,可表示为x+ix; 第四步:使i的值+1,即i+1i。 第五步:若i100,返回重新执行步骤第三步以及其后的第四步和第五步;否则,算法结束。,26,例1.5有10个工人,要求查找其中工资高于1500元的人员,并输出。 算法分析: 如用n表示工人序号,ni表示第i个工人的序号,g表示工人的工资,gi表示第i个工人的工资。 算法表示: 第一步:1i。 第二步:如果gi1500,则打印ni和gi,否则不打印。 第三步:i+1i。 第四步:若i10,返回第二步,否则结束。,一个优秀的算法应该具备以下特性: 有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性。,27,2.常用算法的表示方法,算法的表示方法有很多种,常用的有:自然语言描述、伪代码、流程图、NS图等。在这里重点介绍流程图和NS图。 用流程图表示算法 一个流程图包括:表示相应操作的框,带箭头的流程线,框内外必要的文字说明。几何图形框的含义如下图所示。,28,例1.6用流程图表示例1.4和1.5,29,一个流程图,包括以下几部分: 表示相应操作的框; 带箭头的流程线; 框内外必要的文字说明; 注意,画流程线时,不要忘记画箭头,因为它是反应流程的执行先后次序的,如不画出箭头就很难判断各框的执行次序了。,30,根据结构化程序设计的思想,任何一个程序都由顺序、循环、选择三种基本结构组成,其流程图结构如下所示。,顺序结构,循环结构,选择结构,31,用N-S流程图表示算法,顺序结构,选择结构,循环结构,32,用计算机语言表示算法,例1.7用C语言改写示例1.4,例1.8用C语言改写示例1.5,33,1.4 运行C语言程序的基本步骤,程序开发过程,34,写好一个程序后,要经过这样几个步骤:上机输入与编辑源程序对源程序进行编译与库函数连接运行目标程序。如下图所示,其中实线表示操作流程,虚线表示文件的输入输出。,35,Turbo C +3.0集成开发环境,36,小 结,C语言程序是由一系列函数组成的模块结构。 C语言程序的书写格式自由、有较大的灵活性,但一般应采用一定的格式书写,养成良好的编程风格。 C语言是一种编译型的高级程序设计语言,其开发过程包括:编辑、编译、连接、运行四个步骤。具体操作应参阅操作系统支撑环境的有关资料。,37,作业,复习1.2,1.3 熟悉和理解1.3,掌握1.3

温馨提示

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

评论

0/150

提交评论