第1章 程序逻辑与C语言_第1页
第1章 程序逻辑与C语言_第2页
第1章 程序逻辑与C语言_第3页
第1章 程序逻辑与C语言_第4页
第1章 程序逻辑与C语言_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章 程序逻辑与C语言概述1.1 C语言概述 【学习目标】(1) 了解C语言的发展历史(2) 掌握C语言程序的基本构成及结构特点(3) 了解C语言程序的编译与执行过程(4) 熟悉Dev-C+的运行环境实例1 C语言简介简单的C语言应用程序【实例任务】输出一个表达式“1+1”的结果,然后再输出一个字符串“Hello World!”,输出一串汉字“北京欢迎您!”。程序的运行结果如图1-1所示。 图1-1 程序运行结果【程序代码】#include "stdio.h"/*当引用一些输入输出函数时,要在程序开始引用此文件*/ main() /*C语言程序的主函数,程序从这里开始执行

2、*/int i; /*变量声明*/i=1+1; /*执行语句,为变量赋值*/printf("1+1=%dn",i); /* 输出1+1的结果2,"n"表示输出时将插入点光标移到下一行起始位置*/ printf("Hello World!n"); /*输出字符串:Hello World!*/ printf("北京欢迎您!n"); /*输出一串汉字:北京欢迎您!*/ getch(); /*DEV C+环境下,输出时使用此语句显示输出框*/【相关知识】1C语言的发展历程 程序中,main、print、include等都是

3、熟知的英文单词,而计算机不识别这些。实际上,在C语言产生之前,人们编写系统软件主要是使用汇编语言。由于用汇编语言编写的程序依赖于计算机硬件,其可读性和可移植性都比较差;而一般高级语言又不具备低级语言能够直观地对硬件实现控制和操作、程序执行速度快的特点。在这种情况下,人们迫切需要一种既有一般高级语言特性,又有低级语言特性的语言,应运而生的C语言具备这些特性。 C语言的产生和发展与UNIX有很大的关系,其发展历程简述如下。 19721973年间,美国贝尔实验室的D.M.Ritchie在B语言的基础上设计出C语言,当时的C语言只是为描述和实现UNIX操作系统的一种工作语言,且只在贝尔实验室内部使用。

4、 1973年,K.Thompson和D.M.Ritchie两人合作,将UNIX 90%以上代码用C语言改写,即UNIX第5版。 1975年,UNIX第6版公布后,C语言突出的优点引起人们普遍注意。 1977年,出现了可移植的C语言。 1978年,UNIX第7版公布,K.Thompson和D.M.Ritchie以该版C编译程序为基础,合著The C Programming Language一书,该书所介绍的C语言,成为后来广泛使用C语言版本的基础,被称为标准C语言。 1983年,美国国家标准化协会(ANSI)根据C语言问世以来的各种版本,对C语言进行发展和扩充,并制定了新的标准,称为ANSI C

5、。 1990年,国际标准化组织ISO制定了ISO C标准。 1972年以来,C语言几经修改和发展,出现了多个版本。C语言是国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。目前在微机上广泛使用的版本有多个,各有特点,但它们一般都是以ANSI C为基础的,其中比较常用的版本有Microsoft C、Quick C、Turbo C、WinTC、C-Free、Dev C+等。2. C语言程序的构成C语言应用程序是由函数构成的,以main()函数作为入口开始执行应用程序。main()是C程序的入口函数,每个C程序必须有main()函数,且每个C程序只能有一个main()函数。括起

6、来的部分,称为函数体,是函数的执行部分。函数体中,每条以分号“;”结尾的元素,称为语句。C语言的语句必须以分号结尾。语句可以一行写一条,可以一行写多条,一个单独的“;”可以自成为一条语句。程序中的第一行语句:#include "stdio.h"或#include <stdio.h>,用于告诉编译器在本程序中包含标准输入/输出库的信息。函数体中printf函数是一个用于打印输出的库函数,后面小号中的内容为这个函数的参数。函数体中,语句“int i;”是在进行变量i的定义。变量是内存中用于存放数据的元素,必须先定义,后引用。程序中,“/*/”符号中所描述的内容,是属

