C语言作业 第一章 程序设计与C语言1.1 引例编写程序,输出两个整型数中的最大值。C语音是由函数组成的。程序涉及4个函数:main()、max()、scanf()和printf()。其中,main()函数是程序的主函数,max()是程序中定义的函数,起作用是求两个数中最大数,scanf()和printf()是系统事先设计好的函数,分别用于输入和输出。所有的C程序有且只有一个main()函数。C程序总是从main()函数的第一条语句开始运行,当main()函数结束时,程序也就结束了
1.2 程序与程序设计语言 程序是为了实现特定目标或解决特定问题而用计算机语言(程序设计语言)编写的一系列语句和指令,计算机能严格按照这些指令去做。程序的执行过程实际上是对程序所表达的数据进行处理的过程。一方面,程序设计语言提供一种数据表达与数据处理功能;另一方面,编程人员必须按照程序设计语言的语法要求进行编程。程序具有以下特点:①完成某一特定的任务;②使用某种程序设计语言描述如何完成该任务;③存储在计算机中,并且被运行后才能起作用。
1.2.1 程序设计语言的发展 自1946年世界上第一台电子计算机问世以来,计算机应用已经渗透到人们生活的方方面面,极大的推动了社会的进步与发展。特别是因特网(Internet)的发展,从根本上改变了人们都生活方式,人们已经难以摆脱对计算机的依赖。计算机能有如此神奇的力量,与构成计算机系统的硬件密不可分。硬件是物质基础,而软件则是计算机的灵魂。几十年来计算机硬件技术不断地飞速发展,同时软件技术也没有停止前进的步伐,用来开发软件的程序设计语言经过多年的发展,其技术和方法日臻成熟。其发展经历了几个阶段;①机械语音 机械语音属于第一代计算机语言。按照冯·诺依曼远离,计算机内部运算采用的是二进制,也就是说,计算机只能识别和接受由0和1组成的指令,人们要使用计算机知道和执行自己的意图,就是要编写许多条由0和1组成的二进制指令代码。这种计算机能直接识别和接受的二进制代码称为机械指令(machine instruction)。机器指令的集合(既指令系统)就是该计算机的机器语言。用机器语言编写的机器语言程序称为目标程序(Object p Program),目标程序可以被计算机直接执行,且运行效率是最高的。但由于不同类型的计算机指令系统存在差异,因而在一种类型计算机上编写的机器语言程序,在另一种不同类型计算机上也可能不能运行。机器语言与人们习惯用的语言差别太大,由于难学、难写、难记、难修改,采用机器语言编程,只是极少数人能够完成的工作;②汇编语言 为了减轻使用机器语言的困难,人们采用助记符号来代替机器指令的二进制串,如用ADD表示加法,SUB表示减法,MOV表示传送数据等。这样就能使用运算指令使用符号而不在使用二进制表示。采用这种方法所编写的程序,容易被人读懂,程序的修改与维护也很方便。汇编语言同样十分依赖机器硬件,可移植性不好,但运行效率仅次于机器语言。针对计算机特定硬件而编制的汇编语言程序语言程序能准确地发展计算机硬件的功能和特长,程序精炼而且质量高。③高级语言 这种语言功能很强,且不依赖于具体机器,用它编写的程序几乎可以在任何型号的机器上运行,人们把这种语言称为“高级语言”。高级语言的特点是易学、易用、易维护,人们可以更有效、更方便地用它来编制各种用途的计算机程序。 (1)非结构化的语言。人们在使用早期的高级语言编程时,编程风格比较随意,收有程规范可以遵循,程序中的流程可以随意跳转。程序员往往只追求程序的执行及程序的结构,使程序变得难以阅读和维护。早期的FORTRAN、ALGOL和BASIC于非结构化的语言。 (2)结构化的语言。为了解决非结构化的语言所带来的问题,1969年提出序设计方法”.1970年.第一个结构化程序设计语言一Pascal 语言出现,标志看结锁设计时期的开始。结构化程序设计方法规定:程序必须由具有良好特性的基本结构(顺序结构、分支结构、循环结构)构成,程序中的流程不允许随意跳转,程序,各个基本结构。采用结构化的语言所编制的程序结构清晰,易于阅读和维护。Pascal和C都属于结构化的语言。 (3)面向对象的语言。自20世纪80年代开始,提出了面向对像(Object Oriented)的程序设计思想。相比而言,之前的高级语言可以称之为面向过程的,程序的执行是流水式的,即在一个模块被执行完成前,不能去执行另一个模块,程序员不能随意地去改变程序的执行流程。除此之外,程序中不仅需要实现每一个过程的细 节,而且程序不易重复使用。 这些都与人们日常处理事务的方式是不一致的,人们所希望的是在对象(Object)的每-个事件发生时都能得到及时地处理,也就是说,不能面向过程,而是面向一个个对象。对象是数据以及对数据所进行的操作的封装体,所以采用面向对象的程序设计方法开发应用程序变得更容易,耗时更少.效率更高。C++、C#、Visual Basic和JAVA等语言均是支持面向对象程序设计方法的语言。 1.2.2 程序设计语言的功能 程序设计语言是人与计算机进行交流的桥梁,人要让计算机按照自已的意愿处理数据,就必须用程序设计语言表达所要处理的数据以及控制数据处理的流程。因此,程序设计语言必须具有数据表达(即变量定义)与数据处理(即流程控制)的能力。 ①数据表达 数据是计算机处理的对象,在解决实际问题时,通常包含着各种类型的数据,数据类型(Data Type)就是对某些具有相同性质的数据集的总称。例如整数、实数均是最基本的数据类型。数据类型有两个含义:该数据类型能表示些什么样的数据(即取值范围)?能对这些数据进行何种操作(即运算类型)?例如,在Visual C十+中short int(短整型)类型的取值范围为一32768~ +32767,而十、一、*、/、%则是作用在该类型上的运算。 2.流程控制程序设计语言除了具备良好的数据表达能力之外,还必须提供对不同类型的数据行处理的手段,对数据的处理是通过语言的一系列流程控制语句实现的在1.2.1节已经介绍,按照结构化程序设计的观点,任何程序的基本结构都可以通计,种基本的控制结构进行组合来实现。分别是顺序结构、选择结构和循环结构。 结构化程 (1)顺序控制结构:一条语句执行完后,按自然顺序执行下一条语句。语句、输人、输出等都构成了顺序结构。 (2)分支控制结构:又称选择结构。计算机在执行程序时,常常需要根据不择执行不同的语句。例如,C语言中的f与switch语句都可以构成选择结构。 (3)循环控制结构:许多时候,计算机需要重复执行相同的语句。重复执行一般是有条件的,在条件满足时,重复执行;在条件不满足时,则不会重复执行。C语言中的for.while 与do-while语句都可以构成循环结构。这三种结构的共同特点是: (1)只有单-的人口和单一的出口;(2)结构中的每个部分都有被执行的可能; (3)结构内不应出现永不终止的死循环。当所要求解的问题复杂时,所编写的应用程序经常由上万条语句组成,需要由多人来完成。这时,常常要将一个大任务分解为若干个子任务,每个子任务又分成很多个小子任务,每个小子任务只完成一个简单的功能。在程序设计时,用一个个小模块来实现这些小子任务。而每一个小模块基本上均由上述的3种基本结构组合而成。1.2.3程序的算法表示 软件的主体是程序,程序的核心是算法。 (1)确定性性。算法的每条指令必须有明确的含义,不能有二义性。对于相同的输人必须得出相同的执行结果。 (2)有穷性。一个算法应包含有限个操作步骤。也就是说,在执行若干个操作步骤之后,算法将结束,而且每一步都在合理的时间内完成。 (3)可行性。算法中指定的操作都可以通过已经实现的基本运算执行有限次后实现。 (4)有零个或多个输人。算法是用来处理数据对象的,在大多数情况下,这些数据对象需要通过输人来得到。 (5)有一个或多个输出。算法的目的是为了求“解”,“解”只有通过输出才能得到。如果某个问题的解决方法无法表示为计算机算法,那么计算机也无能为力。算法的表示可以有多种形式,如文字表示、流程图表示、伪代码和程序设计语言表示等。
1.3 C语言程序设计的特点 C语言设计精巧、功能齐全。它既具有诸如Pascal.COBOL.FORTRAN计语言的特点,又具有汇编语言中的地城Adres)、寄存器(egiste)、位(i)等概念,具有许多高级语言所不具备的低级操作能力。既可以用于编写应用程序,又适合于编写系统软件。 1.3.1C语言的发展 历史早期的操作系统等系统软件主要是用汇编语言编写的,由于汇编语言可以直接对硬件进行操作.所以汇编语言对硬件的依赖程度较高,用其编写的程序可读性和可移植性都比较差。随后出现的一些高级语言(如ALGOL 60)似乎使软件开发者看到了一丝曙光,但由于高级语言的通用性较强,离硬件比较远,并不适合开发系统软件。所以人们一直在寻找一种既具有高级语言的通用性,又可以直接对硬件进行操作的语言,于是,C语言应运而生了。 1.3.2C语言的特点 (1)C语言语句简洁紧凑,使用方便灵活。(2)运算符丰富,表达能力强。(3)C语言程序可移植性好。(4)生成目标代码质量高,运行效率高。(5)语言处理能力强。(6)C语言是一种结构化语言。 1.3.3C语言的约定 使用程序设计语言编程与做任何一件事情一样,要遵循一定的规范,定会有许多约束。一般将程序设计语言的规范称为语法(Grammar)。为了让计算机理解程序员所写的代码,程序员必须使用相应语言的语法去写代码。程序员用某种程序设计语言编写的未经编译的程序为源程序。从语法角度看,源程序是一个字符序列,字符序列的组成成分是一个个的“单词”。这些单词有的是程序设计语言的关键字(如例1.1中定义整型变量的数据类型int,丽数max()中的分支控制语句if.else等),有的是分隔符(如例1.1中的空格、逗号等),有的是程序员自己定义的变量名和函数名
1.4 C程序的编辑、编译、链接和运行 1.4.1程序设计的任务 使用计算机解决实际问题的过程①分析问题②设计算法③程序设计④运行并调试程序⑤分析程序运行结果⑥编写程序文档 1.4.2运行C程序的步骤和方法使用C语言求解实际问题,从编写程序到上机运行,一般要经过以下几个步骤:编辑源程序→对源程序进行编译→与库函数链接→运行目标程序。 ①编辑源程序②边缘③链接④运行
以上是本人对C语言第一章程序设计与C语言所以的理解
|