440 likes | 691 Views
程序设计基础( C 语言). 东北大学高级语言程序设计课程组 课程网站: www.neu.edu.cn/cxsj. 计算机及程序设计概述. 计算机和计算机程序. 计算机的基本工作原理. 计算机硬件和计算机软件. 计算机硬件 主机 外部设备 计算机软件 裸机 要使计算机解决各种实际问题,必须有软件的支持,计算机软件着重研究如何管理计算机和使用计算机的问题 ,没有软件支持的计算机就是一堆废铁. 指令与程序. 指令 指令就是计算机执行某种操作的命令,是硬件能理解并能执行的语言,是机器语言的一个语句,是程序员进行程序设计的最小语言单位。 指令的组成
E N D
程序设计基础(C语言) 东北大学高级语言程序设计课程组 课程网站:www.neu.edu.cn/cxsj
计算机及程序设计概述 计算机和计算机程序
计算机硬件和计算机软件 • 计算机硬件 • 主机 • 外部设备 • 计算机软件 • 裸机 • 要使计算机解决各种实际问题,必须有软件的支持,计算机软件着重研究如何管理计算机和使用计算机的问题 ,没有软件支持的计算机就是一堆废铁
指令与程序 • 指令 • 指令就是计算机执行某种操作的命令,是硬件能理解并能执行的语言,是机器语言的一个语句,是程序员进行程序设计的最小语言单位。 • 指令的组成 • 指令由操作码和操作数构成 • Mov 3,reg1 • Mov 5,reg2 • Add reg1,reg2 • End
指令与程序 • 程序 • 程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的、可以连续执行并能够完成一定任务的指令序列的集合。 • 程序的开发 • 描述问题(算法) • 程序设计语言 • 计算机软件
程序设计语言 • 机器语言 • 二进制指令 • 与计算机硬件的设计密切相关 • 汇编语言 • 汇编语言与机器语言的指令具有一一对应的关系,指令的操作码和操作数地址全部用指定的符号表示 • 汇编语言依然依赖于计算机系统结构,只能为特定的机器所识别,是面向机器的语言
程序设计语言 • 高级语言 • 与具体的计算机指令系统无关的计算机语言 • 高级语言的分类 • 面向过程的语言 • C、Pascal • 面向对象的语言 • C++、Java、.Net • 面向特定应用的语言 • SQL
为什么学习c语言? • C语言是目前实际程序设计工作中使用最广泛的语言之一 • 它包含了程序设计需要理解和使用的基本程序机理和主要机制 • 掌握这些机制就可以理解程序与程序设计的主要问题。 • 目前有许多软件系统是用C编写的,或基本上是用C编写的 • 学习程序设计的同时也能掌握一种实用的程序设计工具 • C语言是一种很灵活的语言 • 既可以在较高层次上做,也可以在较低级的层次上做 • 很多新型的语言都是衍生自C语言 • 有些本身就是C语言的扩充和发展 • 程序设计是计算机领域的基础课程 • C语言适合作为计算机领域许多后续课程的教学语言
授课重点 • 侧重学习一个具体问题的算法化的过程 • 学习应该掌握的基本编程技巧以及C编程的风格和艺术 • 讨论 • 怎样编写出一个好的程序? • 简单、实用的原则
第一部分 基 础 第二部分 简单程序设计 第三部分 高级程序设计 本课程的组织 算法概念、编程原理、编程风格、 基本数据类型定义、算术运算符及 表达式 顺序结构、选择结构、循环结构、 数组的定义及应用、程序设计过程 函数、变量的存储类别、指针、结 构体与共用体、文件
程序设计 • 什么是程序设计? • 使用某种程序语言编写程序的过程,就是用计算机语言对所要解决的问题中的数据以及处理问题的方法和步骤所做的完整而准确的描述的过程 • 怎样进行程序设计? • 分析问题 • 确定算法 • 编制程序 • 调试程序
程序设计 • 一个完整的程序 • 数据结构、算法、编程语言和程序设计方法 • 对数据的描述(数据流) • 指定数据的类型和数据的结构 • 对操作的描述(控制流) • 指定操作的步骤,既算法 • 程序=数据结构+算法
算法 • 什么是算法(Algorithm)? • 就是为了解决一个特定的问题而采取的确定的、有限的、按照一定次序进行的、缺一不可的执行步骤 • 注意 • 为了有效地利用计算机解决实际问题,在设计算法时不仅要保证计算机执行算法的正确性,还要考虑算法的质量,选择适合于具体问题的算法
算法 • 通常计算机算法分为两大类:数值运算算法和非数值运算算法 • 数值运算是指对问题求数值解 • 有确定的数学模型 • 非数值运算是指事务处理过程 • 种类繁多,很难提供统一规范的算法 • 更多的是需要用户设计其算法的
算法 • 例1:猴子吃桃问题。有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第11天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个? 数学模型:ai=2*(ai+1+1) i=9,8,7,…1; Step1:peach1=1;i=10; Step2:peach0=2*(peach1+1); Step3:peach1=peach0; Step4:i=i-1; Step5:若i>=1,继续循环执行Step2; Step6:输出peach0的值。
算法 • 输入三个数,然后输出最大的数 • 算法的两个要素 • 基本功能操作 • 数据运算和传输 • 控制结构 • 顺序、选择和循环三种基本控制流程 算法可以写成: (1)输入A,B,C; (2)若A>B,则A->MAX;若A<B,则B->MAX。 (3)若C>MAX,则C->MAX。 (4)输出MAX,MAX是最大数。
算法的特性 • 有穷性 • 应含有有限的操作步骤,不能是无限的。有穷性指在 “合理的限度之内” • 唯一性 • 每一个步骤都是确定的,只有一个涵义,不可以为二义性 • 有零个或多个输入 • 在执行算法时需要从外界获取必要的信息 • 有一个或多个输出 • 算法执行的目的就是为了求解,“解”就是输出的信息 • 没有输出的算法是没有意义的 • 正确性 • 每一个步骤应当被有效的执行,并得到确定的结果
端点:表示程序的转向,常用来表示程序的开始和结束。端点:表示程序的转向,常用来表示程序的开始和结束。 处理:操作的功能 判断:单入口 多出口,表明判断的条件 流线:表示程序 的执行方向和顺序。 输入/输出:表示数据的名称、类型和用途等。 算法的表示 • 流程图
开始 输入A,B,C T N A>B? MAX=A MAX=B N C>MAX? T MAX=C 输出MAX 结束 算法的表示 • 流程图
a1=1 i=9 T N 当i>=1时,循环 当〈条件〉满足 a0=2*(a1+1) a1=a0 i=i-1 输出a0 算法的表示 • N-S图 • 是适合结构化程序设计方法的图形工具 • N-S流程图无法表示非结构化的程序
算法的表示 • UML • 面向对象的分析与设计工具 • 适合于描述复杂系统元素之间的关系,不关注具体算法
程序设计基本步骤 • 确定数学模型 • 实际问题的准确描述 • 算法描述 • 解决问题的具体步骤 • 编写程序 • 将已设计好的算法表达出来 • 程序测试 • 保证程序的正确性
结构化的程序设计方法 • 程序的三种基本结构 • 问题的提出 • 结构化程序设计必须采用的结构 • 顺序结构、选择结构和循环结构 • 被称为程序设计的三种基本结构 • 算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构 • 总体结构流程都是自上而下顺序执行的。
结构化的程序设计方法 • 程序的三种基本结构 • 顺序结构,顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的 • 选择结构,表示程序的处理出现了分支,它需要根据某一特定的条件选择其中的一个分支执行 • 循环结构,程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环
结构化的程序设计方法 • 结构化程序设计方法 • 公认的面向过程编程应遵循的基本方法和原则 • 结构化程序设计特征 • 采用模块化结构 • 自顶而下的设计方法 • 便于对问题的分解和模块的划分 • 程序由三种基本控制结构组成 • 有限制地使用转移语句 • 采用结构化程序设计语言书写程序 • 结构化程序设计语言书写程序 • 注意书写风格
其他程序设计方法 • 面向对象程序设计方法 • 结构化程序设计方法作为一种面向过程的程序设计方法,将解决问题的重点放在了描述实现过程的细节上,尽量保证程序的客观性,避免人对于程序设计的干扰。 • 面向对象方法的基本原则是尽可能地模拟现实世界中人类的思维方式,使开发软件的方法和过程尽可能地接近人类解决问题的方法和过程。 • 并行程序设计 • 基于组件的程序设计
什么是C语言? • 1973年由美国贝尔实验室设计发布的 • 目前是计算机程序设计语言的主流语种 • 是世界上最为广泛使用的语言之一 • C语言的流行归功于两个主要因素 • 使用正确的C语言指令几乎可以完成任何任务 • 是可移植的C编译系统的广泛采用 • C语言是一种能够让软件工程师与计算机进行有效对话的介于汇编语言和高级语言之间的编程语言
什么是C语言? • C语言标准 • 1978年,正式出版的《The C Programming Language》书中介绍的c语言,称为标准c语言 • 1983年,美国国家标准化协会(ANSI)根据各种c语言版本对c的扩充和发展,颁布了c语言的新标准ANSI c • ANSI c比标准c有了很大的扩充和发展 • 1987年,美国国家标准化协会又颁布新标准,称为87 ANSI C • 1990年,国际标准化组织ISO接受了87 ANSI C作为ISO C的标准 • 目前功能最完善、性能最优良的C新版本 • 目前流行的C编译系统都是以它为基础的
什么是C语言? • C语言的特点 • 适合开发系统软件 • 结构化的程序设计语言 • 丰富的数据类型和数据结构 • 运算符多样化 • 可移植性好 • 语句简洁紧凑 • 编程风格灵活,语法限制少,使用灵活 • 具有预处理功能 • 面向对象程序设计的基础
什么是C语言? • 编写一个加法运算程序 C语言严格区分大、小写 英文字母。 #include〈stdio.h〉 main() { int a,b;/*定义两个整形变量*/ a=1;b=5;/*给两个变量赋值*/ printf(“%d+%d=%d\n”,a,b,a+b); /*打印a和b之和*/ } C语言程序习惯上使用小写英文字母,而大写英文字母通常作为常量的宏定义和其他特殊的用途。
什么是C语言? • 编写一个加法运算程序 C语言严格区分大、小写 英文字母。 #include〈stdio.h〉 main() { int a,b;/*定义两个整形变量*/ a=1;b=5;/*给两个变量赋值*/ printf(“%d+%d=%d\n”,a,b,a+b); /*打印a和b之和*/ } C语言程序是由一个个的 语句组成。 每个语句都具有规定的语法格式和特定的功能。
什么是C语言? • 编写一个加法运算程序 C语言严格区分大、小写 英文字母。 #include〈stdio.h〉 main() { int a,b;/*定义两个整形变量*/ a=1;b=5;/*给两个变量赋值*/ printf(“%d+%d=%d\n”,a,b,a+b); /*打印a和b之和*/ } C语言程序是由一个个的 语句组成。 C语言程序使用“;”作为 语句的终止符和分隔符。 可以任意书写,即一行中可以书写多个语句,一个语句也可以占用任意多行,语句之间必须用“;”分隔。初学时建议在一行内书写一条语句。
什么是C语言? • 编写一个加法运算程序 C语言严格区分大、小写 英文字母。 #include〈stdio.h〉 main() { int a,b;/*定义两个整形变量*/ a=1;b=5;/*给两个变量赋值*/ printf(“%d+%d=%d\n”,a,b,a+b); /*打印a和b之和*/ } C语言程序是由一个个的 语句组成。 C语言程序使用“;”作为 语句的终止符和分隔符。 C语言程序中用大括号对 “{ }”表示程序的结构层 次范围。 一个完整的程序模块要用一对花括号括起来,用以表示模块的范围。为了清晰地表现出程序的结构,建议使用右缩进锯齿型程序书写格式。
什么是C语言? • 编写一个加法运算程序 C语言严格区分大、小写 英文字母。 #include〈stdio.h〉 main() { int a,b;/*定义两个整形变量*/ a=1;b=5;/*给两个变量赋值*/ printf(“%d+%d=%d\n”,a,b,a+b); /*打印a和b之和*/ } C语言程序是由一个个的 语句组成。 C语言程序使用“;”作为 语句的终止符和分隔符。 C语言程序中用大括号对 “{ }”表示程序的结构层 次范围。 注释部分的格式是: /*注释内容*/注释部分不参与程序的执行,对程序的运行结果没有影响,只是用来提示或助记。 C语言程序可以使用注释。
什么是C语言? • C程序结构组成 • C程序为函数模块结构,整个程序都是由一个或多个函数组成 • 函数是由函数说明和函数体两部分组成 • 一个C程序总是从main()函数开始执行 • 被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编制设计的函数(用户自定义函数) • 一个C 程序可以由一个文件组成,也可以由若干个文件组成 分析下面程序: #include<stdio.h> main () { int a=1,b=5,c; c=add(a,b); printf(“c=%d\n”,c); } int add(int x,int y) { return(x+y); }
C程序 源程序文件1 源程序文件i 源程序文件n 预编译命令 函数1 函数n 函数首部 函数体 什么是C语言? • C程序结构组成
什么是C语言? • "标识符" • 每种程序语言都规定了在程序里描述名字的规则 • 这些名字包括:变量名、常数名、数组名、函数名、文件名、类型名等,被统称为"标识符" • C语言标识符 • C语言的标识符是满足如下条件的字符序列 • 只能由英文字母、数字和下划线组成 • 必须以英文字母或下划线开头 • 注意 • C语言对大、小写字母严格区分 • 根据ANSI标准,只有前31个字符是有意义,但一般系统使用的标识符,其有效长度不超过8个字符 • 标识符不要与关键字同名
什么是C语言? • 关键字 • 具有特定含义的,用作专用的标识符 • C语言中关键字绝大多数是由小写字母构成的字符序列 • 注意: • 这些特定的关键字不允许用户作为自定义的标识符使用 例:指出合法的标识符与关键字 “ABA” S05 file.c Abc 10page printf yellow_red a&b -113 _ACG
什么是C语言? • 语句 • 语句是组成程序的基本单位 • 它能完成特定操作 • 所有程序设计语言都提供了满足编写程序要求的一系列语句 • 有确定的形式和功能 • C语言中的语句
C语言的开发与运行 • 开发一个C程序,一般过程 编辑:使用一个文本编辑器将编写好的C程序输入计算机,并以 文本文件的形式保存C语言源程序,其文件扩展名为“.C” 编译:使用一个C语言编译系统(如TurboC 2.0)对C语言源程序 进行语法检查和翻译,生成同名的“.OBJ”目标文件 链接:将目标文件和系统提供的标准库函数等连接在一起,生成 一个同名的“.EXE”可执行文件 执行:脱离C语言编译系统,可在操作系统下键入文件名直接运行
C语言的开发与运行示例 • 使用 Visual C++ 6.0 • 编写两个数相加的程序