c语言知识学习-引言.ppt
C 语言程序设计,主讲人: 孔钦,2011版,Email: ,课程简介,课程名称:C语言程序设计(核心课程) 配套实验教材: C语言程序设计实验指导 学分和课时: 学分 4 周课时 3+2 上课起讫时间: 9月26日至12月31日 课程特色:实践性强 教学目的: 掌握程序设计语言的基本知识 掌握常用算法 具备初步的程序设计能力 学习方法 自主学习 重视上机实践:第二周开始上机,贯穿始终,如何尽快学会用C语言进行程序设计,了解程序设计语言(C语言) 模仿、改写、编写 通过不断的编程实践,逐步领会和掌握程序设计的基本思想和方法。,参考文献,C程序设计基础课程,浙江大学出版社,2007 C语言教程(第4版),美Al Kelley, Ira Pohl,徐波译,机械工业出版社,2007 标准C语言基础教程(第4版),美Gary J. Bronson,单先余等译,电子工业出版社,2006 C程序设计(第三版),潭浩强等,清华大学出版社,考核方式,课程总评分(满分100分) 到课率及平时作业10%期中考试30%期末卷面60% 到课率及平时作业 期中考试 期末卷面60%,Chap 1 引 言,本章要点,什么是程序?程序设计语言包含哪些功能? 程序设计语言在语法上包含哪些内容? 结构化程序设计有哪些基本的控制结构? C语言有哪些特点? C语言程序的基本框架如何? 形成一个可运行的C语言程序需要经过哪些步骤? 如何用流程图描述简单的算法?,1.1 一个C语言程序,例2-1 在屏幕上显示一个短句: P17 Hello World!,在屏幕上显示Hello World!,/* 显示“Hello World!” */ 注释文本 # include 编译预处理命令 int main(void) 主函数 printf(“Hello World! n”); 语句结束 return 0; 输出函数 换行符,1.任何程序都有主函数 2.程序由若干语句组成 3.语句由;结束,1.1 一个C语言程序(续),例1-1求阶乘问题。输入一个正整数n,输出n!。 n! = n*(n-1)*(n-2)*(n-3)*1 输入4,输出24 #include /* 编译预处理命令 */ - int main(void) /* 主函数 */ int n; /* 变量定义 */ int factorial(int n); /* 函数声明 */ scanf(%d, ,源程序总结:,C程序由函数组成,包括系统函数和用户自定义函数 所有的C程序都有且只有一个主函数main()函数 执行顺序:从main()函数处开始运行,直至结束,scanf(),printf(),main(),数据表达和处理流程,factorial(),1.2 程序与程序设计语言,程序 人们为解决某种问题用计算机可以识别的代码编排的一系列加工步骤。 程序的执行过程实际上是对程序所表达的数据进行处理的过程。 程序设计语言 提供了一种表达数据与处理数据的功能 要求程序员按照语言的规范编程,1.2 程序与程序设计语言,1.2.1 程序与指令,指令:一条指令实现计算机的一个最基本的功能 如实现一次加法运算或实现一次大小的判别 计算机的指令系统:计算机所能实现的指令的集合 程序:一系列计算机指令的有序组合,程序与指令,例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。,虚拟程序1,输入3个数A, B和C,求A+B+C的结果 Input A; 输入第1个数据到存储单元A中 Input B; 输入第1个数据到存储单元B中 Input C; 输入第1个数据到存储单元C中 Add A B D; 将A、B相加并将结果存在D中 Add C D D; 将C、D相加并将结果存在D中 Output D; 输出D的内容,虚拟程序2,输入2个数A和B,求A*B A*B = A+A+A(B个A相加) 1Input A; 2Input B; 3Set 0 X; 4Set 0 Z; 5BranchEq X B 9; 6Add Z A Z; 7Add 1 X X; 8Jump 5; 9Output Z;,1.2.2 程序设计语言的功能,数据表达:表达所要处理的数据 流程控制:表达数据处理的流程,数据表达,数据表达:一般将数据抽象为若干类型 数据类型:对某些具有共同特点的数据集合的总称 代表的数据(数据类型的定义域) 在这些数据上做些什么(即操作或称运算) 例如:整数类型 包含的数据:,-2,-1,0,1,2, 作用在整数上的运算:+ 、 - 、 * 、 /等 C语言提供的数据类型 基本数据类型:程序设计语言事先定义好,供程序员直接使用,如整型、实型(浮点型)、字符型等。 构造类型:由程序员构造,如数组、结构、文件、指针等。 各种数据类型的常量与变量形式 常量(常数)与变量,流程控制,结构化程序设计方法(C语言) 将复杂程序划分为若干个相互独立的模块 模块:一条语句(Statement)、一段程序或一个函数(子程序)等 单入口、单出口 任何程序都可以将模块通过3种基本的控制结构进行组合来实现 顺序控制结构:自然顺序执行 分支控制结构(选择结构):根据不同的条件来选择所要执行的模块 循环控制结构:重复执行某个模块,循环结构,顺序结构,分支结构,1.2.3 程序设计语言的语法,用程序设计语言所写的程序必须符合相应语言的语法 (附录1) 源程序(源代码):未经编译的程序 是一个字符序列,这些字符序列按顺序组成了一系列“单词”,“单词”的组合就形成了语言有意义的语法单位,一些简单语法单位的组合又形成了更复杂的语法单位,最后一系列语法单位组合成程序。 C语言的主要“单词” (1)标识符: C语言的标识符规定由字母、数字以及下划线组成,且第一个字符必须是字母或下划线。 (2)保留字(关键字): 它们是C语言规定的、赋予它们以特定含义、有专门用途的标识符。 (3)自定义标识符: 包括在程序中定义的变量名、数据类型名、函数名以及符号常量名。有意义的英文单词 (4)常量: 常量是有数据类型的,如,123、12.34 (5)运算符。代表对各种数据类型实际数据对象的运算。如,+(加)、-(减)、*(乘)、/(除)、%(求余)、(大于),程序设计语言的语法(续),C语言的主要语法单位 (1)表达式: 运算符与运算对象组合就形成了表达式。如,2 + 3 * 4 (2)变量定义: 变量也有数据类型,所以在定义变量时要说明相应变量的类型。如: int i; (3)语句: 语句是程序最基本的执行单位,程序的功能就是通过对一系列语句的执行来实现的。 (4)函数定义与调用 (5)输入与输出,1.2.4 程序的编译与编程环境,程序的编译 编译器 程序 计算机直接能理解的指令序列 编译器:对源程序进行词法分析、语法与语义分析,生成可执行的代码。 直接指出程序中的语法错误,并不意味着程序就没有错误了 编程环境 包括编辑程序(Edit)、编译(Compile)、调试(Debug)等过程。 C 语言上机过程,1.3 C语言的发展历史与特点,历史 1972年:贝尔实验室的Dennis Ritchie在B语言的基础上设计并实现了C语言。 1978年:B.W.Kernighan和D.Ritchie(简称K 重复累加,用循环语句实现,在循环过程中: (1) 判别 i 是不是偶数:用分支控制语句来实现。 (2) 对循环次数进行控制:通过 i 值的变化,问题分析与算法设计,思路 确定算法 (一组明确的解决问题的步骤,它产生结果并可在有限的时间内终止。) 算法的描述: 自然语言 伪代码 流程图:算法的图形表示法,编辑程序,2编辑程序 生成程序的源文件,C语言源文件的后缀为 .c / .cpp #include int main(void) int i, sum = 0; for(i = 1; i <= 100; i+) if (i%2 = 0) sum = sum + i; printf(%d, sum); return 0; ,程序编译连接,3程序编译连接 编辑程序后,用该语言的编译程序对其进行编译,以生成二进制代码表示的目标程序(.obj),与编程环境提供的库函数进行连接(Link)形成可执行的程序(.exe)。 编译程序会指出程序的语法错误!,运行与调试,4运行与调试 经过编辑、编译、连接,生成执行文件后,就可以在编程环境或操作系统环境中运行该程序。 如果程序运行所产生的结果不是你想要的结果,这是程序的语义错误(逻辑错误)。 语法错误 VS 逻辑错误 调试:在程序中查找错误并修改错误的过程。 调试的方法 设置断点 单步跟踪 调试是一个需要耐心和经验的工作,也是程序设计最基本的技能之一。,总结,作业,1) 习题1,3,4 2) 预习实验1,