




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计与实践 目录第1章C语言程序框架1 1C语言简介1 2简单C程序举例1 3C程序结构1 4C程序的编译和运行 第1章C语言程序框架1 1C语言简介一 C语言的产生与发展简史C语言是一种得到广泛重视并普遍应用的程序设计语言 也是国际上公认的最重要的几种通用程序设计语言之一 它既可用来写系统软件 也可用来写应用软件 但与其他语言相比较还是更适合作为系统描述语言 随着面向对象等程序设计方法的产生和发展 以C语言为基础 后来又产生了目前应用比较广泛的C C JAVA语言等 很多人认为学习C语言没什么必要 但是对于专业学习计算机的人来说却很重要 编者引用美国的K N King在 C语言程序设计 现代方法 里对C语言作出的评价 C语言不是编程语言的终结 然而 C语言却是每个软件开发人员都应该掌握的编程语言 C语言是在B语言的基础上发展起来的 B语言是1970年美国电话电报公司 AT T 贝尔实验室的KenThompson设计的 较简单也较接近硬件 但B语言是一种解释性语言 功能上不够强 不能很好的适应系统程序设计的需要 C语言诞生于1972年 由贝尔实验室的Dennis M Ritcbie设计 并首先在一台使用UNIX操作系统的DECPDP 11计算机上实现 C语言既继承了在它之前各种程序设计语言的优点 同时克服了它们的缺点 并由于用C语言设计实现的UNIX操作系统的巨大成功 C语言也随之推广改进 而被广泛移植到各种机器上 1978年 贝尔实验室的Brian W Kernighan和Dennis M Ritchie 合称K R 合著了 TheCProgrammingLanguage 一书 并在附录中提供了C 语言参考手册 这本书成为以后广泛使用的C语言的基础 被人们称作非官方的C语言标准 1983年美国国家标准化协会 ANSI 开始制定新的标准 这就是ANSIC标准 1990年 C语言成为国际标准化组织 ISO 通过的标准语言 目前在很多应用领域 特别是嵌入式软件等领域 C语言 以及C 正在发挥着不可替代的重要作用 当今社会 计算机和网络技术发展日新月异 而C语言已有近40年的历史 这对于一个程序语言来说意义极其重大 值得我们认真思考和深入研究 二 C语言的特点1 C语言是 高级语言中的低级语言 这句话的含义是 首先C语言是一种高级编程语言 它能编写不依赖于机器硬件设备的应用程序 主要表现为C语言程序的可移植性 当然现在大部分的编程语言都具备这样的优点 但在早期的编程语言中 这一点是C语言的主要优势之一 C程序具有可移植性的一个原因要感谢C语言与UNIX系统的早期结合 以及后来的ANSI ISO标准化工作 C语言正是由于标准化才没有分裂成不兼容的多种分支 另一个原因是C语言编译器规模小且容易编写 这使得此种编译器得以广泛应用 其次C语言还具有低级语言的特点 它具有许多通常只有像汇编语言才具备的功能 如位操作 直接访问物理地址等等 这使C语言在进行系统程序设计时显得非常有效 而过去系统软件通常只能用汇编语言编写 事实上 C语言的许多应用场合是汇编语言的传统领地 现在用C来代替汇编 使程序员得以减轻负担 提高效率 C语言提供了很多类似于汇编语言的描述方式 因此编译后的目标代码执行的效率非常高 C语言具有很多接近硬件操作的功能 但不提供直接处理复合对象 如作为整体看待的字符串 数组等的操作 C语言的规模较小 更容易说明 学习起来也快 2 C语言是结构化的语言C语言的主要结构成分是函数 函数允许一个程序中的各任务分别定义和编码 使程序模块化 在函数的外部只需了解函数的功能 而将实现的细节隐藏起来 设计得好的函数能够正确地工作而对程序的其他部分不产生副作用 C语言还提供了多种结构化的控制语句 如用于循环的for while do while语句 用于判定的if else switch语句等 以满足结构化 程序设计的要求 3 C语言十分简练C语言是一种非常简练的语言 用C语言编写的程序十分简洁 例如 1 C语言中关键字较少 只有32个 2 运算符丰富 不仅数量多 而且功能强 如 三目运算符 具有条件语句的功能 又如 等 3 预处理功能 包含宏定义和文件包含等 可以简化程序书写内容 4 C语言的可移植性好高级语言的可移植性都比汇编语言好 在诸多的高级语言中 C语言的移植性更为突出 这是因为该语言编译系统较小 另外预处理功能对移植也带来一些方便 因此C语言本身只需稍加修改便可用于各种型号的机器上 也可以很方便地用于不同操作系统中 这也是C语言得到广泛应用的原因之一 5 C语言是程序员的语言C语言的设计者Ritchie是专业程序员 而C最初是为了他自己写UNIX操作系统而设计的 C语言实现了程序员的期望 很少限制 很少强求 程序设计自由度大 方便的控制结构 独立的函数 紧凑的关键字集合和较高的执行效率 用C编写程序可获得高效的机器代码 其效率通常只比汇编语言生成的机器代码低10 20 而同时C又具有PASCAL那样的结构 这就难怪有大量的程序员喜欢它 C语言的语法限制不太严 例如 对数组下标越界不做检查 整型 字 符型数据可以通用 不专设逻辑型数据而以整型来代替等 较少的限制给程序员带来较大自由 这就要求程序员在编程时应确实明白自己在做什么 而不要把检查错误的工作完全寄托于编译程序 当然这也可能会带来一些麻烦 作为程序员应该考虑好再开始编码 平时还要注意养成良好的编程习惯 6 C语言的缺点上面介绍了一些C语言较为明显的特点 当然C语言也有一些不足需要读者在逐渐深入的学习中不断体会 比如C语言中指针的使用 指针可以直接访问内存地址但同时也对系统带来了安全性的隐患 C语言运算功能丰富 表达方式灵活多样 有很大的自由度 语法限制不太严格 比如 运算符 但是对于初学者来说 就很难把握 C语言 中自左至右或自右至左运算顺序有时也令人头疼 需要初学者在细节的把握上认真对比分析 建议初学者不要把注意力放在这些细节上 第一步先用最简单的C语句实现功能 第二步完善功能 使得代码实用 然后考虑优化算法和程序结构 另外 由于C语言是面向过程的程序设计语言 很多方面与现代的程序设计思想和软件工程思想相悖 比如 当前主流的程序设计语言面向对象的编程思想 软件工程中更强调程序代码的可读性和易理解性 软件开发的效率首先应该体现在宏观上整体上 即开发效率 其次才是程序代码的执行效率等 因此在本书中 我们会在C语言原有的特色基础上 突出现代程序设计思想指导下的C语言程序设计 三 初学者对于C语言的学习方法 C语言的学习目的是进行程序设计的基本训练 不是要求立即写出大型程序 也不能设想今后一辈子只使用学过的某一种语言 因此 学习程序设计时 应该把主要精力放在最基本的 最常用的内容上 开始不必在一个细节上死背死抠 可以先 照搬照抄 不求甚解 多模仿 多实践 在有一定的基础后再深入到一些常见的细节中去 有些细节是需要通过较长时间才能掌握的 初学时切忌滥用C的某些容易引起错误的细节 学习C程序设计语言最终的目标是通过C语言的学习 培养程序设计的思想和理念 初步掌握计算机的 思维 方式 语言是表达思想的工具 程序语言就是表达程序设计思想的最有效工具 学习程序设计还有很重要的一条就是程序调试能力的培养 好的程序员都是在排除程序代码错误的过程中成长起来的 见多才能识广 经验的积累 就是不断地犯错误和改正错误的过程 1 2简单C程序举例这一节我们主要是通过几个简单的C语言程序来初步了解C程序的有关特性 例1 1最简单的C程序 includevoidmain printf 您好 n 这个程序的功能 运行结果 是在屏幕的左上角输出 您好 其中 include 是预处理命令 在本程序中包含标准输入输出的头文件 main表示 主函数 每个C程序都必须且只能有一个main函数 本程序中只有一个函数 函数体是由大括号括起来的部分 函数中只包含一条输出语句 是通过调用C语言中的输出函数printf来实现输出的 此函数名字后面圆括号中的双引号内部的字符或字符串按照原样输出 但是 n 表示的是换行符 在屏幕上输出的效果就是将屏幕上的光标从当前位置移到下一行开始位置 它在程序输出的格式中经常被用到 函数调用的结束相当于一条语句也结束了 在每条语句后面要有一个分号 即使是函数体内最后一条语句的后面也要有分号 例1 2整数的关系比较 includevoidmain inta b 声明部分 定义变量a b都是整数scanf d d a b 输入变量a b的值 以下部分是判断变量a b之间关系的几种情况 if a b printf d d a b elseif a b printf d d a b elseprintf d d a b 本程序实现的是判断任意两个整数的大小关系 后面的汉字部分是对程序语句的注释 注释部分一般根据编程者的习惯 可以加在程序中的任何位置 对编译和运行没有影响 目的是为了使读程序的人更准确的理解程序及语句的作用 第4行是变量声明部分 定义了两个变量a b 在C语言中变量只有声明之后才可以使用 否则在程序编译时将出现错误 第5行scanf是 输入函数 作用是输入两个数并分别保留在变量a和b中 但在 使用scanf函数时要注意格式 双引号里面的 d 是输入输出的 格式字符串 用来指定输入输出时的数据类型和格式 d 表示输入的整数是 以十进制整数形式输入 在程序执行时 需要通过键盘输入两个十进制的整数 a和 b中的 含义是 取地址 scanf函数实际上是将输入的值送到a和b的地址所标识的单元中 也就是输入给了变量a和b 接下来是由条件语句组成的对于变量a b之间关系的几种情况的判断和处理 对于两个整数来说 大小关系只能有三种 大于 小于或者等于 可以按照语句中的关键字if elseif else的英文含义来理解语句所要完成的作用 printf完成的与例1 1的程序相同 目的是为了明确地显示出两个变量的大小关系 程序运行时 首先应输入两个整数 例如在运行界面上输入3598 两数间需有一空格 然后输入回车 程序输出结果为 35intproduct intm voidmain intn i sum 0 scanf d n for i 1 i n i sum sum product i printf 1 2 d d n n sum intproduct intm intj p 1 for j 1 j m j p p j returnp 本程序的功能是计算1 2 n 的和 显然这是有规律的 相当于第一项是1 第二项是2 第三项是3 一直到最后一项是n 每一项都是阶乘的计算 在这里采用了函数调用 在函数product中实现阶乘的计算 而在主函数中通过连续地调用这个函数 就可以将每一项中计算得到的结果获得 并将其相加 得到我们题目中所要的计算结果 在主函数main和子函数product中为了计算和 使用到了循环语句for 它的详细执行过程将在后面的章节里更详细地说明 在函数中还是必须先要定义变量 有时在声明时可以给变量赋一个初始值 接下来是输入变量 当然不一定所有的变量值都需要输入 有些变量是起到辅助作用 比如i和j 有些变量值是存储最后结果用以输出的 例如sum就是 然后就是程序的语句执行过程 这个过程中可能需要使用三种基本结构 顺序结构 选择结构及循环结构 在本例中 首先要输入变量n的值 n表示序列的项数 然后在循环结构中调用了函数product 在函数product的语句执行前 先把实际参数i的值分别传送给函数product中的形式参数m 经过执行函数product得到一个返回值 就是return后的变量p的值 把这个值 函数结果 与变量sum已有的值相加后再赋值给sum 最后输出sum的值 printf函数中双引号内 1 2 d d n 内的 d 将分别由变量n和s的值取代 n 仍表示换行符 其他字符照原样输出 程序运行时 先在运行界面上输入n的值 比如 输入5 输入回车 1 2 5 153 显示在屏幕上的运行结果 本例中涉及的函数调用 实际参数 形式参数以及在函数执行部分中使用到的循环结构 都只做了简单的解释 读者可能对此不大理解 可先着重通过几个实例了解C语言程序的结构及其他的组成部分 在以后其他相关章节的学习时 这些问题都可逐步得到解决 1 3C程序结构C程序结构如图1 1所示 图1 1C程序结构图 一 C程序的组成C程序一般由若干个源程序文件组成 一个源程序文件又可以是由若干个函数和预处理命令以及全局变量声明部分组成的 而函数由数据定义部分和执行语句组成 简单的C程序只有一个源程序文件 其内容由预处理命令和函数所组成 1 预处理命令C中的预处理命令是由ANSIC统一规定的 它不是C语言的本身组成部分 但一般编写的C程序的最前面都要将预处理命令写好 对程序进行通常的编译 包括词法和语法分析 代码生成 优化等 之前 先对程序中这些特殊的命令进行 预处理 例如 如果程序中用 include命令包含一 个文件 stdio h 则在预处理时 将stdio h文件中的实际内容代替该命令 虽然预处理命令是书写C语言程序时要写的 但我们要记住的是预处理命令不是C语言的一部分 它是在程序编译前由预处理程序完成的 C提供的预处理功能主要有三种 宏定义 文件包含 条件编译 它们的命令都以 开头 详细的内容在后面相关章节中介绍 2 函数C程序以函数为基本单位 整个程序由函数组成 至少有一个函数 其中主函数main 是一个特殊的函数 其特殊性表现在C语言程序执行时开始于主函数 也结束于主函数遵循结构化程序设计单入口单出口原则 归根到底 其他函数均受调于主函数 也就是说 C程序没有主函数 便不能执行 这种函数结构的特点使C语言便于实现模块化的程序结构 C语言的函数分成库函数与自定义函数两大类 例如printf scanf 都属于库函数 自定义函数是用户自己编写的为程序服务并能实现各种特定的功能 可以说编写C程序就是在编写一个个函数 二 函数的组成一个函数由两部分组成 函数定义及函数体 1 函数定义就是函数的第一行 是由函数类型 函数名称 函数参数类型 参数名组成的 在例1 3中的product函数的定义为intproduct intm 其中第一个int是函数类型 代表这个函数的返回值是一个整数 即在这个函数被调用后应返回一个整数的结果 product是函数名称 这个名称 可有多种选择 由程序编写者命名 函数名称后面的括号中包含的是函数中的参数表 也称为形参 形式参数 允许有多个形参 每一个形参都要有类型和名称 本例中的形参是m 类型也是整数 2 函数体 是在函数定义下面包含在大括号 中的全部内容 函数内可能有多个大括号 但大括号都是成对出现的 有左括号就应该有右括号 函数定义括号后第一个左括号是函数体的开始 与它对应的右括号是函数体的结束 这个结束可能是整个程序的结束 也可能是下一个函数定义的开始 函数体一般包含三个部分 输入部分 主要包含了变量的声明 初始化 输入 引用相关内容 处理部分 用C语言支持的三种程序结构 顺序 选择 循环来实现功能 输出部分 函数的返回值或是输出显示 三 C程序编写和执行注意的几个问题1 一个C程序是从main函数开始执行的 无论主函数的位置在哪 一个完整的C程序必须有且只能有一个主函数 它是程序启动执行时的唯一入口 2 C程序书写自由 但尽量一行写一条语句 这样看起来较为清晰 3 每条语句结束都要加一个分号 分号是语句的组成部分 不可少 即使是程序中最后一条语句后也应包含分号 但语句没有结束不用加分号 如 intx y 变量定义语句加分号z x y 赋值语句后加分号if x y 条件语句没结束 此句后不加分号z x 条件语句结束后加分号4 可以在 后为语句加注释 也可用 对语句块作注释 适当且明确的注释可提高程序的可读性 1 4C程序的编译和运行学习C语言离不开编写和运行C语言程序 在了解一些C语言的初步知识以后 就应该上机练习编写和运行C语言的程序 通过大量的上机实践来加深对C语言的认识和理解 C语言程序是如何在计算机上运行的呢 C程序在计算机上运行是从源程序的编辑开始 再经过编译 连接等一系列工作过程 最终产生并运行可执行文件得到运行结果 整个过程如图1 2所示 C语言程序实现可归纳如下三个阶段 1 编辑编辑过程是把用C语言写出源程序代码录入到计算机中并保存 其方法有两种 一种是使用编辑程序编写好C语言源程序 并以 c 为后缀存入文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高一原电池课件
- 离婚协议书(房产过户与装修费用承担协议)
- 创新离婚协议书范本:兼顾双方利益与子女成长
- 离婚户口迁移协议及共同财产分割与子女教育合同
- 信息技术设备租赁合同提前终止及数据安全协议
- 离婚争议精神损害赔偿金额确定合同范本
- 离婚时财产分割、子女监护权及子女共同生活协议
- 小区安全防范措施规范
- 发动机安全运行规程
- 如何提高线下店铺的吸引力
- 老师职业介绍
- 汽修厂中秋活动方案
- AIGC应用通识教程-教学大纲
- 移风易俗培训教程课件
- 直销公司财务管理制度
- 人体工程学-第五章-人体工程学与室外环境设施设计
- 2025-2030年中国象棋行业发展分析及前景趋势与投资风险研究报告
- 2025年保健按摩师(五级)资格理论必背考试题库(附答案)
- 抖音员工合同协议书模板
- DB32/T 3636-2019车用汽油中甲缩醛含量的测定多维气相色谱法
- 专项安全施工方案监理
评论
0/150
提交评论