7、于某语句或某段程序的注释,为非执行语句,起到帮助读者理解程序之用。3. 程序的执行方式 计算机只能识别机器语言(即二进制代码),例如:11011010。但用二进制代码编程难以记忆、检错,故只能用高级语言编程。所以计算机须完成一个翻译过程:将高级语言翻译成机器语言,如图1-2所示。高级语言源程序翻 译机 器 代 码图1-2 程序翻译过程这种翻译过程分三种情况。一种是汇编程序,其语言源程序代码与机器指令一一对应。一种是编译程序,是按某种约定将源代码翻译为目标代码,通过连接程序将目标程序与所调用的标准函数库连接为一体,然后执行程序,如常用的Pascal、C语言等。一种是解释程序,与编译程序思想相似,

8、但是一条一条翻译,译出一句执行一句,如早期的BASIC 语言。对于编译程序,编译执行是在编写完代码后,通过特别的工具软件将源代码编译成目标代码进而转换成机器代码(即可执行程序),然后直接交给操作系统执行,也就是说程序是作为一个整体来运行的。这类程序的优点是执行速度比较快,还有编译连接之后可以独立在操作系统上运行,不需要其它应用程序的支持;缺点是不利于调试,每次修改之后都要执行编译连接等步骤,才能看到其执行结果。此外,有些集成开发环境与操作系统之间存在一定的依赖性,不同操作系统需要的编译器可能不相同,因此,在一个系统上编译的程序到另外一个系统上并不一定能够运行。C语言的编译过程执行过程如图1-3

9、所示。源程序目标程序可执行程序C编译程序C链接程序 图1-3 编译执行示意图4. C语言的特点语言简洁,使用方便灵活。C语言关键字少,ANSI C标准总共只有32个关键字,9 种控制语句,压缩了一切不必要的成分。C 语言的书写形式比较自由,表示方法简洁。可移植性好。相对于硬件依赖性很强的汇编语言而言,C语言通过编译来得到可执行代码。统计资料表明:C语言编译程序80%的代码是公共的,故可以稍加修改即可用于其它的计算机。C语言表达能力强,表达方式灵活,可以进行结构化程序设计。另外一个重要的特点是它能直接操作计算机硬件。当今应用广泛的嵌入式技术和单片机技术,控制硬件的代码,很多都是由C语言开发的。C

10、语言生成的目标代码质量高,仅比汇编语言生成的代码效率低10%20%,是其它高级语言无法匹敌的。5.C语言程序结构的特点由以上实例程序可以看出,C语言程序的结构有以下几个特点:(1)C语言程序是由若干函数构成的,每个程序必须有一个主函数,且main后的小括号不能省。(2)C语言程序的函数体是用 括起来的多条语句。且函数体中每条语句均用分号结束。(3)C语言程序的书写格式自由。一行可以写多条语句,一条语句可以写在多行上。(4)C语言程序可以用/*/来对语句进行注释。实例2 C语言环境使用介绍用“*”输出字母A形【实例任务】用“*”作为边线,输出字母“A”的形状。程序运行结果如图1-4所示。 图1-

11、4 程序运行结果【程序代码】#include "stdio.h"main() printf(" *n"); printf(" * *n"); printf(" * *n"); printf(" * * * *n"); printf(" * *n"); printf("* *n"); getchar(); 【相关知识】1. Dev-C+简介Dev-C+是一个C&C+的开发工具,它是一款自由的软件,遵守GPL协议。它集合了GCC、MinGW32等众多自

12、由软件,也是不断升级的免费软件。它的开发环境包括多页面窗口、工程编辑器及调试器等,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,为减少编辑错误,提供了高亮度语法显示。它有完善的调试功能,能满足不同层次的用户需求,但它难以胜任规模较大的软件项目。基于完善的调试功能并支持中文输出,本教材选用Dev-C+为开发工具。2显示运行结果在使用Turbo Tc时,可能通过一步操作查看程序的运行结果,但在Dev-C+编写程序后,你找不到运行结果窗口。如果要查看结果,需要在程序中进行代码操作,分以下三种情况:在主函数最后添加语句“getch();”,它只适用于C程序。在主函数最后添加语句“getcha

13、r();”,它适用于C/C+程序。 在主函数最后添加语句“system("pause");”,它适用于C/C+程序。3. 创建并运行C程序打开Dev-C+,选择“文件/新建/源代码”或使用Ctrl+N,此时光标位于窗口代码编辑区,如图1-5所示。 图1-5 新建程序窗口从图1-5所示的窗口的光标处开始添加代码,如图1-6所示。 图1-6 添加代码的窗口 选择菜单命令“运行/编译”或Ctrl+F9来进行编译,然后再选择菜单命令“运行/运行”或Ctrl+F10来运行查看结果。也可以一步完成,使用“运行/编译运行”或F9来完成编译运行。编译时如果文件尚未保存,系统会提示保存对话框

14、,此时输入文件名后,在“保存类型”的下拉列表框中请选择“C source files(*.c)”类型,此对话框如图1-7所示。 图1-7 保存文件对话框如果选择了“运行”命令或使用F9功能键后,可以看到如图1-4所示的运行结果。如果程序运行过程中陷入死循环,可以使用Ctrl+C结束程序的运行。【课堂精练】1.新建一个C语言文件,保存并运行之,程序运行结果如图1-8所示。 图1-8 程序运行结果此程序添加的代码如下:#include "stdio.h"main() printf("学习无难事,只怕有心人。"); getch();2新建一个C语言文件,要求从

15、键盘输入两个变量的值,并求和输出。程序的运行结果如图1-9所示。 图1-9 程序的运行结果程序代码如下:#include "stdio.h"main() int a,b,sum; /*定义三个变量*/ printf("请在下面输入变量a和b的值:n"); /*输出一行提示信息,n表示将光标输出到下一行*/ scanf("%d,%d",&a,&b);/*从键盘输入两个变量的值*/ getchar(); sum=a+b;/*将a与b的和值存放到变量sum中*/ printf("两个变量的和值为:%d",

16、sum);/*输出sum的和值*/ getch(); 1.2 程序和程序逻辑【学习目标】(1) 掌握算法与程序的概念(2) 了解算法的基本描述方法实例3 程序与算法的概念梵塔推理【实例任务】将1号柱大小不等的三个物体,移动到 3号柱上,顺序必须与1号柱顺序一致。要求每次只移动一个物体,而且每根柱上小块物体必须置于大块物体之上。其移动过程如图1-10所示。图1-10 梵塔推理移动过程图【相关知识】1. 程序程序包括两部分,一是对数据的描述,即数据结构;二是对操作的描述,即操作步骤,也称为算法,它指明了解决某一具体问题的方法和步骤。因此,计算机科学家 Nikiklaus Wirth 提出如下的公式

17、: 数据结构+算法=程序就算法而言,大致分为两大类。一类是数值运算算法,用于求解数值。另一类是非数值运算算法,用于分析推理和逻辑推理。如实例中梵塔定理,并非求解一定的数值,而只是完成一定的推理操作。2. 算法的自然语言描述实例为梵塔难题的解题步骤,也是人逻辑思维的基本方法。计算机的算法思想与此类似,只是表示方法不同而已。用计算机解此题的难点,在于如何用数据结构表示每块物体的所在位置,及如何描述某一物体由1号柱移动到2号柱这一动作,这也是算法设计的关键所在。梵塔难题可以用自然语言表示如下:将A由1号柱移到3号柱 mov( A: 1,3 ) 将B由1号柱移到2号柱 mov( B: 1,2 )将A由

18、3号柱移到2号柱 mov( A: 3,2 )将C由1号柱移到3号柱 mov( C: 1,2 )将A由2号柱移到1号柱 mov( A: 2,1 )将B由2号柱移到3号柱 mov( B: 2,3 )将A由1号柱移到3号柱 mov( A: 1,3 )实例4 算法图形描述求n! 【实例任务】数学上,n!=1×2×3××n。现要求输入n的值,求出n!的值。程序的运行结果如图1-11所示。 图1-11 程序的运行结果【程序代码】#include "stdio.h"main() int n,sum,i; printf("请输入n的值为:n

19、"); scanf("%d",&n); getchar(); sum=1;i=1; while(i<=n)/*引用while循环*/ sum=i*sum;/*将i的值乘入sum值*/ i=i+1;/*i记录n的值从1至n的变化过程*/ printf("%d的阶乘值为:%d",n,sum); getch(); 【相关知识】1N-S图流程图除用自然语言描述外,还可以使用图形来描述,常用的有传统流程图和N-S图。N-S图又称为结构化盒图,它是使用一种方框来描述程序的基本结构。以实例中求n!为例,描绘成如图1-12所示的N-S图。sum=

20、1i=1sum=sum*ii=i+1输出sum的值i<=n输入n的值 图1-12 N-S图2.传统流程图这种方法是通过指定的几何图形框和一些箭头线来描述各个环节的操作和执行的过程。这种描述方法比较直观,而且程序走向清晰,非常易于读者理解,易于编写C语言代码。但如果程序比较复杂,使用传统流程图描述比较繁冗,不易理解。以实例程序为例,绘制成如图1-13所示的传统流程图。开始sum=1i=1i<=ni=i+1sum=sum*i是结束输出sum的值输入n的值 图1-13 传统流程图在描述传统流程时,长方形框表示执行一定的操作,如赋值或计算等。菱形框表示条件判断。椭圆矩形框表示程序的开始与结

21、束。平行四边形表示输入输出数据。箭头表示程序语句的执行方向。【课堂精练】1.用N-S图形式描述1+2+3+10的值的算法。请将图1-14中空缺语句补充完整。i=0i=i+1sum=sum+i输出sum的值 图1-14 N-S图 2. 用传统流程图描述1+2+3+10的值的算法。请将图1-15补充完整。的传统流程图。开始i=i+1sum=sum+i是结束输出sum的值i=1 图1-15 传统流程图1.3 课后习题1.3.1 项目练习一练习目的 1.进行简单程序的编写; 2.进一步熟悉C语言的编程环境; 3.进一步巩固C语言程序的建立、编译、执行过程。二练习内容 1.编程输出一行汉字“我坚信:我一

22、定能学好C语言!”。 2.用自然语言描述、画N-S图、画传统流程图三种方法来描述求1+2+3+n和值的算法。1.3.2 练习题一选择题1下列有关C语言的说法正确的是_。(A)机器语言 (B)只适合于编写应用软件(C)高级语言 (D)只适合于编写系统软件2下列说法中,不属于良好程序设计风格要求的是_。(A)程序中要有必要的注释 (B)程序应简单、可读性好(C)程序的效率第一,清晰第二 (D)输入数据前要有提示信息3用C语言编写的代码是_。(A)经过编译解释才能执行 (B) 可以立即执行(C)是一个源程序 (D)经过编译立刻执行4下列语句说法正确的是_。(A)语句必须从第一行开始书写 (B)一个语句只能写在同一行上(C)一个语句可以书写在多行上 (D)一个语句不得多于80个字符5一个程序总是从_位置开始执行。(A)第一个函数 (B)main()(C)程序的第一行 (D)第一条执行语句6下面对C语言的特点,说法不正确的是_。(A)C语言是一种

温馨提示

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

评论

0/150

提交评论